3 Sphere::Sphere(const Vec3f
& center
, float radius
, Shader
* shader
)
15 Sphere::Intersect(Ray
& ray
)
17 float A
= ray
.direction().dot(ray
.direction());
18 float C
= (ray
.origin()-m_center
).dot(ray
.origin()-m_center
) - m_radius
*m_radius
;
19 float B
= 2 * ray
.direction().dot(ray
.origin()-m_center
);
24 float root
= sqrtf(B
*B
-4*A
*C
);
25 float t
= (-B
-root
)/(2.0f
*A
);
31 t
= (-B
+root
)/(2.0f
*A
);
32 if( t
< 1e-6 || t
> ray
.t())
40 Sphere::GetNormal(Ray
& ray
)
This page took 0.04718 seconds and 5 git commands to generate.