22template<
typename T,
int DIM>
47template<
typename T,
int D>
165 template<
typename OtherVectorType>
212 for (
int32 VertexIndex = 0; VertexIndex < j; VertexIndex++, j--)
225 if (VertexIndex == 0)
256 return seg.PointAt(SegmentParam);
268 return seg.PointBetween(SegmentParam);
278 BoxType box = BoxType::Empty();
280 for (
int k = 0; k < NumVertices; ++k)
296 for (
int i = 0; i < N; ++i)
385 for (
int vi = 0;
vi < N; ++
vi)
395 else if (t <= -seg.Extent)
435 for (
int i = 1; i < N; ++i) {
438 return avg / (T)(N-1);
453 for (
int i = 1; i < N; ++i)
478 for (
int i = N-1; i > 0; --i)
496 const T
Alpha = (T)1 / (T)3;
503 for (
int i = 1; i < N; ++i)
555 Marked.SetNumZeroed(NewVertices.
Num());
559 Marked.Last() =
true;
564 if (Marked.IsEmpty())
604 T
tol2 = Tolerance * Tolerance;
609 for (
int i = j + 1; i < k; i++)
623 SimplifyDouglasPeucker(Tolerance,
Vertices, j,
maxi, Marked);
624 SimplifyDouglasPeucker(Tolerance,
Vertices,
maxi, k, Marked);
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
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 & Last(SizeType IndexFromTheEnd=0) UE_LIFETIMEBOUND
Definition Array.h:1263
void RemoveAt(SizeType Index, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2083
void Reset(SizeType NewSize=0)
Definition Array.h:2246
void SetNum(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2308
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
void Append(const TArray< OtherElementType, OtherAllocatorType > &Source)
Definition Array.h:2412
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
static RealType Clamp(const RealType Value, const RealType ClampMin, const RealType ClampMax)
Definition MathUtil.h:222
TSegment2< T > SegmentType
Definition Polyline.h:40
TAxisAlignedBox2< T > BoxType
Definition Polyline.h:41
TVector2< T > VectorType
Definition Polyline.h:39
TSegment3< T > SegmentType
Definition Polyline.h:31
TAxisAlignedBox3< T > BoxType
Definition Polyline.h:32
TVector< T > VectorType
Definition Polyline.h:30
Definition Polyline.h:350
SegmentEnumerable()
Definition Polyline.h:353
SegmentEnumerable(const TPolyline< T, D > *p)
Definition Polyline.h:354
const TPolyline< T, D > * Polyline
Definition Polyline.h:352
SegmentIterator end()
Definition Polyline.h:356
SegmentIterator begin()
Definition Polyline.h:355
Definition Polyline.h:309
bool operator!()
Definition Polyline.h:311
int i
Definition Polyline.h:335
SegmentIterator operator++(int)
Definition Polyline.h:325
bool operator==(const SegmentIterator &i3)
Definition Polyline.h:331
bool operator!=(const SegmentIterator &i3)
Definition Polyline.h:332
SegmentType operator*() const
Definition Polyline.h:315
SegmentIterator(const TPolyline< T, D > *p, int iCur)
Definition Polyline.h:336
SegmentIterator & operator++()
Definition Polyline.h:320
const TPolyline< T, D > * Polyline
Definition Polyline.h:334
const VectorType & operator[](int Index) const
Definition Polyline.h:84
BoxType GetBounds() const
Definition Polyline.h:276
int SegmentCount() const
Definition Polyline.h:134
TPolyline(const TArray< VectorType > &VertexList)
Definition Polyline.h:68
VectorType GetPointFromLastVertex(const T InDistance) const
Definition Polyline.h:469
T DistanceSquared(const VectorType &QueryPoint, int &NearestSegIndexOut, T &NearestSegParamOut) const
Definition Polyline.h:379
TPolyline()
Definition Polyline.h:61
T Length() const
Definition Polyline.h:292
void Clear()
Definition Polyline.h:141
VectorType GetTangent(int VertexIndex) const
Definition Polyline.h:223
const TArray< VectorType > & GetVertices() const
Definition Polyline.h:118
SegmentType GetSegment(int SegmentIndex) const
Definition Polyline.h:242
const VectorType & End() const
Definition Polyline.h:109
void Simplify(T ClusterTolerance, T LineDeviationTolerance)
Definition Polyline.h:519
VectorType GetPointFromFirstVertex(const T InDistance) const
Definition Polyline.h:444
SegmentEnumerable Segments() const
Definition Polyline.h:362
TArray< VectorType > Vertices
Definition Polyline.h:56
void SetVertices(const TArray< VectorType > &NewVertices)
Definition Polyline.h:195
void RemoveVertex(int VertexIndex)
Definition Polyline.h:187
VectorType & operator[](int Index)
Definition Polyline.h:92
void SmoothSubdivide(TPolyline< T, D > &NewPolyline) const
Definition Polyline.h:494
TPolylinePolicy< T, D >::BoxType BoxType
Definition Polyline.h:53
void AppendVertices(const TArray< VectorType > &NewVertices)
Definition Polyline.h:157
SegmentIterator SegmentItr() const
Definition Polyline.h:341
T AverageEdgeLength() const
Definition Polyline.h:432
VectorType GetSegmentPointUnitParam(int SegmentIndex, T SegmentParam) const
Definition Polyline.h:265
int VertexCount() const
Definition Polyline.h:126
VectorType GetSegmentPoint(int SegmentIndex, T SegmentParam) const
Definition Polyline.h:253
void AppendVertices(const TArray< OtherVectorType > &NewVertices)
Definition Polyline.h:166
void Set(int VertexIndex, const VectorType &Position)
Definition Polyline.h:179
void AppendVertex(const VectorType &Position)
Definition Polyline.h:149
TPolylinePolicy< T, D >::SegmentType SegmentType
Definition Polyline.h:52
TPolylinePolicy< T, D >::VectorType VectorType
Definition Polyline.h:51
void Reverse()
Definition Polyline.h:209
T DistanceSquared(const VectorType &QueryPoint) const
Definition Polyline.h:420
const VectorType & Start() const
Definition Polyline.h:101
TPolyline(const VectorType &Point0, const VectorType &Point1)
Definition Polyline.h:75
T DistanceSquared(const UE::Math::TVector2< T > &V1, const UE::Math::TVector2< T > &V2)
Definition VectorTypes.h:82
Definition AdvancedWidgetsModule.cpp:13
U16 Index
Definition radfft.cpp:71
Definition NumericLimits.h:41
Definition BoxTypes.h:637
Definition BoxTypes.h:247
Definition SegmentTypes.h:23
Definition SegmentTypes.h:447