Evaluate the Torsion of a Curve

Developer: RhinoScript
Summary: Demonstrates how to evaluate the torsion of a curve

Question

How do I determine the torsion of a curve at a parameter using RhinoScript?

The torsion of a curve measures how sharply it is twisting. It is analogous to curvature in two dimensions. The following example function calculates the torsion of a curve at a parameters:

'''
''' Description
'''   Evaluate the torsion of a curve.
''' Parameters
'''   crv - a string that identifies the curve to evaluate
'''   t   - a parameter of the curve within its domain
''' Returns
'''   The torsion if successful.
'''   Null if the torsion is undefined at the parameter.
'''
Function EvaluateTorsion(crv, t)

' Local variables
Dim data, d1xd2, numer, denom

' Default return value
EvaluateTorsion = Null

' Calculate the torsion
data = Rhino.CurveEvaluate(crv, t, 3)
If IsArray(data) And UBound(data) = 3 Then
d1xd2 = Rhino.VectorCrossProduct(data(1), data(2))
numer = Rhino.VectorDotProduct(d1xd2, data(3))
denom = Rhino.VectorDotProduct(d1xd2, d1xd2)
If denom > 0 Then
EvaluateTorsion = numer / denom
End If
End If

End Function

The following example script demonstates how you might use the above function:

Sub TestTorsionOnCurve()

' Local variables
Dim crv, pt, t, tor

' Select curve to evaluate
crv = Rhino.GetObject("Select curve to evaluate", 4, True)
If IsNull(crv) Then Exit Sub

' Get point on curve to evalaute
pt = Rhino.GetPointOnCurve(crv, "Point to evaluate")
If Not IsArray(pt) Then Exit Sub

' Get parameter of the point on a curve that is closest to pt
t = Rhino.CurveClosestPoint(crv, pt)
If IsNull(t) Then Exit Sub

' Evaluate the torsion of the curve at t.
tor = EvaluateTorsion(crv, t)
If IsNull(tor) Then
Rhino.Print "Torsion at curve parameter " & CStr(t) & " is undefined"
Else
Rhino.Print "Torsion at curve parameter " & CStr(t) & " is " & CStr(tor)
End If

End Sub
developer/scriptsamples/torsion.txt · Last modified: 2016/02/10 by sandy

Page Tools 