Interseção Analítica de Raios (Esfera & Plano) (Raytracer3D.cs)
O arquivo Raytracer3D.cs calcula analiticamente as colisões de raios contra superfícies geométricas.
1. Interseção Raio-Esfera (Equação Quadrática)
A esfera possui centro e raio . Ao substituir o raio , obtemos a equação de 2º grau:
O Discriminante ():
graph TD Delta["Avaliacao do Discriminante Delta"] Delta -->|Delta menor que 0| Errou["O raio passa no vazio - Sem contato"] Delta -->|Delta igual a 0| Tangente["O raio raspa a borda - 1 ponto"] Delta -->|Delta maior que 0| Atravessou["O raio atravessa a esfera - 2 pontos"]// Intersecao Raio-Esfera em C#:public override bool Intersect(Ray3D ray, out double t, out Vec3 normal){ t = 0; normal = Vec3.Zero; Vec3 oc = ray.Origin - Center; double b = Vec3.Dot(oc, ray.Direction); double c = Vec3.Dot(oc, oc) - Radius * Radius; double discriminant = b * b - c;
if (discriminant < 0) return false;
double sqrtDisc = Math.Sqrt(discriminant); double t0 = -b - sqrtDisc; double t1 = -b + sqrtDisc;
if (t0 > 1e-4) t = t0; else if (t1 > 1e-4) t = t1; else return false;
Vec3 hitPoint = ray.Origin + ray.Direction * t; normal = (hitPoint - Center).Normalized; return true;}2. Interseção Raio-Plano (Chão Xadrez)
O ponto de impacto em um plano horizontal :
👉 Próximo Passo: Aprenda sobre Reflexões Especulares & Refração de Snell.