private void computePlaneEq(Point4d p1, Point4d p2, Point4d p3, Point4d p4, Vector4d planeEq) { tVec1.x = p3.x - p1.x; tVec1.y = p3.y - p1.y; tVec1.z = p3.z - p1.z; tVec2.x = p2.x - p1.x; tVec2.y = p2.y - p1.y; tVec2.z = p2.z - p1.z; tVec3.cross(tVec2, tVec1); tVec3.normalize(); planeEq.x = tVec3.x; planeEq.y = tVec3.y; planeEq.z = tVec3.z; planeEq.w = -(planeEq.x * p1.x + planeEq.y * p1.y + planeEq.z * p1.z); }
private void updateRotationAxisAndCenter() { v1.set(0, 1, 0); v2.cross(v1, rotationAxis); final double angle = Math.acos(v1.dot(rotationAxis)); aa.set(v2, angle); centerXform.set(aa); } }
/** In 3D */ static public double distancePointToLine(final double px, final double py, final double pz, final double lx1, final double ly1, final double lz1, final double lx2, final double ly2, final double lz2 ) { final double segment_length = new Vector3d(lx2 - lx1, ly2 - ly1, lz2 - lz1).length(); if (0 == segment_length) return 0; final Vector3d cross = new Vector3d(); cross.cross(new Vector3d(px - lx1, py - ly1, pz - lz1), new Vector3d(px - lx2, py - ly2, pz - lz2)); return cross.length() / segment_length; }
e2.z = v2.z - v0.z; n1.cross(e1,e2);
normal.cross(vec0,vec1);
pNrm.cross(vec0,vec1);
pNrm.cross(vec0,vec1);
normal.cross(vec, tmpvec); normal.normalize();
normal.cross(vec, tmpvec); normal.normalize();
pNrm.cross(vec0,vec1);
pNrm.cross(vec0,vec1);
normal.cross(vec, tmpvec); normal.normalize();
pNrm.cross(vec0,vec1);
pNrm.cross(vec0,vec1);
pNrm.cross(vec0,vec1);
normal.cross(tmpvec, vec); normal.normalize();
pNrm.cross(vec0,vec1);