Exemplo n.º 1
0
int sphere_intersect(struct ray r, struct sphere *spheres, int spheres_len, int *sphere_id) {
	int i;
	float t = 100000, distance = 0;
	for(i = 0; i < spheres_len; i++) {
		distance = sphere_collision(r, spheres[i]);
		if(distance > 0.0f) {
			if(distance < t) {
				t = distance;
				*sphere_id = i;
			}
		}
	}
	return t != 100000 ? t : 0;
}
Exemplo n.º 2
0
 glm::vec3* sphere_collider::is_colliding_with(collider* other)
 {
     switch (other->type)
     {
       case SPHERE:
         return sphere_collision((sphere_collider*) other);
         break;
       case AABB:
         return AABB_collision((aabb_collider*) other);
         break;
       default:
         break;
     }
     return NULL;
 }