15#define MINIMAL_UNIT_LINEAR_TOLERANCE 1e-5
71 constexpr double GetAt(
const double Coordinate)
const
83 void SetMin(
const double Coordinates)
85 FMath::GetMinMax(Coordinates,
Max,
Min,
Max);
88 void SetMax(
const double Coordinates)
90 FMath::GetMinMax(
Min, Coordinates,
Min,
Max);
104 for (
const double& Coordinate : Coordinates)
106 ExtendTo(Coordinate);
123 return GetMax() - GetMin();
131 double DeltaU = (
Max -
Min);
151 if (Coordinate <=
Min)
153 Coordinate =
Min + Tolerance;
155 else if (Coordinate >=
Max)
157 Coordinate =
Max - Tolerance;
176 void ExtendTo(
double MinCoordinate,
double MaxCoordinate)
178 FMath::GetMinMax(MinCoordinate, MaxCoordinate);
179 Min = FMath::Min(
Min, MinCoordinate);
180 Max = FMath::Max(
Max, MaxCoordinate);
191 Min = FMath::Max(
Min, MaxBound.Min);
192 Max = FMath::Min(
Max, MaxBound.Max);
197 Min = FMath::Min(
Min, MaxBound.Min);
198 Max = FMath::Max(
Max, MaxBound.Max);
203 if (Coordinate <
Min)
208 if (Coordinate >
Max)
216 if (MaxBound.Min >
Min)
220 if (MaxBound.Max <
Max)
284 UVBoundaries[EIso::IsoU].
Set(Point1.
X, Point2.
X);
285 UVBoundaries[EIso::IsoV].
Set(Point1.
Y, Point2.
Y);
290 Ar << Boundary[EIso::IsoU];
291 Ar << Boundary[EIso::IsoV];
297 UVBoundaries[EIso::IsoU] =
BoundU;
298 UVBoundaries[EIso::IsoV] =
BoundV;
309 UVBoundaries[EIso::IsoU].
Set();
310 UVBoundaries[EIso::IsoV].
Set();
327 return UVBoundaries[Type];
332 return UVBoundaries[EIso::IsoU].
IsValid() && UVBoundaries[EIso::IsoV].
IsValid();
366 return ESituation::Inside;
370 return ESituation::Outside;
372 return ESituation::Undefined;
380 UVBoundaries[EIso::IsoU].
Init();
381 UVBoundaries[EIso::IsoV].
Init();
386 UVBoundaries[EIso::IsoU].
TrimAt(MaxLimit[EIso::IsoU]);
387 UVBoundaries[EIso::IsoV].
TrimAt(MaxLimit[EIso::IsoV]);
392 UVBoundaries[EIso::IsoU].
ExtendTo(MaxLimit[EIso::IsoU]);
393 UVBoundaries[EIso::IsoV].
ExtendTo(MaxLimit[EIso::IsoV]);
410 UVBoundaries[EIso::IsoU].
RestrictTo(MaxBound.UVBoundaries[EIso::IsoU]);
411 UVBoundaries[EIso::IsoV].
RestrictTo(MaxBound.UVBoundaries[EIso::IsoV]);
448 return UVBoundaries[
Iso];
453 return UVBoundaries[
Iso];
458 UVBoundaries[EIso::IsoU].
Offset(Tolerance);
459 UVBoundaries[EIso::IsoV].
Offset(Tolerance);
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define MINIMAL_UNIT_LINEAR_TOLERANCE
Definition Boundary.h:15
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define HUGE_VALUE
Definition Types.h:16
void Init()
Definition LockFreeList.h:4
#define DOUBLE_SMALL_NUMBER
Definition UnrealMathUtility.h:72
uint32 Offset
Definition VulkanMemory.cpp:4033
Definition Archive.h:1208
virtual void Serialize(void *V, int64 Length)
Definition Archive.h:1689
Definition AndroidPlatformMisc.h:14
Definition Boundary.h:248
FSurfacicBoundary(const double InUMin, const double InUMax, const double InVMin, const double InVMax)
Definition Boundary.h:258
bool IsValid() const
Definition Boundary.h:330
static const FSurfacicBoundary DefaultBoundary
Definition Boundary.h:254
void Set(const FLinearBoundary &BoundU, const FLinearBoundary &BoundV)
Definition Boundary.h:295
FSurfacicBoundary(const FVector2d &Point1, const FVector2d &Point2)
Definition Boundary.h:271
void ExtendTo(const FSurfacicBoundary &MaxLimit)
Definition Boundary.h:390
bool IsDegenerated() const
Definition Boundary.h:338
void WidenIfDegenerated()
Definition Boundary.h:417
void MoveInsideIfNot(FVector2d &Point, const double Tolerance=DOUBLE_SMALL_NUMBER) const
Definition Boundary.h:435
void Set(const double InUMin, const double InUMax, const double InVMin, const double InVMax)
Definition Boundary.h:301
double Length(const EIso &Iso) const
Definition Boundary.h:441
FSurfacicBoundary()=default
void Set(const TArray< FVector2d > &Points)
Definition Boundary.h:316
void ExtendTo(const FVector &Point)
Definition Boundary.h:402
void MoveInsideIfNot(FVector &Point, const double Tolerance=DOUBLE_SMALL_NUMBER) const
Definition Boundary.h:426
const FLinearBoundary & Get(EIso Type) const
Definition Boundary.h:325
void Set()
Definition Boundary.h:307
void RestrictTo(const FSurfacicBoundary &MaxBound)
Definition Boundary.h:408
void Init()
Definition Boundary.h:378
void Set(const FVector2d &Point1, const FVector2d &Point2)
Definition Boundary.h:282
FSurfacicBoundary(const double InUMin, const double InUMax, const double InVMin, const double InVMax, const double OffsetTolerance)
Definition Boundary.h:264
FSurfacicBoundary(const FVector2d &Point1, const FVector2d &Point2, const double OffsetTolerance)
Definition Boundary.h:276
void ExtendTo(const FVector2d &Point)
Definition Boundary.h:396
constexpr FLinearBoundary & operator[](const EIso &Iso)
Definition Boundary.h:451
friend FArchive & operator<<(FArchive &Ar, FSurfacicBoundary &Boundary)
Definition Boundary.h:288
void Offset(const double Tolerance=DOUBLE_SMALL_NUMBER)
Definition Boundary.h:456
ESituation IsInside(const FSurfacicBoundary &OtherBoundary, const FSurfacicTolerance &Tolerance2D)
Definition Boundary.h:343
constexpr const FLinearBoundary & operator[](const EIso &Iso) const
Definition Boundary.h:446
void TrimAt(const FSurfacicBoundary &MaxLimit)
Definition Boundary.h:384
Definition CADEntity.cpp:23
int32 RealCompare(const double Value1, const double Value2, const double Tolerance=DOUBLE_SMALL_NUMBER)
Definition MathConst.h:32
ESituation
Definition GeoEnum.h:88
@ Inside
Definition GeoEnum.h:90
@ Outside
Definition GeoEnum.h:91
EIso
Definition GeoEnum.h:66
@ Iso
Definition Visu.h:20
static UE_FORCEINLINE_HINT bool IsNearlyEqual(float A, float B, float ErrorTolerance=UE_SMALL_NUMBER)
Definition UnrealMathUtility.h:388
void ExtendTo(const FLinearBoundary &MaxBound)
Definition Boundary.h:195
void Set(const TArray< double > &Coordinates)
Definition Boundary.h:101
void ExtendTo(double MinCoordinate, double MaxCoordinate)
Definition Boundary.h:176
void Offset(const double Tolerance=DOUBLE_SMALL_NUMBER)
Definition Boundary.h:161
constexpr double GetAt(const double Coordinate) const
Definition Boundary.h:71
void Set(const double InUMin=0., const double InUMax=1.)
Definition Boundary.h:93
void ExtendTo(const double Coordinate)
Definition Boundary.h:201
constexpr double GetMiddle() const
Definition Boundary.h:76
double Size() const
Definition Boundary.h:81
void RestrictTo(const FLinearBoundary &MaxBound)
Definition Boundary.h:214
void Init()
Definition Boundary.h:170
FLinearBoundary(const FLinearBoundary &Boundary)
Definition Boundary.h:32
FLinearBoundary(const double UMin, const double UMax)
Definition Boundary.h:38
bool IsValid() const
Definition Boundary.h:111
static const FLinearBoundary DefaultBoundary
Definition Boundary.h:21
FLinearBoundary(const double UMin, const double UMax, const double OffsetTolerance)
Definition Boundary.h:49
void TrimAt(const FLinearBoundary &MaxBound)
Definition Boundary.h:183
bool Contains(const double Coordinate) const
Definition Boundary.h:116
void SetMax(const double Coordinates)
Definition Boundary.h:88
bool IsDegenerated() const
Definition Boundary.h:129
double Max
Definition Boundary.h:24
void WidenIfDegenerated()
Definition Boundary.h:229
FLinearBoundary()
Definition Boundary.h:26
void MoveInsideIfNot(double &Coordinate, const double Tolerance=DOUBLE_SMALL_NUMBER) const
Definition Boundary.h:149
constexpr double GetMin() const
Definition Boundary.h:61
void SetMin(const double Coordinates)
Definition Boundary.h:83
friend FArchive & operator<<(FArchive &Ar, FLinearBoundary &Boundary)
Definition Boundary.h:55
double Length() const
Definition Boundary.h:121
constexpr double GetMax() const
Definition Boundary.h:66
double ComputeMinimalTolerance() const
Definition Boundary.h:141
FLinearBoundary(const FLinearBoundary &Boundary, const double OffsetTolerance)
Definition Boundary.h:43
double Min
Definition Boundary.h:23
FLinearBoundary & operator=(const FLinearBoundary &InBounds)
Definition Boundary.h:238
T Y
Definition Vector2D.h:52
T X
Definition Vector2D.h:49