60namespace PolylineTools
75template<
typename Po
intType>
93template<
typename Po
intType>
104template<
typename Po
intType>
108 return Tolerance * Tolerance;
111template<
typename Po
intType>
137 ElementLength.Add(PointType::Distance(StartPoint, EndPoint));
146template<
typename Po
intType>
178template<
class Po
intType>
181 double Delta = PolylineCoordinates[
Index + 1] - PolylineCoordinates[
Index];
184 return PolylinePoints[
Index];
192template<
class Po
intType>
215 double EdgeLength = 0;
249 EdgeLength = PointType::Distance(StartPoint, EndPoint);
277 int32 SegmentIndex = 0;
283 if (SquareDistance > MinDistance)
288 if (SquareDistance > MinDistance)
293 if (SquareDistance > MinDistance)
297 MinDistance = SquareDistance;
299 SegmentIndex =
Index;
330 template<
class CurvePo
intType>
342 OutPoint.Gradient = PointType::ZeroVector;
343 OutPoint.Laplacian = PointType::ZeroVector;
355 OutPoint.Laplacian = PointType::ZeroVector;
359 template<
class CurvePo
intType>
577#ifdef DEBUG_PROJECT_COINCIDENTAL_POLYLINE
578 static int32 Counter = 0;
580 bool bDisplay =
true;
605#ifdef DEBUG_PROJECT_COINCIDENTAL_POLYLINE
613 int32 SegmentIndex = 0;
618 if (SquareDistance > MinDistance +
SquareTol)
623 if (SquareDistance < MinDistance)
625 MinDistance = SquareDistance;
627 SegmentIndex =
Index;
628#ifdef DEBUG_PROJECT_COINCIDENTAL_POLYLINE
634#ifdef DEBUG_PROJECT_COINCIDENTAL_POLYLINE
646 StartIndex = SegmentIndex;
801 Length = PointType::Distance(StartPoint, EndPoint);
813 template<
int Dimension = 3>
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 ensureCADKernel(InExpression)
Definition Types.h:115
#define HUGE_VALUE
Definition Types.h:16
#define FVector
Definition IOSSystemIncludes.h:8
#define SMALL_NUMBER
Definition UnrealMathUtility.h:66
#define DOUBLE_KINDA_SMALL_NUMBER
Definition UnrealMathUtility.h:73
#define DOUBLE_SMALL_NUMBER
Definition UnrealMathUtility.h:72
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT ElementType * GetData() UE_LIFETIMEBOUND
Definition Array.h:1027
UE_REWRITE SizeType Max() const
Definition Array.h:1161
ElementType Pop(EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:1196
Definition AndroidPlatformMisc.h:14
Definition IndexOfCoordinateFinder.h:85
Definition IndexOfCoordinateFinder.h:20
Definition IndexOfCoordinateFinder.h:33
Definition PolylineTools.h:194
PointType ComputePoint(const int32 Index, const double PointCoordinate) const
Definition PolylineTools.h:256
double ProjectPointToPolyline(const FLinearBoundary &InBoundary, const PointType &PointOnEdge, PointType &OutProjectedPoint) const
Definition PolylineTools.h:526
void SamplePolyline(const FLinearBoundary &InBoundary, const double DesiredSegmentLength, TArray< double > &OutCoordinates) const
Definition PolylineTools.h:459
void ApproximatePoints(const TArray< double > &InCoordinates, TArray< CurvePointType > &OutPoints, int32 InDerivativeOrder=0) const
Definition PolylineTools.h:360
TPolylineApproximator(const TArray< double > &InPolylineCoordinates, const TArray< PointType > &InPolylinePoints)
Definition PolylineTools.h:200
void GetSubPolyline(const FLinearBoundary &InBoundary, const EOrientation Orientation, TArray< PointType > &OutPoints) const
Definition PolylineTools.h:673
void ComputeBoundingBox(const int BoundaryIndex[2], const FLinearBoundary &InBoundary, TAABB< PointType, Dimension > &Aabb)
Definition PolylineTools.h:814
PointType ApproximatePoint(const double InCoordinate) const
Definition PolylineTools.h:319
void UpdateSubPolylineBBox(const FLinearBoundary &InBoundary, FPolylineBBox &OutBBox) const
Definition PolylineTools.h:748
double ComputeLengthOfSubPolyline(const int BoundaryIndex[2], const FLinearBoundary &InBoundary) const
Definition PolylineTools.h:779
double ComputeLengthOfSubPolyline(const FLinearBoundary &InBoundary) const
Definition PolylineTools.h:806
const TArray< PointType > & PolylinePoints
Definition PolylineTools.h:197
double ComputeLength() const
Definition PolylineTools.h:774
void GetStartEndIndex(const FLinearBoundary &InBoundary, int32 BoundaryIndices[2]) const
Definition PolylineTools.h:308
void ProjectPointsToPolyline(const FLinearBoundary &InBoundary, const TArray< PointType > &InPointsToProject, TArray< double > &OutProjectedPointCoords, TArray< PointType > &OutProjectedPoints) const
Definition PolylineTools.h:552
double ProjectPointToPolyline(int32 BoundaryIndices[2], const PointType &InPointToProject, PointType &OutProjectedPoint) const
Definition PolylineTools.h:271
const TArray< double > & PolylineCoordinates
Definition PolylineTools.h:196
double ComputeCurvilinearCoordinatesOfPolyline(const FLinearBoundary &InBoundary, TArray< double > &OutCurvilinearCoordinates, int32 BoundaryIndices[2]) const
Definition PolylineTools.h:208
void ProjectCoincidentalPolyline(const FLinearBoundary &InBoundary, const TArray< PointType > &InPointsToProject, bool bSameOrientation, TArray< double > &OutProjectedPointCoords, const double ToleranceOfProjection) const
Definition PolylineTools.h:575
void ApproximatePoint(double InCoordinate, CurvePointType &OutPoint, int32 InDerivativeOrder) const
Definition PolylineTools.h:331
void ApproximatePoints(const TArray< double > &InCoordinates, TArray< PointType > &OutPoints) const
Definition PolylineTools.h:423
void GetSubPolyline(const FLinearBoundary &InBoundary, TArray< double > &OutCoordinates, TArray< PointType > &OutPoints) const
Definition PolylineTools.h:716
UE_REWRITE void Reverse(T(&Array)[ArraySize])
Definition Reverse.h:28
Definition CADEntity.cpp:23
EOrientation
Definition GeoEnum.h:82
void DisplayPoint(const TPoint &Point, FIdent Ident)
Definition Display.h:145
void DisplayPolyline(const TArray< TPoint > &Points, EVisuProperty Property)
Definition Display.h:281
@ YellowCurve
Definition Visu.h:29
@ RedPoint
Definition Visu.h:32
@ BluePoint
Definition Visu.h:30
@ BlueCurve
Definition Visu.h:31
@ Point
Definition Visu.h:17
U16 Index
Definition radfft.cpp:71
static UE_FORCEINLINE_HINT bool IsNearlyEqual(float A, float B, float ErrorTolerance=UE_SMALL_NUMBER)
Definition UnrealMathUtility.h:388
static constexpr UE_FORCEINLINE_HINT T Square(const T A)
Definition UnrealMathUtility.h:578
static UE_FORCEINLINE_HINT bool IsNearlyZero(float Value, float ErrorTolerance=UE_SMALL_NUMBER)
Definition UnrealMathUtility.h:407
static float Log2(float Value)
Definition UnrealMathUtility.h:722
Definition PolylineTools.h:20
FVector Max
Definition PolylineTools.h:21
void Update(const double Coordinate, const FVector2d &Point2D)
Definition PolylineTools.h:54
double CoordinateOfMinPoint[3]
Definition PolylineTools.h:26
FVector MinPoints[3]
Definition PolylineTools.h:24
FVector Min
Definition PolylineTools.h:22
FVector MaxPoints[3]
Definition PolylineTools.h:23
void Update(const double Coordinate, const FVector &Point)
Definition PolylineTools.h:34
FPolylineBBox()
Definition PolylineTools.h:28
double CoordinateOfMaxPoint[3]
Definition PolylineTools.h:25
static UE_FORCEINLINE_HINT double DistSquared(const TVector< double > &V1, const TVector< double > &V2)
Definition Vector.h:2478