+ return true;
+ }
+ return false;
+ }
+ }
+
+ private static boolean possibleVaribleLengthInsert(PipeControlPoint icp, PipeControlPoint prev) throws Exception{
+ Vector3d currentPos = icp.getWorldPosition();
+ Vector3d prevPos = prev.getWorldPosition();
+ Vector3d dir = new Vector3d(currentPos);
+ dir.sub(prevPos);
+ double l = dir.lengthSquared();
+ double l2prev = prev.getInlineLength();
+ double l2next = icp.getInlineLength();
+ double l2 = l2prev + l2next;
+ double l2s = l2 * l2;
+ if (l > l2s) {
+ if (allowInsertRemove) {
+ dir.normalize();
+ double length = Math.sqrt(l) - l2; // true length of the
+ // variable length
+ // component
+ dir.scale(length * 0.5 + l2prev); // calculate center
+ // position of the
+ // component
+ dir.add(prevPos);
+ PipeControlPoint scp = insertStraight(prev, icp, dir, length);
+ return true;
+ } else {
+ triedIR = true;