-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathobject.c
More file actions
48 lines (41 loc) · 1.58 KB
/
object.c
File metadata and controls
48 lines (41 loc) · 1.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//
// Created by ryousuke kaga on 2023/10/26.
//
#include "object.h"
void object_init(object_t* object) {
object->type_name = EMPTY_OBJECT;
matrix_id(&object->origin_transform);
matrix_id(&object->direction_transform);
material_init(&object->material);
object->data = NULL;
object->parent = NULL;
}
void object_translate(object_t* object, tuple_t translation) {
matrix_t t;
translation_matrix(translation.x, translation.y, translation.z, &t);
add_transform(t, object->origin_transform, &object->origin_transform);
}
void object_scale(object_t* object, tuple_t scale) {
matrix_t t;
scaling_matrix(scale.x, scale.y, scale.z, &t);
add_transform(t, object->origin_transform, &object->origin_transform);
add_transform(t, object->direction_transform, &object->direction_transform);
}
void object_rotate_x(object_t* object, double rad) {
matrix_t t;
rotation_x_matrix(rad, &t);
add_transform(t, object->origin_transform, &object->origin_transform);
add_transform(t, object->direction_transform, &object->direction_transform);
}
void object_rotate_y(object_t* object, double rad) {
matrix_t t;
rotation_y_matrix(rad, &t);
add_transform(t, object->origin_transform, &object->origin_transform);
add_transform(t, object->direction_transform, &object->direction_transform);
}
void object_rotate_z(object_t* object, double rad) {
matrix_t t;
rotation_z_matrix(rad, &t);
add_transform(t, object->origin_transform, &object->origin_transform);
add_transform(t, object->direction_transform, &object->direction_transform);
}