UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UE::CADKernel::FSurfacicPolyline Class Reference

#include <SurfacicPolyline.h>

Public Member Functions

 FSurfacicPolyline (TSharedRef< FSurface > InCarrierSurface, TSharedRef< FCurve > InCurve2D)
 
 FSurfacicPolyline (TSharedRef< FSurface > InCarrierSurface, TSharedRef< FCurve > InCurve2D, const double Tolerance)
 
 FSurfacicPolyline (TSharedRef< FSurface > InCarrierSurface, TSharedRef< FCurve > InCurve2D, const double ChordTolerance, const double ParamTolerance, bool bInWithNormals, bool bWithTangent)
 
 FSurfacicPolyline (bool bInWithNormals=false, bool bInWithTangent=false)
 
void Serialize (FCADKernelArchive &Ar)
 
FInfoEntityGetInfo (FInfoEntity &) const
 
TSharedPtr< FEntityGeomApplyMatrix (const FMatrixH &) const
 
void CheckIfDegenerated (const double Tolerance3D, const FSurfacicTolerance &Tolerances2D, const FLinearBoundary &Boudary, bool &bDegeneration2D, bool &bDegeneration3D, double &Length3D) const
 
void GetExtremities (const FLinearBoundary &InBoundary, const double Tolerance3D, const FSurfacicTolerance &Tolerances2D, FSurfacicCurveExtremities &Extremities) const
 
FVector Approximate3DPoint (double InCoordinate) const
 
void Approximate3DPoints (const TArray< double > &InCoordinates, TArray< FVector > &OutPoints) const
 
FVector2d Approximate2DPoint (double InCoordinate) const
 
FVector GetTangentAt (double InCoordinate) const
 
FVector2d GetTangent2DAt (double InCoordinate) const
 
FSurfacicTolerance ComputeTolerance (const double Tolerance3D, const FSurfacicTolerance &MinToleranceIso, const int32 Index) const
 
double ComputeLinearToleranceAt (const double Tolerance3D, const double MinLinearTolerance, const int32 Index) const
 
void Approximate2DPoints (const TArray< double > &InCoordinates, TArray< FVector2d > &OutPoints) const
 
void ApproximatePolyline (FSurfacicPolyline &OutPolyline) const
 
void Sample (const FLinearBoundary &Boundary, const double DesiredSegmentLength, TArray< double > &OutCoordinates) const
 
double GetCoordinateOfProjectedPoint (const FLinearBoundary &Boundary, const FVector &PointOnEdge, FVector &ProjectedPoint) const
 
double GetCoordinateOfProjectedPoint (const FLinearBoundary &Boundary, const FVector2d &PointOnEdge, FVector2d &ProjectedPoint) const
 
void ProjectPoints (const FLinearBoundary &InBoundary, const TArray< FVector > &InPointsToProject, TArray< double > &ProjectedPointCoordinates, TArray< FVector > &ProjectedPoints) const
 
void ProjectPoints (const FLinearBoundary &InBoundary, const TArray< FVector2d > &InPointsToProject, TArray< double > &ProjectedPointCoordinates, TArray< FVector2d > &ProjectedPoints) const
 
void ProjectCoincidentalPolyline (const FLinearBoundary &InBoundary, const TArray< FVector > &InPointsToProject, bool bSameOrientation, TArray< double > &OutProjectedPointCoordinates, double ToleranceOfProjection) const
 
void ComputeIntersectionsWithIsos (const FLinearBoundary &InBoundary, const TArray< double > &InIsoCoordinates, const EIso InTypeIso, const FSurfacicTolerance &ToleranceIso, TArray< double > &OutIntersection) const
 
const TArray< double > & GetCoordinates () const
 
const TArray< FVector2d > & Get2DPoints () const
 
const FVectorGetPointAt (int32 Index) const
 
const TArray< FVector > & GetPoints () const
 
const TArray< FVector3f > & GetNormals () const
 
const TArray< FVector > & GetTangents () const
 
void SwapCoordinates (TArray< double > &NewCoordinates)
 
int32 Size () const
 
void GetSubPolyline (const FLinearBoundary &InBoundary, const EOrientation InOrientation, TArray< FVector2d > &OutPoints) const
 
void GetSubPolyline (const FLinearBoundary &InBoundary, TArray< double > &OutCoordinates, TArray< FVector2d > &OutPoints) const
 
void GetSubPolyline (const FLinearBoundary &InBoundary, const EOrientation InOrientation, TArray< FVector > &OutPoints) const
 
void GetSubPolyline (const FLinearBoundary &InBoundary, TArray< double > &OutCoordinates, TArray< FVector > &OutPoints) const
 
void Reserve (int32 Number)
 
void Empty (int32 Slack=0)
 
void EmplaceAt (int32 Index, FSurfacicPolyline &Polyline, int32 PointIndex)
 
void RemoveComplementaryPoints (int32 Offset)
 
void Pop ()
 
void Reverse ()
 
double GetLength (const FLinearBoundary &InBoundary) const
 
double Get2DLength (const FLinearBoundary &InBoundary) const
 
bool IsIso (EIso Iso, double ErrorTolerance=DOUBLE_SMALL_NUMBER) const
 

Public Attributes

TArray< doubleCoordinates
 
TArray< FVector2dPoints2D
 
TArray< FVectorPoints3D
 
TArray< FVector3fNormals
 
TArray< FVectorTangents
 
FSurfacicBoundary BoundingBox
 
bool bWithNormals
 
bool bWithTangent
 

Constructor & Destructor Documentation

◆ FSurfacicPolyline() [1/4]

UE::CADKernel::FSurfacicPolyline::FSurfacicPolyline ( TSharedRef< FSurface InCarrierSurface,
TSharedRef< FCurve InCurve2D 
)

◆ FSurfacicPolyline() [2/4]

UE::CADKernel::FSurfacicPolyline::FSurfacicPolyline ( TSharedRef< FSurface InCarrierSurface,
TSharedRef< FCurve InCurve2D,
const double  Tolerance 
)

◆ FSurfacicPolyline() [3/4]

UE::CADKernel::FSurfacicPolyline::FSurfacicPolyline ( TSharedRef< FSurface InCarrierSurface,
TSharedRef< FCurve InCurve2D,
const double  ChordTolerance,
const double  ParamTolerance,
bool  bInWithNormals,
bool  bWithTangent 
)

◆ FSurfacicPolyline() [4/4]

UE::CADKernel::FSurfacicPolyline::FSurfacicPolyline ( bool  bInWithNormals = false,
bool  bInWithTangent = false 
)
inline

Member Function Documentation

◆ ApplyMatrix()

TSharedPtr< FEntityGeom > UE::CADKernel::FSurfacicPolyline::ApplyMatrix ( const FMatrixH ) const

◆ Approximate2DPoint()

FVector2d UE::CADKernel::FSurfacicPolyline::Approximate2DPoint ( double  InCoordinate) const
inline

◆ Approximate2DPoints()

void UE::CADKernel::FSurfacicPolyline::Approximate2DPoints ( const TArray< double > &  InCoordinates,
TArray< FVector2d > &  OutPoints 
) const
inline

◆ Approximate3DPoint()

FVector UE::CADKernel::FSurfacicPolyline::Approximate3DPoint ( double  InCoordinate) const
inline

◆ Approximate3DPoints()

void UE::CADKernel::FSurfacicPolyline::Approximate3DPoints ( const TArray< double > &  InCoordinates,
TArray< FVector > &  OutPoints 
) const
inline

◆ ApproximatePolyline()

void UE::CADKernel::FSurfacicPolyline::ApproximatePolyline ( FSurfacicPolyline OutPolyline) const
inline

◆ CheckIfDegenerated()

void UE::CADKernel::FSurfacicPolyline::CheckIfDegenerated ( const double  Tolerance3D,
const FSurfacicTolerance Tolerances2D,
const FLinearBoundary Boudary,
bool bDegeneration2D,
bool bDegeneration3D,
double Length3D 
) const

◆ ComputeIntersectionsWithIsos()

void UE::CADKernel::FSurfacicPolyline::ComputeIntersectionsWithIsos ( const FLinearBoundary InBoundary,
const TArray< double > &  InIsoCoordinates,
const EIso  InTypeIso,
const FSurfacicTolerance ToleranceIso,
TArray< double > &  OutIntersection 
) const

The main idea of this algorithm is to process starting for the beginning of the curve to the end of the curve.

◆ ComputeLinearToleranceAt()

double UE::CADKernel::FSurfacicPolyline::ComputeLinearToleranceAt ( const double  Tolerance3D,
const double  MinLinearTolerance,
const int32  Index 
) const
inline

◆ ComputeTolerance()

FSurfacicTolerance UE::CADKernel::FSurfacicPolyline::ComputeTolerance ( const double  Tolerance3D,
const FSurfacicTolerance MinToleranceIso,
const int32  Index 
) const
inline

◆ EmplaceAt()

void UE::CADKernel::FSurfacicPolyline::EmplaceAt ( int32  Index,
FSurfacicPolyline Polyline,
int32  PointIndex 
)
inline

◆ Empty()

void UE::CADKernel::FSurfacicPolyline::Empty ( int32  Slack = 0)
inline

Empties the polyline.

Parameters
Slack(Optional) The expected usage size after empty operation. Default is 0.

◆ Get2DLength()

double UE::CADKernel::FSurfacicPolyline::Get2DLength ( const FLinearBoundary InBoundary) const
inline

◆ Get2DPoints()

const TArray< FVector2d > & UE::CADKernel::FSurfacicPolyline::Get2DPoints ( ) const
inline

◆ GetCoordinateOfProjectedPoint() [1/2]

double UE::CADKernel::FSurfacicPolyline::GetCoordinateOfProjectedPoint ( const FLinearBoundary Boundary,
const FVector PointOnEdge,
FVector ProjectedPoint 
) const
inline

◆ GetCoordinateOfProjectedPoint() [2/2]

double UE::CADKernel::FSurfacicPolyline::GetCoordinateOfProjectedPoint ( const FLinearBoundary Boundary,
const FVector2d PointOnEdge,
FVector2d ProjectedPoint 
) const
inline

◆ GetCoordinates()

const TArray< double > & UE::CADKernel::FSurfacicPolyline::GetCoordinates ( ) const
inline

◆ GetExtremities()

void UE::CADKernel::FSurfacicPolyline::GetExtremities ( const FLinearBoundary InBoundary,
const double  Tolerance3D,
const FSurfacicTolerance Tolerances2D,
FSurfacicCurveExtremities Extremities 
) const

◆ GetInfo()

FInfoEntity & UE::CADKernel::FSurfacicPolyline::GetInfo ( FInfoEntity ) const

◆ GetLength()

double UE::CADKernel::FSurfacicPolyline::GetLength ( const FLinearBoundary InBoundary) const
inline

◆ GetNormals()

const TArray< FVector3f > & UE::CADKernel::FSurfacicPolyline::GetNormals ( ) const
inline

◆ GetPointAt()

const FVector & UE::CADKernel::FSurfacicPolyline::GetPointAt ( int32  Index) const
inline

◆ GetPoints()

const TArray< FVector > & UE::CADKernel::FSurfacicPolyline::GetPoints ( ) const
inline

◆ GetSubPolyline() [1/4]

void UE::CADKernel::FSurfacicPolyline::GetSubPolyline ( const FLinearBoundary InBoundary,
const EOrientation  InOrientation,
TArray< FVector > &  OutPoints 
) const
inline

Get the sub polyline bounded by the input InBoundary in the orientation of the input InOrientation and append it to the output OutPoints

◆ GetSubPolyline() [2/4]

void UE::CADKernel::FSurfacicPolyline::GetSubPolyline ( const FLinearBoundary InBoundary,
const EOrientation  InOrientation,
TArray< FVector2d > &  OutPoints 
) const
inline

Get the sub 2d polyline bounded by the input InBoundary in the orientation of the input InOrientation and append it to the output OutPoints

◆ GetSubPolyline() [3/4]

void UE::CADKernel::FSurfacicPolyline::GetSubPolyline ( const FLinearBoundary InBoundary,
TArray< double > &  OutCoordinates,
TArray< FVector > &  OutPoints 
) const
inline

Get the sub polyline bounded by the input InBoundary in the orientation of the input InOrientation and append it to the output OutPoints

◆ GetSubPolyline() [4/4]

void UE::CADKernel::FSurfacicPolyline::GetSubPolyline ( const FLinearBoundary InBoundary,
TArray< double > &  OutCoordinates,
TArray< FVector2d > &  OutPoints 
) const
inline

Get the sub polyline bounded by the input InBoundary in the orientation of the input InOrientation and append it to the output OutPoints

◆ GetTangent2DAt()

FVector2d UE::CADKernel::FSurfacicPolyline::GetTangent2DAt ( double  InCoordinate) const
inline

◆ GetTangentAt()

FVector UE::CADKernel::FSurfacicPolyline::GetTangentAt ( double  InCoordinate) const
inline

◆ GetTangents()

const TArray< FVector > & UE::CADKernel::FSurfacicPolyline::GetTangents ( ) const
inline

◆ IsIso()

bool UE::CADKernel::FSurfacicPolyline::IsIso ( EIso  Iso,
double  ErrorTolerance = DOUBLE_SMALL_NUMBER 
) const
inline

◆ Pop()

void UE::CADKernel::FSurfacicPolyline::Pop ( )
inline

◆ ProjectCoincidentalPolyline()

void UE::CADKernel::FSurfacicPolyline::ProjectCoincidentalPolyline ( const FLinearBoundary InBoundary,
const TArray< FVector > &  InPointsToProject,
bool  bSameOrientation,
TArray< double > &  OutProjectedPointCoordinates,
double  ToleranceOfProjection 
) const
inline

Project each point of a coincidental polyline on the Polyline.

Parameters
ToleranceOfProjectionMax error between the both curve to stop the search of projection

◆ ProjectPoints() [1/2]

void UE::CADKernel::FSurfacicPolyline::ProjectPoints ( const FLinearBoundary InBoundary,
const TArray< FVector > &  InPointsToProject,
TArray< double > &  ProjectedPointCoordinates,
TArray< FVector > &  ProjectedPoints 
) const
inline

◆ ProjectPoints() [2/2]

void UE::CADKernel::FSurfacicPolyline::ProjectPoints ( const FLinearBoundary InBoundary,
const TArray< FVector2d > &  InPointsToProject,
TArray< double > &  ProjectedPointCoordinates,
TArray< FVector2d > &  ProjectedPoints 
) const
inline

◆ RemoveComplementaryPoints()

void UE::CADKernel::FSurfacicPolyline::RemoveComplementaryPoints ( int32  Offset)
inline

◆ Reserve()

void UE::CADKernel::FSurfacicPolyline::Reserve ( int32  Number)
inline

Reserves memory such that the polyline can contain at least Number elements.

Parameters
NumberThe number of elements that the polyline should be able to contain after allocation.

◆ Reverse()

void UE::CADKernel::FSurfacicPolyline::Reverse ( )
inline

◆ Sample()

void UE::CADKernel::FSurfacicPolyline::Sample ( const FLinearBoundary Boundary,
const double  DesiredSegmentLength,
TArray< double > &  OutCoordinates 
) const
inline

◆ Serialize()

void UE::CADKernel::FSurfacicPolyline::Serialize ( FCADKernelArchive Ar)
inline

◆ Size()

int32 UE::CADKernel::FSurfacicPolyline::Size ( ) const
inline
Returns
the size of the polyline i.e. the count of points.

◆ SwapCoordinates()

void UE::CADKernel::FSurfacicPolyline::SwapCoordinates ( TArray< double > &  NewCoordinates)
inline

Member Data Documentation

◆ BoundingBox

FSurfacicBoundary UE::CADKernel::FSurfacicPolyline::BoundingBox

◆ bWithNormals

bool UE::CADKernel::FSurfacicPolyline::bWithNormals

◆ bWithTangent

bool UE::CADKernel::FSurfacicPolyline::bWithTangent

◆ Coordinates

TArray<double> UE::CADKernel::FSurfacicPolyline::Coordinates

◆ Normals

TArray<FVector3f> UE::CADKernel::FSurfacicPolyline::Normals

◆ Points2D

TArray<FVector2d> UE::CADKernel::FSurfacicPolyline::Points2D

◆ Points3D

TArray<FVector> UE::CADKernel::FSurfacicPolyline::Points3D

◆ Tangents

TArray<FVector> UE::CADKernel::FSurfacicPolyline::Tangents

The documentation for this class was generated from the following files: