Я не могу понять, как решить мое квадратное c уравнение, чтобы проверить пересечение между лучом и сферой. Сфера должна выглядеть так:
Конечная сфера
// r = radius = sphere.radius;
// m = center = sphere.center;
float t;
// ray intersection uses quadratic equation
float a, b, c, d;
// NOT SURE ABOUT THIS PART HERE !
a = rayVx * rayVx + rayVy * rayVy + rayVz * rayVz;
b = 2.0f * (rayEx * rayVx + rayEy * rayVy + rayEz * rayVz - rayVx * sphere.center[0] - rayVy * sphere.center[1] - rayVz * sphere.center[2]);
c = rayEx * rayEx - 2 * rayEx * sphere.center[0] + sphere.center[0] * sphere.center[0] + rayEy * rayEy - 2 * rayEy * sphere.center[1] + sphere.center[1] * sphere.center[1] + rayEz * rayEz - 2 * rayEz * sphere.center[2] + sphere.center[2] * sphere.center[2] - sphere.radius * sphere.radius;
// positive discriminant determines intersection
//d = -42;
d = (float) Math.pow(b, 2) - (4 * a * c);
// no intersection point? => next object
if (d <= 0)
continue;
// from here: intersection takes place!
}
}
// no intersection point found => return with no result
if (minObjectsIndex == -1)
return null;
// intermediate version
Random rd = new Random();
return new Color(rd.nextFloat(), rd.nextFloat(), rd.nextFloat());
}
public static void main(String[] args) {
Raytracer00 rt = new Raytracer00();
rt.doRayTrace();
}
}
Я сейчас не в курсе. Я не очень понимаю, как решить квадратное c уравнение для a, b, c. Я загрузил весь проект на workupload , если кто-то хочет увидеть полный проект.
Я приехал из мира iOS и никогда не делал ничего в Java раньше (к сожалению). Буду признателен, если кто-нибудь поможет мне с этим! Заранее спасибо.