UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
CylinderSurface.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{
8class FNURBSSurface;
9
11{
12 friend FEntity;
13
14protected:
16 double Radius;
17
31 FCylinderSurface(const double InToleranceGeometric, const FMatrixH& InMatrix, const double InRadius, const FSurfacicBoundary& Boundary);
32
33 FCylinderSurface() = default;
34
36 {
37 FVector Origin = Matrix.Multiply(FVector::ZeroVector);
38
39 FVector Point2DU{ 1 , 0, 0 };
40 double ToleranceU = Tolerance3D / Radius;
41
42 double ScaleU = ComputeScaleAlongAxis(Point2DU, Matrix, Origin);
44
45 FVector Point2DV{ 0, 1, 0 };
46 double ToleranceV = Tolerance3D / ComputeScaleAlongAxis(Point2DV, Matrix, Origin);
47
48 MinToleranceIso.Set(ToleranceU, ToleranceV);
49 }
50
51public:
52
53 virtual void Serialize(FCADKernelArchive& Ar) override
54 {
55 FSurface::Serialize(Ar);
56 Ar << Matrix;
57 Ar << Radius;
58 }
59
60 virtual TSharedPtr<FEntityGeom> ApplyMatrix(const FMatrixH& InMatrix) const override;
61
62#ifdef CADKERNEL_DEV
63 virtual FInfoEntity& GetInfo(FInfoEntity&) const override;
64#endif
65
67 {
68 return ESurface::Cylinder;
69 }
70
71 virtual void InitBoundary() override;
72
73 virtual void EvaluatePoint(const FVector2d& InSurfacicCoordinate, FSurfacicPoint& OutPoint3D, int32 InDerivativeOrder = 0) const override;
74
76 {
77 PresampleIsoCircle(InBoundaries, OutCoordinates, EIso::IsoU);
78
79 OutCoordinates[EIso::IsoV].Empty(3);
80 OutCoordinates[EIso::IsoV].Add(InBoundaries[EIso::IsoV].Min);
81 OutCoordinates[EIso::IsoV].Add((InBoundaries[EIso::IsoV].Max + InBoundaries[EIso::IsoV].Min) / 2.0);
82 OutCoordinates[EIso::IsoV].Add(InBoundaries[EIso::IsoV].Max);
83 }
84
85};
86}
87
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 CylinderSurface.h:11
FMatrixH Matrix
Definition CylinderSurface.h:15
virtual void Presample(const FSurfacicBoundary &InBoundaries, FCoordinateGrid &OutCoordinates) override
Definition CylinderSurface.h:75
ESurface GetSurfaceType() const
Definition CylinderSurface.h:66
double Radius
Definition CylinderSurface.h:16
void ComputeMinToleranceIso()
Definition CylinderSurface.h:35
virtual void Serialize(FCADKernelArchive &Ar) override
Definition CylinderSurface.h:53
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
Definition GeoPoint.h:103
Definition GeoPoint.h:19
static CORE_API const TVector< double > ZeroVector
Definition Vector.h:79