UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
GridBase.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "Core/Chrono.h"
5#include "Core/HaveStates.h"
6#include "Geo/GeoEnum.h"
7#include "Geo/GeoPoint.h"
8#include "Math/Point.h"
9#include "Mesh/MeshEnum.h"
10#include "UI/Display.h"
11
12#ifdef CADKERNEL_DEV
13#include "UI/DefineForDebug.h"
14#endif
15
16
17namespace UE::CADKernel
18{
19
20struct FCuttingPoint;
21struct FCuttingGrid;
22
23class FIsoNode;
24class FIsoSegment;
25class FLoopNode;
26class FModelMesh;
27class FThinZone2DFinder;
28class FTopologicalFace;
29
31{
40
51
70};
71
72class FGridBase : public FHaveStates
73{
74
75protected:
76
78 const double Tolerance3D;
79
83 int32 CuttingCount[2] = { 0 , 0 };
85
87
92
97
102
103public:
105
106public:
108
109 virtual ~FGridBase()
110 {
111#ifdef DEBUG_ONLY_SURFACE_TO_DEBUG
112 Close3DDebugSession(bDisplay);
113#endif
114 }
115
121
128 bool ScaleGrid();
129
130 double GetTolerance() const
131 {
132 return Tolerance3D;
133 }
134
135protected:
136
137 virtual const FCoordinateGrid& GetCoordinateGrid() const = 0;
138
139 void EvaluatePointGrid(const FCoordinateGrid& CoordinateGrid, bool bWithNormals);
140
146 {
147 const FCoordinateGrid& CoordinateGrid = GetCoordinateGrid();
148
153
154 const double U1MinusU0 = CoordinateGrid[EIso::IsoU][IndexU + 1] - CoordinateGrid[EIso::IsoU][IndexU];
155 const double U0MinusU = CoordinateGrid[EIso::IsoU][IndexU] - InPoint.X;
156 const double V1MinusV0 = CoordinateGrid[EIso::IsoV][IndexV + 1] - CoordinateGrid[EIso::IsoV][IndexV];
157 const double V0MinusV = CoordinateGrid[EIso::IsoV][IndexV] - InPoint.Y;
158
160 PointU0V0 +
164 };
165
166public:
167
174 {
175 return Points2D[(int32)Space][Index];
176 }
177
182 {
183 return Points2D[(int32)Space][GobalIndex(IndexU, IndexV)];
184 }
185
190 {
191 return Points3D[Index];
192 }
193
198
203
208 {
209 return Points3D;
210 }
211
216 {
217 return Points3D;
218 }
219
224 {
225 return Points2D[(int32)Space];
226 }
227
229 {
230 return Face;
231 }
232
234 {
235 return Face;
236 }
237
245
246#ifdef CADKERNEL_DEBUG
247
248 // ======================================================================================================================================================================================================================
249 // Display Methodes ================================================================================================================================================================================================
250 // ======================================================================================================================================================================================================================
251 mutable bool bDisplay = true;
252
254 virtual void DisplayGridPoints(EGridSpace DisplaySpace) const;
255 void DisplayInnerPoints(TCHAR* Message, EGridSpace DisplaySpace) const;
256#endif
257
258#ifdef CADKERNEL_DEV
259 void PrintTimeElapse() const;
260#endif
261};
262
263}
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
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 FIdent
Definition Types.h:27
void Init()
Definition LockFreeList.h:4
Definition Array.h:670
Definition Chrono.h:31
static const FDuration Elapse(FTimePoint StartTime)
Definition Chrono.h:43
static const FTimePoint Now()
Definition Chrono.h:34
static void PrintClockElapse(EVerboseLevel Level, const TCHAR *Indent, const TCHAR *Process, FDuration Duration, ETimeUnit Unit=ETimeUnit::MicroSeconds)
Definition Message.cpp:146
Definition GridBase.h:73
int32 CuttingSize
Definition GridBase.h:84
FTopologicalFace & Face
Definition GridBase.h:77
constexpr const TArray< double > & GetUniformCuttingCoordinatesAlongIso(EIso Iso) const
Definition GridBase.h:194
int32 CuttingCount[2]
Definition GridBase.h:83
const TArray< FVector2d > & GetInner2DPoints(EGridSpace Space) const
Definition GridBase.h:223
void ComputeNewCoordinate(const TArray< FVector2d > &NewGrid, int32 IndexU, int32 IndexV, const FVector2d &InPoint, FVector2d &OutNewScaledPoint) const
Definition GridBase.h:145
const TArray< FVector > & GetInner3DPoints() const
Definition GridBase.h:215
const FVector2d & GetInner2DPoint(EGridSpace Space, int32 Index) const
Definition GridBase.h:173
TArray< FVector3f > Normals
Definition GridBase.h:101
int32 GobalIndex(int32 IndexU, int32 IndexV) const
Definition GridBase.h:241
bool ScaleGrid()
Definition GridBase.cpp:25
TArray< FVector > Points3D
Definition GridBase.h:96
TArray< FVector > & GetInner3DPoints()
Definition GridBase.h:207
const FCoordinateGrid & GetUniformCuttingCoordinates() const
Definition GridBase.h:199
virtual ~FGridBase()
Definition GridBase.h:109
double GetTolerance() const
Definition GridBase.h:130
FTopologicalFace & GetFace()
Definition GridBase.h:233
void EvaluatePointGrid(const FCoordinateGrid &CoordinateGrid, bool bWithNormals)
Definition GridBase.cpp:239
const FTopologicalFace & GetFace() const
Definition GridBase.h:228
void TransformPoints(EGridSpace DestinationSpace, const TArray< FVector2d > &InPointsToScale, TArray< FVector2d > &OutScaledPoints) const
Definition GridBase.cpp:220
const double Tolerance3D
Definition GridBase.h:78
FCoordinateGrid UniformCuttingCoordinates
Definition GridBase.h:86
FGridChronos Chronos
Definition GridBase.h:104
TArray< FVector2d > Points2D[EGridSpace::EndGridSpace]
Definition GridBase.h:91
const FVector & GetInner3DPoint(int32 Index) const
Definition GridBase.h:189
const FVector2d & GetInner2DPoint(EGridSpace Space, int32 IndexU, int32 IndexV) const
Definition GridBase.h:181
virtual const FCoordinateGrid & GetCoordinateGrid() const =0
Definition HaveStates.h:48
Definition TopologicalFace.h:56
Definition CADEntity.cpp:23
uint64 FDuration
Definition Chrono.h:27
EGridSpace
Definition MeshEnum.h:17
@ EndGridSpace
Definition MeshEnum.h:21
void Close3DDebugSession(bool bIsDisplayed=true)
Definition Display.h:58
EIso
Definition GeoEnum.h:66
@ IsoV
Definition GeoEnum.h:68
@ IsoU
Definition GeoEnum.h:67
EVisuProperty
Definition Visu.h:15
@ BluePoint
Definition Visu.h:30
@ Iso
Definition Visu.h:20
@ Log
Definition Types.h:107
U16 Index
Definition radfft.cpp:71
Definition GeoPoint.h:103
Definition GridBase.h:31
FDuration ProcessPointCloudDuration
Definition GridBase.h:34
void PrintTimeElapse() const
Definition GridBase.h:52
FDuration FindPointsCloseToLoopDuration
Definition GridBase.h:38
FDuration FindInnerDomainPointsDuration
Definition GridBase.h:35
FGridChronos()
Definition GridBase.h:41
FDuration DefineCuttingParametersDuration
Definition GridBase.h:32
FDuration RemovePointsClosedToLoopDuration
Definition GridBase.h:37
FDuration Build2DLoopDuration
Definition GridBase.h:36
FDuration ScaleGridDuration
Definition GridBase.h:39
FDuration GeneratePointCloudDuration
Definition GridBase.h:33