26 template<
typename RealType>
37template<
typename RealType>
65 return BaryCoords[0] *
V[0] + BaryCoords[1] *
V[1] + BaryCoords[2] *
V[2];
81 return ((RealType)0.5) * ((
A.X*
B.Y -
A.Y*
B.X) + (
B.X*
C.Y -
B.Y*
C.X) + (
C.X*
A.Y -
C.Y*
A.X));
261template<
typename RealType>
289 return BaryCoords[0]*
V[0] + BaryCoords[1]*
V[1] + BaryCoords[2]*
V[2];
306 constexpr RealType f = 1.0 / 3.0;
308 (
V[0].
X +
V[1].
X +
V[2].
X) * f,
309 (
V[0].
Y +
V[1].
Y +
V[2].
Y) * f,
310 (
V[0].
Z +
V[1].
Z +
V[2].
Z) * f
333 template<
bool bReverseOrientation = false>
336 const static FIndex3i FaceMap[4]{
FIndex3i(0,1,2),
FIndex3i(0,3,1),
FIndex3i(0,2,3),
FIndex3i(1,3,2) };
337 const static FIndex3i FaceMapRev[4]{
FIndex3i(1,0,2),
FIndex3i(3,0,1),
FIndex3i(2,0,3),
FIndex3i(3,1,2) };
338 if constexpr (bReverseOrientation)
349template<
typename RealType>
379 return BaryCoords[0] *
V[0] + BaryCoords[1] *
V[1] + BaryCoords[2] *
V[2] + BaryCoords[3] *
V[3];
393 template<
bool bReverseOrientation = false>
396 return TetUtil::GetTetFaceOrdering<bReverseOrientation>()[Idx];
399 template<
bool bReverseOrientation = false>
409 constexpr RealType f = 1.0 / 4.0;
411 (
V[0].
X +
V[1].
X +
V[2].
X +
V[3].
X) * f,
412 (
V[0].
Y +
V[1].
Y +
V[2].
Y +
V[3].
Y) * f,
413 (
V[0].
Z +
V[1].
Z +
V[2].
Z +
V[3].
Z) * f
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define ensure( InExpression)
Definition AssertionMacros.h:464
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition MathUtil.h:150
static RealType Sqrt(const RealType Value)
Definition MathUtil.h:342
static RealType Abs(const RealType Value)
Definition MathUtil.h:215
const FIndex3i * GetTetFaceOrdering()
Definition TriangleTypes.h:334
RealType EquilateralEdgeLengthForArea(RealType TriArea)
Definition TriangleTypes.h:27
TVector< RealType > BarycentricCoords(const TVector< RealType > &Point, const TVector< RealType > &V0, const TVector< RealType > &V1, const TVector< RealType > &V2)
Definition VectorUtil.h:371
TVector< RealType > Normal(const TVector< RealType > &V0, const TVector< RealType > &V1, const TVector< RealType > &V2)
Definition VectorUtil.h:70
TTetrahedron3< float > FTetrahedron3f
Definition TriangleTypes.h:418
TTriangle2< double > FTriangle2d
Definition TriangleTypes.h:254
TTetrahedron3< double > FTetrahedron3d
Definition TriangleTypes.h:419
T Orient(const UE::Math::TVector2< T > &A, const UE::Math::TVector2< T > &B, const UE::Math::TVector2< T > &C)
Definition VectorTypes.h:33
TTriangle3< int > FTriangle3i
Definition TriangleTypes.h:326
TTriangle2< float > FTriangle2f
Definition TriangleTypes.h:253
TTriangle3< double > FTriangle3d
Definition TriangleTypes.h:325
TTriangle3< float > FTriangle3f
Definition TriangleTypes.h:324
Definition AdvancedWidgetsModule.cpp:13
Definition IndexTypes.h:158
Definition BoxTypes.h:247
void Contain(const TVector< RealType > &V)
Definition BoxTypes.h:438
static bool IsOnSegment(const TVector2< T > &A, const TVector2< T > &B, const TVector2< T > &QueryPt, T Tolerance=(T) 0)
Definition SegmentTypes.h:394
int GetSide(const TVector2< T > &QueryPoint, T Tolerance=0)
Definition SegmentTypes.h:206
Definition TriangleTypes.h:351
static FIndex3i GetFaceIndices(int32 Idx)
Definition TriangleTypes.h:394
TTriangle3< RealType > GetFace(int32 Idx) const
Definition TriangleTypes.h:400
TAxisAlignedBox3< RealType > Bounds() const
Definition TriangleTypes.h:382
TVector< RealType > V[4]
Definition TriangleTypes.h:352
TTetrahedron3(const TVector< RealType > VIn[4])
Definition TriangleTypes.h:364
TTetrahedron3()
Definition TriangleTypes.h:354
TVector< RealType > BarycentricPoint(RealType Bary0, RealType Bary1, RealType Bary2, RealType Bary3) const
Definition TriangleTypes.h:372
TTetrahedron3(const TVector< RealType > &V0, const TVector< RealType > &V1, const TVector< RealType > &V2, const TVector< RealType > &V3)
Definition TriangleTypes.h:356
TVector< RealType > Centroid() const
Definition TriangleTypes.h:407
TVector< RealType > BarycentricPoint(const TVector4< RealType > &BaryCoords) const
Definition TriangleTypes.h:377
Definition TriangleTypes.h:39
TVector2< RealType > V[3]
Definition TriangleTypes.h:40
static bool IsInside(const TVector2< RealType > &A, const TVector2< RealType > &B, const TVector2< RealType > &C, const TVector2< RealType > &QueryPoint)
Definition TriangleTypes.h:104
TVector< RealType > GetBarycentricCoords(const TVector2< RealType > &Point) const
Definition TriangleTypes.h:68
static bool IsInsideOrOn(const TVector2< RealType > &A, const TVector2< RealType > &B, const TVector2< RealType > &C, const TVector2< RealType > &QueryPoint, RealType Tolerance=(RealType) 0)
Definition TriangleTypes.h:123
RealType Area() const
Definition TriangleTypes.h:91
TVector2< RealType > BarycentricPoint(RealType Bary0, RealType Bary1, RealType Bary2) const
Definition TriangleTypes.h:58
TTriangle2()
Definition TriangleTypes.h:42
TTriangle2(const TVector2< RealType > VIn[3])
Definition TriangleTypes.h:51
RealType SignedArea() const
Definition TriangleTypes.h:85
static int IsInsideOrOn_Oriented(const TVector2< RealType > &A, const TVector2< RealType > &B, const TVector2< RealType > &C, const TVector2< RealType > &QueryPoint, RealType Tolerance=(RealType) 0)
Definition TriangleTypes.h:191
int IsInsideOrOn_Oriented(const TVector2< RealType > &QueryPoint, RealType Tolerance=(RealType) 0) const
Definition TriangleTypes.h:181
static RealType SignedArea(const TVector2< RealType > &A, const TVector2< RealType > &B, const TVector2< RealType > &C)
Definition TriangleTypes.h:79
bool IsInsideOrOn(const TVector2< RealType > &QueryPoint, RealType Tolerance=0) const
Definition TriangleTypes.h:170
TVector2< RealType > BarycentricPoint(const TVector< RealType > &BaryCoords) const
Definition TriangleTypes.h:63
TTriangle2(const TVector2< RealType > &V0, const TVector2< RealType > &V1, const TVector2< RealType > &V2)
Definition TriangleTypes.h:44
bool IsInside(const TVector2< RealType > &QueryPoint) const
Definition TriangleTypes.h:113
Definition TriangleTypes.h:263
TVector< RealType > GetBarycentricCoords(const TVector< RealType > &Point) const
Definition TriangleTypes.h:292
TVector< RealType > BarycentricPoint(RealType Bary0, RealType Bary1, RealType Bary2) const
Definition TriangleTypes.h:282
void Expand(RealType Delta)
Definition TriangleTypes.h:315
TTriangle3(const TVector< RealType > &V0, const TVector< RealType > &V1, const TVector< RealType > &V2)
Definition TriangleTypes.h:268
TVector< RealType > BarycentricPoint(const TVector< RealType > &BaryCoords) const
Definition TriangleTypes.h:287
TVector< RealType > Normal() const
Definition TriangleTypes.h:298
TTriangle3(const TVector< RealType > VIn[3])
Definition TriangleTypes.h:275
TVector< RealType > V[3]
Definition TriangleTypes.h:264
TTriangle3()
Definition TriangleTypes.h:266
TVector< RealType > Centroid() const
Definition TriangleTypes.h:304
static UE_FORCEINLINE_HINT T DistSquared(const TVector2< T > &V1, const TVector2< T > &V2)
Definition Vector2D.h:935