NurbsCurve.EvaluatePositionFromPercentage
 
 
 

NurbsCurve.EvaluatePositionFromPercentage operator

Description

Returns a 3D vector containing the position, tangent in U direction, normal and bi-normal at a given percentage along the curve.

C# Syntax

Object NurbsCurve.EvaluatePositionFromPercentage( Double in_dPercentage );

Scripting Syntax

oArray = NurbsCurve.EvaluatePositionFromPercentage( Percentage );

Return Value

A 1-dimensional Array containing the position, tangent, normal and bi-normal.

Parameters

Parameter Type Description
Percentage Double The percentange (with values between 0.0 and 100.0 inclusive) of the length of the curve at which we want to evaluate the curve.

Examples

1. VBScript Example

set oRoot = Application.ActiveProject.ActiveScene.Root
set oArc = oRoot.AddGeometry( "Arc", "NurbsCurve" )
aValues = oArc.ActivePrimitive.Geometry.Curves(0).EvaluatePositionFromPercentage( 70.0 )
set oPosition = aValues(0)
logmessage "The position at 70%% of the curve is x :" &  oPosition.x        & " y: " & oPosition.y & " z: " & oPosition.z
set oUTangent = aValues(1)
logmessage "The tangent in U at 70%% of the curve is x :" & oUTangent.x & " y: " & oUTangent.y & " z: " & oUTangent.z
set oNormal = aValues(2)
logmessage "The normal at 70%% of the curve is x :" & oNormal.x & " y: " & oNormal.y & " z: " & oNormal.z
set oBiNormal = aValues(3)
logmessage "The bi-normal at 70%% of the curve is x :" & oBiNormal.x & " y: " & oBiNormal.y & " z: " & oBiNormal.z

2. JScript Example

SICreateCurve("crvlist", 3, 0);
SIAddPointOnCurveAtEnd("crvlist", -3.951, 0.000, 1.651, false);
SIAddPointOnCurveAtEnd("crvlist", -3.214, 0.000, -1.884, false);
SIAddPointOnCurveAtEnd("crvlist", -0.592, 0.000, 1.146, false);
SIAddPointOnCurveAtEnd("crvlist", 1.660, 0.000, 2.856, false);
SIAddPointOnCurveAtEnd("crvlist", 3.272, 0.000, -1.224, false);
GetNurbsCurveListInfo( GetValue("crvlist") );
function GetNurbsCurveListInfo( oCurveList )
{
        var oPosition, oUTangent, oNormal, oBiNormal;
        var p = XSIMath.CreateVector3();
        oGeometry = oCurveList.ActivePrimitive.Geometry;
        // Display curve list info
        LogMessage( "    Name: " + oCurveList.Name );
        LogMessage( "FullName: " + oCurveList.FullName );
        LogMessage( "    Type: " + oCurveList.Type );
        // Display geometry info:
        LogMessage( "      Length: " + oGeometry.Length );
        LogMessage( "      Closed: " + oGeometry.Closed );
        LogMessage( "   Nb Points: " + oGeometry.Points.Count );
        LogMessage( "  Nb Control: " + oGeometry.ControlPoints.Count );
        LogMessage( "   Nb Curves: " + oGeometry.Curves.Count );
        LogMessage( "   Nb Facets: " + oGeometry.Facets.Count );
        LogMessage( " Nb Segments: " + oGeometry.Segments.Count );
        LogMessage( " Nb Clusters: " + oGeometry.Clusters.Count );
        LogMessage( "Nb Triangles: " + oGeometry.Triangles.Count ); //crashes Softimage
        // Get the lower-level stuff
        for ( i = 0; i < oGeometry.Curves.Count; i++ ) 
        {
                LogMessage( "--- Curve["+i+"] ---" );
                oCurve = oGeometry.Curves(i);
                // Find the midpont along the curve
                var aValues = new VBArray(oCurve.EvaluatePositionFromPercentage( 50.0 ));
                var oPosition = aValues.getItem(0);
                var oUTangent = aValues.getItem(1);
                var oNormal = aValues.getItem(2);
                var oBiNormal = aValues.getItem(3);
                LogMessage( " Position[x,y,z]: " + oPosition.x +","+ oPosition.y +","+ oPosition.z );
                LogMessage( "U Tangent[x,y,z]: " + oUTangent.x +","+ oUTangent.y +","+ oUTangent.z );
                LogMessage( "   Normal[x,y,z]: " + oNormal.x   +","+ oNormal.y +","+ oNormal.z   );
                LogMessage( "Bi Normal[x,y,z]: " + oBiNormal.x +","+ oBiNormal.y +","+ oBiNormal.z );
                // Display the info
                LogMessage( "   Nb Knots: " + oCurve.Knots.Count );
                LogMessage( "   Degree: "   + oCurve.Degree      );
        }
        return(0);
}

See Also

NurbsCurve.GetPercentageFromU NurbsCurve.GetUFromPercentage