Масштабирование 3D моделей, поиск источника - PullRequest
0 голосов
/ 13 июля 2011

Чтобы получить лучшее представление о том, как работают матричные преобразования, потому что мне довольно трудно увидеть, что на самом деле происходит, я решил написать несколько сценариев, которые будут использовать 3D-модель, а затем выполнять некоторые переводы, вращения и масштабирование,поскольку полезно посмотреть, что происходит на самом деле, когда я играю с разными значениями.

Я уже написал сценарии для анализа 3D-модели, поэтому теперь мне просто нужно написать функции преобразования.

Я использую модуль Euclid, который был одним из нескольких предложений по работе с матрицами (хотя этот вопрос на самом деле не относится к python, поэтому я пропустил этот тег)

Пока я смогуспешно перевести модель на основе значений x, y, z, которые я предоставляю.

Сейчас я работаю над функцией масштабирования, а также мне удалось масштабировать модель по любому коэффициенту, но у меняТрудно заставить его масштабироваться «на месте», так как модель не центрирована в начале координат.

Как я могу построитьd матрица преобразования, которая будет учитывать центр некоторой произвольной модели?

1 Ответ

2 голосов
/ 14 июля 2011

Вы можете масштабировать «вокруг» точки P следующим преобразованием:

translate(scale(translate(model, -P)), P)

т.е. для вершины X у вас есть

X' = P + s * (X-P) = s*X + (P-s*P)
...