Browse Source

Add functions for creating boxes, cones and phat lines

richal-scene-stuff
rv3392 4 years ago
parent
commit
66fd280bbd
  1. 15
      distfuncs.c
  2. 6
      distfuncs.h
  3. 13
      main.c
  4. 2
      scene.c

15
distfuncs.c

@ -227,8 +227,19 @@ new_object(struct vec* position, double rotation, double scale, @@ -227,8 +227,19 @@ new_object(struct vec* position, double rotation, double scale,
return new_obj;
}
struct object new_sphere(struct vec* position, double radius) {
return new_object(position, 0, 1, sdf_sphere, yeet_pho);
struct object new_sphere(struct vec* position, double rotation, double scale) {
return new_object(position, rotation, scale, sdf_sphere, yeet_pho);
}
struct object new_box(struct vec* position, double rotation, double scale) {
return new_object(position, rotation, scale, sdf_box, yeet_pho);
}
/* DON'T CALL THIS */
struct object new_cone(struct vec* position, double rotation, double scale) {
return new_object(position, rotation, scale, NULL, NULL);
}
struct object new_vert_line(struct vec* position, double rotation, double scale) {
return new_object(position, rotation, scale, sdf_phat_vert_line, yeet_pho);
}

6
distfuncs.h

@ -1,7 +1,11 @@ @@ -1,7 +1,11 @@
#ifndef DISTFU
#define DISTFU
struct object new_sphere(struct vec *, double);
struct object new_sphere(struct vec *, double, double);
/* Don't call this, it's just a placeholder rn */
struct object new_cone(stuct vec *, double, double);
struct object new_box(struct vec *, double, double);
struct object new_vert_line(struct vec *, double, double);
struct object new_object(struct vec *, double, double, double (*) (struct vec *),
struct colour (*)(struct ray *, struct object *));

13
main.c

@ -167,8 +167,7 @@ struct colour yeet_whit(struct ray *ray, struct object* obj) { @@ -167,8 +167,7 @@ struct colour yeet_whit(struct ray *ray, struct object* obj) {
void setup_camera_scene()
{
struct vec* white_sphere_pos = new_vec3(0.75, 0, 7);
struct object white_sphere = new_object(white_sphere_pos, 0, 1, sdf_box, yeet_whit);
//struct object white_sphere = new_object(new_vec3(0.75, 0, 8), 0, 1, sdf_box, yeet_whit);
camera = calloc(1, sizeof(struct camera));
camera->pos = new_vec(4);
@ -179,18 +178,16 @@ void setup_camera_scene() @@ -179,18 +178,16 @@ void setup_camera_scene()
camera->y->elements[1] = 1;
camera->z->elements[2] = 1;
struct vec* other_white_sphere_pos = new_vec3(0, 0, 7);
struct object other_white_sphere = new_sphere(other_white_sphere_pos, 10);
struct object white_sphere = new_sphere(new_vec3(-0.75, 0, 8), 0, 1);
struct object other_white_sphere = new_sphere(new_vec3(0.75, 0, 8), 0, 1);
struct object* scene_objects = malloc(2 * sizeof(struct object));
scene_objects[1] = white_sphere;
scene_objects[0] = other_white_sphere;
scene_object = new_scene(1, scene_objects);
scene_object.sol.pos.dimension = 4;
scene_object = new_scene(2, scene_objects);
scene_object.sol.pos.dimension = 3;
scene_object.sol.pos.elements = camera->pos->elements;
}
int main(int argc, char **argv) {

2
scene.c

@ -61,3 +61,5 @@ new_scene(int num_scene_objects, struct object* scene_objects) @@ -61,3 +61,5 @@ new_scene(int num_scene_objects, struct object* scene_objects)
return scene_rep;
}

Loading…
Cancel
Save