Основы САПР (CAD,CAM,CAE) - (Кунву Ли)(2004) (951262), страница 15
Текст из файла (страница 15)
(3.14) Вычитая формулы (3.13) из (3.14), можно заключить, что н„л„и н, — компоненты хь уг и гг единичного вектора, направленного вдоль оси х» системы координат х,у» ге Следовательно, козффициенты л„, л„и и, легко вычислить с учетом взаимной ориентации систем координат. Аналогичным обРазом, о„о„и о, пРедставлЯют собой компоненты хг, Уз и гг единичного вектора оси ун а компоненты а„а и а, — вектора оси гн Следующий пример демонстрирует предлагаемую теорию в действии. Пример 3.3 По заданному положению точки зрения (-10, О, 1), точки наблюдения (О, О, 1) и вектора вертикали (О, О, 1) строится наблюдательская система координат (см. представленный ниже рисунок).
Обратите внимание, что все координаты и компоненты векторов даны в мировой системе координат, Зная относительное положение системы координат просмотра и мировой системы координат, рассчитать: Решение Первые три числа первого столбца Т, „(то есть п„, н„и п,) равны (О 0 — 1), посколь- ' ', ку они представляют собой компоненты х„у» и г, оси х» Аналогично, о„о„и о„которые предстанляют собой компоненты х,„у, и г„оси у„равны ( — 1 0 0), а а,„а„и 'а, ипаты х и начала координат системы,. равны (О 1 0). ЄЄи Р, зто коорд ° у хыу„,г„„поэтому онп равны О.
— 1 и 0 соответственно. В итоге получаем матрицу Т Т„, = Координаты точки (5, О, 1) в наблюдательской системе мы получим, примений -: к атому вектору координат только что вычисленную матрицу отображения Т 0 1 1 Итак, координаты точки (5, О, 1) в наблюдательской системе имеют значения (О, . О, -5), о чем можно доггдаться, посмотрев на приведенный рисунок. Пример 3.4 Точки зрения и наблюдения имеют координаты (5, 5, 5) и (О, О, 0) соответственно, а вектор вертикали выбирается равным (О, О. 1). Проекция изометрическая.. " Необходимо вычислить матрицу преобразования отображения Т „и наблюдательские координаты точки с мировыми координатами (О, О, 5). гм 0 — 1 0 0 0 0 1 -1 -1 О 0 0 0 0 0 1 0 — 1 0 0 0 0 1 — 1 -1 0 0 0 0 0 0 1 0 О -5 1 1.
1. 2 3 3 3 1. 1. 2 р (цр '(с~ )$сч! 1. 1 . 2(,Г6 Гб „Гб 3 3 3 Последний единичный вектор 1„вычисляется через векторное произведение: 1 . 1 1„= )„х 1с„= — с+ — 1. — сГ2 ~Г2 Теперь вычислим л, — компоненту х,, оси х„, — как произведение: 1 сч 2 Аналогичным образам, компонента л„равна 1 11= —. ГО' а компонента л, равна 1 1с„= —. 1 ,Гз Таким же путем получим второй и третий столбцы матрицы Т„, „. Компоненты Р„, Р„и Р, можно не вычислять, потому что в этом примере начала координат наблюдательской и мировой систем совпадают. Следовательно, матрица преобразования выглядит так: 1 1 ~Г2 ъГ2 1 1 ~Г6 сГ6 1 1 ,Гз Гз 0 0 0 0 2 — 0 сГ6 — О 1 ,Гз 0 1 Решение ' Наблюдательская система коорлинат может быть изображена так, как показано на рисунке выше.
Заштрихованный треугольник на этом рисунке параллелен плоскости экрана. В этой плоскости лежат оси х„и у,„ Чтобы вычислить элементы Т„, „нам нужно получить компоненты х„, у,, и г,, осей у„и г„„Для этого обозначим единичные векторы асей х„у,, и з„буквами 1,, )„и й„ соответственно. Единичные векторы осей х„у„. и х„, будут называться просто ь 1 и (с.
Единичный вектор 1с„направлен из точки наблюдения в точку зрения, поэтому 1. 1. 1 1с „= — с + — 1+ — 1с. ,Гз,Гз Гз ' Как отмечалось в разделе 3.2, единичный вектор )„должен быть коллинеарен проекции вектора вертикали на экран. Другими словами, его направление будет совпадать с направлением вектора, полученного вычитанием из вектора вертикали составляющей, перпендикулярной экрану. Обозначив вектор вертикали ц„, запишем выражение для с„. З.У.4.
Другие матрицы преобразования Помимо матриц преобразования, рассмотренных в предыдущих разделах, часто используются матрицы масштабирования и зеркального отображения. Для масштабирования объекта с коэффициентом з„по оси х, зр по оси у, з, по оси х применяется следуюсцая матрица преобразования: Х' уФ Х' 1 з„О 0 0 о Бч 0 О 0 0 з, 0 0 0 0 1 Х у 2 1 Для двумерных объектов матрица масштабирования редуцируется до разме- .: ра Зхз, как это было с матрицами трансляции и поворота.
Эффекта масштабира.. вания можно достичь, изменив размеры видового экрана или окна, не меняя зна-.' чений координат. Матрица преобразования (3.15) используется при масппабировании объекта относительно начала координат. Часто бывает необходимо масштабировать объехт '- относительно одной из его точек Р с координатами (Хр, У„, Ур). В этом случае ", . сначала к точке Р применяется преобразование трансляции Тиисз( — Хр, -У,„— Лр); ": которое перемещает эту точку в начало координат, затем применяется матрица масштабирования из (3.15), после чего объект возвращается в исходное полаже-: ние действием Тгати(Хр, Ур, Хр). Отражение относительно зеркальной плоскости ху может быть достигнуто прн помощи приведенной ниже матрицы преобразования.
Преобразование заключа-" ': ется в изменении знака координаты г. Х' уФ Х у У' 1 О 0 0 0 1 0 0 0 0 — 1 0 (3.16) 0 0 0 1 Матрицы преобразования для других отражений (относительно плоскостеи и уз) выводятся аналогичным образом Координаты точки (О, О, 5) в наблюдательской системе имеют значение' (Х„У„Х Ц'=Т.,„(О О 5 Ц'= Π— — 1, т Г 5сГ6 5~ГО Экранные координаты точки в изометрической проекции получаются из наблю.-':.:-- дательских координат непосредственно: 5 Гб Изометрическая проекция относится к параллельным, поэтому все точки на' '.': оси г„, проецирусатся на ось у экранных координат Фактически задание вектора ' .; вертикали, равного (О, О, 1), означает, что после проецирования ось з представ- ".: ляется на экране в виде вертикальной прямой.
3.8. УДйЛЕййЕ:.йЕЕйДйИЫ2~ Лйййй' й ПОй~~й2(йоСУЕЙ Проекция на экран станет более наглядной, если будет содержать только видимые линии и поверхности. Удоление иееидинь>х линий (1>Ы>(еп-1>пе гетооо1) заключается э блокировании отображения отрезков, скрытых от наблюдателя, а удаление иенидияы г поеерхнос>ней (Иийеп-ли~~осе >етооо1) есть то же самое по атношенп>о к поверхностям. Удаление невидимых линий иллюстрируют рис. 3.20 и рис, 3.21. Очевидно, чта эта процедура значительно облегчает восприятие обьекта. Рис.
3.20. Иэображение до удаления нннидимын линий Рис. 3.21. Изобрнжннин после удаления невидимых линий Опубликовано множество программных алгоритмов удаления ненидимых линий и поверхностей. Их авторы пытаются повысить вычислительную эффективность и расширить диапазон объектов для применения своих алгоритмов. Однако лучше всего удаление реализуется посредствам графического устройства, которое называется г-буфером', поэтому в настоящее время исследования на эту тему практически не ведутся. В настоящем разделе мы рассмотрим несколько типичных алгорнтмов удаления скрытых линий и поверхностей программным путем, а также изучим метод использования для тай же цели г-буфера. 'Еб Ф м инзы уфера нзынается область памяти, аналогичная буферу кадра н том смысле, что н ней хранятся лащ> Р ся данные о6ю всех ш>кселах.
Однако н г-буфере хранятся не цвета пнкселон, а г.координаты объект атон, к проекциям которых эти пнкселы относятся. Координата г нэ. мерянтся.п.набл>платен ля до объект. '. ~Р~~ ' ' д еньскоц системе и потому является мерой расстояния от наблю атл е- 3.8.1. Алпуритээ удаления невидиэньях граней Алгоритм удаление нееидияынс граней (Ьос1>-1 осе гетооо1 о18опг1>т) основан на там, чта грань объекта может быть видимой только в том случае, если вектор внеш-, ней нормали к этой грани направлен в сторону наблюдателя.
В противном слу-.' чае грань будет невидима. Например, верхняя грань бруска, изображенноп> на рис, 3.22, считается видимой, если вектор внешней норл>алн Х имеет положи-' тельную составляющую в направлении вектора М, проведенного из точки на гра- ни к наблюдателю. Математически это записывается так: 01 если М ° Х > О, поверхность видима; 01 если М ° Х = О, поверхность проецируется в отрезок; О если М ° Х < О, поверхность невидима. Рис. 3.22. Векторы, апредепнющин видимость грани Этот алгоритм легко применить к объекту, ограниченному плоскими поверхноь. ' ',' стями, поскольку вектор нормали Х постоянен в пределах поверхности.
Однако к вогнутому' объекту алгоритм неприменим, поскольку грань, направленная,''." к наблюдателю, может быть закрыта другой гранью того же объекта (рис. 3.23),::"> Та же проблема возникает в случае нескольких выпуклых объектов, которые мо- .,'". гут закрывать грани друг друга. Следовательно, алгоритм удаления невидимых. "-'.' граней применим только к одному выпуклому объекту.
Более того, алгоритм це. применим к объектам, для которых вектор внешней нормали определяется неод- нозначног (см., например, рис. 3.24). Если поверхности объекта не явля>отся плоскими, значение Х будет меняться 'в пределах одной грани в зависимости от выбранной точки. Одновременна мажет меняться и знак произведения М - Х. Это означает, что у одной и той же грани будут как видимые, так и невидимые участки. Поэтому грань должна быть разде> лена на две части вдоль кривой, на которой выполняется равенство М ° Х = О..:,:,. Эта кривая называется силуэтной лииией (я(1>оиепе бпе).