UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ParabolaCurve.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
6namespace UE::CADKernel
7{
8
10{
11 friend class FIGESEntity104;
12 friend class FEntity;
13
14protected:
17
24
25 FParabolaCurve() = default;
26
27public:
28
29 virtual void Serialize(FCADKernelArchive& Ar) override
30 {
31 FCurve::Serialize(Ar);
32 Ar << Matrix;
33 Ar << FocalDistance;
34 }
35
36#ifdef CADKERNEL_DEV
37 virtual FInfoEntity& GetInfo(FInfoEntity&) const override;
38#endif
39
40 virtual ECurve GetCurveType() const override
41 {
42 return ECurve::Parabola;
43 }
44
45 virtual TSharedPtr<FEntityGeom> ApplyMatrix(const FMatrixH& InMatrix) const override;
46 virtual void Offset(const FVector& OffsetDirection) override;
47
48 virtual void ExtendTo(const FVector& Point) override
49 {
50 ensureCADKernel(false);
51 }
52
53 virtual void EvaluatePoint(double Coordinate, FCurvePoint& OutPoint, int32 DerivativeOrder = 0) const override
54 {
56
57 OutPoint.DerivativeOrder = DerivativeOrder;
58
59 OutPoint.Point = Matrix.Multiply(FVector(Coordinate * Coordinate * FocalDistance, Coordinate, 0.));
60
61 if (DerivativeOrder > 0)
62 {
63 OutPoint.Gradient = Matrix.MultiplyVector(FVector(2.0 * Coordinate * FocalDistance, 1., 0.));
64
65 if (DerivativeOrder > 1)
66 {
67 OutPoint.Laplacian = Matrix.MultiplyVector(FVector(2.0 * FocalDistance, 0., 0.));
68 }
69 }
70 }
71
72 virtual void Evaluate2DPoint(double Coordinate, FCurvePoint2D& OutPoint, int32 DerivativeOrder = 0) const override
73 {
75
76 OutPoint.DerivativeOrder = DerivativeOrder;
77
78 OutPoint.Point = Matrix.Multiply2D(FVector2d(Coordinate * Coordinate * FocalDistance, Coordinate));
79
80 if (DerivativeOrder > 0)
81 {
82 OutPoint.Gradient = Matrix.MultiplyVector2D(FVector2d(2.0 * Coordinate * FocalDistance, 1.));
83
84 if (DerivativeOrder > 1)
85 {
86 OutPoint.Laplacian = Matrix.MultiplyVector2D(FVector2d(2.0 * FocalDistance, 0.));
87 }
88 }
89 }
90};
91
92} // namespace UE::CADKernel
93
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
#define ensureCADKernel(InExpression)
Definition Types.h:115
#define FVector
Definition IOSSystemIncludes.h:8
UE::Math::TVector2< double > FVector2d
Definition MathFwd.h:61
uint32 Offset
Definition VulkanMemory.cpp:4033
Definition SharedPointer.h:692
Definition CADKernelArchive.h:19
Definition Curve.h:21
Definition CADEntity.h:56
Definition MatrixH.h:14
Definition ParabolaCurve.h:10
virtual ECurve GetCurveType() const override
Definition ParabolaCurve.h:40
virtual void Serialize(FCADKernelArchive &Ar) override
Definition ParabolaCurve.h:29
double FocalDistance
Definition ParabolaCurve.h:16
FParabolaCurve(const FMatrixH &InMatrix, double InFocalDistance, const FLinearBoundary &InBounds, int8 InDimension=3)
Definition ParabolaCurve.h:18
FMatrixH Matrix
Definition ParabolaCurve.h:15
virtual void Evaluate2DPoint(double Coordinate, FCurvePoint2D &OutPoint, int32 DerivativeOrder=0) const override
Definition ParabolaCurve.h:72
virtual void ExtendTo(const FVector &Point) override
Definition ParabolaCurve.h:48
virtual void EvaluatePoint(double Coordinate, FCurvePoint &OutPoint, int32 DerivativeOrder=0) const override
Definition ParabolaCurve.h:53
Definition CADEntity.cpp:23
ECurve
Definition GeoEnum.h:10
Definition GeoPoint.h:11
Definition GeoPoint.h:50
Definition Boundary.h:18