SmApiCurves.h#
Fully qualified name: SM_API/inc/SmApiCurves.h
File members: SM_API/inc/SmApiCurves.h
// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0
/**********************************************************************
FILE NAME: SmCurves.h
PURPOSE:
Contains popular high level "C" type functions that create/modify curves.
Additional functions exist in SMLib
GENERAL NOTES:
High level functions may assume some input parameters
for ease of use. For maximum flexibility, related functions
can be found in SMLib
**********************************************************************/
#ifndef __SmApiCurves_H__
#define __SmApiCurves_H__
#ifndef __SmApiTypes_H__
#include <SmApiTypes.h>
#endif
#include <SmTArray.h>
#include <SmCurveTypes.h>
class SmContext;
class SmPoint3d;
class SmLine;
class SmCircle;
class SmCurve;
SMAPI_EXPORT SmApiStatus SmApiCreateLineSegment(
const SmPoint3d& crStartPt,
const SmPoint3d& crEndPt,
SmLine*& rpResult
);
SMAPI_EXPORT SmApiStatus SmApiCreateLine(
const SmPoint3d& crStartPt,
const SmVector3d& crDirection,
SmLine*& rpResult
);
SMAPI_EXPORT SmApiStatus SmApiCreateCircle(
const SmPoint3d& crCenterPt,
double dRadius,
SmBSplineCurve*& rpResult
);
SMAPI_EXPORT SmApiStatus SmApiCreateCircle(
const SmPoint3d& crCenterPt,
double dRadius,
SmCircle*& rpResult
);
SMAPI_EXPORT SmApiStatus SmApiCreateEllipse(
const SmPoint3d& crOrigin,
double dRadius1,
double dRadius2,
SmEllipse*& rpResult
);
SMAPI_EXPORT SmApiStatus SmApiCreateArc(
const SmPoint3d& crCenterPt,
double dRadius,
double dStartAngleDeg,
double dEndAngleDeg,
SmBSplineCurve*& rpResult
);
SMAPI_EXPORT SmApiStatus SmApiCreateHelix(
const SmPoint3d& crOrigin,
double dHeight,
double dRadiusStart,
double dRadiusEnd,
double dNumTurns,
SmBoolean bRightHanded,
double dTolerance,
SmBSplineCurve*& rpResult
);
SMAPI_EXPORT SmApiStatus SmApiCreateRectangle(
const SmPoint3d& crCenterPt,
double dLength,
double dWidth,
SmTArray<SmBSplineCurve*>& rpResult
);
SMAPI_EXPORT SmApiStatus SmApiCreateRegularPolygon(
const SmPoint3d& crCenterPt,
ULONG nSides,
double dRadius,
SmTArray<SmBSplineCurve*>& rpResult
);
SMAPI_EXPORT SmApiStatus SmApiCreateCurve(
const SmTArray<SmPoint3d>& crPoints,
SmBSplineCurve*& rpResult
);
SMAPI_EXPORT SmApiStatus SmApiCreateCanonicalCurve(
const SmTArray<SmPoint3d>& crPoints,
const SmTArray<double>& crKnots,
const SmTArray<ULONG>& crKnotMultiplicities,
const SmTArray<double>* crWeights,
ULONG lDegree,
SmBSplineCurveForm eBSplineCurveForm,
SmBSplineCurve*& rpResult
);
SMAPI_EXPORT SmApiStatus SmApiCreateCurveApproxPoints(
const SmTArray<SmPoint3d>& crPoints,
SmCurve*& rpResult
);
SMAPI_EXPORT SmApiStatus SmApiCreateCurveInterpPoints(
const SmTArray<SmPoint3d>& crPoints,
SmCurve*& rpResult,
SmCurveParameterizationType eParameterization = SM_CP_UNIFORM
);
SMAPI_EXPORT SmApiStatus SmApiOffsetCurve(
SmBSplineCurve* pCurveToOffset,
double dOffsetDistance,
SmBSplineCurve*& rpResult
);
SMAPI_EXPORT SmApiStatus SmApiEvaluateCurve(
const SmCurve* pCurve,
double dParameter,
SmVector3d*& crPoint,
SmVector3d*& crDeriv1,
SmVector3d*& crDeriv2
);
SMAPI_EXPORT SmApiStatus SmApiEvaluateContinuity(
const SmCurve* pCurve,
double dParameter,
SmContinuityType& crType
);
SMAPI_EXPORT SmApiStatus SmApiProjectCurve(
const SmBSplineCurve* pCurve,
const SmSurface* pSurface,
SmTArray<SmBSplineCurve*>* pOptCurves2d,
SmTArray<SmBSplineCurve*>* pOptCurves3d
);
SMAPI_EXPORT SmApiStatus SmApiDropCurveToSrf(
SmBSplineCurve* pCurve,
SmSurface* pSurface,
SmTArray<SmBSplineCurve*>* pOptCurves2d,
SmTArray<SmBSplineCurve*>* pOptCurves3d
);
SMAPI_EXPORT SmApiStatus SmApiLiftUVCurveFromSrf(
const SmBSplineCurve* pUVCurve,
const SmSurface* pSurface,
SmTArray<SmBSplineCurve*>* pCurves3d
);
SMAPI_EXPORT SmApiStatus SmApiMakeCurvesCompatible(
SmTArray<SmBSplineCurve*>& pCurves
);
SMAPI_EXPORT SmApiStatus SmApiOrderCurves(
SmTArray<SmBSplineCurve*>& pCurves
);
SMAPI_EXPORT SmApiStatus SmApiRemoveCurveKnots(
SmCurve* pCurve
);
SMAPI_EXPORT SmApiStatus SmApiConvertToLinesAndArcs(
SmBSplineCurve* pCurve,
SmTArray<SmBSplineCurve*>& pLinesAndArcs
);
#endif