UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
CircleTypes.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "VectorTypes.h"
6#include "VectorUtil.h"
7#include "BoxTypes.h"
8#include "OrientedBoxTypes.h"
9#include "FrameTypes.h"
10
11namespace UE
12{
13namespace Geometry
14{
15
16using namespace UE::Math;
17
18template<typename RealType>
20{
22 RealType Radius = (RealType)1;
23 bool bIsReversed = false;
24
26
27 explicit TCircle2(const RealType& RadiusIn)
28 {
31 }
32
34 {
37 }
38
39
40 RealType GetCircumference() const
41 {
43 }
48
49
50 RealType GetDiameter() const
51 {
52 return (RealType)2 * Radius;
53 }
54 void SetDiameter(RealType NewDiameter)
55 {
56 Radius = NewDiameter * (RealType)0.5;
57 }
58
59 RealType GetArea() const
60 {
62 }
63 void SetArea(RealType NewArea)
64 {
66 }
67
68
69 RealType GetCurvature() const
70 {
71 return (RealType)1 / Radius;
72 }
73
74 RealType GetSignedCurvature() const
75 {
76 return (bIsReversed) ? ((RealType)-1 / Radius) : ((RealType)1 / Radius);
77 }
78
79
84
90
91
97
98
100 {
101 return Center.DistanceSquared(Point) < Radius*Radius;
102 }
103
108
110 {
111 return Center.Distance(Point) - Radius;
112 }
113
114 RealType Distance(const TVector2<RealType>& Point) const
115 {
117 }
118
119
126
127
128 RealType GetBoundingPolygonRadius(int NumSides) const
129 {
130 RealType DeltaAngle = (TMathUtil<RealType>::TwoPi / (RealType)NumSides) / (RealType)2;
132 }
133
134};
135
138
139
140
141
142
143
144
145template<typename RealType>
147{
149 RealType Radius = (RealType)1;
150 bool bIsReversed = false;
151
153
154 explicit TCircle3(const RealType& RadiusIn)
155 {
157 }
158
160 {
161 Frame.Origin = CenterIn;
163 }
164
166 {
167 Frame = FrameIn;
169 }
170
171
173 {
174 return Frame.Origin;
175 }
176
178 {
179 return Frame.Z();
180 }
181
182
183 RealType GetCircumference() const
184 {
186 }
191
192
193 RealType GetDiameter() const
194 {
195 return (RealType)2 * Radius;
196 }
198 {
199 Radius = NewDiameter * (RealType)0.5;
200 }
201
202 RealType GetArea() const
203 {
205 }
206 void SetArea(RealType NewArea)
207 {
209 }
210
211
212 RealType GetCurvature() const
213 {
214 return (RealType)1 / Radius;
215 }
216
217 RealType GetSignedCurvature() const
218 {
219 return (bIsReversed) ? ((RealType)-1 / Radius) : ((RealType)1 / Radius);
220 }
221
222
227
229 {
231 return Frame.FromPlaneUV(TVector2<RealType>(Radius*c, Radius*s), 2);
232 }
233
239
240
241
242
244 {
245 const TVector<RealType>& Center = Frame.Origin;
246 TVector<RealType> Normal = Frame.GetAxis(2);
247
250 RealType OriginDist = DeltaInPlane.Length();
251 if (OriginDist > (RealType)0)
252 {
254 }
255 else // all points equidistant, use any one
256 {
257 return Frame.Origin + Radius * Frame.GetAxis(0);
258 }
259 }
260
261
263 {
264 return Point.DistanceSquared(ClosestPoint(Point));
265 }
266
267 RealType Distance(const TVector<RealType>& Point) const
268 {
270 }
271
276
277};
278
281
282
283} // end namespace UE::Geometry
284} // end namespace UE
@ Normal
Definition AndroidInputInterface.h:116
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition MathUtil.h:150
static RealType Cos(const RealType Value)
Definition MathUtil.h:372
static RealType Sin(const RealType Value)
Definition MathUtil.h:366
static RealType Sqrt(const RealType Value)
Definition MathUtil.h:342
static RealType Abs(const RealType Value)
Definition MathUtil.h:215
TCircle2< float > FCircle2f
Definition CircleTypes.h:136
TCircle3< double > FCircle3d
Definition CircleTypes.h:280
TCircle3< float > FCircle3f
Definition CircleTypes.h:279
TCircle2< double > FCircle2d
Definition CircleTypes.h:137
Definition Sphere.cpp:10
Definition AdvancedWidgetsModule.cpp:13
Definition BoxTypes.h:637
Definition CircleTypes.h:20
void SetCircumference(RealType NewCircumference)
Definition CircleTypes.h:44
RealType GetDiameter() const
Definition CircleTypes.h:50
TCircle2(const RealType &RadiusIn)
Definition CircleTypes.h:27
TVector2< RealType > GetPointFromUnitParameter(RealType UnitParam) const
Definition CircleTypes.h:92
TVector2< RealType > Center
Definition CircleTypes.h:21
RealType Distance(const TVector2< RealType > &Point) const
Definition CircleTypes.h:114
RealType GetCurvature() const
Definition CircleTypes.h:69
TCircle2(const TVector2< RealType > &CenterIn, const RealType &RadiusIn)
Definition CircleTypes.h:33
RealType Radius
Definition CircleTypes.h:22
void SetArea(RealType NewArea)
Definition CircleTypes.h:63
RealType GetBoundingPolygonRadius(int NumSides) const
Definition CircleTypes.h:128
TAxisAlignedBox2< RealType > GetBoundingBox() const
Definition CircleTypes.h:120
bool IsInside(const TVector2< RealType > &Point) const
Definition CircleTypes.h:99
void SetDiameter(RealType NewDiameter)
Definition CircleTypes.h:54
bool IsInsideOrOn(const TVector2< RealType > &Point) const
Definition CircleTypes.h:104
RealType GetSignedCurvature() const
Definition CircleTypes.h:74
RealType GetArea() const
Definition CircleTypes.h:59
RealType SignedDistance(const TVector2< RealType > &Point) const
Definition CircleTypes.h:109
bool bIsReversed
Definition CircleTypes.h:23
TVector2< RealType > GetPointFromAngleR(RealType AngleRad) const
Definition CircleTypes.h:85
RealType GetCircumference() const
Definition CircleTypes.h:40
TCircle2()
Definition CircleTypes.h:25
TVector2< RealType > GetPointFromAngleD(RealType AngleDeg) const
Definition CircleTypes.h:80
Definition CircleTypes.h:147
void SetCircumference(RealType NewCircumference)
Definition CircleTypes.h:187
TVector< RealType > GetNormal() const
Definition CircleTypes.h:177
TFrame3< RealType > Frame
Definition CircleTypes.h:148
RealType GetArea() const
Definition CircleTypes.h:202
TVector< RealType > GetPointFromAngleR(RealType AngleRad) const
Definition CircleTypes.h:228
TCircle3(const RealType &RadiusIn)
Definition CircleTypes.h:154
TVector< RealType > GetPointFromAngleD(RealType AngleDeg) const
Definition CircleTypes.h:223
TCircle3(const TFrame3< RealType > &FrameIn, const RealType &RadiusIn)
Definition CircleTypes.h:165
RealType GetDiameter() const
Definition CircleTypes.h:193
RealType Distance(const TVector< RealType > &Point) const
Definition CircleTypes.h:267
TCircle3()
Definition CircleTypes.h:152
TVector< RealType > GetPointFromUnitParameter(RealType UnitParam) const
Definition CircleTypes.h:234
RealType DistanceSquared(const TVector< RealType > &Point) const
Definition CircleTypes.h:262
TVector< RealType > ClosestPoint(const TVector< RealType > &QueryPoint) const
Definition CircleTypes.h:243
RealType GetCircumference() const
Definition CircleTypes.h:183
RealType Radius
Definition CircleTypes.h:149
RealType GetSignedCurvature() const
Definition CircleTypes.h:217
bool bIsReversed
Definition CircleTypes.h:150
RealType GetCurvature() const
Definition CircleTypes.h:212
const TVector< RealType > & GetCenter() const
Definition CircleTypes.h:172
TOrientedBox3< RealType > GetBoundingBox() const
Definition CircleTypes.h:272
void SetDiameter(RealType NewDiameter)
Definition CircleTypes.h:197
void SetArea(RealType NewArea)
Definition CircleTypes.h:206
TCircle3(const TVector< RealType > &CenterIn, const RealType &RadiusIn)
Definition CircleTypes.h:159
Definition FrameTypes.h:27
Definition OrientedBoxTypes.h:25
Definition Vector2D.h:38
static UE_FORCEINLINE_HINT T DistSquared(const TVector2< T > &V1, const TVector2< T > &V2)
Definition Vector2D.h:935
static UE_FORCEINLINE_HINT T Distance(const TVector2< T > &V1, const TVector2< T > &V2)
Definition Vector2D.h:941
T Y
Definition Vector2D.h:52
T X
Definition Vector2D.h:49
Definition Vector.h:51
T Z
Definition Vector.h:68
UE_FORCEINLINE_HINT T Dot(const TVector< T > &V) const
Definition Vector.h:1553