UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NURBSCurve.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "Geo/Curves/Curve.h"
5#include "Math/BSpline.h"
6
7namespace UE::CADKernel
8{
20
22{
23 friend class FEntity;
24
25protected:
26
28
31
33
35
41
44
45 FNURBSCurve() = default;
46
47public:
48
49 virtual void Serialize(FCADKernelArchive& Ar) override
50 {
51 FCurve::Serialize(Ar);
52 Ar << Degree;
53 Ar.Serialize(NodalVector);
54 Ar.Serialize(Weights);
55 Ar.Serialize(Poles);
56 Ar << bIsRational;
57
58 if (Ar.IsLoading())
59 {
60 Finalize();
61 }
62 }
63
64#ifdef CADKERNEL_DEV
65 virtual FInfoEntity& GetInfo(FInfoEntity&) const override;
66#endif
67
68 virtual ECurve GetCurveType() const override
69 {
70 return ECurve::Nurbs;
71 }
72
74 {
75 return Degree;
76 }
77
78 const int32 GetPoleCount() const
79 {
80 return Poles.Num();
81 }
82
84 {
85 return Poles;
86 }
87
89 {
90 return Weights;
91 }
92
94 {
95 return HomogeneousPoles;
96 }
97
99 {
100 return NodalVector;
101 }
102
103 bool IsRational() const
104 {
105 return bIsRational;
106 }
107
108 virtual TSharedPtr<FEntityGeom> ApplyMatrix(const FMatrixH& InMatrix) const override;
109 virtual void Offset(const FVector& OffsetDirection) override;
110
111 virtual void EvaluatePoint(double Coordinate, FCurvePoint& OutPoint, int32 DerivativeOrder = 0) const override
112 {
113 BSpline::EvaluatePoint(*this, Coordinate, OutPoint, DerivativeOrder);
114 }
115
116 virtual void Evaluate2DPoint(double Coordinate, FCurvePoint2D& OutPoint, int32 DerivativeOrder = 0) const override
117 {
118 BSpline::Evaluate2DPoint(*this, Coordinate, OutPoint, DerivativeOrder);
119 }
120
122 {
123 BSpline::FindNotDerivableParameters(*this, DerivativeOrder, InBoundary, OutNotDerivableCoordinates);
124 }
125
126 virtual void ExtendTo(const FVector& DesiredPosition) override;
127
128 void Invert();
129 void SetStartNodalCoordinate(double NewStartBoundary);
130
131private:
132
136 void Finalize();
137
138};
139
140} // namespace UE::CADKernel
141
FPlatformTypes::int8 int8
An 8-bit signed integer.
Definition Platform.h:1121
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
uint32 Offset
Definition VulkanMemory.cpp:4033
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
Definition SharedPointer.h:692
Definition CADKernelArchive.h:19
bool IsLoading() const
Definition CADKernelArchive.h:108
void Serialize(void *Value, int64 Length)
Definition CADKernelArchive.h:118
Definition Curve.h:21
Definition CADEntity.h:56
Definition MatrixH.h:14
Definition NURBSCurve.h:22
virtual void FindNotDerivableCoordinates(const FLinearBoundary &InBoundary, int32 DerivativeOrder, TArray< double > &OutNotDerivableCoordinates) const override
Definition NURBSCurve.h:121
virtual void Serialize(FCADKernelArchive &Ar) override
Definition NURBSCurve.h:49
const TArray< double > & GetWeights() const
Definition NURBSCurve.h:88
int32 Degree
Definition NURBSCurve.h:27
int32 GetDegree() const
Definition NURBSCurve.h:73
const TArray< double > & GetNodalVector() const
Definition NURBSCurve.h:98
TArray< double > HomogeneousPoles
Definition NURBSCurve.h:39
virtual void Evaluate2DPoint(double Coordinate, FCurvePoint2D &OutPoint, int32 DerivativeOrder=0) const override
Definition NURBSCurve.h:116
TArray< FVector > Poles
Definition NURBSCurve.h:32
bool bIsRational
Definition NURBSCurve.h:34
TArray< double > NodalVector
Definition NURBSCurve.h:29
const int32 GetPoleCount() const
Definition NURBSCurve.h:78
int32 PoleDimension
Definition NURBSCurve.h:40
TArray< double > Weights
Definition NURBSCurve.h:30
virtual void EvaluatePoint(double Coordinate, FCurvePoint &OutPoint, int32 DerivativeOrder=0) const override
Definition NURBSCurve.h:111
const TArray< FVector > & GetPoles() const
Definition NURBSCurve.h:83
const TArray< double > & GetHPoles() const
Definition NURBSCurve.h:93
bool IsRational() const
Definition NURBSCurve.h:103
virtual ECurve GetCurveType() const override
Definition NURBSCurve.h:68
Definition CADEntity.cpp:23
ECurve
Definition GeoEnum.h:10
Definition GeoPoint.h:11
Definition GeoPoint.h:50
Definition Boundary.h:18
Definition NURBSCurve.h:10
TArray< double > NodalVector
Definition NURBSCurve.h:15
int32 Degree
Definition NURBSCurve.h:14
TArray< double > Weights
Definition NURBSCurve.h:17
int32 Dimension
Definition NURBSCurve.h:12
bool bIsRational
Definition NURBSCurve.h:11
TArray< FVector > Poles
Definition NURBSCurve.h:18