]> git.lizzy.rs Git - nothing.git/blob - src/triangle.c
(#122) use wavy_rect for lava
[nothing.git] / src / triangle.c
1 #include <math.h>
2
3 #include "./pi.h"
4 #include "./triangle.h"
5
6 triangle_t triangle(point_t p1, point_t p2, point_t p3)
7 {
8     const triangle_t result = {
9         .p1 = p1,
10         .p2 = p2,
11         .p3 = p3
12     };
13
14     return result;
15 }
16
17 triangle_t equilateral_triangle(point_t position, float radius, float angle)
18 {
19     const float d = PI_2 / 3.0f;
20
21     const triangle_t result = {
22         .p1 = vec_sum(position, vec(cosf(0.0f + angle) * radius, sinf(0.0f + angle) * radius)),
23         .p2 = vec_sum(position, vec(cosf(d + angle) * radius, sinf(d + angle) * radius)),
24         .p3 = vec_sum(position, vec(cosf(2.0f * d + angle) * radius, sinf(2.0f * d + angle) * radius))
25     };
26
27     return result;
28 }
29
30 static void swap_points(point_t *p1, point_t *p2)
31 {
32     point_t t = *p1;
33     *p1 = *p2;
34     *p2 = t;
35 }
36
37 triangle_t triangle_sorted_by_y(triangle_t t)
38 {
39     if (t.p1.y > t.p2.y) { swap_points(&t.p1, &t.p2); }
40     if (t.p2.y > t.p3.y) { swap_points(&t.p2, &t.p3); }
41     if (t.p1.y > t.p2.y) { swap_points(&t.p1, &t.p2); }
42
43     return t;
44 }