2
$\begingroup$

I'm sort of building off my previous question but the conditions of the points I'm trying to recover are different and therefore that solution is no longer applicable. Given said data, I'm trying to reconfigure the points that have been scaled and translated below so that I can do further geometric manipulation on them (such as to Transpose the 3 lists of points so as to end up with triplets that could be made into Polygon). However, I can't seem to directly interact with the updated point coordinates, it always reverts back to the original points derived by the arc.

enter image description here

 arc3D[{a_, b_, m_}, n_: 60, prim_: Line] := 
  Module[{\[Alpha], lab, axis, aarc, tm, alpha},
    lab = m + Norm[a - m]*Normalize[b - m];
    axis = (a - m)\[Cross](b - m);
    aarc = (VectorAngle[a - m, b - m]);
    tm = RotationMatrix[alpha, axis];
    prim@Table[m + tm.(a - m), {alpha, 0, aarc, aarc/n}]
    ]

coord={{0,0,0},{40000,0,0},{40000/2,0,40000*2}};
data=arc3D[coord,18,Line];

g1  = Graphics3D[
{Green,AbsolutePointSize[8],
 Scale[#,scaleScript[1200],coord[[3]]] &/@ Point /@ Rest@Drop[data[[1]],-1]}
];
g2 = Graphics3D[
{Red,AbsolutePointSize[8],
 Translate[#,{0,1200,0}]&/@ Point/@ Rest@Drop[data[[1]],-1]}
];
g3 = Graphics3D[
{Blue,AbsolutePointSize[8],
 Translate[#,{0,-1200,0}]&/@ Point/@ Rest@Drop[data[[1]],-1]}
];
Show[g1,g2,g3]
$\endgroup$

1 Answer 1

2
$\begingroup$

It turns out that this question is easier than the linked question as Normal works here to transform the coordinates but it doesn't in the linked case.

scaleScript[1200] = .9;
pts = N@Cases[#, Point[x_] :> x, Infinity] & /@ First[Normal@Show[g1, g2, g3]];
Show[g1, g2, g3, Graphics3D[{Opacity[.5], Polygon@Transpose[pts]}]]

enter image description here

Note: Documentation (Scale >> Properties and Relations and Translate >> Properties and Relations and GeometricTransformation >> Properties and Relations ) says:

  • When possible, Normal will transform the coordinates explicitly.

but it is not at all clear what "When possible" means.

$\endgroup$
1
  • $\begingroup$ Learning MMA is just like learning new vocabulary in another language. I had no idea Normal worked like that. It's going to take some time to update my code but it's a broadly helpful function for sure. I'd like to play around with it more. Thanks so much for the heads up. For reference: Here's the docs for Normal reference.wolfram.com/language/ref/Normal.html?q=Normal $\endgroup$
    – BBirdsell
    Commented Jun 25, 2018 at 15:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.