// // MathLib.java // Stella2Java // // Created by djoiner on Thu Dec 20 2001. // Copyright (c) 2001 __MyCompanyName__. All rights reserved. // public class MathLib { public static double niceNumber ( double x, boolean round) { int exp; double frac; double niceFrac; exp = (int)Math.floor(log10(x)); frac = x/Math.pow(10.0,exp); if (round) { if (frac < 1.5) { niceFrac=1.0; } else if (frac<3.0) { niceFrac=2.0; } else if (frac<7.0) { niceFrac=5.0; } else { niceFrac=10.0; } } else { if (frac <= 1.0001) { niceFrac=1.0; } else if (frac<=2.0001) { niceFrac=2.0; } else if (frac<=5.0001) { niceFrac=5.0; } else { niceFrac=10.0; } } return niceFrac * Math.pow(10.0,exp); } public static final double log10Constant = Math.log(10.0); public static double log10(double x) { return Math.log(x)/log10Constant; } public static double [] niceLabels (int nLabel, double minLabel, double maxLabel) { double [] label = new double[nLabel]; int nfrac; double d; double graphmin, graphmax; double range, x; range = niceNumber(maxLabel-minLabel, true); d = niceNumber(range/(nLabel-1),true); graphmin = Math.floor(minLabel/d)*d; graphmax = Math.ceil(maxLabel/d)*d; nfrac = Math.max((int)log10(d),0); for (int i=0; i0.0) { return Math.acos(z/r); } else { return 0.0; } } public static double cartesianToPhi(double x, double y, double z) { return cartesianToPhi(cartesianToR(x,y,z),z); } public static double cartesianToTheta(double x, double y) { double pi = Math.PI; double retval; if (x==0.0&&y==0.0) { return 0.0; } else if (x == 0.0) { if (y>=0.0) return pi/2.0; else return -pi/2.0; } else if (y==0.0) { if (x>=0.0) return 0.0; else return pi; } else { if (x>=0.0) retval=Math.atan(y/x); else retval=Math.atan(y/x)+pi; } if(retval<0.0) retval+=2.0*pi; return retval; } public static double [] linearGrid(int n, double min, double max) { double diff = (max-min)/(double)(n-1); double [] retval = new double[n]; retval[0] = min; retval[n-1]=max; for(int i=1;i=2;i-=2) retval*=i; return retval; } }