UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
BezierCurve.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 "NURBSCurve.h"
6
7namespace UE::CADKernel
8{
9
11{
12 friend class FEntity;
13
14protected:
15 bool bIsRational = false;
16
17 int32 Degree = 0;
19 int32 NumSegments = 0;
20
23
25 : Poles{ InPoles }
26 {
27 Degree = Poles.Num() - 1;
28 NumSegments = 1;
29 NodalVector.Add(0.);
30 NodalVector.Add(1.);
31 Weights.SetNum(Poles.Num());
32 for (double& Weight : Weights)
33 {
34 Weight = 1.;
35 }
36 }
37
39
40 FBezierCurve() = default;
41
42public:
43
44 static bool IsBezier(const FNurbsCurveData& NurbsCurveData);
45
46 virtual void Serialize(FCADKernelArchive& Ar) override
47 {
48 FCurve::Serialize(Ar);
49
50 Ar.Serialize(bIsRational);
51 Ar.Serialize(Degree);
52 Ar.Serialize(NumSegments);
53 Ar.Serialize(NodalVector);
54 Ar.Serialize(Poles);
55 Ar.Serialize(Weights);
56 }
57
58#ifdef CADKERNEL_DEV
59 virtual FInfoEntity& GetInfo(FInfoEntity&) const override;
60#endif
61
62 virtual ECurve GetCurveType() const override
63 {
64 return ECurve::Bezier;
65 }
66
68 {
69 return Degree;
70 }
71
73 {
74 return Poles;
75 }
76
77 virtual TSharedPtr<FEntityGeom> ApplyMatrix(const FMatrixH& InMatrix) const override;
78 virtual void Offset(const FVector& OffsetDirection) override;
79
80 virtual void EvaluatePoint(double Coordinate, FCurvePoint& OutPoint, int32 DerivativeOrder = 0) const override;
81 virtual void Evaluate2DPoint(double Coordinate, FCurvePoint2D& OutPoint, int32 DerivativeOrder = 0) const override
82 {
84 EvaluatePoint(Coordinate, CurvePoint, DerivativeOrder);
85 OutPoint.DerivativeOrder = DerivativeOrder;
86 OutPoint.Point[0] = CurvePoint.Point[0];
87 OutPoint.Point[1] = CurvePoint.Point[1];
88 if (DerivativeOrder > 0)
89 {
90 OutPoint.Gradient[0] = CurvePoint.Gradient[0];
91 OutPoint.Gradient[1] = CurvePoint.Gradient[1];
92
93 if (DerivativeOrder > 1)
94 {
95 OutPoint.Laplacian[0] = CurvePoint.Laplacian[0];
96 OutPoint.Laplacian[1] = CurvePoint.Laplacian[1];
97 }
98 }
99 }
100
101 virtual void ExtendTo(const FVector& Point) override;
102
103
104};
105
106} // namespace UE::CADKernel
107
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
void SetNum(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2308
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
Definition SharedPointer.h:692
Definition BezierCurve.h:11
FBezierCurve(const TArray< FVector > &InPoles)
Definition BezierCurve.h:24
TArray< double > NodalVector
Definition BezierCurve.h:18
virtual void Evaluate2DPoint(double Coordinate, FCurvePoint2D &OutPoint, int32 DerivativeOrder=0) const override
Definition BezierCurve.h:81
int32 GetDegre() const
Definition BezierCurve.h:67
virtual ECurve GetCurveType() const override
Definition BezierCurve.h:62
TArray< FVector > Poles
Definition BezierCurve.h:21
TArray< double > Weights
Definition BezierCurve.h:22
virtual void Serialize(FCADKernelArchive &Ar) override
Definition BezierCurve.h:46
const TArray< FVector > & GetPoles() const
Definition BezierCurve.h:72
Definition CADKernelArchive.h:19
void Serialize(void *Value, int64 Length)
Definition CADKernelArchive.h:118
Definition Curve.h:21
Definition CADEntity.h:56
Definition MatrixH.h:14
Definition CADEntity.cpp:23
ECurve
Definition GeoEnum.h:10
Definition GeoPoint.h:11
Definition GeoPoint.h:50
Definition NURBSCurve.h:10