VDV Опубликовано 4 мая, 2013 Поделиться Опубликовано 4 мая, 2013 Грубо говоря пишу "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;} Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения