I know that I can calculate the angle between two lines using RhinoScript's **Angle2** method. But, when I am dealing with 3-D vectors, I always have to calculate the points that define the two lines. Is there a way to determine the angle between two 3-D vectors without having to do this?

Yes there is. See the following example function.

' Description: ' Calculates the angle between two 3-D vectors. ' Parameters: ' v0 - [in] - the first vector. ' v1 - [in] - the second vector. ' Returns: ' the angle in degrees. Function VectorAngle(v0, v1) Dim u0 : u0 = Rhino.VectorUnitize(v0) Dim u1 : u1 = Rhino.VectorUnitize(v1) Dim dot : dot = Rhino.VectorDotProduct(u0, u1) ' Force the dot product of the two input vectors to ' fall within the domain for inverse cosine, which ' is -1 <= x <= 1. This will prevent runtime ' "domain error" math exceptions. If (dot < -1.0) Then dot = -1.0 ElseIf (dot > 1.0) Then dot = 1.0 End If VectorAngle = Rhino.ToDegrees(Rhino.ACos(dot)) End Function

developer/scriptsamples/vectorangle.txt ยท Last modified: 2020/08/14 (external edit)