Цифровое моделирование на C#. Дмитрий Павлов
Чтение книги онлайн.
Читать онлайн книгу Цифровое моделирование на C# - Дмитрий Павлов страница 7
Поворот вокруг оси Х:
Поворот вокруг оси Y:
Поворот вокруг оси Z:
α – угол поворота, заданный в радианах. Поворот осуществляется против часовой стрелки, если смотреть навстречу оси.
Мы рассмотрели матрицы поворота точки вокруг координатных осей. Также на практике может потребоваться повернуть точку вокруг произвольной оси. Пусть ось вращения задана единичным вектором v (x, y, z). Тогда матрица поворота вокруг этого вектора имеет вид:
Масштабирование
Матрица масштабирования (изменения размеров объекта с сохранением подобия) имеет вид:
Где с – это коэффициент масштабирования. Если коэффициент с> 1, то точка удаляется от начала координат, если 0 <с <1, то приближается. Если же с <0, то происходит зеркальное отражение точки относительно начала координат. С помощью масштабирования можно управлять размером модели, увеличивая или уменьшая его.
Параллельный перенос
Матрица, соответствующая параллельному переносу точки на вектор с координатами (a, b, c), имеет вид:
Для вращения и масштабирования можно было бы использовать матрицы порядка 3x3, но параллельный перенос уже не может быть описан как матричное преобразование в пространстве этой размерности – для этого требуются матрицы размерности на единицу больше. Использование матриц 4x4, прежде всего, дает нам возможность унифицировать подход к преобразованиям в пространстве – все трансформации модели всегда сводятся к умножению матрицы на вектор. Сами по себе матричные преобразования просты и во многих прикладных библиотеках хорошо оптимизированы. Чтобы иметь возможность умножать матрицу 4x4 на трехмерный вектор, к вектору добавляют формальную четвертую координату w, равную 1: (x, y, z) -> (x, y, z, 1).
Поскольку наши рассуждения привязаны к конкретному языку программирования, то отметим, что в среде NET уже реализован необходимый функционал для работы с объектами в трехмерном пространстве. В частности, пространство имен System.Numerics содержит матрицы и векторы различных размерностей, а также разнообразные методы для работы с ними. Листинг ниже демонстрирует поворот точки с координатами (1, 0, 2) на угол в 90 градусов. В результате мы получаем точку с координатами (1, -2, 0).
Перспективные преобразования
Перспективные преобразования обеспечивают отображение пространственных моделей на какой-либо поверхности в соответствии с теми, кажущимися сокращениями их размеров, изменениями очертаний и форм, которые наблюдаются в природе. Использование перспективных преобразований делает отображение моделей