algorithmic modeling for Rhino
Hi all,
I want to project curves onto a plane in a specified direction using rhinoCommon. As far as I understand the ProjectToPlane method has no input for projection direction:
ProjectToPlane(curve: Curve, plane: Plane) -> Curve
A possible work around is to make a big enough planar surface and then use ProjectToBrep but I wonder if there is a better way?
I know that David added a Grasshopper component that already does this but as I said I want to do it inside the scripting component.
Thanks,
Mostapha
Tags:
Hmm. Are you sure you've got the latest rhino service release? Otherwise the workaround is quite easy: flip the digits of the matrix indices (actually a nicer solution anyway):
/**
See: http://stackoverflow.com/questions/2500499/howto-project-a-planar-p...
1-a*dx/D -b*dx/D -c*dx/D -d*dx/D
-a*dy/D 1-b*dy/D -c*dy/D -d*dy/D
-a*dz/D -b*dz/D 1-c*dz/D -d*dz/D
0 0 0 1
*/
public Transform GetObliqueTransformation(Plane Pln, Vector3d V)
{
Transform oblique = new Transform(1);
double[] eq = Pln.GetPlaneEquation();
double a,b,c,d, dx, dy, dz, D;
a = eq[0];
b = eq[1];
c = eq[2];
d = eq[3];
dx = V.X;
dy = V.Y;
dz = V.Z;
D = a * dx + b * dy + c * dz;
oblique.M00 = 1 - a * dx / D;
oblique.M10 = -a * dy / D;
oblique.M20 = -a * dz / D;
oblique.M30 = 0;
oblique.M01 = -b * dx / D;
oblique.M10 = 1 - b * dy / D;
oblique.M21 = -b * dz / D;
oblique.M31 = 0;
oblique.M02 = -c * dx / D;
oblique.M12 = -c * dy / D;
oblique.M22 = 1 - c * dz / D;
oblique.M32 = 0;
oblique.M03 = -d * dx / D;
oblique.M13 = -d * dy / D;
oblique.M23 = -d * dz / D;
oblique.M33 = 1;
return oblique;
}
Thanks Arend, got both your scripts working now, sorry about my late reply. I did try to get the "Oblique projection = Shear + Orthogonal projection" approach working, but to no avail.
My question was triggered by my previous one, and now I have all answers needed (for the moment).
Thank you very much everyone:)
There's a typo in this code. Where is says:
oblique.M10 = 1 - b * dy / D;
It should read:
oblique.M11 = 1 - b * dy / D;
:)
Thanks Arend, I'm going to see how can I extend this method to project it along a vector.
Welcome to
Grasshopper
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
© 2024 Created by Scott Davidson. Powered by