UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SplineCurve.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
6#include "Math/Point.h"
7#include "Math/InterpCurve.h"
8
11
12namespace UE::CADKernel
13{
14
16{
17 friend class FEntity;
18
19protected:
20
22
24 //FInterpCurveQuat Rotation;
25
27 //FInterpCurveFPoint Scale;
28
31
37
38 //bool bLoopPositionOverride;
39 //double LoopPosition;
40
42 {
43 SetSplinePoints(InPoles);
44 }
45
47 {
48 SetSplinePoints(InPoles, InTangents);
49 }
50
55
56 FSplineCurve() = default;
57
59 FVector GetLocationAtSplineInputKey(double InCoordinate) const;
60
62 FVector GetTangentAtSplineInputKey(double InCoordinate) const;
63
65 FVector GetDirectionAtSplineInputKey(double InCoordinate) const;
66
67public:
68
69 virtual void Serialize(FCADKernelArchive& Ar) override
70 {
71 FCurve::Serialize(Ar);
72 Ar << Position;
73 Ar << ReparamTable;
74 Ar << bClosedLoop;
75 }
76
77#ifdef CADKERNEL_DEV
78 virtual FInfoEntity& GetInfo(FInfoEntity&) const override;
79#endif
80
81 virtual ECurve GetCurveType() const override
82 {
83 return ECurve::Spline;
84 }
85
86 virtual TSharedPtr<FEntityGeom> ApplyMatrix(const FMatrixH& InMatrix) const override;
87 virtual void Offset(const FVector& OffsetDirection) override;
88
89 virtual void EvaluatePoint(double Coordinate, FCurvePoint& OutPoint, int32 DerivativeOrder = 0) const override;
90
91 virtual void ExtendTo(const FVector& Point) override;
92
99 void UpdateSpline(bool bClosedLoop = false, bool bStationaryEndpoints = false, int32 ReparamStepsPerSegment = 10);
100
102 double GetSegmentLength(const int32 Index, const double Param, bool bClosedLoop = false) const;
103
105 double GetSplineLength() const;
106
108 void SetSplinePoints(const TArray<FVector>& InPoints);
109 void SetSplinePoints(const TArray<FVector>& InPoints, const TArray<FVector>& InTangents);
110 void SetSplinePoints(const TArray<FVector>& InPoints, const TArray<FVector>& InArriveTangents, const TArray<FVector>& InLeaveTangents);
111
113};
114
115} // namespace UE::CADKernel
116
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
#define DEFINE_INTERPCURVE_WRAPPER_STRUCT(Name, ElementType)
Definition InterpCurve.h:789
uint32 Offset
Definition VulkanMemory.cpp:4033
Definition Array.h:670
Definition SharedPointer.h:692
Definition CADKernelArchive.h:19
Definition Curve.h:21
Definition CADEntity.h:56
Definition MatrixH.h:14
Definition SplineCurve.h:16
FInterpCurveFVector Position
Definition SplineCurve.h:21
bool bClosedLoop
Definition SplineCurve.h:36
const FInterpCurveFVector & GetSplinePointsPosition() const
Definition SplineCurve.h:112
FSplineCurve(const TArray< FVector > &InPoles)
Definition SplineCurve.h:41
virtual ECurve GetCurveType() const override
Definition SplineCurve.h:81
virtual void Serialize(FCADKernelArchive &Ar) override
Definition SplineCurve.h:69
FInterpCurveDouble ReparamTable
Definition SplineCurve.h:30
FSplineCurve(const TArray< FVector > &InPoles, const TArray< FVector > &InArriveTangents, const TArray< FVector > &InLeaveTangents)
Definition SplineCurve.h:51
FSplineCurve(const TArray< FVector > &InPoles, const TArray< FVector > &InTangents)
Definition SplineCurve.h:46
Definition CADEntity.cpp:23
ECurve
Definition GeoEnum.h:10
U16 Index
Definition radfft.cpp:71
Definition GeoPoint.h:50