return getControlPointOrientationQuat(dir, turnAxis, angle);
}
}
+
+ public Quat4d getControlPointOrientationQuat(Vector3d dir, double angle, boolean reversed) {
+ if (turnAxis == null) {
+ if (dir.lengthSquared() > MathTools.NEAR_ZERO)
+ dir.normalize();
+ Quat4d q = getControlPointOrientationQuat(dir, angle);
+ if (reversed) {
+ Quat4d q2 = new Quat4d();
+ q2.set(new AxisAngle4d(MathTools.Y_AXIS, Math.PI));
+ q.mulInverse(q2);
+ }
+ return q;
+ } else {
+ if (dir.lengthSquared() > MathTools.NEAR_ZERO)
+ dir.normalize();
+ return getControlPointOrientationQuat(dir, turnAxis, angle);
+ }
+ }
public Quat4d getControlPointOrientationQuat(double angle, boolean reversed) {
if (turnAxis == null) {
Vector3d dir = getPathLegDirection(Direction.NEXT);
- if (dir.lengthSquared() > MathTools.NEAR_ZERO)
- dir.normalize();
- Quat4d q = getControlPointOrientationQuat(dir, angle);
- if (reversed) {
- Quat4d q2 = new Quat4d();
- q2.set(new AxisAngle4d(MathTools.Y_AXIS, Math.PI));
- q.mulInverse(q2);
- }
- return q;
+ return getControlPointOrientationQuat(dir, angle, reversed);
} else {
Vector3d dir = getPathLegDirection(Direction.PREVIOUS);
dir.negate();
- if (dir.lengthSquared() > MathTools.NEAR_ZERO)
- dir.normalize();
- return getControlPointOrientationQuat(dir, turnAxis, angle);
+ return getControlPointOrientationQuat(dir, angle, reversed);
}
}
} else if (currentNext != null) {
if (currentNext.isDualInline()) {
PipeControlPoint sccp = currentNext;
- PipeControlPoint ocp = getDualSub();
+ PipeControlPoint ocp = currentNext.getDualSub();
if (ocp == null) {
throw new RuntimeException("Removing PipeControlPoint " + this+ " structure damaged, no offset control point");
}