Skip to content

Curve.CurvatureAt

Public Class

Evaluate the curvature vector at a curve parameter.

Namespace: Rhino.Geometry

Assembly: RhinoCommon (in RhinoCommon.dll)

**Since:**5.0

Syntax

public Vector3d CurvatureAt(
double t
)

Parameters

t

Type:System.Double
Evaluation parameter.

Return Value

Type: Vector3d
Curvature vector of the curve at the parameter t.

Remarks

No error handling.

Examples

using Rhino;
using Rhino.DocObjects;
using Rhino.Commands;
using Rhino.Geometry;
using Rhino.Input;
namespace examples_cs
{
public class AddRadialDimensionCommand : Rhino.Commands.Command
{
public override string EnglishName
{
get { return "csAddRadialDimension"; }
}
protected override Result RunCommand(RhinoDoc doc, RunMode mode)
{
ObjRef obj_ref;
var rc = RhinoGet.GetOneObject("Select curve for radius dimension",
true, ObjectType.Curve, out obj_ref);
if (rc != Result.Success)
return rc;
double curve_parameter;
var curve = obj_ref.CurveParameter(out curve_parameter);
if (curve == null)
return Result.Failure;
if (curve.IsLinear() || curve.IsPolyline())
{
RhinoApp.WriteLine("Curve must be non-linear.");
return Result.Nothing;
}
// in this example just deal with planar curves
if (!curve.IsPlanar())
{
RhinoApp.WriteLine("Curve must be planar.");
return Result.Nothing;
}
var point_on_curve = curve.PointAt(curve_parameter);
var curvature_vector = curve.CurvatureAt(curve_parameter);
var len = curvature_vector.Length;
if (len < RhinoMath.SqrtEpsilon)
{
RhinoApp.WriteLine("Curve is almost linear and therefore has no curvature.");
return Result.Nothing;
}
var center = point_on_curve + (curvature_vector/(len*len));
Plane plane;
curve.TryGetPlane(out plane);
var radial_dimension =
new RadialDimension(center, point_on_curve, plane.XAxis, plane.Normal, 5.0);
doc.Objects.AddRadialDimension(radial_dimension);
doc.Views.Redraw();
return Result.Success;
}
}
}
from Rhino import *
from Rhino.DocObjects import *
from Rhino.Commands import *
from Rhino.Geometry import *
from Rhino.Input import *
from scriptcontext import doc
def RunCommand():
rc, obj_ref = RhinoGet.GetOneObject("Select curve for radius dimension",
True, ObjectType.Curve)
if rc != Result.Success:
return rc
curve, curve_parameter = obj_ref.CurveParameter()
if curve == None:
return Result.Failure
if curve.IsLinear() or curve.IsPolyline():
print "Curve must be non-linear."
return Result.Nothing
# in this example just deal with planar curves
if not curve.IsPlanar():
print "Curve must be planar."
return Result.Nothing
point_on_curve = curve.PointAt(curve_parameter)
curvature_vector = curve.CurvatureAt(curve_parameter)
len = curvature_vector.Length
if len < RhinoMath.SqrtEpsilon:
print "Curve is almost linear and therefore has no curvature."
return Result.Nothing
center = point_on_curve + (curvature_vector/(len*len))
_, plane = curve.TryGetPlane()
radial_dimension = \
RadialDimension(center, point_on_curve, plane.XAxis, plane.Normal, 5.0)
doc.Objects.AddRadialDimension(radial_dimension)
doc.Views.Redraw()
return Result.Success
if __name__=="__main__":
RunCommand()