Browse Source

Add random tree generation

richal-scene-stuff
rv3392 4 years ago
parent
commit
47290f5bf5
  1. 19
      main.c
  2. 13
      vect.c
  3. 1
      vect.h

19
main.c

@ -150,13 +150,20 @@ void setup_camera_scene() @@ -150,13 +150,20 @@ void setup_camera_scene()
// struct object white_sphere = new_box(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* tree = new_tree(new_vec3(0, 0, 5), 0, 1);
struct object* scene_objects = malloc(2 * sizeof(struct object));
scene_objects[0] = tree[0];
scene_objects[1] = tree[1];
const double lower_pos_bound = -5;
const double upper_pos_bound = -5;
const int num_trees = 4;
struct object* scene_objects = malloc(2 * num_trees * sizeof(struct object));
for (int i = 0; i < 2 * num_trees; i+=2) {
struct vec* random_pos = new_random_vec(3, lower_pos_bound, upper_pos_bound);
random_pos->elements[1] = 0;
struct object* tree = new_tree(random_pos, 0, 1);
scene_objects[i] = tree[0];
scene_objects[i + 1] = tree[1];
}
scene_object = new_scene(2, scene_objects);
scene_object = new_scene(2 * num_trees, scene_objects);
scene_object->sol.pos.dimension = 3;
scene_object->sol.pos.elements = camera->pos->elements;
}

13
vect.c

@ -19,6 +19,18 @@ new_vec(int num_dimensions) @@ -19,6 +19,18 @@ new_vec(int num_dimensions)
return new_vector;
}
struct vec*
new_random_vec(int num_dimensions, double min, double max)
{
struct vec* new_vector = new_vec(num_dimensions);
for (int i = 0; i < num_dimensions; i++) {
double rand_val = (double) rand() / RAND_MAX;
new_vector->elements[i] = min + rand_val * (max - min);
}
return new_vector;
}
struct vec* do_on_vec_ip(struct vec * v, double (*func)(double)) {
for (int i = 0; i < v->dimension; i++) {
@ -545,4 +557,3 @@ perpendicular_vec(int num_vectors, struct vec** vectors) @@ -545,4 +557,3 @@ perpendicular_vec(int num_vectors, struct vec** vectors)
return perpendicular;
}

1
vect.h

@ -26,6 +26,7 @@ struct mat2 { @@ -26,6 +26,7 @@ struct mat2 {
};
struct vec* new_vec(int num_dimensions);
struct vec* new_random_vec(int num_dimensions, double min, double max);
struct vec* new_vec_of(int num_dimensions, double value);
void free_vec(struct vec*);

Loading…
Cancel
Save