KanoopCommonQt 2.1.1
Kanoop foundational Qt utility library
Loading...
Searching...
No Matches
ellipse.h
1/**
2 * @brief A 2D ellipse defined by a centre point and two semi-axis lengths.
3 */
4#ifndef ELLIPSE_H
5#define ELLIPSE_H
6#include <Kanoop/geometry/point.h>
7
8/**
9 * @brief Represents an axis-aligned 2D ellipse with semi-axes A (horizontal) and B (vertical).
10 */
11class KANOOP_EXPORT Ellipse
12{
13public:
14 /** @brief Default constructor — creates a degenerate ellipse at the origin. */
16
17 /**
18 * @brief Construct an ellipse from a centre point and semi-axis lengths.
19 * @param center Centre of the ellipse
20 * @param semiAxisA Half-length of the horizontal axis
21 * @param semiAxisB Half-length of the vertical axis
22 */
23 Ellipse(const Point& center, double semiAxisA, double semiAxisB) :
24 _center(center), _semiAxisA(semiAxisA), _semiAxisB(semiAxisB) {}
25
26 /**
27 * @brief Return the centre of the ellipse.
28 * @return Centre Point
29 */
30 Point center() const { return _center; }
31
32 /**
33 * @brief Set the centre of the ellipse.
34 * @param value New centre point
35 */
36 void setCenter(const Point& value) { _center = value; }
37
38 /**
39 * @brief Return the horizontal semi-axis length.
40 * @return Semi-axis A (horizontal half-width)
41 */
42 double semiAxisA() const { return _semiAxisA; }
43
44 /**
45 * @brief Set the horizontal semi-axis length.
46 * @param value New semi-axis A value
47 */
48 void setSemiAxisA(double value) { _semiAxisA = value; }
49
50 /**
51 * @brief Return the vertical semi-axis length.
52 * @return Semi-axis B (vertical half-height)
53 */
54 double semiAxisB() const { return _semiAxisB; }
55
56 /**
57 * @brief Set the vertical semi-axis length.
58 * @param value New semi-axis B value
59 */
60 void setSemiAxisB(double value) { _semiAxisB = value; }
61
62 /**
63 * @brief radiusAtAngle
64 * @param angle in degrees offset from vertical (north) at zero
65 * @return The radius at the given angle.
66 */
67 double radiusAtAngle(double angle) const;
68
69 /**
70 * @brief Format the ellipse as a human-readable string.
71 * @return String representation of centre and semi-axes
72 */
73 QString toString() const;
74
75private:
76 Point _center;
77 double _semiAxisA = 0;
78 double _semiAxisB = 0;
79};
80
81#endif // ELLIPSE_H
A 2D ellipse defined by a centre point and two semi-axis lengths.
Definition ellipse.h:12
double semiAxisB() const
Return the vertical semi-axis length.
Definition ellipse.h:54
double semiAxisA() const
Return the horizontal semi-axis length.
Definition ellipse.h:42
void setCenter(const Point &value)
Set the centre of the ellipse.
Definition ellipse.h:36
void setSemiAxisB(double value)
Set the vertical semi-axis length.
Definition ellipse.h:60
Point center() const
Return the centre of the ellipse.
Definition ellipse.h:30
void setSemiAxisA(double value)
Set the horizontal semi-axis length.
Definition ellipse.h:48
Ellipse()
Default constructor — creates a degenerate ellipse at the origin.
Definition ellipse.h:15
double radiusAtAngle(double angle) const
radiusAtAngle
Ellipse(const Point &center, double semiAxisA, double semiAxisB)
Construct an ellipse from a centre point and semi-axis lengths.
Definition ellipse.h:23
QString toString() const
Format the ellipse as a human-readable string.
A 2D floating-point point extending QPointF with movement and spatial query methods.
Definition point.h:16