Но вращая раз за разом данную конструкцию мы все более проигрываем в точности
Это устраняется хранением оригинальных координат отдельно от текущего применённого преобразования. Если поворачивается некоторый подобъект, бывает так, что для него хранится своё собственное преобразование, отдельное от глобального (и вообще для каждого объекта; в двумерной векторной графике такой подход тоже нередок из-за плюсиков модульности).
Здесь же по соседству должны жить и ошибки освещения, когда при определенном расположении источников и интенсивности может проступить треугольная сущность "ровных" граней геометрических объектов.
Только при простейших алгоритмах освещения.
А как во всех этих 3дс_максах, SketchUp'ах и прочих 3д редакторах решены данные проблемы? Есть версии? Есть методики? Есть идеи?
Есть идея: посмотрите код опенсорсных из них (Blender?). Вряд ли тут есть те, кто знаком с их кодом заранее, так что это в любом случае кому-то придётся делать.
Кроме того, проблемы освещения — это рендеринг, и к редакторам не относятся. Редактор вообще не обязан рендерить нормально, и ситуация «редактирую, глядя на слабенькое представление, а потом рендерю часами нормальной программой» совершенно обыденна (кроме игр, которые тоже можно считать обыденной ситуацией, но тут уже зависит и от движка, и от аппаратных возможностей).
-- Чт июн 14, 2018 01:24:37 --вычисляйте
. Думаю, очевидно, что
здесь - начальное положение, а
и
- повороты
Тут, кстати, может поступить возражение «тогда мы получим когда-нибудь оператор, который не просто поворачивает, а ещё и растягивает и т. п.», так что сразу ответим и на него: если, например, использовать кватернионы, можно исправлять накапливающуюся ошибку их нормированием (конечно, часть её останется, но зато мы просто физически не сможем провести неортогональное преобразование, хотя и не совсем то); так как у них есть и другие полезные свойства, обычно оперируют как раз ими, переводя в матрицы лишь в некоторых случаях.
Плюс вообще было бы полезно сделать некоторые оценки накапливающихся ошибок с учётом того, сколько операций обычно делают люди, пока возятся с моделью, и насколько потом может вымахать ошибка от накопления преобразований в некоторой программе, которая крутит и перемещает куски модели.