[vtkusers] Angle Calculation
John Hunter
jdhunter at ace.bsd.uchicago.edu
Tue Apr 8 10:02:53 EDT 2003
>>>>> "ramu" == ramu chandran <chandranram4u at rediffmail.com> writes:
ramu> Hi, How can I calculate the angle of the plane with respect
ramu> to X, Y or Z axes using the normal of the plane.
The angle any line makes with another line can be obtained from the
relation:
x . y = |x| |y| cos(alpha)
where '.' is the dot product, |x| is the norm of x, and alpha is the
angle between x and y.
Thus if x and y have norm 1, you can get the angle as acos(x . y).
In python:
a = (1,0,0) # the normed x axis
b = plane.GetNormal() # the normalized plane normal
dotprod = vtk.vtkMath.Dot(a,b)
alpha = acos(dotprod) # angle in radians
I believe the normals from vtkPlanes are always normalized, but if you
are dealing normals that don't have length 1, you can normalize them
with
vtk.vtkMath.Normalize(b)
Ditto for the y and z axes. Now if you want the angle of the plane,
rather than the normal, I think you'll just want to do
90 - 180.0/pi*alpha
John Hunter
More information about the vtkusers
mailing list