Форум программистов, компьютерный форум, киберфорум
Наши страницы
OpenGL
Войти
Регистрация
Восстановить пароль
Показать сообщение отдельно
General_TaO
3 / 3 / 0
Регистрация: 01.07.2017
Сообщений: 141
0

Нахождение координат пересечения луча с вертикальной плоскостью

03.01.2018, 21:18. Просмотров 900. Ответов 7
Метки (Все метки)

Здравствуйте, уважаемые форумчане!

Работаю над выбором объекта в сцене с помощью центра экрана. Использую FPS-камеру. Камера имеет координата и углы наклона в градусах относительно осей мировых координат. У меня есть квадрат, расположенной вертикально и параллельно оси Z и имеет расстояние n до камеры. Используя углы и n, я нахожу x и y координаты точки пересечения луча "взгляда" камеры с плоскостью (см. чертеж на картинке ниже).

Найти то я нашёл эти координаты (см. решение на картинке), только вот получаю я странные вещи. Координаты точки полученной точки сдвигается "интенсивнее" центра экрана. Привёл пример ниже.

В примере у меня есть белый квадрат, которая имела координаты вычисленной точки пересечения. Есть также зеленоватый квадрат, который расположен в центре СК, в той же плоскости, что и белый квадрат.

В коде эти вычисления выглядят так:


C++ (Qt)
1
2
3
4
5
6
7
8
9
float n =camera.Position.x;
    float w = pow(sin(glm::radians(camera.Angles.y))/cos(glm::radians(camera.Angles.y)),2)*pow(sin(glm::radians(camera.Angles.x))/cos(glm::radians(camera.Angles.x)),2);
    float tg_a = sin(glm::radians(camera.Angles.x))/cos(glm::radians(camera.Angles.x));
    float y = sqrt(fabs((-pow(n,2)*w - pow(n*tg_a, 2))/(w-1)));
    float x = sqrt(fabs(pow(y/(sin(glm::radians(camera.Angles.x))/cos(glm::radians(camera.Angles.x))),2) - pow(n,2)));
        if (sin(glm::radians(camera.Angles.x)) < 0) y=-y;
        if (sin(glm::radians(camera.Angles.y)) < 0) x=-x;
       y = y+camera.Position.y;
       x = x+camera.Position.x;
Если есть какие-то замечания, советы или вопросы - пишите. Буду благодарен за любую предоставленную помощь.

Вернуться к обсуждению:
Нахождение координат пересечения луча с вертикальной плоскостью
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2018, 21:18
Готовые ответы и решения:

Нахождение координат точек пересечения прямой и окружности
Даны прямая и окружность, заданные уравнениями у=kх+b и {(x-a)}^{2}+{(y-b)}^{2}...

Кто знает секторную антену с вертикальной плоскостью больше чем 30 градусов
Кто знает секторную антену с вертикальной плоскостью больше чем 30...

Проверка пересечения луча с анимационной моделью
Если с не анимационными моделями проверять пересечение луча с треугольниками...

Найти элементы пересечения луча в матрице
Всем доброго дня! Помогите пожалуйста найти элементы матрицы которые...

Найти точку пересечения луча и плоскости
Здравствуйте, помогите пожалуйста решить задачу. Предположим, что нам дан...

7
Другие темы раздела
OpenGL Возможен ли выход шейдера не в текстуру? http://www.cyberforum.ru/opengl/thread2168227.html
На пример в vao - не трансформфидбек
OpenGL Непараллельные плоскости отсечки Здравствуйте Быстро ответил на вроде бы простой вопрос возможно ли сделать чтобы в пирамиде видимости ближняя и дальняя плоскости были не параллельны?Можно изменив третью строку. Но никакого... http://www.cyberforum.ru/opengl/thread2168218.html
OpenGL Что есть такое контекст?
В общем задумался я над парой вопросов. 1) что вообще такое контекст в фундаментальном смысле? ( то что это какое - то окружение в котором работает конечный автомат ясно-понятно, только не понятно...
GlGenTextures не работает OpenGL
Подключал openGL через NuGet NupenGL. Все функции, которые до этого использовал работали, а эта не хочет.
OpenGL Получить цвет пикселя конкретной текстуры http://www.cyberforum.ru/opengl/thread2167197.html
Есть нектороый fbo у которого есть несколько текстур. Как получить цвет пикселя конкретной текстуры?
OpenGL Как повернуть фигуру на заданный угол? Для повороту фигуры я использую glRotatef(Z, 0,0,1);, но к большому стыду признаюсь, что понятия не имею в каких единицах измеряется Z (аналогично X и Y). Возникла задача, где надо изображение... подробнее
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru