Switch to side-by-side view

--- a
+++ b/Tools/ModelUtilities/WrappingSurfaces/WrappingCylinder5PointFit_template.any
@@ -0,0 +1,70 @@
+#class_template TSurfCylinder5PointFit (__CLASS__=AnySurfCylinder, __DEBUG__=0){
+
+#var AnyFloat p;
+
+AnyFloat Q1 = p[0];
+AnyFloat Q2 = p[1];
+AnyFloat Q3 = p[2];
+AnyFloat Q4 = p[3];
+AnyFloat Q5 = p[4];
+
+viewRefFrame = {
+   #var Visible = #default;
+   #var Opacity = #default;
+   #var Pickable = #default;
+   #var RGB = #default;
+   #var ScaleXYZ = #default;   
+};
+
+viewSurface = {
+   #var Visible = #default;
+   #var Opacity = #default;
+   #var Pickable = #default;
+   #var RGB = #default;
+   #var ScaleXYZ = #default;   
+};
+
+
+
+#if __DEBUG__
+// AnyDrawSphere p1 = {Position = (p[0]-sRel)*.ARel;ScaleXYZ = 0.003*{1,1,1};};
+// AnyDrawSphere p2 = {Position = (p[1]-sRel)*.ARel;ScaleXYZ = 0.003*{1,1,1};};
+// AnyDrawSphere p3 = {Position = (p[2]-sRel)*.ARel;ScaleXYZ = 0.003*{1,1,1};};
+// AnyDrawSphere p4 = {Position = (p[3]-sRel)*.ARel;ScaleXYZ = 0.003*{1,1,1};};
+// AnyDrawSphere p5 = {Position = (p[4]-sRel)*.ARel;ScaleXYZ = 0.003*{1,1,1};};
+#endif
+
+
+#var Length = abs(lengthscalefactor * vnorm(Q2 - Q1));
+
+// get direction from the first two points
+AnyFloat dir = (Q2 - Q1) / vnorm(Q2 - Q1);
+
+// projection of the points 3-5 to the plane through Q1 with normal dir
+AnyFloat Q3p = Q1 + (Q3 - Q1) - dir * (Q3 - Q1)' * dir;
+AnyFloat Q4p = Q1 + (Q4 - Q1) - dir * (Q4 - Q1)' * dir;
+AnyFloat Q5p = Q1 + (Q5 - Q1) - dir * (Q5 - Q1)' * dir;
+
+AnyFloat alpha = ((Q4p - Q5p) * (Q4p - Q5p)' * (Q3p - Q4p) * (Q3p - Q5p)') 
+/ (2 * cross(Q3p - Q4p, Q4p - Q5p) * cross(Q3p - Q4p, Q4p - Q5p)');
+AnyFloat beta = ((Q3p - Q5p) * (Q3p - Q5p)' * (Q4p - Q3p) * (Q4p - Q5p)') 
+/ (2 * cross(Q3p - Q4p, Q4p - Q5p) * cross(Q3p - Q4p, Q4p - Q5p)');
+AnyFloat gamma = ((Q3p - Q4p) * (Q3p - Q4p)' * (Q5p - Q3p) * (Q5p - Q4p)') 
+/ (2 * cross(Q3p - Q4p, Q4p - Q5p) * cross(Q3p - Q4p, Q4p - Q5p)');
+AnyVec3 U = (alpha * Q3p + beta * Q4p + gamma * Q5p);
+
+#var Radius = radiusscalefactor*vnorm(U-Q3p);
+AnyVec3 dir1 = (Q3p - U) / vnorm(Q3p - U);
+AnyVec3 dir2tmp = (Q4p - U) - (Q4p - U) * dir1' * dir1;
+AnyVec3 dir2 = dir2tmp / vnorm(dir2tmp);
+
+AnyFloat  signtmp = cross(dir1,dir2)*dir';
+AnyFloat sign = iffun(gtfun(signtmp,0),1,-1);
+
+ARel = RotMat(U, U + dir1, U  +sign*dir2)*RotMat(Z_rotation,z);
+
+sRel = U- (Length-vnorm(Q2-Q1))/2 *dir;
+//AnyDrawRefFrame drw ={RGB={0,0,1};ScaleXYZ={1,1,1}*0.1;};
+
+};
+