54 return (
x == other.
x &&
y == other.
y &&
v == other.
v);
65 return !(*
this == other);
75 return Point(
x + other.
x,
y + other.
y,
v + other.
v);
85 return Point(
x - other.
x,
y - other.
y,
v - other.
v);
95 return Point(
x * scalar,
y * scalar,
v * scalar);
105 return Point(
x / scalar,
y / scalar,
v / scalar);
122 return Point(scalar * point.
x, scalar * point.
y, scalar * point.
v);
173float angle(
const Point &p1,
const Point &p2);
194float angle(
const Point &p0,
const Point &p1,
const Point &p2);
218float cross_product(
const Point &p0,
const Point &p1,
const Point &p2);
229float curvature(
const Point &p1,
const Point &p2,
const Point &p3);
243float distance(
const Point &p1,
const Point &p2);
268 const Point &p_ctrl_start,
269 const Point &p_ctrl_end,
370 const glm::vec4 &bbox2);
419Point
lerp(
const Point &p1,
const Point &p2,
float t);
449 float distance_ratio,
482float side(
const Point &p1,
485 const Point &p_query);
513float triangle_area(
const Point &p1,
const Point &p2,
const Point &p3);
Declaration of the Array class for 2D floating-point arrays with various mathematical operations and ...
Array class, helper to manipulate 2D float array with "(i, j)" indexing.
Definition array.hpp:32
A class to represent and manipulate 2D points that can carry a value.
Definition point.hpp:23
void set_value_from_array(const Array &array, glm::vec4 bbox)
Updates the point's value based on bilinear interpolation from an array.
Definition points.cpp:13
bool operator==(const Point &other) const
Equality operator to check if two points are the same.
Definition point.hpp:52
Point operator-(const Point &other) const
Subtracts two points.
Definition point.hpp:83
Point operator/(float scalar) const
Divides the point by a scalar.
Definition point.hpp:103
Point()
Default constructor initializing the point to (0, 0, 0).
Definition point.hpp:32
float y
The y-coordinate of the point.
Definition point.hpp:26
friend Point operator*(float scalar, const Point &point)
Scalar multiplication (scalar * Vec2).
Definition point.hpp:120
Point operator+(const Point &other) const
Adds two points.
Definition point.hpp:73
Point operator*(float scalar) const
Multiplies the point by a scalar.
Definition point.hpp:93
void print()
Prints the coordinates and value of the Point object.
Definition points.cpp:36
float x
The x-coordinate of the point.
Definition point.hpp:25
float v
The value at the point.
Definition point.hpp:27
bool operator!=(const Point &other) const
Inequality operator to check if two points are different.
Definition point.hpp:63
Point(float x, float y, float v=0.f)
Parameterized constructor initializing the point to given values.
Definition point.hpp:42
Definition algebra.hpp:23
float side(const Point &p1, const Point &p2, const Point &p3, const Point &p_query)
Determines the relative side of a query point with respect to a curve segment at a given point.
Definition points.cpp:277
float curvature(const Point &p1, const Point &p2, const Point &p3)
Calculates the curvature formed by three points in 2D space.
Definition points.cpp:103
Point midpoint(const Point &p1, const Point &p2, int orientation, float distance_ratio, float t=0.5f)
Computes the midpoint displacement in 1D with a perpendicular displacement.
Definition points.cpp:220
float distance(const Point &p1, const Point &p2)
Calculates the distance between two points.
Definition points.cpp:123
float triangle_area_signed(const Point &p1, const Point &p2, const Point &p3)
Definition points.cpp:308
glm::vec4 intersect_bounding_boxes(const glm::vec4 &bbox1, const glm::vec4 &bbox2)
Determines the intersection of two bounding boxes.
Definition points.cpp:186
float classify_point(const Point &p_prev, const Point &p, const Point &p_next, const Point &pq)
Definition points.cpp:71
void sort_points(std::vector< Point > &points)
Sorts a vector of points in ascending order based on their coordinates.
Definition points.cpp:298
bool is_point_within_bounding_box(Point p, glm::vec4 bbox)
Checks if a point is within a specified bounding box.
Definition points.cpp:205
float cross_product(const Point &p0, const Point &p1, const Point &p2)
Computes the 2D cross product of vectors formed by three points.
Definition points.cpp:86
float triangle_area(const Point &p1, const Point &p2, const Point &p3)
Calculates the area of a triangle formed by three points in 2D space.
Definition points.cpp:303
Point interp_decasteljau(const std::vector< Point > &points, float t)
Performs a De Casteljau algorithm-based interpolation for Bezier curves.
Definition points.cpp:175
float angle(const Point &p1, const Point &p2)
Computes the angle between two points relative to the x-axis.
Definition points.cpp:42
float curvature_signed(const Point &p1, const Point &p2, const Point &p3)
Definition points.cpp:113
Point lerp(const Point &p1, const Point &p2, float t)
Linearly interpolates between two points.
Definition points.cpp:215
Point interp_bezier(const Point &p_start, const Point &p_ctrl_start, const Point &p_ctrl_end, const Point &p_end, float t)
Performs a cubic Bezier interpolation.
Definition points.cpp:130
Point interp_catmullrom(const Point &p0, const Point &p1, const Point &p2, const Point &p3, float t)
Performs a Catmull-Rom spline interpolation.
Definition points.cpp:161
std::optional< Point > segment_intersection(const Point &p1, const Point &p2, const Point &q1, const Point &q2)
Computes the intersection point of two 2D segments, if it exists.
Definition points.cpp:249
glm::vec4 unit_square_bbox()
Constructs a 4D bounding box for a unit square.
Definition points.cpp:315
Point interp_bspline(const Point &p0, const Point &p1, const Point &p2, const Point &p3, float t)
Performs a cubic B-spline interpolation.
Definition points.cpp:146