33#include <NDEVR/BaseValues.h>
34#include <NDEVR/Vertex.h>
35#include <NDEVR/VectorFunctions.h>
50 template<u
int01 t_dims,
class t_type,
class t_vertex = Vertex<t_dims, t_type>>
77 static_assert(t_dims == 2,
"Radial Object given 3 points must be defined in 2 dimensions");
86 m_center = b + q * (e[
X] * (b[
Y] - a[
Y]) - e[
Y] * (b[
X] - a[
X])) / (e[
Y] * q[
X] - e[
X] * q[
Y]);
104 template<
bool t_allow_bounds = true>
105 constexpr bool contains(
const t_vertex& vector)
const
105 constexpr bool contains(
const t_vertex& vector)
const {
…}
123 constexpr t_type
radius()
const {
return m_radius;}
136 template<u
int01 t_new_dims,
class t_new_type,
class t_new_vertex = Vertex<t_new_dims, t_new_type>>
152 [[nodiscard]]
constexpr const t_vertex&
center()
const {
return m_center;}
156 return m_radius == rad.m_radius && (m_center == rad.m_center);
160 return m_radius != rad.m_radius || m_center != rad.m_center;
169 template<u
int01 t_dims,
class t_type,
class t_vector>
170 struct Constant<RadialObject<t_dims, t_type, t_vector>>
173 constexpr const static RadialObject<t_dims, t_type, t_vector>
Min{ t_vector(0), 0 };
181 template<u
int01 t_dims,
class t_type,
class t_vertex = Vertex<t_dims, t_type>>
186 : m_axis_major(
Vector<t_dims, t_type>(0.0))
190 : m_axis_major(p1, p2)
195 template<
class t_matrix_type = fltp08>
202 object.m_axis_major[
A] =
center + direction;
203 object.m_axis_major[
B] =
center - direction;
207 object.m_radius =
getMin(scale[
X], scale[
Y]);
224 constexpr bool contains(
const t_vertex& vector)
const
227 return m_radius > total_distance -
distance<fltp08>(m_axis_major[
A], m_axis_major[
B]);
224 constexpr bool contains(
const t_vertex& vector)
const {
…}
240 constexpr t_type
radius()
const {
return m_radius; }
253 template<u
int01 t_new_dims,
class t_new_type>
272 return m_axis_major[vertex];
275 template<
class t_ratio_type = fltp08>
281 template<
class t_matrix_type = fltp08>
285 if (m_axis_major[
B] - m_axis_major[
A] == t_vertex(0))
289 mat = mat.
scale(axis, scale);
An ellipse like shape (such as an oval or egg) with two points, where all points on the shape are equ...
Definition RadialObject.hpp:183
t_ratio_type minorToMajorRatio() const
Definition RadialObject.hpp:276
constexpr t_type radius() const
Definition RadialObject.hpp:240
constexpr const t_vertex & axisPoint(uint01 vertex) const
Definition RadialObject.hpp:270
Matrix< t_matrix_type > fromCircleTransform() const
Definition RadialObject.hpp:282
constexpr BiRadialObject< t_new_dims, t_new_type > as() const
Definition RadialObject.hpp:254
static BiRadialObject< t_dims, t_type, t_vertex > fromCircleTransform(const Matrix< t_matrix_type > &mat)
Definition RadialObject.hpp:196
constexpr bool contains(const t_vertex &vector) const
Definition RadialObject.hpp:224
constexpr t_vertex center() const
Definition RadialObject.hpp:269
constexpr BiRadialObject(const t_vertex &p1, const t_vertex &p2, t_type radius)
Definition RadialObject.hpp:189
constexpr BiRadialObject(t_type r=0)
Definition RadialObject.hpp:185
Definition Matrix.hpp:176
constexpr Matrix scale(t_type scale) const
Definition Matrix.hpp:582
constexpr Vector< 3, t_type > decomposeOffset() const
Definition Matrix.hpp:443
static constexpr Matrix< t_type > ScalerMatrix(t_type scale)
Definition Matrix.hpp:307
constexpr Vector< 3, t_type > decomposeScale() const
Definition Matrix.hpp:424
A radial object.
Definition RadialObject.hpp:52
constexpr RadialObject< t_new_dims, t_new_type > as() const
Definition RadialObject.hpp:137
constexpr t_type radius() const
Definition RadialObject.hpp:123
constexpr RadialObject(const t_vertex ¢er, t_type radius)
Definition RadialObject.hpp:58
constexpr RadialObject(const t_vertex &vertex_a, const t_vertex &vertex_b, const t_vertex &vertex_c)
Definition RadialObject.hpp:73
constexpr RadialObject(t_type r=0)
Definition RadialObject.hpp:54
bool operator!=(const RadialObject &rad) const
Definition RadialObject.hpp:158
bool operator==(const RadialObject &rad) const
Definition RadialObject.hpp:154
constexpr const t_vertex & center() const
Definition RadialObject.hpp:152
constexpr bool contains(const t_vertex &vector) const
Definition RadialObject.hpp:105
Definition Vertex.hpp:317
A fixed-size array with better performance compared to dynamic containers.
Definition Vector.hpp:60
A vertex or point. A specific type of Vector used primarily for spacial location information.
Definition Vertex.hpp:48
@ vertex_a
Definition Triangle.hpp:52
@ vertex_b
Definition Triangle.hpp:53
@ vertex_c
Definition Triangle.hpp:54
uint8_t uint01
-Defines an alias representing a 1 byte, unsigned integer -Can represent exact integer values 0 throu...
Definition BaseValues.hpp:80
t_type distanceSquared(const Bounds< t_dims, t_type, t_vertex > &bounds, const Vector< t_dims, t_type > &vertex)
Definition Distance.hpp:46
constexpr t_to cast(const Angle< t_from > &value)
Definition Angle.h:375
constexpr t_type distance(const t_vertex &vertex, const LineSegment< t_dims, t_type, t_vertex > &line)
Definition Distance.hpp:171
@ B
Definition BaseValues.hpp:170
@ A
Definition BaseValues.hpp:168
@ Y
Definition BaseValues.hpp:169
@ X
Definition BaseValues.hpp:167
double fltp08
Defines an alias representing an 8 byte floating-point number.
Definition BaseValues.hpp:149
constexpr t_type getMin(const t_type &left, const t_type &right)
Finds the minimum of the given arguments based on the < operator Author: Tyler Parke Date: 2017-11-05...
Definition BaseFunctions.hpp:56
Defines for a given type (such as sint04, fltp08, UUID, etc) a maximum, minimum, and reserved 'invali...
Definition BaseValues.hpp:233
static const t_type Invalid
Definition BaseValues.hpp:234
static const t_type Min
Definition BaseValues.hpp:235
static const t_type Max
Definition BaseValues.hpp:236