UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ConeSurface.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
5
6namespace UE::CADKernel
7{
9{
10 friend FEntity;
11
12protected:
15 double ConeAngle;
16
31
51 , StartRadius(InStartRadius)
52 , ConeAngle(InConeAngle)
53 {
54 ComputeMinToleranceIso();
55 }
56
57 FConeSurface() = default;
58
60 {
61 FVector Origin = Matrix.Multiply(FVector::ZeroVector);
62
63 double DeltaVR = tan(ConeAngle);
64 double Radius1 = FMath::Abs(StartRadius + Boundary[EIso::IsoV].Max * DeltaVR);
65 double Radius2 = FMath::Abs(StartRadius + Boundary[EIso::IsoV].Min * DeltaVR);
66 double Radius = FMath::Max(Radius2, Radius1);
67
68 FVector Point2DU{ 1 , 0, 0 };
69 double ScaleU = ComputeScaleAlongAxis(Point2DU, Matrix, Origin);
70 double ToleranceU = Tolerance3D / Radius;
72
73 FVector Point2DV{ 0, 1, 0 };
74 double ScaleV = ComputeScaleAlongAxis(Point2DV, Matrix, Origin);
75 double ToleranceV = Tolerance3D / FMath::Sqrt(FMath::Square(DeltaVR) + 1);
77
78 MinToleranceIso.Set(ToleranceU, ToleranceV);
79 }
80
81public:
82
83 virtual void Serialize(FCADKernelArchive& Ar) override
84 {
85 FSurface::Serialize(Ar);
86 Ar << Matrix;
87 Ar << StartRadius;
88 Ar << ConeAngle;
89 }
90
91
93 {
94 return ESurface::Cone;
95 }
96
97#ifdef CADKERNEL_DEV
98 virtual FInfoEntity& GetInfo(FInfoEntity&) const override;
99#endif
100
101 virtual TSharedPtr<FEntityGeom> ApplyMatrix(const FMatrixH& InMatrix) const override;
102
103 virtual void EvaluatePoint(const FVector2d& InSurfacicCoordinate, FSurfacicPoint& OutPoint3D, int32 InDerivativeOrder = 0) const override;
104 virtual void EvaluatePointGrid(const FCoordinateGrid& Coordinates, FSurfacicSampling& OutPoints, bool bComputeNormals = false) const override;
105
107 {
108 PresampleIsoCircle(InBoundaries, OutCoordinates, EIso::IsoU);
109
110 OutCoordinates[EIso::IsoV].Empty(3);
111 OutCoordinates[EIso::IsoV].Add(InBoundaries[EIso::IsoV].Min);
112 OutCoordinates[EIso::IsoV].Add((InBoundaries[EIso::IsoV].Max + InBoundaries[EIso::IsoV].Min) / 2.0);
113 OutCoordinates[EIso::IsoV].Add(InBoundaries[EIso::IsoV].Max);
114 }
115
116};
117}
118
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 HUGE_VALUE
Definition Types.h:16
#define DOUBLE_TWO_PI
Definition UnrealMathUtility.h:85
Definition SharedPointer.h:692
Definition CADKernelArchive.h:19
Definition ConeSurface.h:9
void ComputeMinToleranceIso()
Definition ConeSurface.h:59
FMatrixH Matrix
Definition ConeSurface.h:13
virtual void Serialize(FCADKernelArchive &Ar) override
Definition ConeSurface.h:83
double ConeAngle
Definition ConeSurface.h:15
FConeSurface(const double InToleranceGeometric, const FMatrixH &InMatrix, double InStartRadius, double InConeAngle, double InStartRuleLength=-HUGE_VALUE, double InEndRuleLength=HUGE_VALUE, double InStartAngle=0.0, double InEndAngle=DOUBLE_TWO_PI)
Definition ConeSurface.h:27
virtual void Presample(const FSurfacicBoundary &InBoundaries, FCoordinateGrid &OutCoordinates) override
Definition ConeSurface.h:106
FConeSurface(const double InToleranceGeometric, const FMatrixH &InMatrix, double InStartRadius, double InConeAngle, const FSurfacicBoundary &InBoundary)
Definition ConeSurface.h:48
ESurface GetSurfaceType() const
Definition ConeSurface.h:92
double StartRadius
Definition ConeSurface.h:14
Definition CADEntity.h:56
Definition MatrixH.h:14
Definition Surface.h:27
Definition Boundary.h:248
Definition CADEntity.cpp:23
ESurface
Definition GeoEnum.h:34
static constexpr UE_FORCEINLINE_HINT T Square(const T A)
Definition UnrealMathUtility.h:578
Definition GeoPoint.h:103
Definition GeoPoint.h:19
Definition SurfacicSampling.h:14
static CORE_API const TVector< double > ZeroVector
Definition Vector.h:79