14 package eu.mihosoft.vrl.v3d.ext.quickhull3d;
16 import java.util.Random;
32 static private final double DOUBLE_PREC = 2.2204460492503131e-16;
55 public Vector3d (Vector3d v)
67 public Vector3d (
double x,
double y,
double z)
80 public double get (
int i)
93 {
throw new ArrayIndexOutOfBoundsException (i);
106 public void set (
int i,
double value)
122 {
throw new ArrayIndexOutOfBoundsException (i);
132 public void set (Vector3d v1)
145 public void add (Vector3d v1, Vector3d v2)
157 public void add (Vector3d v1)
170 public void sub (Vector3d v1, Vector3d v2)
182 public void sub (Vector3d v1)
194 public void scale (
double s)
208 public void scale (
double s, Vector3d v1)
223 return Math.sqrt(x*x + y*y + z*z);
232 public double normSquared()
234 return x*x + y*y + z*z;
243 public double distance(Vector3d v)
249 return Math.sqrt (dx*dx + dy*dy + dz*dz);
259 public double distanceSquared(Vector3d v)
265 return (dx*dx + dy*dy + dz*dz);
274 public double dot (Vector3d v1)
276 return x*v1.x + y*v1.y + z*v1.z;
282 public void normalize()
284 double lenSqr = x*x + y*y + z*z;
285 double err = lenSqr - 1;
286 if (err > (2*DOUBLE_PREC) ||
287 err < -(2*DOUBLE_PREC))
288 {
double len = Math.sqrt(lenSqr);
298 public void setZero()
312 public void set (
double x,
double y,
double z)
326 public void cross (Vector3d v1, Vector3d v2)
328 double tmpx = v1.y*v2.z - v1.z*v2.y;
329 double tmpy = v1.z*v2.x - v1.x*v2.z;
330 double tmpz = v1.x*v2.y - v1.y*v2.x;
346 protected void setRandom (
double lower,
double upper, Random generator)
348 double range = upper-lower;
350 x = generator.nextDouble()*range + lower;
351 y = generator.nextDouble()*range + lower;
352 z = generator.nextDouble()*range + lower;
361 public String toString()
363 return x +
" " + y +
" " + z;