19#include "Algo/AllOf.h"
113 return FVectorUtil::FarawayPoint2D;
127 return (Coordinates.Last() - Coordinates[0]) / 10.;
161 for (
const double Coordinate :
OutPolyline.Coordinates)
205 int32 StartIndex = 0;
211 bUseDichotomy = PolylineTools::IsDichotomyToBePreferred(EndIndex - StartIndex, Coordinates.Num());
285 return Points3D[
Index];
306 Points2D.
Empty(Coordinates.Num());
307 Points3D.
Empty(Coordinates.Num());
310 Normals.Empty(Coordinates.Num());
323 return Points2D.
Num();
371 Coordinates.Reserve(
Number);
385 Points3D.
Empty(Slack);
386 Points2D.
Empty(Slack);
388 Coordinates.Empty(Slack);
415 Markers[
Index] =
false;
418 int32 CurrentIndex = 0;
423 Coordinates[CurrentIndex] = Coordinates[
Index];
424 Points2D[CurrentIndex] = Points2D[
Index];
425 Points3D[CurrentIndex] = Points3D[
Index];
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 DOUBLE_SMALL_NUMBER
Definition UnrealMathUtility.h:72
uint32 Offset
Definition VulkanMemory.cpp:4033
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void SetNum(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2308
ElementType Pop(EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:1196
UE_FORCEINLINE_HINT void EmplaceAt(SizeType Index, ArgsType &&... Args)
Definition Array.h:2665
void Empty(SizeType Slack=0)
Definition Array.h:2273
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
Definition AndroidPlatformMisc.h:14
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition CADKernelArchive.h:19
void Serialize(void *Value, int64 Length)
Definition CADKernelArchive.h:118
Definition IndexOfCoordinateFinder.h:85
Definition IndexOfCoordinateFinder.h:20
Definition IndexOfCoordinateFinder.h:33
Definition Boundary.h:248
Definition SurfacicPolyline.h:30
int32 Size() const
Definition SurfacicPolyline.h:321
void Reverse()
Definition SurfacicPolyline.h:466
TSharedPtr< FEntityGeom > ApplyMatrix(const FMatrixH &) const
FVector2d Approximate2DPoint(double InCoordinate) const
Definition SurfacicPolyline.h:88
void Empty(int32 Slack=0)
Definition SurfacicPolyline.h:383
double GetCoordinateOfProjectedPoint(const FLinearBoundary &Boundary, const FVector2d &PointOnEdge, FVector2d &ProjectedPoint) const
Definition SurfacicPolyline.h:240
TArray< FVector3f > Normals
Definition SurfacicPolyline.h:37
void ProjectPoints(const FLinearBoundary &InBoundary, const TArray< FVector > &InPointsToProject, TArray< double > &ProjectedPointCoordinates, TArray< FVector > &ProjectedPoints) const
Definition SurfacicPolyline.h:246
TArray< FVector > Points3D
Definition SurfacicPolyline.h:36
void ProjectPoints(const FLinearBoundary &InBoundary, const TArray< FVector2d > &InPointsToProject, TArray< double > &ProjectedPointCoordinates, TArray< FVector2d > &ProjectedPoints) const
Definition SurfacicPolyline.h:252
const TArray< double > & GetCoordinates() const
Definition SurfacicPolyline.h:273
FVector2d GetTangent2DAt(double InCoordinate) const
Definition SurfacicPolyline.h:101
void Serialize(FCADKernelArchive &Ar)
Definition SurfacicPolyline.h:57
void Approximate2DPoints(const TArray< double > &InCoordinates, TArray< FVector2d > &OutPoints) const
Definition SurfacicPolyline.h:136
TArray< double > Coordinates
Definition SurfacicPolyline.h:34
const TArray< FVector > & GetTangents() const
Definition SurfacicPolyline.h:298
bool bWithNormals
Definition SurfacicPolyline.h:42
FVector GetTangentAt(double InCoordinate) const
Definition SurfacicPolyline.h:94
double ComputeLinearToleranceAt(const double Tolerance3D, const double MinLinearTolerance, const int32 Index) const
Definition SurfacicPolyline.h:122
FSurfacicTolerance ComputeTolerance(const double Tolerance3D, const FSurfacicTolerance &MinToleranceIso, const int32 Index) const
Definition SurfacicPolyline.h:108
void Sample(const FLinearBoundary &Boundary, const double DesiredSegmentLength, TArray< double > &OutCoordinates) const
Definition SurfacicPolyline.h:228
void GetSubPolyline(const FLinearBoundary &InBoundary, TArray< double > &OutCoordinates, TArray< FVector2d > &OutPoints) const
Definition SurfacicPolyline.h:338
bool IsIso(EIso Iso, double ErrorTolerance=DOUBLE_SMALL_NUMBER) const
Definition SurfacicPolyline.h:493
void GetSubPolyline(const FLinearBoundary &InBoundary, const EOrientation InOrientation, TArray< FVector > &OutPoints) const
Definition SurfacicPolyline.h:347
bool bWithTangent
Definition SurfacicPolyline.h:43
void GetSubPolyline(const FLinearBoundary &InBoundary, const EOrientation InOrientation, TArray< FVector2d > &OutPoints) const
Definition SurfacicPolyline.h:329
FSurfacicBoundary BoundingBox
Definition SurfacicPolyline.h:40
void Approximate3DPoints(const TArray< double > &InCoordinates, TArray< FVector > &OutPoints) const
Definition SurfacicPolyline.h:82
const FVector & GetPointAt(int32 Index) const
Definition SurfacicPolyline.h:283
void Reserve(int32 Number)
Definition SurfacicPolyline.h:367
void ProjectCoincidentalPolyline(const FLinearBoundary &InBoundary, const TArray< FVector > &InPointsToProject, bool bSameOrientation, TArray< double > &OutProjectedPointCoordinates, double ToleranceOfProjection) const
Definition SurfacicPolyline.h:262
void GetSubPolyline(const FLinearBoundary &InBoundary, TArray< double > &OutCoordinates, TArray< FVector > &OutPoints) const
Definition SurfacicPolyline.h:356
FVector Approximate3DPoint(double InCoordinate) const
Definition SurfacicPolyline.h:76
FInfoEntity & GetInfo(FInfoEntity &) const
TArray< FVector > Tangents
Definition SurfacicPolyline.h:38
TArray< FVector2d > Points2D
Definition SurfacicPolyline.h:35
void EmplaceAt(int32 Index, FSurfacicPolyline &Polyline, int32 PointIndex)
Definition SurfacicPolyline.h:391
const TArray< FVector2d > & Get2DPoints() const
Definition SurfacicPolyline.h:278
const TArray< FVector > & GetPoints() const
Definition SurfacicPolyline.h:288
void Pop()
Definition SurfacicPolyline.h:451
void ApproximatePolyline(FSurfacicPolyline &OutPolyline) const
Definition SurfacicPolyline.h:142
void SwapCoordinates(TArray< double > &NewCoordinates)
Definition SurfacicPolyline.h:303
double GetLength(const FLinearBoundary &InBoundary) const
Definition SurfacicPolyline.h:481
const TArray< FVector3f > & GetNormals() const
Definition SurfacicPolyline.h:293
double GetCoordinateOfProjectedPoint(const FLinearBoundary &Boundary, const FVector &PointOnEdge, FVector &ProjectedPoint) const
Definition SurfacicPolyline.h:234
double Get2DLength(const FLinearBoundary &InBoundary) const
Definition SurfacicPolyline.h:487
void RemoveComplementaryPoints(int32 Offset)
Definition SurfacicPolyline.h:407
FSurfacicPolyline(bool bInWithNormals=false, bool bInWithTangent=false)
Definition SurfacicPolyline.h:51
Definition PolylineTools.h:194
void ApproximatePoints(const TArray< double > &InCoordinates, TArray< CurvePointType > &OutPoints, int32 InDerivativeOrder=0) const
Definition PolylineTools.h:360
void GetSubPolyline(const FLinearBoundary &InBoundary, const EOrientation Orientation, TArray< PointType > &OutPoints) const
Definition PolylineTools.h:673
PointType ApproximatePoint(const double InCoordinate) const
Definition PolylineTools.h:319
double ComputeLengthOfSubPolyline(const int BoundaryIndex[2], const FLinearBoundary &InBoundary) const
Definition PolylineTools.h:779
void ProjectPointsToPolyline(const FLinearBoundary &InBoundary, const TArray< PointType > &InPointsToProject, TArray< double > &OutProjectedPointCoords, TArray< PointType > &OutProjectedPoints) const
Definition PolylineTools.h:552
UE_REWRITE void Reverse(T(&Array)[ArraySize])
Definition Reverse.h:28
bool AllOf(const RangeType &Range)
Definition AllOf.h:19
Definition CADEntity.cpp:23
EOrientation
Definition GeoEnum.h:82
EIso
Definition GeoEnum.h:66
@ Iso
Definition Visu.h:20
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 UE_FORCEINLINE_HINT bool IsNearlyZero(float Value, float ErrorTolerance=UE_SMALL_NUMBER)
Definition UnrealMathUtility.h:407
static UE_FORCEINLINE_HINT TVector2< double > Max(const TVector2< double > &A, const TVector2< double > &B)
Definition Vector2D.h:953
static UE_FORCEINLINE_HINT double Distance(const TVector< double > &V1, const TVector< double > &V2)
Definition Vector.h:1018