Форум программистов, компьютерный форум CyberForum.ru

Объединение view и projection матриц - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Почему не работает cin>> в Sublime Text 3? http://www.cyberforum.ru/cpp/thread1809252.html
Доброго времени суток, подскажите пожалуйста, можно ли в редакторе кода Sublime Text 3 вводить данные во встроенную снизу панель при запуске программы? Выводить данные она выводит, а вот вводить не позволяет.
C++ Скопировать объект, на который ссылается указатель на абстрактный класс Доброго времени суток. У меня такое задание: написать программу символьного дифференцирования, т.е. пользователь пишет функцию f(x), а программа выводит ее производную как f'(x). Так вот есть базовый абстрактный класс, который дан в условии задачи class Expression { public: virtual Expression *diff()=0; //функция дифференцирования virtual void print()=0; //функция вывода... http://www.cyberforum.ru/cpp/thread1809084.html
C++ Немного философии ООП
На днях на работе возник холивар с коллегами, к правильному решению пришли только на следующий день, почитав Мейерса и Саттера (один из участников холивара уже знал о правильном решении, но сторонников неправильного было большинство). Рекомендаций от упомянутых гуру пока не говорю, предлагаю поразмышлять) Итак - есть проект, в проекте используется ООП, скатываться до С считается мовитоном и...
C++ OpenCV захват видео с веб-камеры
Начал изучать OpenCV. В просторах интернета нашел данный код: #include <cv.h> #include <highgui.h> #include <stdlib.h> #include <stdio.h> int main(int argc, char* argv) { // получаем любую подключённую камеру CvCapture* capture = cvCreateCameraCapture(CV_CAP_ANY); //cvCaptureFromCAM( 0 );
C++ Как компилятор обрабатывает член класса static constexpr const char* http://www.cyberforum.ru/cpp/thread1808427.html
Привет! Наткнулся на непонятный момент class Foo { public: static constexpr const char* PTR = "value"; }; без constexpr не компилируется. Вопрос - как компилятора без линкера разруливает это дело, ведь constexpr value ему нужен на этапе компиляции? Если он это пережевывает, почему тогда constexpr необходим?
C++ Получить график дат санитарных дней в указанном году задача: Городской рынок имеет санитарный день каждый понедельник месяца . Дано номер года и указано день недели , на который приходится 1 января. Получить график дат санитарных дней в указанном году. Помогите пожалуйста решить задачу подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1594 / 986 / 117
Регистрация: 27.09.2009
Сообщений: 1,902
Завершенные тесты: 1
23.09.2016, 19:33     Объединение view и projection матриц
Цитата Сообщение от Pro100Tom Посмотреть сообщение
Column-Major
Это row-major, то, что и требовалось, соответствует привычной форме записи линейных уравнений.

Цитата Сообщение от Pro100Tom Посмотреть сообщение
view матрица: абсолютно тоже самое, только инверсирована
Нет. Инверсии там быть не должно никакой. Задача model - перенести точки из собственной СК объекта в СК сцены, задача view-матрицы перенести точки из СК сцены в СК наблюдателя (где глаз в нулевой позиции, направление взгляда по оси Z и так далее). Как правило, view-матрица содержит 2 преобразования: перенос на координаты наблюдателя, взятые со знаком минус (очевидно, что после этого он окажется в начале координат, что и требовалось) и поворот, совмещающий направление взгляда с осью Z и направление вверх с осью Y.

Цитата Сообщение от Pro100Tom Посмотреть сообщение
все эти матрицы перемножаю
Порядок перемножения матриц не зависит от row-major или column-major, и судя по исходникам, тут он соблюдён.

Цитата Сообщение от Pro100Tom Посмотреть сообщение
Как я перемножаю вертекс на матрицу:
Если это не настоящий код, а просто иллюстрация порядка перемножения, то порядок правильный, соответствующий row-major order. Если настоящий код, то это ужас-ужас (нельзя же пересчитывать компоненту, опираясь на уже изменённые предыдущие компоненты).
После перемножения не забываем делить итоговый вектор на его компоненту w (нормализация).

Цитата Сообщение от Pro100Tom Посмотреть сообщение
чтобы получить transformation матрицу я перемножаю
Перемножать надо в той последовательности, в которой применяются эти преобразования. Если у нас есть объект в центре, то translation(10, 0, 0) * scale (2) отнесёт его на 20 единиц, а scale(2) * translation(10, 0, 0) на 10 единиц.

Добавлено через 6 минут
Забыл упомянуть: порядок умножения зависит от того, в какой СК выражено преобразование. Если мы выражаем преобразования, всё время оставаясь в исходной СК и наблюдая за изменяющимся от наших действий объектом, то перемножать надо в обратном порядке. Если же после каждого преобразования мы следуем в новую СК вслед за объектом (при этом он для нас остаётся неизменным и неподвижным), то перемножение идёт в прямом порядке.
 
Текущее время: 06:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru