81 if (x1 <= x0 || y1 <= y0)
82 return rect{{x0, y0}, {0.0f, 0.0f}};
83 return rect{{x0, y0}, {x1 - x0, y1 - y0}};
98 return {
true, {ca.
x < cb.
x ? -1.0f : 1.0f, 0.0f}, ox};
99 return {
true, {0.0f, ca.
y < cb.
y ? -1.0f : 1.0f}, oy};
110 if (dist_sq >= r * r)
112 const f32 dist = std::sqrt(dist_sq);
114 const vec2 n = dist > 0.0f ? d / dist :
vec2{0.0f, -1.0f};
115 return {
true, n, r - dist};
128 if (dist_sq > 0.0f) {
129 const f32 dist = std::sqrt(dist_sq);
130 return {
true, d / dist, c.
radius - dist};
151 return {
true, n, best + c.
radius};
159 return velocity - normal * (2.0f *
dot(velocity, normal));
contact collide_circle_rect(circle c, rect r)
Va chạm hình tròn với hình chữ nhật.
Definition _collide.h:122
constexpr vec2 reflect(vec2 velocity, vec2 normal)
Phản xạ vận tốc qua một pháp tuyến, như bóng nảy khỏi tường.
Definition _collide.h:158
constexpr bool circles_overlap(circle a, circle b)
Hai hình tròn có chồng nhau không.
Definition _collide.h:49
constexpr bool rects_overlap(rect a, rect b)
Hai hình chữ nhật có chồng nhau không.
Definition _collide.h:40
constexpr bool point_in_circle(vec2 p, circle c)
Điểm có nằm trong hình tròn không.
Definition _collide.h:32
constexpr rect rect_intersection(rect a, rect b)
Phần giao của hai hình chữ nhật.
Definition _collide.h:74
contact collide_circles(circle a, circle b)
Va chạm hai hình tròn.
Definition _collide.h:106
constexpr bool circle_rect_overlap(circle c, rect r)
Hình tròn và hình chữ nhật có chồng nhau không.
Definition _collide.h:66
constexpr vec2 closest_point(rect r, vec2 p)
Điểm trong r gần p nhất.
Definition _collide.h:58
constexpr bool point_in_rect(vec2 p, rect r)
Điểm có nằm trong hình chữ nhật không.
Definition _collide.h:23
constexpr contact collide_rects(rect a, rect b)
Va chạm hai hình chữ nhật, đẩy a ra theo trục chồng ít nhất.
Definition _collide.h:90
constexpr f32 length_sq(vec2 v)
Bình phương độ dài.
Definition _math.h:58
constexpr f32 clamp(f32 v, f32 lo, f32 hi)
Giới hạn v trong khoảng [lo, hi].
Definition _math.h:165
constexpr f32 dot(vec2 a, vec2 b)
Tích vô hướng.
Definition _math.h:47
constexpr vec2 rect_center(rect r)
Tâm của hình chữ nhật.
Definition _math.h:222
float f32
Số thực 32 bit.
Definition _types.h:28
Hình tròn.
Definition _math.h:19
vec2 center
Tâm.
Definition _math.h:20
f32 radius
Bán kính.
Definition _math.h:21
Hình chữ nhật thẳng trục: pos là góc trên trái, size là rộng và cao.
Definition _math.h:13
vec2 pos
Góc trên trái.
Definition _math.h:14
vec2 size
Chiều rộng (x) và chiều cao (y).
Definition _math.h:15
Vector 2 chiều. Dùng cho vị trí, kích thước, độ dời.
Definition _types.h:39
f32 y
Thành phần dọc (trong không gian màn hình, y tăng khi đi xuống).
Definition _types.h:41
f32 x
Thành phần ngang.
Definition _types.h:40