import net.sf.openrocket.logging.LogHelper;
import net.sf.openrocket.models.atmosphere.AtmosphericConditions;
import net.sf.openrocket.startup.Application;
+import net.sf.openrocket.util.ArrayUtils;
import net.sf.openrocket.util.BugException;
import net.sf.openrocket.util.Coordinate;
import net.sf.openrocket.util.Inertia;
this.designation = m.designation;
this.description = m.description;
this.type = m.type;
- this.delays = Arrays.copyOf(m.delays, m.delays.length);
+ this.delays = ArrayUtils.copyOf(m.delays, m.delays.length);
this.diameter = m.diameter;
this.length = m.length;
- this.time = Arrays.copyOf(m.time, m.time.length);
- this.thrust = Arrays.copyOf(m.thrust, m.thrust.length);
+ this.time = ArrayUtils.copyOf(m.time, m.time.length);
+ this.thrust = ArrayUtils.copyOf(m.thrust, m.thrust.length);
this.cg = new Coordinate[ m.cg.length ];
for( int i = 0; i< cg.length; i++ ) {
this.cg[i] = m.cg[i].clone();
public class ArrayUtils {
+ public static <T> T[] copyOf( T[] original, int length ) {
+ return copyOfRange(original,0,length);
+ }
+
/**
* Implementation of java.util.Arrays.copyOfRange
*
return result;
}
+
+ public static double[] copyOf( double[] original, int length ) {
+ return copyOfRange(original,0,length);
+ }
+ public static double[] copyOfRange( double[] original, int start, int end ) {
+
+ if ( original == null ) {
+ throw new NullPointerException();
+ }
+
+ if ( start < 0 || start > original.length ) {
+ throw new ArrayIndexOutOfBoundsException();
+ }
+
+ if ( start > end ) {
+ throw new IllegalArgumentException();
+ }
+
+ double[] result = new double[(end-start)];
+
+ int index = 0;
+ int stop = original.length < end ? original.length : end;
+ for ( int i = start; i < stop; i ++ ) {
+ if ( i < original.length ) {
+ result[index] = original[i];
+ }
+ index++;
+ }
+
+ return result;
+
+ }
+
}