Перейти к содержанию

World to screen помогите разобраться


Рекомендуемые сообщения

Грубо говоря пишу "ESP box" , столкнулся с проблемой перевода 3д координат в экранные 2д , скопипастить у кого-то не понимая как это работает одно , а разобраться в этом самому , пускай и с помощью других умных людей другое. Нашел пример кода на одном сайте , естественно ничего не понял , просьба помочь разобраться, исправить мои комменты, если это вообще то что нужно , если есть способы по-проще просьба исправить меня :




bool WorldToScreen(Vector3D World, float *ScreenX, float *ScreenY)- сама функция с аргументами, не совсем понятно , что входит "Vector3D"
{

Vector3D Position = VectorSubtract(World, RefDef->Origin); - не совсем понятно что входит в "VectorSubtract"
Vector3D Transform; переменная трансформации 3д координат


Transform.x = DotProduct(Position, RefDef->viewAxis[1]); - трансформация координаты х , не совсем понятны аргументы
Transform.y = DotProduct(Position, RefDef->viewAxis[2]);- трансформация координаты y , не совсемпонятны аргументы
Transform.z = DotProduct(Position, RefDef->viewAxis[0]); - трансформация координаты z , не совсемпонятны аргументы

//дальше вообще не пойму

if (Transform.z < 0.1f)
return false;


Vector2D Center = Vector2D((float)RefDef->Width * 0.5f, (float)RefDef->Height * 0.5f); отцентровка 2д координат как я понял , прошу объяснить

подсчет экранных координат

*ScreenX = Center.x * (1 - (Transform.x / RefDef->fov.x / Transform.z));
*ScreenY = Center.y * (1 - (Transform.y / RefDef->fov.y / Transform.z));

return true;
}

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.