4#include "Core/Factory.h"
16#include "UI/DefineForDebug.h"
17#include "Mesh/Meshers/MesherReport.h"
24class FIntersectionSegmentTool;
36 FDuration BuildLoopSegmentsDuration = FChrono::Init();
37 FDuration BuildInnerSegmentsDuration = FChrono::Init();
38 FDuration FindLoopSegmentOfInnerTriangulationDuration = FChrono::Init();
39 FDuration FindSegmentIsoUVSurroundingSmallLoopDuration = FChrono::Init();
40 FDuration FindIsoSegmentToLinkInnerToLoopDuration = FChrono::Init();
41 FDuration FindInnerSegmentToLinkLoopToLoopDuration = FChrono::Init();
42 FDuration FindSegmentToLinkLoopToLoopDuration = FChrono::Init();
43 FDuration FindSegmentToLinkInnerToLoopDuration = FChrono::Init();
44 FDuration TriangulateOverCycleDuration = FChrono::Init();
45 FDuration TriangulateInnerNodesDuration = FChrono::Init();
64 FChrono::PrintClockElapse(
Log,
TEXT(
" "),
TEXT(
"Triangulate"), TriangulateDuration);
65 FChrono::PrintClockElapse(
Log,
TEXT(
" "),
TEXT(
"BuildIsoNodes"), BuildIsoNodesDuration);
66 FChrono::PrintClockElapse(
Log,
TEXT(
" "),
TEXT(
"BuildLoopSegments"), BuildLoopSegmentsDuration);
67 FChrono::PrintClockElapse(
Log,
TEXT(
" "),
TEXT(
"BuildInnerSegments"), BuildInnerSegmentsDuration);
68 FChrono::PrintClockElapse(
Log,
TEXT(
" "),
TEXT(
"FindLoopSegmentOfInnerTriangulation"), FindLoopSegmentOfInnerTriangulationDuration);
69 FChrono::PrintClockElapse(
Log,
TEXT(
" "),
TEXT(
"FindSegmentIsoUVSurroundingSmallLoop"), FindSegmentIsoUVSurroundingSmallLoopDuration);
70 FChrono::PrintClockElapse(
Log,
TEXT(
" "),
TEXT(
"Find IsoSegment ToLink InnerToLoop"), FindIsoSegmentToLinkInnerToLoopDuration);
71 FChrono::PrintClockElapse(
Log,
TEXT(
" "),
TEXT(
"Find Segment ToLink LoopToLoop"), FindSegmentToLinkLoopToLoopDuration);
72 FChrono::PrintClockElapse(
Log,
TEXT(
" "),
TEXT(
"Find Segment ToLink InnerToLoop"), FindSegmentToLinkInnerToLoopDuration);
73 FChrono::PrintClockElapse(
Log,
TEXT(
" "),
TEXT(
"Mesh Over Cycle"), TriangulateOverCycleDuration);
74 FChrono::PrintClockElapse(
Log,
TEXT(
" "),
TEXT(
"Mesh Inner Nodes"), TriangulateInnerNodesDuration);
248 template <u
int32 Dim>
254 Nodes[
Index] = CycleOrientation[
Index] ? &Cycle[
Index]->GetFirstNode() : &Cycle[
Index]->GetSecondNode();
328#ifdef CADKERNEL_DEBUG
349namespace IsoTriangulatorImpl
392 double OutNormal =
PA ^
PB;
449template<
class Po
intType>
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
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_SMALL_NUMBER
Definition UnrealMathUtility.h:72
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition CycleTriangulator.h:116
Definition IsoSegment.h:52
Definition IsoTriangulator.h:79
const FGrid & GetGrid() const
Definition IsoTriangulator.h:287
bool FindCycle(FIsoSegment *StartSegment, bool bLeftSide, TArray< FIsoSegment * > &Cycle, TArray< bool > &CycleOrientation)
Definition IsoTriangulator.cpp:1411
TArray< FIsoInnerNode > InnerNodes
Definition IsoTriangulator.h:103
bool bDisplay
Definition IsoTriangulator.h:154
FIntersectionIsoSegmentTool InnerToOuterIsoSegmentsIntersectionTool
Definition IsoTriangulator.h:130
void FillMeshNodes()
Definition IsoTriangulator.cpp:267
void GetThinZonesMesh()
Definition IsoTriangulator.cpp:359
void FindInnerGridCellSurroundingSmallLoop()
Definition IsoTriangulator.cpp:1194
TArray< FLoopNode > LoopNodes
Definition IsoTriangulator.h:91
void ConnectCellLoops()
Definition IsoTriangulator.cpp:926
TArray< FIsoInnerNode * > GlobalIndexToIsoInnerNodes
Definition IsoTriangulator.h:98
bool Triangulate()
Definition IsoTriangulator.cpp:84
TArray< FIsoSegment * > LoopSegments
Definition IsoTriangulator.h:108
void MeshCycleOf(const TArray< FIsoSegment * > &Cycle, const TArray< bool > &CycleOrientation, FMeshPolygonFunc MeshPolygonFunc)
Definition IsoTriangulator.h:249
const FMeshingTolerances & Tolerances
Definition IsoTriangulator.h:159
FFaceMesh & Mesh
Definition IsoTriangulator.h:88
TArray< FIsoSegment * > FinalToLoops
Definition IsoTriangulator.h:147
void TriangulateInnerNodes()
Definition IsoTriangulator.cpp:1586
FIntersectionSegmentTool LoopSegmentsIntersectionTool
Definition IsoTriangulator.h:124
FIntersectionSegmentTool ThinZoneIntersectionTool
Definition IsoTriangulator.h:133
TArray< FIsoSegment * > CandidateSegments
Definition IsoTriangulator.h:152
TArray< FIsoSegment * > FinalInnerSegments
Definition IsoTriangulator.h:110
FGrid & Grid
Definition IsoTriangulator.h:87
int32 LoopNodeCount
Definition IsoTriangulator.h:92
TArray< FLoopNode * > SortedLoopNodes
Definition IsoTriangulator.h:93
void BuildNodes()
Definition IsoTriangulator.cpp:214
void InitCellCorners(FCell &Cell)
Definition IsoTriangulator.cpp:2337
void TriangulateOverCycle(const EGridSpace Space)
Definition IsoTriangulator.cpp:1307
void FindCandidateToConnectCellCornerToLoops(FCell &Cell)
Definition IsoTriangulator.cpp:2356
void BuildInnerSegments()
Definition IsoTriangulator.cpp:522
void FindCellContainingBoundaryNodes(TArray< FCell > &Cells)
Definition IsoTriangulator.cpp:1002
TArray< int32 > IndexOfLowerLeftInnerNodeSurroundingALoop
Definition IsoTriangulator.h:140
TArray< FIsoSegment * > ThinZoneSegments
Definition IsoTriangulator.h:109
TArray< FIsoSegment * > InnerToOuterSegments
Definition IsoTriangulator.h:111
bool CanCycleBeMeshed(const TArray< FIsoSegment * > &Cycle, FIntersectionSegmentTool &CycleIntersectionTool)
Definition IsoTriangulator.cpp:1132
TArray< FIsoSegment * > InnerToLoopCandidateSegments
Definition IsoTriangulator.h:117
FIntersectionSegmentTool InnerSegmentsIntersectionTool
Definition IsoTriangulator.h:127
void SelectSegmentsToLinkInnerToLoop()
Definition IsoTriangulator.cpp:2455
void MeshLargeCycle(const TArray< FIsoSegment * > &Cycle, const TArray< bool > &CycleOrientation)
Definition IsoTriangulator.cpp:1176
void GetThinZoneMesh(const TMap< int32, FLoopNode * > &IndexToNode, const FThinZone2D &ThinZone)
Definition IsoTriangulator.cpp:382
bool bNeedCheckOrientation
Definition IsoTriangulator.h:156
TFactory< FIsoSegment > IsoSegmentFactory
Definition IsoTriangulator.h:106
void BuildLoopSegments()
Definition IsoTriangulator.cpp:323
TArray< int32 > LoopStartIndex
Definition IsoTriangulator.h:90
void MeshCycle(const TArray< FIsoSegment * > &Cycle, const TArray< bool > &CycleOrientation)
Definition IsoTriangulator.cpp:1159
void SortLoopNodes()
Definition IsoTriangulator.h:271
void BuildInnerSegmentsIntersectionTool()
Definition IsoTriangulator.cpp:771
int32 InnerNodeCount
Definition IsoTriangulator.h:104
Definition LoopCleaner.h:94
virtual const FVector2d & Get2DPoint(EGridSpace Space, const FGrid &Grid) const override
Definition IsoNode.h:364
Definition ParametricMesherConstantes.h:17
Definition ParametricMesher.h:41
Definition ThinZone2D.h:157
UE_REWRITE void Sort(RangeType &&Range)
Definition Sort.h:16
FPairOfDouble IsoscelesCriteria(const FVector2d &APoint, const FVector2d &BPoint, const FVector2d &CPoint)
Definition IsoTriangulator.h:411
double IsoscelesCriteriaMax(const FVector2d &APoint, const FVector2d &BPoint, const FVector2d &CPoint)
Definition IsoTriangulator.h:421
double CotangentCriteria(const FVector &APoint, const FVector &BPoint, const FVector &PPoint, FVector &OutNormal)
Definition IsoTriangulator.h:357
double IsoscelesCriteriaMin(const FVector2d &APoint, const FVector2d &BPoint, const FVector2d &CPoint)
Definition IsoTriangulator.h:427
double EquilateralSlopeCriteria(const FVector2d &APoint, const FVector2d &BPoint, const FVector2d &CPoint)
Definition IsoTriangulator.h:433
double EquilateralCriteria(const PointType &SegmentA, const PointType &SegmentB, const PointType &Point)
Definition IsoTriangulator.h:450
Definition CADEntity.cpp:23
uint64 FDuration
Definition Chrono.h:27
double TransformIntoOrientedSlope(double Slope)
Definition SlopeUtils.h:124
double SwapSlopeOrientation(double Slope)
Definition SlopeUtils.h:174
EGridSpace
Definition MeshEnum.h:17
@ Default2D
Definition MeshEnum.h:18
double ComputeSlope(const FVector2d &StartPoint, const FVector2d &EndPoint)
Definition SlopeUtils.h:180
EVisuProperty
Definition Visu.h:15
@ Point
Definition Visu.h:17
U16 Index
Definition radfft.cpp:71
static constexpr UE_FORCEINLINE_HINT T Max3(const T A, const T B, const T C)
Definition UnrealMathUtility.h:551
Definition IsoTriangulator.h:33
void PrintTimeElapse() const
Definition IsoTriangulator.h:50
FIsoTriangulatorChronos()
Definition IsoTriangulator.h:47
Definition IsoTriangulator.h:406
double Value1
Definition IsoTriangulator.h:407
double Value2
Definition IsoTriangulator.h:408