55template <
class TriangleMeshType>
59template <
class TriangleMeshType>
118 bool IsValid(
bool bAllowUnsafeModifiedMeshQueries)
const
125 if (! bAllowUnsafeModifiedMeshQueries)
164 if constexpr (bValidatePerAccess)
166 if (
ensure(
IsValid(Options.bAllowUnsafeModifiedMeshQueries)) ==
false)
206 return Query.ClosestTrianglePoint;
221 if constexpr (bValidatePerAccess)
223 if (
ensure(
IsValid(Options.bAllowUnsafeModifiedMeshQueries)) ==
false)
237 template<
bool bEarlyStop = false>
339 if constexpr (bValidatePerAccess)
341 if (
ensure(
IsValid(Options.bAllowUnsafeModifiedMeshQueries)) ==
false)
370 for (
int j = 0; j < 3; ++j)
481 template<
typename RayType>
482 bool FindNearestHitTriangleImpl(
484 const FQueryOptions& Options = FQueryOptions())
const
494 if constexpr (bValidatePerAccess)
496 if (
ensure(
IsValid(Options.bAllowUnsafeModifiedMeshQueries)) ==
false)
506 template<
typename RayType>
507 bool FindAllHitTrianglesImpl(
509 const FQueryOptions& Options = FQueryOptions())
const
511 if constexpr (bValidatePerAccess)
513 if (
ensure(
IsValid(Options.bAllowUnsafeModifiedMeshQueries)) ==
false)
529 OutHits.
Sort([](
const HitResult&
Hit0,
const HitResult&
Hit1)
531 return Hit0.Distance <
Hit1.Distance;
538 template<
typename RayType = FRay3d>
551 if (Options.TriangleFilterF !=
nullptr && Options.TriangleFilterF(ti) ==
false)
564 BaryCoords =
Query.TriangleBaryCoords;
571 double e = FMathd::ZeroTolerance;
616 template<
typename RayType = FRay3d>
625 static constexpr double e = FMathd::ZeroTolerance;
635 if (Options.TriangleFilterF !=
nullptr && Options.TriangleFilterF(ti) ==
false)
700 if constexpr (bValidatePerAccess)
702 if (
ensure(
IsValid(Options.bAllowUnsafeModifiedMeshQueries)) ==
false)
727 if (Options.TriangleFilterF !=
nullptr && Options.TriangleFilterF(ti) ==
false)
731 Mesh->GetTriVertices(ti,
A,
B,
C);
736 if (
Query.Find() &&
Query.RayParameter < Options.MaxDistance)
745 double e = FMathd::ZeroTolerance;
821 if constexpr (bValidatePerAccess)
823 if (
ensure(
IsValid(Options.bAllowUnsafeModifiedMeshQueries)) ==
false)
830 if (Options.MaxDistance < FMathd::MaxReal)
832 NearestSqr = Options.MaxDistance * Options.MaxDistance;
870 if constexpr (bValidatePerAccess)
872 if (
ensure(
IsValid(Options.bAllowUnsafeModifiedMeshQueries)) ==
false)
898 for (
int i = 1; i <= n; ++i)
953 if constexpr (bValidatePerAccess)
955 if (
ensure(
IsValid(Options.bAllowUnsafeModifiedMeshQueries)) ==
false)
1007 if constexpr (bValidatePerAccess)
1009 if (
ensure(
IsValid(Options.bAllowUnsafeModifiedMeshQueries)) ==
false)
1018 return TMeshAABBTree3<TriangleMeshType>::TriangleIntersectionFilter(A, B);
1035 if constexpr (bValidatePerAccess)
1037 if (
ensure(
IsValid(Options.bAllowUnsafeModifiedMeshQueries)) ==
false)
1076 if (
ensure(
IsValid(Options.bAllowUnsafeModifiedMeshQueries)) ==
false )
1110 if constexpr (bValidatePerAccess)
1112 if (
ensure(
IsValid(Options.bAllowUnsafeModifiedMeshQueries)) ==
false)
1125 if constexpr (bValidatePerAccess)
1127 if (
ensure(
IsValid(Options.bAllowUnsafeModifiedMeshQueries)) ==
false)
1202 double dx = FMath::Max(
fabs(V.
X - c.
X) - e.
X, 0.0);
1203 double dy = FMath::Max(
fabs(V.
Y - c.
Y) - e.
Y, 0.0);
1204 double dz = FMath::Max(
fabs(V.
Z - c.
Z) - e.
Z, 0.0);
1211 return Box.Contains(P);
1214 template<
typename RayType>
1294 for (
int ti = 0; ti <
Mesh->MaxTriangleID(); ti++)
1296 if (
Mesh->IsTriangle(ti) ==
false)
1303 if (bInvalid ==
false)
1315 template<
typename TriIndexEnumerable>
1321 Triangles.
Reserve(NumTriangles);
1326 if (
Mesh->IsTriangle(ti) ==
false)
1333 if (bInvalid ==
false)
1400 Box = (Triangles.
Num() > 0) ?
1411 for (
int i = 0; i <
ICount; ++i)
1413 Tris.IndexList.InsertAt(Triangles[
IStart + i],
Tris.IIndicesCur++);
1426 for (
int i = 0; i <
ICount; ++i)
1433 if (
interval.Length() > FMathd::ZeroTolerance)
1532 for (
int i = 1; i <=
num_tris; ++i)
1539 Mesh->GetTriVertices(ti, Tri.
V[0], Tri.
V[1], Tri.
V[2]);
1667 return box.DistanceSquared(
testBox);
1712 for (
int i = 1; i <=
num_tris; ++i)
1792 for (
int i = 1; i <=
num_tris; ++i)
1799 Mesh->GetTriVertices(ti, Tri.
V[0], Tri.
V[1], Tri.
V[2]);
1845 bool intersects =
false;
1852 if (intersects ==
false)
1882 bool intersects =
false;
2110 if (
Intr.Quantity == 1)
2114 else if (
Intr.Quantity == 2)
2118 else if (
Intr.Quantity > 2)
2124 if (
Intr.Quantity > 4)
2149 int EndIdx = StartIdx +
NumTris + 1;
2150 for (
int IdxA = StartIdx + 1;
IdxA + 1 < EndIdx;
IdxA++)
2202 for (
int i = 1; i <=
num_tris; ++i)
2209 Mesh->GetTriVertices(ti, Tri.
V[0], Tri.
V[1], Tri.
V[2]);
2210 Intr.SetTriangle1(Tri);
2318 for (
int ti = 0; ti <
Mesh->MaxTriangleID(); ti++)
2320 if (!
Mesh->IsTriangle(ti))
2351 debug_check_child_tris_in_box(
IBox);
2358 for (
int i = 1; i <= n; ++i)
2364 for (
int j = 0; j < 3; ++j)
2396 void debug_check_child_tri_distances(
int IBox,
const FVector3d& P)
2402 t.NextTriangleF = [&](
int TID)
2414 void debug_check_child_tris_in_box(
int IBox)
2418 t.NextTriangleF = [&](
int TID)
2421 for (
int j = 0; j < 3; ++j)
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#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
UE::Math::TVector< double > FVector3d
Definition MathFwd.h:60
const bool
Definition NetworkReplayStreaming.h:178
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
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
void SetNumZeroed(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2340
UE_REWRITE bool IsEmpty() const
Definition Array.h:1133
UE_FORCEINLINE_HINT SizeType Emplace(ArgsType &&... Args)
Definition Array.h:2561
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
UE_NODEBUG void Sort()
Definition Array.h:3418
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
Definition AssetRegistryState.h:50
Definition AndroidPlatformMisc.h:14
static bool IsFinite(const RealType Value)
Definition MathUtil.h:208
static bool IsNaN(const RealType Value)
Definition MathUtil.h:201
static RealType Sqrt(const RealType Value)
Definition MathUtil.h:342
Definition SpatialInterfaces.h:51
Definition DistPoint3Triangle3.h:23
Definition DistTriangle3Triangle3.h:27
Real GetSquared()
Definition DistTriangle3Triangle3.h:55
void SetTriangle(int WhichTriangle, const TTriangle3< Real > &TriangleIn)
Definition DistTriangle3Triangle3.h:44
Definition DynamicVector.h:27
size_t GetByteCount() const
Definition DynamicVector.h:149
void InsertAt(const Type &Data, unsigned int Index)
Definition DynamicVector.h:747
size_t GetLength() const
Definition DynamicVector.h:146
Definition FastWinding.h:316
static bool FindIntersection(const TRay< RealType > &Ray, const TAxisAlignedBox3< RealType > &Box, RealType &RayParamOut)
Definition IntrRay3AxisAlignedBox3.h:110
Definition IntrRay3Triangle3.h:67
Definition IntrTriangle3Triangle3.h:33
void SetTriangle0(const TTriangle3< Real > &Triangle0In)
Definition IntrTriangle3Triangle3.h:112
static bool Intersects(const TTriangle3< Real > &Triangle0, const TTriangle3< Real > &Triangle1, Real Tolerance=TMathUtil< Real >::ZeroTolerance)
Definition IntrTriangle3Triangle3.h:386
Definition MeshAABBTree3.h:854
TFunction< bool(const FAxisAlignedBox3d &, int)> NextBoxF
Definition MeshAABBTree3.h:857
TFunction< void(int, int)> BeginBoxTrianglesF
Definition MeshAABBTree3.h:860
TFunction< void(int)> NextTriangleF
Definition MeshAABBTree3.h:861
TFunction< void(int)> EndBoxTrianglesF
Definition MeshAABBTree3.h:862
Definition MeshAABBTree3.h:61
void find_intersections(int iBox, const TMeshAABBTree3 &OtherTree, const TFunction< FVector3d(const FVector3d &)> &TransformF, int oBox, int depth, MeshIntersection::FIntersectionsQueryResult &result, TFunctionRef< bool(FIntrTriangle3Triangle3d &)> IntersectFn, const FQueryOptions &Options, const FQueryOptions &OtherTreeOptions) const
Definition MeshAABBTree3.h:2167
bool FindAllHitTriangles(const FWatertightRay3d &Ray, TArray< MeshIntersection::FHitIntersectionResult > &OutHits, const FQueryOptions &Options=FQueryOptions()) const
Definition MeshAABBTree3.h:473
TriangleMeshType MeshType
Definition MeshAABBTree3.h:67
void TestCoverage()
Definition MeshAABBTree3.h:2308
virtual bool FindAllHitTriangles(const FRay3d &Ray, TArray< MeshIntersection::FHitIntersectionResult > &OutHits, const FQueryOptions &Options=FQueryOptions()) const override
Definition MeshAABBTree3.h:466
FAxisAlignedBox3d GetBox(int IBox) const
Definition MeshAABBTree3.h:1150
double BoxDistanceSqr(int IBox, const FVector3d &V) const
Definition MeshAABBTree3.h:1196
virtual bool TestIntersection(const FTriangle3d &Triangle, const FQueryOptions &Options=FQueryOptions()) const
Definition MeshAABBTree3.h:1030
double TotalVolume()
Definition MeshAABBTree3.h:2331
bool find_nearest_tri(int IBox, const FVector3d &P, double &NearestDistSqr, int &TID, const FQueryOptions &Options) const
Definition MeshAABBTree3.h:238
int SplitTriSetMidpoint(TArray< int > &Triangles, TArray< FVector3d > &Centers, int IStart, int ICount, int Depth, int MinTriCount, FBoxesSet &Tris, FBoxesSet &Nodes, FAxisAlignedBox3d &Box)
Definition MeshAABBTree3.h:1394
void SetBuildOptions(int32 MaxBoxTriCount, GetSplitAxisFunc &&GetSplitAxisIn=MakeDefaultSplitAxisFunc())
Definition MeshAABBTree3.h:132
virtual bool TestAnyHitTriangle(const FRay3d &Ray, const FQueryOptions &Options=FQueryOptions()) const
Definition MeshAABBTree3.h:698
static bool TriangleIntersectionFilter(const FTriangle3d &A, const FTriangle3d &B)
Definition MeshAABBTree3.h:1675
virtual MeshIntersection::FIntersectionsQueryResult FindAllSelfIntersections(bool bIgnoreTopoConnected=true, const FQueryOptions &Options=FQueryOptions(), TFunction< bool(FIntrTriangle3Triangle3d &)> IntersectionFn=nullptr) const
Definition MeshAABBTree3.h:1094
const TriangleMeshType * Mesh
Definition MeshAABBTree3.h:71
virtual bool TestSelfIntersection(bool bIgnoreTopoConnected=true, const FQueryOptions &Options=FQueryOptions()) const
Definition MeshAABBTree3.h:1123
void BuildTopDown(bool bSorted, TriIndexEnumerable TriangleList, int32 NumTriangles)
Definition MeshAABBTree3.h:1316
void FindHitTriangle(int IBox, const RayType &Ray, double &NearestT, int &TID, FVector3d &BaryCoords, const FQueryOptions &Options=FQueryOptions()) const
Definition MeshAABBTree3.h:539
int find_any_intersection(int iBox, const FTriangle3d &Triangle, const FAxisAlignedBox3d &triBounds, TFunctionRef< bool(const FTriangle3d &A, const FTriangle3d &B)> TriangleIntersectionTest, const FQueryOptions &Options) const
Definition MeshAABBTree3.h:1701
void SetMesh(const TriangleMeshType *SourceMesh, bool bAutoBuild=true)
Definition MeshAABBTree3.h:98
TMeshAABBTree3()
Definition MeshAABBTree3.h:88
bool find_self_intersections(MeshIntersection::FIntersectionsQueryResult *Result, bool bIgnoreTopoConnected, TFunctionRef< bool(FIntrTriangle3Triangle3d &)> IntersectFn, const FQueryOptions &Options) const
Definition MeshAABBTree3.h:2138
double box_ray_intersect_t(int IBox, const RayType &Ray) const
Definition MeshAABBTree3.h:1215
bool box_box_intersect(int IBox, const FAxisAlignedBox3d &TestBox) const
Definition MeshAABBTree3.h:1232
bool FindNearestHitTriangle(const FWatertightRay3d &Ray, double &NearestT, int &TID, FVector3d &BaryCoords, const FQueryOptions &Options=FQueryOptions()) const
Definition MeshAABBTree3.h:459
void BuildTopDown(bool bSorted)
Definition MeshAABBTree3.h:1286
virtual bool IsInside(const FVector3d &P) const override
Definition MeshAABBTree3.h:848
void FindHitTriangles(int IBox, const RayType &Ray, TArray< MeshIntersection::FHitIntersectionResult > &Intersections, const FQueryOptions &Options=FQueryOptions()) const
Definition MeshAABBTree3.h:617
void Build(const TArray< int32 > &TriangleList)
Definition MeshAABBTree3.h:144
virtual bool FindNearestHitTriangle(const FRay3d &Ray, double &NearestT, int &TID, FVector3d &BaryCoords, const FQueryOptions &Options=FQueryOptions()) const override
Definition MeshAABBTree3.h:452
bool TestAnyHitTriangle(int IBox, const FRay3d &Ray, int32 &HitTIDOut, double MaxDistance, const FQueryOptions &Options=FQueryOptions()) const
Definition MeshAABBTree3.h:715
TDynamicVector< int > BoxToIndex
Definition MeshAABBTree3.h:1248
GetSplitAxisFunc GetSplitAxis
Definition MeshAABBTree3.h:83
TDynamicVector< int > IndexList
Definition MeshAABBTree3.h:1262
void Build()
Definition MeshAABBTree3.h:138
virtual bool SupportsPointContainment() const override
Definition MeshAABBTree3.h:843
static GetSplitAxisFunc MakeDefaultSplitAxisFunc()
Definition MeshAABBTree3.h:75
int TrianglesEnd
Definition MeshAABBTree3.h:1265
virtual MeshIntersection::FIntersectionsQueryResult FindAllIntersections(const TMeshAABBTree3 &OtherTree, const TFunction< FVector3d(const FVector3d &)> &TransformF=nullptr, const FQueryOptions &Options=FQueryOptions(), const FQueryOptions &OtherTreeOptions=FQueryOptions(), TFunction< bool(FIntrTriangle3Triangle3d &)> IntersectionFn=nullptr) const
Definition MeshAABBTree3.h:1060
virtual bool SupportsTriangleRayIntersection() const override
Definition MeshAABBTree3.h:431
virtual FIndex2i FindNearestTriangles(TMeshAABBTree3 &OtherTree, const TFunction< FVector3d(const FVector3d &)> &TransformF, double &Distance, const FQueryOptions &Options=FQueryOptions(), const FQueryOptions &OtherTreeOptions=FQueryOptions())
Definition MeshAABBTree3.h:816
virtual int FindNearestVertex(const FVector3d &P, double &NearestDistSqr, double MaxDist=TNumericLimits< double >::Max(), const FQueryOptions &Options=FQueryOptions())
Definition MeshAABBTree3.h:336
const TriangleMeshType * GetMesh() const
Definition MeshAABBTree3.h:109
double box_box_distsqr(int iBox, const FAxisAlignedBox3d &testBox) const
Definition MeshAABBTree3.h:1663
FAxisAlignedBox3d GetBox(int iBox, const TFunction< FVector3d(const FVector3d &)> &TransformF) const
Definition MeshAABBTree3.h:1157
static constexpr double DOUBLE_MAX
Definition MeshAABBTree3.h:86
void SetTolerance(double Tolerance)
Definition MeshAABBTree3.h:1191
bool IsValid(bool bAllowUnsafeModifiedMeshQueries) const
Definition MeshAABBTree3.h:118
virtual void TreeTraversalImpl(int IBox, int Depth, FTreeTraversal &Traversal, const FQueryOptions &Options) const
Definition MeshAABBTree3.h:886
int TopDownLeafMaxTriCount
Definition MeshAABBTree3.h:73
virtual int FindNearestTriangle(const FVector3d &P, double &NearestDistSqr, const FQueryOptions &Options=FQueryOptions()) const override
Definition MeshAABBTree3.h:159
virtual void DoTraversal(FTreeTraversal &Traversal, const FQueryOptions &Options=FQueryOptions()) const
Definition MeshAABBTree3.h:868
bool find_tri_tri_intersections(int TID_A, int IdxRangeStart, int IdxRangeEnd, MeshIntersection::FIntersectionsQueryResult *Result, bool bIgnoreTopoConnected, TFunctionRef< bool(FIntrTriangle3Triangle3d &)> IntersectFn, const FQueryOptions &Options) const
Definition MeshAABBTree3.h:2036
TMeshAABBTree3(const TriangleMeshType *SourceMesh, bool bAutoBuild=true)
Definition MeshAABBTree3.h:93
int RootIndex
Definition MeshAABBTree3.h:1268
TDynamicVector< FVector3d > BoxCenters
Definition MeshAABBTree3.h:1249
SIZE_T GetByteCount() const
Definition MeshAABBTree3.h:1240
virtual FVector3d FindNearestPoint(const FVector3d &Point, const FQueryOptions &Options=FQueryOptions()) const
Definition MeshAABBTree3.h:197
uint64 MeshChangeStamp
Definition MeshAABBTree3.h:72
virtual int FindNearestHitTriangle(const FRay3d &Ray, const FQueryOptions &Options=FQueryOptions()) const override
Definition MeshAABBTree3.h:436
void find_nearest_triangles(int iBox, TMeshAABBTree3 &OtherTree, const TFunction< FVector3d(const FVector3d &)> &TransformF, int oBox, int depth, double &nearest_sqr, FIndex2i &nearest_pair, const FQueryOptions &Options, const FQueryOptions &OtherTreeOptions) const
Definition MeshAABBTree3.h:1497
void find_nearest_vertex(int IBox, const FVector3d &P, double &NearestDistSqr, int &NearestVertexID, const FQueryOptions &Options)
Definition MeshAABBTree3.h:355
void BuildTopDown(TArray< int > &Triangles, TArray< FVector3d > &Centers, int32 NumTriangles)
Definition MeshAABBTree3.h:1345
virtual bool IsWithinDistanceSquared(const FVector3d &Point, double ThresholdDistanceSqr, int &OutTriangleID, const FQueryOptions &Options=FQueryOptions()) const
Definition MeshAABBTree3.h:217
FAxisAlignedBox3d GetBoundingBox() const
Definition MeshAABBTree3.h:181
double BoxEps
Definition MeshAABBTree3.h:1184
virtual bool SupportsNearestTriangle() const override
Definition MeshAABBTree3.h:150
virtual bool TestIntersection(const TMeshAABBTree3 &OtherTree, const TFunction< FVector3d(const FVector3d &)> &TransformF=nullptr, const FQueryOptions &Options=FQueryOptions(), const FQueryOptions &OtherTreeOptions=FQueryOptions()) const
Definition MeshAABBTree3.h:1001
bool box_contains(int IBox, const FVector3d &P) const
Definition MeshAABBTree3.h:1208
static bool TriangleIntersection(FIntrTriangle3Triangle3d &Intr)
Definition MeshAABBTree3.h:1684
static void AddTriTriIntersectionResult(const FIntrTriangle3Triangle3d &Intr, int TID_A, int TID_B, MeshIntersection::FIntersectionsQueryResult &Result)
Definition MeshAABBTree3.h:2108
bool find_self_intersections_acrossboxes(int Box1, int Box2, MeshIntersection::FIntersectionsQueryResult *Result, bool bIgnoreTopoConnected, int depth, TFunctionRef< bool(FIntrTriangle3Triangle3d &)> IntersectFn, const FQueryOptions &Options) const
Definition MeshAABBTree3.h:1900
TDynamicVector< FVector3d > BoxExtents
Definition MeshAABBTree3.h:1250
FAxisAlignedBox3d GetBoxEps(int IBox, double Epsilon=FMathd::ZeroTolerance) const
Definition MeshAABBTree3.h:1171
virtual bool FindNearestHitTriangle(const FRay3d &Ray, double &NearestT, int &TID, const FQueryOptions &Options=FQueryOptions()) const override
Definition MeshAABBTree3.h:446
bool find_any_intersection(int iBox, const TMeshAABBTree3 &OtherTree, const TFunction< FVector3d(const FVector3d &)> &TransformF, int oBox, int depth, TFunctionRef< bool(const FTriangle3d &A, const FTriangle3d &B)> TriangleIntersectionTest, const FQueryOptions &Options, const FQueryOptions &OtherTreeOptions) const
Definition MeshAABBTree3.h:1760
virtual bool TestIntersection(const TriangleMeshType *TestMesh, FAxisAlignedBox3d TestMeshBounds=FAxisAlignedBox3d::Empty(), const TFunction< FVector3d(const FVector3d &)> &TransformF=nullptr, const FQueryOptions &Options=FQueryOptions()) const
Definition MeshAABBTree3.h:947
Definition MeshQueries.h:21
static FVector3d GetTriCentroid(const TriangleMeshType &Mesh, int TriIdx)
Definition MeshQueries.h:57
static FDistPoint3Triangle3d TriangleDistance(const TriangleMeshType &Mesh, int TriIdx, FVector3d Point)
Definition MeshQueries.h:28
static double TriDistanceSqr(const TriangleMeshType &Mesh, int TriIdx, const FVector3d &Point)
Definition MeshQueries.h:361
constexpr int InvalidID
Definition IndexTypes.h:13
bool RayTriangleTest(const TVector< RealType > &RayOrigin, const TVector< RealType > &RayDirection, const TVector< RealType > &V0, const TVector< RealType > &V1, const TVector< RealType > &V2)
Definition IntersectionUtil.h:38
Definition MeshAABBTree3.h:17
Definition ParametricSurfaceData.h:18
TIntrRay3Triangle3< double > FIntrRay3Triangle3d
Definition IntrRay3Triangle3.h:319
T DistanceSquared(const UE::Math::TVector2< T > &V1, const UE::Math::TVector2< T > &V2)
Definition VectorTypes.h:82
TAxisAlignedBox3< double > FAxisAlignedBox3d
Definition BoxTypes.h:885
TTriangle3< double > FTriangle3d
Definition TriangleTypes.h:325
Definition AdvancedWidgetsModule.cpp:13
Definition SpatialInterfaces.h:13
Definition MeshAABBTree3.h:40
TArray< FSegmentIntersection > Segments
Definition MeshAABBTree3.h:42
TArray< FPolygonIntersection > Polygons
Definition MeshAABBTree3.h:43
TArray< FPointIntersection > Points
Definition MeshAABBTree3.h:41
Definition MeshAABBTree3.h:24
int TriangleID[2]
Definition MeshAABBTree3.h:25
FVector3d Point
Definition MeshAABBTree3.h:26
Definition MeshAABBTree3.h:34
int Quantity
Definition MeshAABBTree3.h:37
int TriangleID[2]
Definition MeshAABBTree3.h:35
FVector3d Point[6]
Definition MeshAABBTree3.h:36
Definition MeshAABBTree3.h:29
FVector3d Point[2]
Definition MeshAABBTree3.h:31
int TriangleID[2]
Definition MeshAABBTree3.h:30
Definition NumericLimits.h:41
Definition IndexTypes.h:27
static constexpr FIndex2i Invalid()
Definition IndexTypes.h:52
Definition IndexTypes.h:158
int B
Definition IndexTypes.h:164
int A
Definition IndexTypes.h:163
int C
Definition IndexTypes.h:165
Definition SpatialInterfaces.h:57
TFunction< bool(int)> TriangleFilterF
Definition SpatialInterfaces.h:66
static TAxisAlignedBox3< double > Empty()
Definition BoxTypes.h:382
RealType DistanceSquared(const TVector< RealType > &V) const
Definition BoxTypes.h:531
static TInterval1< double > Empty()
Definition BoxTypes.h:34
Definition MeshAABBTree3.h:1271
TDynamicVector< FVector3d > BoxCenters
Definition MeshAABBTree3.h:1273
int IBoxCur
Definition MeshAABBTree3.h:1276
TDynamicVector< int > BoxToIndex
Definition MeshAABBTree3.h:1272
TDynamicVector< FVector3d > BoxExtents
Definition MeshAABBTree3.h:1274
FBoxesSet()
Definition MeshAABBTree3.h:1278
TDynamicVector< int > IndexList
Definition MeshAABBTree3.h:1275
int IIndicesCur
Definition MeshAABBTree3.h:1277
Definition TriangleTypes.h:263
TVector< RealType > V[3]
Definition TriangleTypes.h:264
Definition IntrRay3Triangle3.h:24
TVector< T > Origin
Definition Ray.h:24
TVector< T > Direction
Definition Ray.h:27
T Z
Definition Vector.h:68
static TVector< double > Zero()
Definition Vector.h:112
T Y
Definition Vector.h:65
T X
Definition Vector.h:62
T SquaredLength() const
Definition Vector.h:1734