Я пишу простой raytracer / raycaster в c #.У меня был опыт работы с Векторами, поэтому я написал класс под названием Vector3D, как вы можете видеть в приведенном ниже коде.Я также написал класс для обработки лучей.Сейчас я обеспокоен тем, чтобы лучи исходили от камеры и передавались ко всем пикселям на экране, а затем к объектам перед камерой на сцене.Я истек с записью текста в вывод (Debug.WriteLine), хотя трудно понять, действительно ли он работает.Будет ли уместным следующий код, или вы порекомендуете другой метод или сайт, чтобы ссылаться на меня / направлять меня?
for (int x = 0; x < sizeofoutput.Width; x++)
{
for (int y = 0; y < sizeofoutput.Height; y++)
{
Vector3D lookat = new Vector3D(sizeofoutput.Width / 2, sizeofoutput.Height / 2, 0);
Vector3D lookatrev = new Vector3D(lookat.X * -1, lookat.Y * -1, 0);
Vector3D tmp2 = lookatrev + new Vector3D(x, y, 0);
Vector3D campos = new Vector3D(0, 2, -6); // camera position.
Vector3D raydir = tmp2 - campos; // ray goes into a pixel.
Vector3D rayorg = campos; // ray starts at camera.
Ray ray = new Ray(rayorg); // create the ray from the data provided.
ray.Direction = raydir;
for (int c = 0; c < sceneobj.Length; c++)
{
// find object and render!
}
}
}