12 struct FCylinderSpecializeSamplingHelper;
22 , MPlane1(
x1, (
x2 -
x1).GetSafeNormal())
26 , MLocalBoundingBox(
x1,
x1)
29 MLocalBoundingBox =
FAABB3(MLocalBoundingBox.
Min() -
FVec3(MRadius), MLocalBoundingBox.
Max() +
FVec3(MRadius));
33 , MPlane1(
Other.MPlane1)
34 , MPlane2(
Other.MPlane2)
35 , MHeight(
Other.MHeight)
36 , MRadius(
Other.MRadius)
37 , MLocalBoundingBox(
Other.MLocalBoundingBox)
44 , MHeight(
Other.MHeight)
45 , MRadius(
Other.MRadius)
112 if (
v.Size() > MRadius)
114 const FVec3 Corner =
v.GetSafeNormal() * MRadius + MPlane1.
X();
116 return Normal.SafeNormalize();
129 if (
v.Size() > MRadius)
131 const FVec3 Corner =
v.GetSafeNormal() * MRadius + MPlane2.
X();
133 return Normal.SafeNormalize();
181 PI2 * Radius * (Height + Radius) :
182 PI2 * Radius * Height;
192 const FReal RR = Radius * Radius;
203 return FRotation3::FromRotatedVector(
FVec3(0, 0, 1),
Axis);
240 for (
const auto&
Elem : Intersections)
250 virtual uint32 GetTypeHash()
const override
260 friend FImplicitObject;
263 TPlane<FReal, 3> MPlane1, MPlane2;
264 FReal MHeight, MRadius;
323 const int32 NumPoints,
335 const FReal HalfHeight = Height / 2;
372 const int32 NumPoints,
405 const FReal HalfHeight = Height / 2;
413 for (
int32 i = 0; i < Points2D.
Num(); i++)
453 for (
int32 i = 0; i < Points2D.
Num(); i++)
481 using TCylinder
UE_DEPRECATED(4.27,
"Deprecated. this class is to be deleted, use FCylinder instead") =
FCylinder;
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define check(expr)
Definition AssertionMacros.h:314
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
constexpr uint32 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
#define UE_PI
Definition UnrealMathUtility.h:129
#define UE_KINDA_SMALL_NUMBER
Definition UnrealMathUtility.h:131
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32 Offset
Definition VulkanMemory.cpp:4033
uint32 Size
Definition VulkanMemory.cpp:4034
Definition ChaosArchive.h:364
Definition ChaosArchive.h:167
virtual void Serialize(FChaosArchive &Ar)
Definition Cylinder.h:206
FCylinder(const FVec3 &x1, const FVec3 &x2, const FReal Radius)
Definition Cylinder.h:20
CHAOS_API FReal SignedDistance(const FVec3 &x) const
Definition ImplicitObject.cpp:105
~FCylinder()
Definition Cylinder.h:49
FRotation3 GetRotationOfMass() const
Definition Cylinder.h:198
TArray< FVec3 > ComputeSamplePoints(const int32 NumPoints, const bool IncludeEndCaps=true) const
Definition Cylinder.h:463
FReal GetHeight() const
Definition Cylinder.h:163
FVec3 GetCenter() const
Definition Cylinder.h:170
FVec3 GetAxis() const
Definition Cylinder.h:174
FReal GetVolume() const
Definition Cylinder.h:185
virtual const FAABB3 BoundingBox() const override
Definition Cylinder.h:160
FReal GetArea(const bool IncludeEndCaps=true) const
Definition Cylinder.h:176
FCylinder(const FCylinder &Other)
Definition Cylinder.h:31
FCylinder(FCylinder &&Other)
Definition Cylinder.h:40
static FReal GetVolume(const FReal Height, const FReal Radius)
Definition Cylinder.h:186
TArray< FVec3 > ComputeSamplePoints(const FReal PointsPerUnitArea, const bool IncludeEndCaps=true, const int32 MinPoints=0, const int32 MaxPoints=1000) const
Definition Cylinder.h:90
virtual FName GetTypeName() const
Definition ImplicitObject.h:414
FMatrix33 GetInertiaTensor(const FReal Mass) const
Definition Cylinder.h:188
virtual FReal PhiWithNormal(const FVec3 &x, FVec3 &Normal) const override
Definition Cylinder.h:104
static FMatrix33 GetInertiaTensor(const FReal Mass, const FReal Height, const FReal Radius)
Definition Cylinder.h:189
const FVec3 & GetX2() const
Definition Cylinder.h:165
const FVec3 & GetX1() const
Definition Cylinder.h:164
static FRotation3 GetRotationOfMass(const FVec3 &Axis)
Definition Cylinder.h:199
static FReal GetArea(const FReal Height, const FReal Radius, const bool IncludeEndCaps)
Definition Cylinder.h:177
FVec3 GetCenterOfMass() const
Definition Cylinder.h:172
virtual FReal GetRadius() const override
Definition Cylinder.h:162
TArray< FVec3 > ComputeLocalSamplePoints(const FReal PointsPerUnitArea, const bool IncludeEndCaps=true, const int32 MinPoints=0, const int32 MaxPoints=1000) const
Definition Cylinder.h:70
static constexpr EImplicitObjectType StaticType()
Definition Cylinder.h:51
TArray< FVec3 > ComputeLocalSamplePoints(const int32 NumPoints, const bool IncludeEndCaps=true) const
Definition Cylinder.h:470
const FVec3 & GetInsertion() const
Definition Cylinder.h:169
const FVec3 & GetOrigin() const
Definition Cylinder.h:167
Definition ImplicitObject.h:111
CHAOS_API FReal SignedDistance(const FVec3 &x) const
Definition ImplicitObject.cpp:105
bool HasBoundingBox() const
Definition ImplicitObject.h:275
virtual FName GetTypeName() const
Definition ImplicitObject.h:414
CHAOS_API void SerializeImp(FArchive &Ar)
Definition ImplicitObject.cpp:337
CHAOS_API Pair< FVec3, bool > FindClosestIntersection(const FVec3 &StartPoint, const FVec3 &EndPoint, const FReal Thickness) const
Definition ImplicitObject.cpp:183
FORCEINLINE const TVector< T, d > & Max() const
Definition AABB.h:596
FORCEINLINE void GrowToInclude(const TVector< T, d > &V)
Definition AABB.h:393
FORCEINLINE const TVector< T, d > & Min() const
Definition AABB.h:595
static void SerializeAsAABB(FArchive &Ar, TAABB< T, d > &AABB)
Definition Box.h:467
virtual uint32 GetTypeHash() const override
Definition Plane.h:99
virtual FReal PhiWithNormal(const FVec3 &x, FVec3 &Normal) const override
Definition Plane.h:58
const TVector< T, d > & Normal() const
Definition Plane.h:79
const TVector< T, d > & X() const
Definition Plane.h:78
UE_FORCEINLINE_HINT SizeType AddUninitialized()
Definition Array.h:1664
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void Reset(SizeType NewSize=0)
Definition Array.h:2246
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
void SetNumUninitialized(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2369
UE_NODEBUG void Sort()
Definition Array.h:3418
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
@ Cylinder
Definition ImplicitObjectType.h:23
Definition SkeletalMeshComponent.h:307
TSphere< FReal, 3 > FSphere
Definition ImplicitObject.h:36
uint8 EImplicitObjectType
Definition ImplicitObjectType.h:41
FRealDouble FReal
Definition Real.h:22
PMatrix< FReal, 3, 3 > FMatrix33
Definition Core.h:20
Pair< T1, T2 > MakePair(const T1 &First, const T2 &Second)
Definition Pair.h:45
TVector< FReal, 3 > FVec3
Definition Core.h:17
TAABB< FReal, 3 > FAABB3
Definition ImplicitObject.h:34
TVector< FReal, 2 > FVec2
Definition Core.h:16
float v
Definition radaudio_mdct.cpp:62
Definition Cylinder.h:269
static FORCEINLINE void ComputeGoldenSpiralPoints(TArray< FVec3 > &Points, const FCylinder &Cylinder, const int32 NumPoints, const bool IncludeEndCaps=true)
Definition Cylinder.h:292
static FORCEINLINE void ComputeSamplePoints(TArray< FVec3 > &Points, const FCylinder &Cylinder, const int32 NumPoints, const bool IncludeEndCaps=true)
Definition Cylinder.h:270
static FORCEINLINE void ComputeGoldenSpiralPointsUnoriented(TArray< FVec3 > &Points, const FReal Radius, const FReal Height, const int32 NumPoints, const bool IncludeEndCaps=true, int32 SpiralSeed=0)
Definition Cylinder.h:368
static FORCEINLINE void ComputeGoldenSpiralPoints(TArray< FVec3 > &Points, const FVec3 &Origin, const FVec3 &Axis, const FReal Radius, const FReal Height, const int32 NumPoints, const bool IncludeEndCaps=true, int32 SpiralSeed=0)
Definition Cylinder.h:317
Definition UnrealMathUtility.h:270
static constexpr UE_FORCEINLINE_HINT T Square(const T A)
Definition UnrealMathUtility.h:578
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592
static constexpr UE_FORCEINLINE_HINT T LerpStable(const T &A, const T &B, double Alpha)
Definition UnrealMathUtility.h:1147