ON_3dVector ON_Ellipse::CurvatureAt( double t // parameter ) const { ON_3dVector T, K; ON_EvCurvature(DerivativeAt( 1, t ),DerivativeAt( 2, t ),T,K); return K; }
ON_3dVector ON_Ellipse::TangentAt( double t // parameter ) const { ON_3dVector T = DerivativeAt( 1, t ); T.Unitize(); return T; }
void PolyFunc::Print(ostream& os, double x) const { const char* const T = "true"; const char* const F = "false"; os << "name = " << GetName() << endl << "is periodic = " << (IsPeriodic()? T: F) << endl << "value at " << x << " = "; if(fabs(EvaluateAt(x)-DBL_MAX)<0.000001) os << F<<endl; else os << EvaluateAt(x) << endl; os << "is differentiable at " << x << " = " << (IsDifferentiable(x)? T: F) << endl; if (IsDifferentiable(x)) { os << "derivative at " << x << " = " << DerivativeAt(x) << endl; } }
ON_3dVector ON_Polyline::TangentAt( double t ) const { ON_3dVector v = DerivativeAt(t); v.Unitize(); return v; }
ON_3dVector ON_Circle::TangentAt( double t ) const { ON_3dVector T = DerivativeAt(1,t); T.Unitize(); return T; }