Текст
                    ГЛАВЛЕНИЕ
Предисловие......................................................... 5
„	f?	с
Введение............................................................ о
Глава 1. Введение в машинную графику................................ 9
1.1.	Основные этапы воспроизведения и обработки графических изображений средствами машинной графики .................................. 11
1.2.	Представление графических изображений ........................ 11
1.3.	Подготовка изображения к воспроизведению ............ . . .	12
1.4.	Воспроизведение заранее подготовленных изображений ........... 14
1.5.	Взаимодействие конструктора с изображением в режиме диалога 17
1.6.	Описание некоторых типов графических устройств................ 20
1.7.	Классификация графических	устройств ......................... 26
Список литературы.................................................. 30
Глава 2. Точки и линии............................................. 31
2.1.	Введение ..................................................... 31
2.2.	Представление точек........................................... 31
2.3.	Преобразования	и матрицы...................................... 31
2.4.	Преобразование	точек ......................................... 32
2.5.	Преобразование	прямых линий................................... 34
2.6.	Преобразование	середины отрезка .............................. 35
2.7.	Параллельные линии............................................ 36
2.8.	Пересекающиеся линии.......................................... 37
2.9.	Вращение..................................................     38
2.10.	Отображение.................................................. 39
2.11.	Изменение масштаба .......................................... 39
2.12.	Комбинированные операции .	   40
2.13.	Преобразование единичного квадрата ....	41
2.14.	Произвольная матрица вращения размера 2X2.................... 43
2.15.	Двумерное смещение и однородные координаты................... 43
2.16.	Точки в бесконечности ....................................... 48
2.17.	Двумерное вращение вокруг произвольной оси................... 50
Список литературы.................................................  52
Глава 3. Трехмерные преобразования и проекции...................... 53
3.1.	Введение ..................................................... 53
3.2.	Трехмерное изменение масштаба	............................ 54
3.3.	Трехмерный сдвиг ............................................. 56
3.4.	Трехмерные вращения........................................... 56
3.5.	Отображение в пространстве.................................... 59
3.6.	Пространственный перенос...................................... 60
3.7.	Трехмерное вращение вокруг произвольной оси .................. 61
3.8.	Элементы обобщенной матрицы	вращения ....................... 62

3.9. Аффинная и' перспективная геометрия .......................... 66 3.10. Аксонометрические проекции ................................... 67 3.11. Перспективные преобразования ................................. 73 3.12. Способы получения перспективных изображений ................ .80 3.13. Точки в бесконечности . . 85 3.14. Восстановление трехмерной информации.......................... 86 3.15. Стереографическая проекция.................................... 91 Список литературы................................................... 95 Глава 4. Плоские кривые............................................. 97 4.1. Введение ..................................................... 97 4.2. Непараметрические кривые ..................................... 98 4.3. Параметрические кривые ...................................... 100 4.4. Непараметрическое представление конических сечений .... 103 4.5. Непараметрические дуги окружности............................ 106 4.6. Параметрическое представление конических сечений ............ 110 4.7. Параметрическое представление окружности .................... 111 4.8. Параметрическое представление эллипса ....................... 111 4.9. Параметрическое представление параболы ...................... 114 4.10. Параметрическое представление гиперболы .................... 116 4.11. Процедура использования конических сечений.................. 118 4.12. Интерполяция дугой окружности .............................. 120 Список литературы................................................. 121 Глава 5. Пространственные кривые ................................. 122 5.1. Введение .................................................... 122 5.2. Представление пространственных кривых ....................... 122 5.3. Кубические сплайны .......................................... 125 5.4. Нормализованные параметры................................т . 130 5.5. Граничные условия............................................ 131 5.6. Параболическая интерполяция.................................. 141 5.7. Кривые Безье................................................. 147 5.8. Кривые на основе В-сплайнов.................................. 152 Список литературы................................................. 161 Глава 6. Описание и построение поверхности ....................... 163 6.1. Введение ................................................... 163 6.2. Сферические поверхности...................................... 163 6.3. Плоские поверхности ......................................... 168 6.4. Представление криволинейных поверхностей .................... 170 6.5. Билинейные поверхности ...................................... 171 6.6. Линейчатые поверхности ...................................... 173 6.7. Линейные поверхности Кунса .................................. 174 6.8. Участок бикубической поверхности . ............... 176 6.9. ^"-участок ................................................ 182 6.10. Поверхности Безье........................................... 182 6.11. В-сплайн поверхности........................................ 187 6.12. Обобщенные поверхности Кунса............................... 188 6.13. Заключение.................................................. 193 Список литературы................................................. 194 Приложение А. Программные средства машинной графики . . 195 А.1. Команды машинной графики..................................... 196 А.2. Операции машинной графики ................................... 198 А.З. Каноническое пространство .................................. 201 Приложение Б. Матричные операции.................................... 203 Б.1. Терминология................................................... 203 Б.2. Сложение и вычитание........................................... 204
Б.З. Умножение.................................................. 204 Б.4. Определитель квадратной матрицы............................... 205 Б.5. Обращение квадратной матрицы.................................. 206 Приложение В. Алгоритмы преобразования базы данных. . . 207 В.1. Алгоритм двумерного смещения................................. 207 В.2. Алгоритм двумерного изменения масштаба ...................... 207 В.З. Алгоритм двумерного отображения ............................. 208 В.4. Обобщенный алгоритм двумерного вращения..................... 209 В.5. Алгоритм трехмерного изменения масштаба ... 209 В.6. Алгоритм трехмерного вращения вокруг оси х....... 210 В.7. Алгоритм трехмерного вращения вокруг оси у................... 210 В.8. Алгоритм трехмерного вращения вокруг оси г................... 211 В.9. Алгоритм трехмерного отображения ............................ 211 В. 10. Алгоритм пространственного переноса ...................... 212 В. 11. Алгоритм трехмерного вращения вокруг любой произвольной оси в пространстве ............................................... 213 В. 12. Аксонометрический проекционный алгоритм .................... 214 В. 13. Диметрический проекционный алгоритм ........................ 214 В. 14. Изометрический проекционный алгоритм ....................... 215 В. 15. Алгоритм для перспективных преобразований .................. 215 В. 16. Алгоритм трехмерного восстановления координат .............. 216 В. 17. Алгоритм формирования стереоизображения .................... 218 В. 18. Алгоритм для непараметрической окружности .................. 219 В. 19. Алгоритм для параметрической окружности .................... 220 В.20. Алгоритм для параметрического эллипса ...................... 220 В.21. Алгоритм для параметрической параболы ...................... 221 В.22. Алгоритмы для параметрических гипербол ..................... 221 В.23. Алгоритм для окружности, проходящей через три точки .... 222 В.24. Алгоритм для генерации кубических сплайнов.................. 224 В.25. Алгоритм для параболической интерполяции.................... 227 В.26. Алгоритм кривой Безье....................................... 228 В.27. В-сплайн алгоритм.......................................... 229 В.28. Алгоритм для участка билинейной поверхности................. 230 В.29. Алгоритм для линейной поверхности Кунса..................... 231 В.30. Алгоритм для участка бикубической поверхности............... 231 В.31. Алгоритм получения поверхности Безье ....................... 233 Предметный указатель............................................... 234
ББК 32.97 Р60 УДК 681.3 Редактор д-р техн, наук Ю. И. Топчеев V Роджерс Д., Адамс Дж. Р60 Математические основы машинной графики: Пер. с англ./ Пер. Ю. П. Кулябичев, В. Г. Иваненко; ред. Ю. И. Топчеев. — М.: Машиностроение, 1980. —240 с., ил. В пер.: 1 р. 30 к. Книга посвящена рассмотрению с единых позиций математического аппарата, лежащего в основе машинной графики. В ней изложены способы представления в ЭВМ элементов графики, геометрических фигур и поверхностей различных классов, описаны математические методы преобразования координат и получения аксонометрических проекций, а также процедуры переработки и воспроизведения информации на графопостроителях с использованием ЭВМ. В приложениях даны алгоритмы машинной графики в виде подпрограмм на языке БЕЙСИК- Книга предназначена для инженерно-технических работников, использующих вычислительную технику для решения прикладных и специальных задач. _ 30502-057 „ „„ ББК 32.97 ₽ 038(01)-80 57"80' 2405000000 6Ф7.3 © Перевод на русский язык, «Машиностроение», 1980 г.
Машинная графика как самостоятельное научное направление возникла более десяти лет назад. Этот раздел науки вызывает значительный интерес у многочисленных специалистов различных отраслей науки и техники. Большинство специалистов, использующих машинную графику, уделяет особое внимание проблемам программирования, задачам конкретного проектирования, создания различных технических средств и т. п. Это было отмечено доктором А. Сазерлендом в его введении к книге Принса «Интерактивная графика для проектирования с помощью вычислительных машин», изданной в 1971 г. Все же я полагаю, что прикладным задачам конструирования уделяется недостаточное внимание. В настоящее время имеется мало полезных описаний по практическому применению машинной графики. Методы машинной графики и их использование представляют основу в развитии интерактивных систем. Существующие математические методы геометрических преобразований являются недостаточными для большинства практических приложений машинной графики. Поэтому в настоящее время ведутся значительные работы как над математическими основами машинной графики, так и программами для выполнения различных графических операций. В данной книге д-р Д'. Роджерс и д-р Дж. Адамс показали глубокое понимание практических приложений машинной графики. Книга написана простым и ясным языком, и ее разделы будут понятны широкому кругу читателей. Изложение практических материалов в виде конкретных алгоритмов позволяет рекомендовать ее как справочник. Эту книгу можно использовать и в качестве учебного пособия при изучении вычислительной техники. Мне хотелось бы выразить большую признательность авторам за написание хорошей и полезной книги «Математические основы машинной графики». С. «Чаз» Чазен Компания Локхид, штат Джорджия
ВВЕДЕНИЕ В настоящее время быстро развивается новое научное направление, именуемое машинной графикой. Это направление сочетает старые способы общения методами графической символики и новые способы, основанные на применении вычислительной техники. Без преувеличения можно сказать, что это быстро развивающееся научное направление найдет применение во всех отраслях современной техники. Сейчас наметился новый этап в использовании машинной графики, когда она становится достоянием не только отдельных коллективов, создавших программное и аппаратное ее обеспечение, но и широкого круга пользователей самых различных специальностей. Это стало возможным благодаря появлению множества дешевых графических терминалов и использованию ЭВМ для обработки информации в режиме разделения времени. Кроме того, развитию данного направления способствует создание значительного числа мини- и микро-ЭВМ. В результате этого машинная графика стала надежным и легко доступным средством, с высокой экономической эффективностью. Целью данной книги является систематическое изложение математических методов, лежащих в основе машинной графики. Хотя в книге эти методы даны в новой интерпретации, сами по себе они существуют достаточно давно и могут быть уже известны читателю. Все теоретические материалы, содержащиеся в данной книге, можно найти и в многочисленной технической литературе. Однако в книге сделана попытка систематизировать материалы по машинной графике и применить единую систему обозначений. При подборе материала авторы основное внимание уделяли фундаментальным математическим методам, а не техническим деталям построения графических изображений. Поэтому читатель найдет более подробное изложение принципов вращения и преобразования изображений, способов построения изображений в перспективе, методов описания кривых и поверхностей, а не процедур выделения кадров или удаления некоторых линий и поверхностей. Для понимания большей части текста достаточно математической подготовки в объеме первого курса высшего технического учебного заведения.
В первой главе изложены современные принципы машинной графики, причем для описания операций над графическими элементами применена матричная форма записи в однородных координатах. В последующих главах рассмотрены существующие методы представления точек, прямых линий, кривых и поверхностей в ЭВМ. Кроме того, приведены программные средства для выполнения операций над входной информацией и вывода ее в графической форме. Наряду с общими принципами вращения, переноса и изменения масштабов геометрических фигур изложены математические методы построения изображений в аксонометрий и перспективе. Приведены способы описания кривых в явной и параметрической форме на плоскости и в пространстве. При этом применены конические сечения, методы интерполяции посредством дуг окружностей, кубические сплайны, параболическое сглаживание (сопряжение кривых), кривые Безье и В-сплайн кривые. Здесь также даны основные математические сведения по описанию поверхностей. В приложении приведены алгоритмы, реализуемые на ЭВМ для большинства основных операций интерактивной графики, представленные в виде программ на языке БЕЙСИК*. Однако в этих алгоритмах преднамеренно опущена та часть, которая относится к фактическому выводу графических результатов. К сожалению, не существует стандартных команд или подпрограмм для графического вывода. Хотя некоторые предварительные сведения по основным элементам машинной графики приведены в приложении А, тем не менее каждый пользователь будет вынужден применять свои программные средства в зависимости от типа вычислительной системы и графических устройств, которые будут находиться в' его распоряжении. Главные положения данной книги послужили основой для вводного курса лекций по машинной графике. Эти лекции были прочитаны студентам старших курсов, специализирующимся по техническим и естественным наукам. Книга может быть использована как в университетах, так и высших технических учебных заведениях. Ее следует рекомендовать в качестве дополнительного учебного пособия на курсах программистов и при изучении современной математики. Она будет полезна и профессиональным программистам. Приведенные в книге программы можно рекомендовать специалистам, занимающимся разработкой программного обеспечения машинной графики. Авторы хотели бы высказать глубокую признательность Морской академии США за поддержку и помощь в работе. Творческая атмосфера в академии и благожелательное отношение ее персонала и, в особенности, слушателей — все это способствовало нашей работе над книгой. Данную книгу не удалось бы на * Язык БЕЙСИК разработан в Дортмунском высшем техническом учебном заведении.
писать без помощи многих людей. Здесь нам хотелось бы выразить благодарность некоторым из них. Прежде всего Стиву Лунсу, просмотревшему всю рукопись и сделавшему много полезных замечаний; Ричу Райзенфельду, который прочел материал по кривым и поверхностям на основе применения В-сплайнов; профессору Льеру Безье, просмотревшему материал по кривым и поверхностям Безье; Айвену Сазерленду, который обсудил с нами методы трехкоординатного преобразования, изложенные в третьей главе. Особо признательны мы членам группы CAD при Кембриджском университете как покинувшим ее к настоящему времени, так и состоящим в ней поныне. В частности, большое влияние на методы машинной графики оказали работы Робина Форреста, Чарлза Лонга и Тони Натборна. Наконец, хотелось бы поблагодарить Луи Нэппа, создавшего оригинальные программы на ФОРТРАНе для В-сплайн кривых. Авторы также выражают признательность сотрудникам фирмы Evans and Sutherland Computer Corporation и в первую очередь Джиму Каллену, высказавшему много ценных идей по воспроизведению и подготовке графических изображений в интерактивном режиме работы. Хочется выразить глубокую благодарность Ли Биллону, который выполнил все иллюстрации к данной книге. Часть иллюстраций первой главы была представлена авторам фирмами по производству аппаратуры машинной графики. Нам хотелось бы выразить признательность следующим фирмам за представленные рисунки: Evans and Sutherland Computer Corporation (рис. 1.3, 1.17); Adage, Inc. (рис. 1.5, 1.7); Vector General, Inc. (рис. 1.8); Xynetics, Inc. (рис. 1.11); CALCOMP, California Computer Products, Inc. (рис. 1.12, 1.18); Gould, Inc. (рис. 1.15); Tektronix, Inc. (рис. 1.16). Дэвид Ф. Роджерс Дж. Алан Адамс
Глава 1 ----------- .- . ВВЕДЕНИЕ В МАШИННУЮ ГРАФИКУ Машинная графика — сравнительно новое направление, поэтому необходимо уточнить применяемую в настоящее время терминологию. Это связано с тем, что ряд терминов, используемых в машинной графике, употребляется неверно. Особенно часто путают такие термины, как автоматизированное проектирование (CAD), интерактивная графика (IG), машинная графика (CG) и автоматизация технологических процессов производства. Из перечисленных выше терминов «автоматизированное проектирование» является наиболее общим. Под ним понимают любое применение в ЭВМ для автоматизации проектирования как отдельных элементов, так и подсистем или систем. Процесс проектирования на ЭВМ в этом случае необязательно связан с необходимостью применения графических устройств. Результаты, полученные на этапе проектирования, могут быть использованы в процессе автоматизации технологических процессов производства. Автоматизация технологических процессов производства с помощью ЭВМ означает применение электронных вычислительных машин для управления процессом производства при изготовлении деталей на станках (хотя этот процесс не включает конструирование изделий на этапе проектирования). При составлении программы для изготовления деталей применяют специализированные языки- APT (Automatic Programmed Tools) и UNIAPT (United's APT). Управление станком может быть реализовано аппаратным или программным способом. В последнем случае применяют мини-ЭВМ. Процесс управления станком осуществляется или с помощью задающих устройств, которые считывают информацию с перфоленты и вырабатывают команды управления, или непосредственно с помощью малых электронных вычислительных машин. Под машинной графикой обычно понимают автоматизацию процессов подготовки, преобразования, хранения и воспроизведения графической информации с помощью ЭВМ. Это по сути Дела пассивная операция. Вычислительная машина подготовляет и хранит информацию, которую она может выдать пользователю в виде изображения (чертежа). Пользователь же машин ы
лишен возможности непосредственно воздействовать на изобра-жение. Машинную графику можно применять как для решения простейших задач, например для построения графиков несложных функций на- быстродействующем печатающем устройстве (БПУ) или телетайпе, используемом в качестве терминала в системах с разделением времени, так и для решения более сложных задач — моделирования процессов входа космического корабля в атмосферу и его посадки. Интерактивная графика — это также использование ЭВМ для подготовки и воспроизведения изображения. Однако под интерактивной графикой понимают такую организацию работы конструктора, при которой он имеет возможность оперативно вносить изменения в изображение непосредственно во время его воспроизведения. Иначе говоря, предполагается возможность работать с графиком (чертежом) в режиме диалога в реальном масштабе времени. Для того чтобы понять, насколько существенными являются ограничения, накладываемые необходимостью работать в реальном масштабе'Времени, рассмотрим следующую задачу. Допустим, требуется осуществить поворот сложного пространственного изображения, состоящего из 1000 линий, со скоростью 15° в секунду. Как мы увидим ниже, положение 1000 отрезков, составляющих изображение, наиболее удобно представить в виде матрицы однородных координат концов каждого отрезка. В этом случае размерность матрицы будет 1000x4. Наиболее удобным способом реализации поворота изображения является умножение указанной матрицы на матрицу преобразования размерности 4x4. Для перемножения матриц требуется выполнить 16 000 операций умножения, 12 000 операций сложения и 1000 операций деления. Если такое перемножение матриц реализовано программным путем, то весьма существенным фактором является время его выполнения. Чтобы убедиться в этом, приведем характеристики быстродействия типовой мини-ЭВМ с плавающей запятой. Операция умножения двух чисел на ней занимает 6 мкс, сложения — 4 мкс, деления — 8 мкс. Таким образом, время перемножения указанных выше матриц составит 0,15 с. В программируемых дисплеях для воспроизведения движущегося изображения требуется регенерация изображения с частотой не менее 30 Гц для того, чтобы устранить мерцания на экране. При этом очевидно, что изображение не может изменяться непрерывно. Даже если предположить, что при вращении объекта его изображение регенерируется с частотой 15 Гц, т. е. изменяется лишь на 1° в секунду, то все равно программная реализация непрерывного вращения изображения оказывается невозможной. В результате обеспечить интерактивный процесс машинной графики не удается.
Однако время перемножения матриц можно сократить за счет искусства программирования при воспроизведении изображения в реальном масштабе времени. Кроме того, время перемножения матриц можно сократить путем упрощения изображения, но этот подход не всегда приемлем для проектировщика. Наконец,'можно аппаратно реализовать операцию перемножения матриц на специализированных цифровых устройствах. Такой способ является наиболее перспективным, так как с его помощью можно обойти трудности, связанные с воспроизведением графического изображения. Пользуясь изложенной выше терминологией, далее рассмотрим основные способы воспроизведения графических изображений средствами машинной графики. Здесь также будут приведены описание и классификация некоторых типовых дисплейных устройств. В приложении Б приведены некоторые сведения из линейной алгебры, которые используются в математическом обеспечении машинной графики. 1.1. Основные этапы воспроизведения и обработки графических изображений средствами машинной графики Предметная область машинной графики исключительно сложна. Наряду с проблемами создания электронных и механических устройств машинной графики необходимо решать задачи подготовки и воспроизведения графического изображения, для получения которого необходимо знать «поле исходного задания изображения» и «древовидную структуру». ,Эти вопросы подробно рассмотрены в книге У. Ньюмена и Р. Спрулла [1.1]. Здесь же будут изложены только те вопросы, которые представляли определенный интерес для авторов книги. Процесс воспроизведения и обработки изображения средствами интерактивной графики можно разделить на следующие этапы: представление графических изображений; подготовка изображения к воспроизведению; взаимодействие конструктора с изображением в форме диалога в реальном времени. Здесь под графическим изображением понимается любая комбинация прямых, точек, текстов и т. д., которые воспроизводятся на графических устройствах. Графическое изображение может быть простым (отрезок прямой или кривая линия) или сложным (диаграмма со словесными пояснениями). Могут быть воспроизведены и еще более сложные изображения в виде чертежа самолета, корабля или автомобиля. 1.2. Представление графических изображений В основном изображения, представляемые с помощью средств машинной графики, можно рассматривать как комбинацию прямых, точек и символьного текста. Отрезок прямой может быть
задан координатами его начала (х1( у1г zj и конца (x2, у2, z2); точка определяется тремя координатами (хъ ylt zj, а текст — путем комбинации отрезков или точек. Представление символьного текста является несомненно самым сложным процессом, требующим во многих случаях воспроизведения кривых линий или формирования матриц с координатами точек. Однако, если пользователь не занимается решением задач, связанных с распознаванием образов, разработкой устройств воспроизведения графической информации и не применяет символы, отличные от обычного алфавита, то ему нет необходимости заниматься программированием символов алфавита, так как почти все графические устройства имеют аппаратно или программно реализованные генераторы символов. Кривые линии обычно воспроизводятся путем аппроксимации их короткими отрезками прямых. В некоторых же типах устройств используются аппаратно реализованные генераторы кривых. 1.3. Подготовка изображения к воспроизведению Любое графическое изображение состоит из точек, координаты которых заранее занесены в файл. Такой файл называют базой данных. Для воспроизведения сложных изображений нужны базы данных, доступ к которым реализуется весьма сложными программами. Такие базы данных могут образовывать кольцевые или древовидные структуры. Сама база данных содержит точки, подструктуры или неграфические данные. Разработка подобных баз данных и программ доступа к ним до настоящего времени является предметом исследований. Ее рассмотрение выходит за рамки данной главы. Однако во многих практических приложениях машинной графики используются более простые изображения, для которых пользователь может создать программы легкого доступа к базе данных. Точки — это элементарные блоки, из которых строятся графические базы данных. Построить изображение с помощью таких элементарных блоков можно тремя методами. Первый — заключается в указании координаты той\точки на экране дисплея или рабочем поле графопостроителя, в которую требуется переместить луч, световое перо, курсор или перо графопостроителя. Второй метод состоит в том, что задаются координаты конца проектируемого отрезка г. Третий — заключается в непосредственном указании координат точки на экране дисплея или рабочем поле графопостроителя, в которой требуется дать изображение. В основном применяют два способа задания положения точки. Первый способ заключается в том, что задаются абсолютные координаты точки, а при втором способе задаются прираще- 1 Начало отрезка в этом случае задается текущим положением пера, курсора. — Прим. ред.
ния координат проектируемой точки, построенной на предыдущем шаге. Для указания положения точки как в абсолютных, так и в относительных координатах (приращениях) должны быть заданы соответствующие числовые значения. При использовании ЭВМ с ограниченным числом разрядов, отводимых под представление числа х, возникает целый ряд трудностей. Обычно для представления числовых значений координат отводится полное число разрядов. Наибольшее целое число, которое можно представить с фиксированной запятой, — это 2" — 1, где п — число бит в машинном слове. У мини-ЭВМ, часто применяемых в машинной графике, длина слов составляет 16 бит. Поэтому максимальное число, которое может быть представлено на такой ЭВМ, составляет 32767. Во многих случаях это оказывается достаточным. Однако представление точек, координаты которых превышают число 32767, встречает серьезные трудности. На первый взгляд может показаться, что их несложно преодолеть, если положение точки с большими координатами задавать, используя приращения координат. Например, для изображения точки, координаты которой равны 60000, можно было бы использовать абсолютные координаты для обозначения положения курсора в точке (30000, 30000), а затем задать приращение по каждой координате, равное-(30000, 30000), для перемещения луча в заданную точку с координатами (60000, 60000). Однако такой подход не позволяет найти нужного решения, так как абсолютная координата точки, положение которой задается с помощью приращений, получается с ошибкой. При этом возникает переполнение разрядов, а следовательно, изменяется содержимое старшего (знакового) разряда, и у координаты точки изменяется знак. Вычисленное значение абсолютной величины координаты точки также не является достоверным. При воспроизведении изображения на электроннолучевой трубке происходит перескок луча на противоположную сторону экрана. Данную задачу можно решить, применяя однородные координаты, что, однако, приводит к усложнению процесса формирования изображения, снижению быстродействия и уменьшению разрешающей способности. Но преимущество, заключающееся в возможности представления больших целых чисел в ЭВМ с ограниченным числом разрядов, покрывает все перечисленные выше недостатки. Поэтому в данной книге в основном применяются однородные координаты. При переходе к однородным координатам происходит отображение «-мерного пространства в п 4- 1-мерное. Таким образом, если точка в трехмерном пространстве задается тремя обычными координатами (х, у, г), то в однородных координатах она будет 1- Машийиого слова.
представлена четырьмя значениями (hx,у,г, h), где — не-которое произвольное число. Если каждая из координат, представляемых в ЭВМ с 16-раз-рядными словами, не превышает 32767, то при переходе к'однородным координатам значение h устанавливается равным единице и преобразования координат х, у, г не происходит. (Они непосредственно становятся тремя первыми однородными координатами точки). Однако, если какая-либо из евклидовых координат окажется больше, чем 32767 (например, х — 60000), то становится очевидным, каким мощным средством являются однородные координаты. Положив в этом случае h = 1/2, однородные координаты определим как (30000, 1/2г/, l/2z, 1/2). Причем все их можно представить в ЭВМ, в которой под представление целого числа отводится одно машинное слово длиной 16 бит. Однако при этом несколько ухудшается разрешающая способность, так как точки с близкими координатами х — 59999 и х = = 60000 при переходе к однородным координатам будут иметь одинаковые координаты. Снижение разрешающей способности будет происходить каждый раз, когда хотя бы одна координата будет выходить за пределы максимального целого числа, представляемого в ЭВМ. 1.4. Воспроизведение заранее подготовленных изображений База данных, используемая для воспроизведения изображения, будет отличаться от дисплейного файла по виду хранящейся в ней информации. База данных содержит полное описание изображения, а дисплейный файл только ту ее часть, которая будет воспроизведена. Дисплейный файл создается путем преобразования базы данных. Перед воспроизведением изображения, содержащегося в базе данных, можно изменить его размеры, повернуть, сместить, удалить часть его или изменить точку наблюдения для получения необходимой перспективы. Многие из указанных операций могут быть выполнены путем использования простых линейных преобразований, которые включают перемножение матриц. К ним относятся операции вращения, смещения, изменения масштабов, а также построения перспективных проекций. Как будет показано далее, для выполнения этих преобразований очень удобны однородные координаты. В гл. 2 и 3 доказывается, что любое из перечисленных выше преобразований точек изображения, заданных с помощью матрицы однородных координат, может быть представлено соответствующей матрицей преобразования, имеющей размерность 4X4. Если требуется выполнить некоторую последовательность преобразований, то ее можно реализовать путем применения к матрице точек каждого преобразования в отдельности. Однако при большом количестве точек изображения, к которым следует
применять данные преобразования, такой способ является не-зффективным и требует значительных затрат времени. Другой способ состоит в последовательном перемножении матриц преобразования с последующим умножением результирующей матрицы 4x4 на матрицу координат точек изображения. Такая операция над матрицами называется конкатенцией. Применение этого метода приводит к значительной экономии времени при выполнении сложных матричных операций над множеством! координат точек. Несмотря на то, что во многих областях применения машинной графики требуется полное воспроизведение изображения, которое хранится в базе данных, часто возникают задачи воспроизведения лишь части такого изображения. Процесс воспроизведения этой части изображения называется кадрированием. Указанная процедура весьма сложная, особенно если изображение, хранившееся в базе данных, было предварительно преобразовано описанными выше способами. Реализация кадрирования программным путем обычно требует значительного времени, что не позволяет получить интерактивный режим работы. Эта проблема решается с помощью сложных технических средств машинной графики, реализующих процедуру кадрирования аппаратно. В общем случае существуют два способа кадрирования изображения: отсечение и выделение. Процесс отсечения заключается в следующем. На этапе формирования изображения определяют отрезки прямых, полностью или частично не принадлежащие кадру. Затем часть изображения, лежащая вне кадра, отсекается и удаляется из изображения, т. е. не передается на воспроизводящее устройство. При выделении изображения размер поля его задания намного превышает поле кадра. Несмотря на то, что в кадре сформирована только интересующая нас часть изображения, на экране электронно-лучевой трубки воспроизводится все изображение полностью. Как правило, предпочтение отдается способу отсечения, который реализуется аппаратно. При применении способа отсечения можно более полно использовать поле воспроизведения изображения, чем при выделении кадра, так как в последнем случае часть изображения, не вошедшая в кадр, также воспроизводится. Это требует дополнительного в ремени на генерацию всего изображения. При формировании изображения на плоскости положение кадра определяется левой, правой, верхней и нижней сторонами прямоугольника. Процесс отсечения реализуется наиболее просто, когда стороны прямоугольника оказываются параллельными осям координат. В противном случае необходимо выполнить поворот кадра. Однако вместо того, чтобы вращать кадр, можно повернуть само изображение в противоположном направлении.
Со П Рис. 1.1. Выделение кадра на плоскости: I — линия полностью лежит в кадре: изображается вся линия; // — линия частично находится в кадре: часть а—b изображается, часть 6—с не изображается; /// — линия находится полностью вне кадра и не изображается; IV — линия частично расположена в кадре: часть Ь~с изображается, части а—Ь, с—d не изображаются Рис. 1.2. Усеченная пирамида поля зрения На рис. 1.1 показано, как выполняется операция отсечения на плоскости. Отрезки прямых сохраняются, уничтожаются полностью или частично в зависимости от того, как они расположены относительно кадра. Для пространственного случая кадр представляет собой усеченную пирамиду, как это показано на рис. 1.2. На этом же рисунке границы кадра обозначены следующим образом. Ближней является грань пирамиды N, дальней— грань F, а верхняя, нижняя и боковые грани обозначены соответственно ST, SB, SL и SR. Последней операцией при воспроизведении изображения является преобразование координат, в которых оно записано в базе данных (так называемых координат пользователя) в систему координат, используемую для представления изображения на графических устройствах. Например, необходимо выполнить преобразование координат изображения, подвергнутого операции выделения кадра, в координаты графического устройства, так чтобы это изображение было воспроизведено в определенной области экрана дисплея (или графопостроителя). Эту область экрана обычно называют полем индикации. Для того чтобы знать положение поля индикации в плоскости, достаточно определить его левую, правую, верхнюю и нижнюю стороны. В пространстве поле индикации определяется с помощью передней и задней граней объемного кадра. В более общем случае преобразование изображения при переходе к координатам графического устройства сводится к линейному отображению одной усеченной шестигранной пирамиды (кадра) в шестигранник поля индикации. При формировании изображений возникает еще задача воспроизведения алфавитно-цифровой и символьной информации. Для ее решения применяют два способа генерации символов: программный и аппаратный. Если символьный текст генерируется программным способом и формируется из прямолинейных отрезков, то над ним можно выполнять все те же операции, что
и над элементами графического изображения. Это существенно для случая, когда часть текста подвергается отсечению, а затем преобразованию совместно с другими элементами изображения. Следует заметить, что многие графические устройства имеют генераторы символов, реализованные аппаратным способом. При этом изображение символов генерируется непосредственно перед его воспроизведением. До момента воспроизведения они могут быть представлены как соответствующая последовательность кодов. Процесс генерирования символов, реализованный аппаратно, менее гибок, так как не позволяет выполнять операцию отсечения части символов и допускает лишь ограниченные преобразования, например поворот изображения с символами и изменение его размеров. Однако применение аппаратного способа генерации символов позволяет получать значительное быстродействие при их изображении. При генерации символов аппаратными средствами программа, управляющая графическими устройствами, должна вначале определить размеры, ориентацию и первую позицию, с которой будет воспроизводиться символьный текст. Затем в дисплейный файл записываются коды, содержащие эти характеристики. В процессе обработки генератор символов генерирует строку текста и отыскивает на экране дисплея место, где следует ее высветить. 1.5. Взаимодействие конструктора с изображением в режиме диалога При реализации интерактивного режима предполагается наличие устройств определенного типа для обеспечения программной связи пользователя с ЭВМ. Для осуществления такой связи требуется прерывать выполнение программы при вводе новых данных. Графическое изображение вводят с помощью различных устройств. Простейшим из них является алфавитно-цифровая клавиатура, подобная клавиатуре телетайпа. К более сложным устройствам относятся световые перья; двухкоординатные потенциометры с рычажным указателем, с шаровыми задатчиками положения, а также перемещаемые задатчики положения (типа «мышь»); функциональные панели; панели потенциометров и аналоговые планшеты. Рассмотрим кратко каждое из этих устройств. Алфавитно-цифровую клавиатуру (рис. 1.3) достаточно просто можно использовать в качестве устройства ввода в интерактивной системе. Она позволяет вводить алфавитно-цифровую или символьную информацию. Однако применение клавиатуры не обеспечивает большой скорости ввода, особенно если конструктор не владеет достаточными навыками работы. Наиболее известным устройством ввода графической информации является световое перо. Оно состоит из светочувствительного
Рис. 1.3. Алфавитно-цифровая клавиатура Рис. 1.4. Упрощенное представление светового пера: 1 — поле зрения; 2 — корпус; 3 — кнопка выключения; 4 — стекловолоконный световод; 5 — фотоумножитель; 6 — схемы формирования импульс'Й фотоэлектрического устройства и связанного с ним электронного блока. Если световое перо поднести к отрезку прямой или к любой другой освещенной части экрана, то его положение относительно экрана будет зафиксировано в ЭВМ. Схема типового светового пера изображена на рис. 1.4. На рис. 1.5 показан пример применения светового пера для выбора интересующей нас информации. Двухкоординатные потенциометры с рычажным указателем, перемещаемые задатчики положения (типа «мышь») и шаровые задатчики положения имеют такой же принцип действия. Информация о положении луча в плоскости экрана передается в ЭВМ с помощью ручки управления. Все эти устройства являются аналоговыми. Перемещение управляющего элемента в них изменяет установку потенциометра. Полученные в результате этого непрерывные сигналы в виде напряжения преобразуются в цифровые сигналы с помощью аналого-цифрового преобразователя (АЦП). Рис. 1.5. Использование светового пера для выбора элементов списка Рис. 1.6. Двухкоординатный потенциометр с рычажным указателем
Затем эти сигналы поступают в ЭВМ и воспроизводятся как положения точки на экране дисплея. На рис. 1.6 приведено изображение двухкоординатного потенциометра с рычажным указателем.. Итак, при решении ряда задач, связанных с вводом графической информации, удобно пользоваться световым пером, задатчиком положения (типа «мышь») или двухкоординатным потенциометром с рычажным указателем. Однако все эти устройства не обеспечивают высокой точности определения положения точки на экране. Панель потенциометров показана на рис. 1.7. Она представляет собой набор потенциометров, соединенных с соответствующей электронной схемой, позволяющей снимать напряжение на выходе в виде цифрового сигнала, пропорционального положению ручек. Эти устройства применяют в тех случаях, когда требуется выполнить поворот изображения как при аппаратной, так и при программной реализациях машинной графики. Функциональная панель показана на рис. 1.8. На панели установлены переключатели рычажного или кнопочного типа. С помощью специальных программ фиксируется состояние (включено—выключено) каждого переключателя. Панель обычно снабжают световой индикацией, которая показывает, какие переключатели в данный момент включены: Аналоговый планшет — устройство, обеспечивающее наиболее точный и быстрый ввод в ЭВМ графической информации. Это устройство может выполнять функции светового пера, задатчика положения, двухкоординатного потенциометра и других ранее рассмотренных нами технических средств ввода графической информации. С планшетом соединена указка, которой можно водить по поверхности планшета. Положение указки относительно планшета фиксируется в памяти ЭВМ. Координаты конца указки можно также определить, если она непосредственно не касается Рис. 1.7, Панель потенциометров поверхности планшета,, а находится на некотором от нее расстоянии. Типовые планшеты воспринимают информацию с точностью Рис. 1.8. Функциональная панель
Рис. 1.9. Диалоговый планшет * 0,01 дюйма (1 дюйм равен 2,54 см), однако существуют и такие, которые обеспечивают точность ввода порядка ±0,001 дюйма. Типовой планшет изображен на рис. 1.9. Перемещение указки в поле воспроизведения изображения сопровождается перемещением курсора. По сравнению со световым пером планшет имеет два преимущества. Первое заключается в том, что при вводе графической информации с планшета координаты точек изображения записываются непосредственно в базу данных, минуя предварительную запись в дисплейный файл. Это позволяет упростить процесс программирования. Второе преимущество состоит в том, что для конструктора более естествен процесс нанесения изображения на горизонтальную поверхность планшета, чем на вертикальную поверхность экрана. Считывание изображения с планшета может быть выполнено на основе принципов электромагнетизма. Некоторые из них подробно рассмотрены в работе [1.1]. В заключение отметим, что как правило, пользователю нет необходимости детально разбираться в принципах работы устройств ввода графической информации. 1.6. Описание некоторых типов графических устройств Существует множество различных типов графических устройств, рассмотреть которые в дайной книге не представляется возможным. Поэтому ограничимся лишь краткими сведениями о части из них. Ниже описаны три типа графических дисплеев: на электронно-лучевых трубках (ЭЛТ) с длительным послесвечением, на ЭЛТ с регенерацией изображения и на ЭЛТ с растровым сканированием. Кроме того, рассмотрены два типа графических построителей: с пишущим устройством в виде перьев и с электростатическим способом записи. Подробное описание не только всех этих устройств, но и устройств других типов можно найти в книге [1.1].
В дисплеях применяют катодно-лучевые трубки трех типов: запоминающие трубки с видимым изображением, трубки с регенерируемым изображением и трубки с растровым сканированием. Дисплеи, в которых используются трубки с длительным послесвечением, можно представить как ЭЛТ с люминофором, обеспечивающим продолжительное время сохранения изображения. Дисплей на ЭЛТ с длительным послесвечением изображен на рис. 1.16. Изображение отрезка прямой или произвольного символа сохраняется в нем приблизительно в течение 1 ч, до тех пор, пока оно не будет стерто с помощью электрического импульса. Время стирания составляет примерно 0,5 с. Дисплеи с такими трубками имеют определенные преимущества и недостатки. К числу преимуществ можно отнести отсутствие мерцания изображения на экране ЭЛТ; высокую разрешающую способность ЭЛТ, обычно 1024x1024 точек растра на площади 8x8 кв. дюйма (1 кв. дюйм равен 6,45 см2); невысокую стоимость; простоту организации работы программиста, особенно в режиме с разделением времени (по сравнению с дисплеями на ЭЛТ с восстановлением изображения или на ЭЛТ с растровым сканированием). Основным недостатком дисплеев на ЭЛТ с длительным послесвечением является отсутствие возможности избирательно сти-. рать часть изображения. Чтобы заменить какие-либо участки изображения в таких дисплеях, нужно сначала все стереть, а затем снова воспроизвести изображение. Поэтому их нельзя применять для наблюдения динамических процессов в реальном времени. Кроме того, обмен информацией между пользователем и дисплеем реализуется медленнее, чем в дисплеях на ЭЛТ с регенерацией изображения. В графическом дисплее на ЭЛТ с регенерацией изображения применяют обычную телевизионную трубку. Однако способ генерации изображения в этом случае отличается от способа формирования телевизионного изображения. В телевизоре для воспроизведения изображения используется принцип сканирования растра, а в дисплеях на ЭЛТ с регенерацией изображения растр формируется путем воспроизведения на экране ЭЛТ отрезков прямых. Кроме ЭЛТ, для работы такого дисплея требуется буферная память и устройство управления. Для того чтобы правильно оценить преимущества и недостатки дисплеев на ЭЛТ с регенерацией изображения, необходимо рассмотреть область их применения. Изображение на экране ЭЛТ, применяемых в дисплеях с регенерацией, исчезает очень быстро, поэтому его необходимо многократно воспроизводить заново с большой частотой. Эта частота (или число воспроизводимых изображений в секунду) называется частотой регенерации изображения. Если частота регенерации окажется недостаточной, то изображение будет мерцать. Внешне это напоминает демонстрацию кинокартины на пониженной ско-
Рис. 1.10. Схема растрового сканирования рости протягивания ленты. Чтобы получить стабильное (не мерцающее) изображение, минимальная частота должна быть 30 Гц. На практике рекомендуется устанавливать ее значение несколько большим, порядка 40 Гц. Все команды, необходимые для воспроизведения изображения, хранятся в буферной памяти дисплея. Назначение устройства управления дисплея состоит в том, чтобы с его помощью обеспечивалось выполнение команд, хранящихся в течение изведения очевидны ваемые дисплеев рассматриваемого типа. Для воспроизведения сложных изображений требуются значительный объем буферной памяти и высокое быстродействие устройства управления. Это ограничение следует отнести к недостаткам. Преимуществом дисплеев подобного рода является отсутствие послесвечения у ЭЛТ, что позволяет воспроизводить изменение изображений в реальном времени. В частности, изображение можно обновлять с каждым тактом регенерации или через один такт, если применяется буферное устройство с удвоенным объемом. Так как каждый эле- в буферной памяти, всего цикла воспро-изображения. Отсюда ограничения, наклады-на условия применения мент или команда, которую нужно воспроизвести на экране дисплея, хранится в буферной памяти, то любую часть изображения можно легко заменить, стереть или добавить к другому изображению, т. е. в этом случае имеется возможность избирательно стирать часть изображения. Говоря о недостатках дисплеев с регенерацией, необходимо указать еще один — относительная сложность получения твердой копии изображения. Таким образом, хотя эти дисплеи, как правило, более дорогие, чем дисплеи на ЭЛТ с запоминанием изображения, их можно применять при воспроизведении перемещения изображения в реальном времени или ускорения процесса обмена графической информацией. В графических дисплеях с растровым сканированием используется обычный телевизионный монитор. В дисплее с растровым сканированием изображение состоит из точек, которые сканируются последовательно по горизонтали. Для того чтобы уменьшить мерцание изображения, применяют два растра (рис. 1.10). Электрический сигнал представляет собой аналоговый модулированный сигнал, вызывающий различную интенсивность све
чения точек изо ражения. При использовании дисплея на ЭЛТ с растровым сканированием в первую очередь необходимо преобразовать отрезки прямых и символы таким образом, чтобы их можно было воспроизводить сканированием растра. Такой способ именуется преобразованием сканирования. После преобразования информацию необходимо хранить в виде, удобном для ее быстрого извлечения. Совершенствование запоминающих устройств позволяет обеспечить решение этой проблемы. Рассматривая преимущества и недостатки дисплеев с растровым сканированием, следует указать, что они в основном аналогичны дисплеям с регенерацией изображения. Однако у них имеются и некоторые специфические особенности, а именно, эти дисплеи имеют меньшее быстродействие и избирательное удаление части изображения в них реализуется более сложно. Ука-. занные дисплеи можно непосредственно подключать к телевизионным системам. Графопостроители с дискретным и непрерывным способом вычерчивания изображения делят на два типа: планшетные и барабанные (рис. 1.11, 1.12). При воспроизведении изображений эти графопостроители выполняют построение в приращениях, т. е. движение пишущего устройства (пера) происходит в виде последовательных малых перемещений (в пределах от 0,001 до 0,61 дюйма). Часто направление движения пера бывает ограниченным. (На рис. 1.13 показано восемь различных направлений перемещений пера). Это приводит к тому, что изображение, воспроизводимое в виде кривой, будет состоять из множества мелких штрихов. Планшетные графопостроители обычно выполняют неподвижными, а пишущая головка может перемещаться на плоскости по двум взаимно перпендикулярным направлениям. В графопостроителях барабанного типа используется другой способ перемещения пера отно- ₽ис. 1.Ц, Планшетный графопостроитель
Рис. 1.12. Барабанный графопостроитель сительно плоскости изображения. Здесь перо может перемещаться только в одном направлении. Перемещение в перпендикулярном направлении реализуется путем движения бумаги. Графопостроители обеспечивают построение изображений высокого качества. Но по сравнению с графическими дисплеями они имеют гораздо меньшее быстродействие, поэтому их редко применяют в качестве устройств конструирования в системе интерактивной графики. Однако в некоторых случаях, когда требуется воспроизвести большие чертежи, в системе интерактивной машинной графики совместно с полуавтоматом кодирования информации применяют графопостроители [1.2]. Принцип действия электростатического графопостроителя заключается в притяжении частиц электрографического проявителя к заряженным областям на специальной бумаге. На рис. 1.14 приведена общая схема установки подобного типа. Рассмотрим ее более подробно. Покрытая специальным слоем бумага способна удерживать электрические заряды, образуемые записывающей головкой, состоящей из целого ряда мелких шипов. Их плотность Рис. 1.13. Направления перемещения пера графопостроителя Рис. 1.14. Структурная схема электростатического матричного графопостроителя: 1 — привод бумаги; 2—устройство для электрографического проявления; 3 — тыльный электрод; 4 — подача бумаги; 5 — пишущая головка
обычно составляет от 70 до 200 шипов на один дюйм, ти шипы и переносят электростатические заряды на специальную бумагу. Заряженная бумага покрывается электрографическим проявителем, который представляет собой жидкость, содержащую мелкие твердые окрашенные частицы. Частицы притягиваются к электростатически заряженным областям бумаги и делают видимым графическое изображение. Затем бумагу сушат и передают пользователю. При этом достигается очень высокое быстродей- зователю. При этом достигается ствие от 500 до 1000 линий, наносимых на бумагу в 1 мин. Электростатический графопостроитель работает по принципу растрового сканирования, т. е. за один раз воспроизводится информация одной строки. При этом требуется большой объем оперативной памяти у ЭВМ для построения изображений, что является существенным недостатком. Невозможность использования подобных графопостроителей в качестве активных устройств при автоматизированном конструировании ограничивает их ₽ис. 1.15. Электростатический матричный графопостроитель и типовые изображения
Применение. Кроме Того, они отличаются малой точностью воспро-изведения и имеют нцзкую разрешающую способность (порядка ±0,01 дюйма). Значительными преимуществами подобных графопостроителей являются большая скорость получения чертежей и длительный срок их сохранности. На рис. 1.15 показаны электростатический графопостроитель и примеры построенных с его помощью графических изображений. 1.7. Классификация графических устройств Существует много различных видов классификации устройств воспроизведения изображений, применяемых в машинной графике. Рассмотрим некоторые из них. Первый способ — это классификация по ^признаку активности графических устройств. Для пояснения этого признака рассмотрим основные отличия активных и пассивных устройств. Пассивные устройства позволяют воспроизводить графическое изображение с помощью ЭВМ (т. е. они позволяют лишь выводить графическую информацию). К таким устройствам можно отнести телетайпы, быстродействующие печатающие устройства (БПУ), электростатические графопостроители, обычные типы графических построителей, дисплеи с ЭЛТ с запоминанием изображения, а также дисплеи с ЭЛТ с регенерацией изображения. На рис. 1.10, 1.12, 1.15—1.20 показаны внешние виды этих устройств. Здесь же приведены примеры построения на них графических изображений. Читатель может удивиться, прочитав в этом перечне о телетайпе и БПУ. Хотя эти устройства и не предназначены специально для воспроизведения графической информации, однако в течение целого ряда лет программисты использовали их для вывода на печать графиков. Рис. 1.16. Графический дисплей с запоминающей электронно-лучевой трубкой и типовое изображение
Рис. 1.17. Графический дисплей с регенерацией изображения и типовое изображение Активные устройства машинной графики позволяют конструктору вводить в ЭВМ графическую информацию. При этом координаты точек изображения вводятся не с помощью набора чисел с телетайпа, а в виде кривых или поверхностей, задаваемых матрицами координат. Для этого на экране дисплея предусмотрен курсор, положение которого можно изменять. Его текущее положение считывается. В типовых графических устройствах для ввода информации применяют простейшие средства перемещения курсора в виде клавиатуры дисплея (см. рис. 1.16) или такие, как световое перо (см. рис. 1.4), двухкоординатный потенциометр с рычажным указателем (см. рис. 1.6) и перемещаемый задатчик положения (типа «мышь»). Для этих целей можно
Рис. 1.18. Графическое изображение, полученное с помощью цифрового графопостроителя Рис. 1.19. Быстродействующее печатающее устройство и типовое графическое изображение
Рис. 1.20. Телетайп и типовое графическое изображение использовать оптические полуавтоматы кодирования графической информации и планшеты. Оптический полуавтомат кодирования обычно применяют в комплекте с пассивным устройством, хотя его можно использовать и один. В качестве пассивных устройств воспроизведения графической информации используются дисплеи с ЭЛТ. Второй способ классификации графических устройств основан на методах формирования графического изображения — по точкам или по векторам. Принципиальное различие между этими методами состоит лишь в наличии в системе аппаратно реализованного генератора векторов. Данный способ позволяет воспроизводить отрезки прямых при минимальной информации. Однако это не означает, что для воспроизведения векторов нельзя использовать устройства, формирующие изображения отдельными точками с помощью программных средств. Вектор можно представить как вполне определенную последовательность точек. Если точки располагаются на достаточно близких расстояниях, то при их визуализации будет создаваться впечатление, что наблюдается непрерывная линия. Изображение на дисплеях с ЭЛТ с запоминанием изображения, и в особенности на дисплеях с регенерацией изображения, строится способом генерации векторов. По тому же принципу формируются изображения и на графопостроителях. Некоторые из дисплеев с регенерацией, а также дисплеи с растровым сканированием формируют графические изображения по точкам. К этому же классу (по способу формирования изображения) Принадлежат телетайпы, БПУ. Возможности применения того или иного графического устройства зависят от его разрешающей способности. Так, например, телетайп имеет разрешающую способность — 1/20 дюйма по горизонтали и ±1/12 дюйма по вертикали, а электростатический графопостроитель имеет разрешающую способность ±1/100 дюйма.
Существует еще один способ классификации графических устройств, определяемый возможностью воспроизводить непосредственно объемное изображение без его преобразования в плоское. При этом способе классификации прежде всего следует определить, сколько регистров (два или три) имеется в графическом устройстве для хранения координат изображения. В пространственном дисплее третью координату z обычно используют для управления интенсивностью луча ЭЛТ. Такой процесс называется модуляцией по интенсивности. С его помощью создается иллюзия объемного изображения. Каждый из рассмотренных способов классификации позволяет относить графические устройства к различным классам. Однако способы классификации не всегда дают полное представление о характеристиках этих графических устройств. В приложениях А и В приведены описания программного обеспечения, применяемого в машинной графике. Алгоритмы, положенные в основу этих программ, рассмотрены в остальных главах книги. В заключение следует отметить, что описание векторов, прямых, кривых и поверхностей и способы их преобразования совершенно не зависят от типа дисплея и его программного обеспечения. В последующих главах будут рассмотрены эти методы безотносительно к типам графических устройств. СПИСОК ЛИТЕРАТУРЫ 1.1 *. Newman, W. М., and Sproull, R., Principles of Interactive Computer Graphics, McGraw-Hill Book Company, New-York, 1973. 1.2. Bezier, P. E., «Example of an Existing Systems in the Motor Industry: The Unisurf System». Proc. Roy, Soc. (London), Vol. A321, pp. 207—218, 1971. * Русский перевод: У. Ньюмен, Р. Спрулл. Основы интерактивной машинной графики. М.: Мир, 1976.
Глава 2 --------- точки и линии 2.1. Введение В этой главе рассмотрены лежащие в основе машинной графики положения математики, необходимые для представления и преобразования точек и линий. Представление графических изображений с помощью устройств, описанных в гл. 1, осуществляется точками и линиями. Возможность преобразования точек и линий является основой машинной графики. При использовании машинной графики можно по желанию конструктора изменять масштаб изображения, вращать его, смещать и трансформировать для улучшения наглядности перспективного изображения объекта. Все эти преобразования можно выполнить на основе математических методов, описанных в данной и следующей главах. 2.2. Представление точек На плоскости точку представляют с помощью двух ее координат. Их значения можно рассматривать как элементы матрицы [х у}, т. е. в виде вектор-строки. В пространстве каждую точку представляют матрицей [х у г]. Ее можно также представить х У _z _ с помощью вектор-столбцов х .У. на плоскости или — в про- странстве. Последовательность точек, каждая из которых характеризуется значением координат вектора относительно выбранной системы координат, может быть представлена в вычислительной машине как матрица чисел. Положением этих точек управляют путем преобразования матрицы. Линии можно воспроизводить с помощью соответствующих аппаратных или программных средств вычислительной техники. 2.3. Преобразования и матрицы Элементы, которые образуют матрицу, характеризуются различными числовыми значениями, такими как занимаемый ими объем памяти, а также структурой или коэффициентами системы уравнений. Допустимые действия над этими матрицами опреде-
ляютсяправилами матричной алгебры (см. приложение Б)? Многие физические задачи можно привести к следующей формулировке. Пусть даны матрицы А и В и задана их взаимосвязь АТ = В; необходимо найти матрицу преобразования. В этом случае решением является Т = А-1В; где А"1 обратная от квадратной матрицы А (см. [2.1]). С другой стороны, здесь Т-матрицу можно трактовать как оператор. В этом случае перемножение матриц использовано для того, чтобы выполнить геометрическое преобразование над системой точек, представленных с помощью векторов положения отдельных точек, содержащихся в матрице А. Матрицы А и Т предполагаются известными, и это необходимо для того, чтобы определить элементы матрицы. Интерпретация матричного умножения как геометрического оператора является основой математических преобразований, используемых в машинной графике. 2.4. Преобразование точек Рассмотрим результаты матричного умножения матрицы [х у], определяющей точку Р, и матрицы преобразований 2x2 общего вида: [* у} = [(ах + су) (bx + dy)[ = [х* г/*]. (2-1) Эта математическая запись означает, что начальные координаты х и у преобразованы в х* и у*, где х* = (ах су) и у* = == (Ьх + dy). Проведем анализ полученных результатов, рассматривая х* и у* как преобразованные координаты. Для этого исследуем несколько частных случаев. Рассмотрим случай, когда а = d = 1 и с = b = 0. Матрица преобразований приводит к матрице, идентичной исходной, '1 [* у} 0 О’ 1 = [X у] = [X* //*]. (2-2) При этом изменений координат точки Р не происходит. Положим теперь d = 1, b = с = 0, т. е. [х у] 'а 0 0 1 = [ах у] = [х* у*[. (2-3) Это приводит к изменению масштаба, так как х* = ах. Само преобразование показано на рис. 2.1, а. Следовательно, данное матричное преобразование эквивалентно перемещению исходной координаты в направлении х. Теперь положим b = с = 0, т. е. к У\ 'а О’ 0 d = [ах dy] = [х* у*]. (2-4)
Рис. 2.1 .Преобразование точек В результате получаем изменение масштабов в направлениях х и у, как показано на рис. 2.1, б. Если a d, то перемещения вдоль осей неодинаковы. Если а = d > 1, то имеет место увеличение масштаба координат точки Р. Если 0 < а = d < 1, то будет иметь место уменьшение масштаба координат точки Р. Если а и (или) d отрицательны, то имеют место отображения координат точек. Рассмотрим это, положив b = с = 0, d — 1 и а = —1; тогда [* у] 1 О’ о 1. [—X у] = [х* у*] (2-5) и происходит отображение точки относительно оси у. Действие этого преобразования проиллюстрировано рис. 2.1, в. В случае b = с = 0, а = I, d = 1 отображение происходит относительно оси х. Если b = с = 0, а = d < 0, то отображение будет происходить относительно начала координат. Это показано на рис. 2.1, г, где а = —1, d — —1. Заметим, что отображение и изменение масштаба координат вызывают только диагональные элементы матрицы преобразования. Теперь рассмотрим случай, где а = d = 1, а с = 0, т. е. [х у] ’1 Ь' О 1 = [х(Ьх + у)1 = [х* у*]. (2-6)
Координата х точки Р не изменяется, - в то время как у* линейно зависит от начальных координат. Этот эффект называется сдвигом, его иллюстрирует рис. 2.1, д. Аналогично, когда а = d = 1, b = 0, преобразование осуществляет сдвиг пропорционально координате у, как показано на рис. 2.1, е. Таким образом, мы видим, что члены правой диагонали обеспечивают операцию сдвига по координатам точки Р. Перед завершением нашего обсуждения преобразования точек рассмотрим результат преобразования с помощью матрицы общего вида, задаваемого уравнением (2.1), когда преобразование применено к началу координат, т. е. [* [а с J = [(«* + су) (bx + dy)[ = [х* t/*]; для начала координат имеем [О 0] [а Ь' с d = [0 0] — [х* у*]. Здесь мы видим, что начало координат является инвариантным при общем преобразовании 2x2. Это является ограничением, которое будет преодолено за счет использования однородных координат. 2.5. Преобразование прямых линий Прямая линия может быть задана двумя векторами положения, определяющими координаты ее двух точек. Выбор типа операции проведения линии между двумя точками будет зависеть от типа выходного графического устройства. Здесь мы рассмотрим только математические операции с векторами положения. На рис. 2.2 проведена прямая линия между двумя точками А и В на плоскости. Векторы положения точек А и В равны [0 1] и [2 3] соответственно. Теперь рассмотрим матрицу преобразования П 21 3 1 • М Рис. 2.2. Преобразование прямых линий Т = которая, как мы знаем из предварительного обсуждения, осуществляет операцию сдвига. Используя умножение матрицы на векторы положения
для А и В, получим новые преобразованные векторы А* и В* с помощью следующих соотношений: и 1 3 2 1 АТ=[0 1] ВТ = [2 3] 2’ 1 = [3 1] = А* = [11 7] = В*. (2-8) (2-9) Таким образом, элементами А* являются х* = 3 и у* = 1. Аналогично, В* является новой точкой, определяемой значениями х* = 11 и у* = 7. Более компактно линия АВ может быть представлена матрицей 2x2 вида L = ГО Г [2 3. После этого умножение матрицы^ на Т даст (2.10) где компоненты матрицы L* представляют собой преобразованные векторы положения точек А* и В*. Преобразование А в А* и В в В* показано на рис. 2.2. Исходными осями являются оси х и у, а преобразованными х* и у*. Операция сдвига увеличила длину линии и изменила ее положение. 2.6. Преобразование середины отрезка Как следует из рис. 2.2, матрица преобразования размера 2x2 трансформирует прямую линию у = х + 1 между точками А и В в прямую линию у = (3/4) х — между А^ и В*. В действительности матрица 2x2 преобразует любую прямую линию в другую прямую. Точки на второй линии имеют взаимно однозначное соответствие с точками на первой линии. Мы уже показали, что это имело место для граничных точек линии. Для подтверждения рассмотрим преобразование средней точки прямой линии между А и В. Полагая А — [xj уг], В = [х2 у2], Т = 'а Ь' с d и преобразуя обе точки одновременно, получаем Xi f/il р 6] pti + o/i х2 y2J Lc ~ [ах2-1-су2 -А*-В* (2.П) bxx -|- dy± bx2 -|- dy2 Следовательно, преобразованные граничные точки определяются соотношениями А* = [aXi -f- суг bxi + dyj] = [xf у*]; В* = [ах2 + су2 bx2 + dy2] = [х£ у*]-
Средняя точка исходной линии АВ определяется в виде ~|~ #2 1 2 J (2.12) Преобразование этой средней точки характеризуется зависимостью Г *1 + *2 L 2 Ч~ #2 ) 2 J a b' с d а%1 + ах2 + су± + су2 2 bxt + bx2 + dyt + dy2 (2-13) Это преобразование приводит среднюю точку линии АВ в среднюю точку линии А*В*, поскольку средняя точка линии А*В* задается соотношениями v* _ axj + cyi + ах2 + су2 а%1 + ах2 + су± + су2 . 2 2 *. bx1 -j- dyi -j- bx2 -J- dy2 bx±~\-bx2-\-dy^-\-dy2 у — 2 2 • Для случая, показанного на рис. 2.2, средней точкой линии АВ является точка = [1 2]. Она преобразуется в точку [1 2] '1 2' 3 1 = [7 4], (2-15) которая представляет собой среднюю точку линии А*В*. Эта операция справедлива для любой исходной линии, и ясно, что все точки на ней преобразуются в точки на другой линии. Кроме того, обеспечивается взаимно однозначное соответствие между точками на исходной линии и точками на преобразованной линии. При применении машинной графики это означает, что положение любой прямой линии может быть преобразовано в любое новое положение простым преобразованием ее граничных точек и последующим проведением линии между преобразованными точками. 2.7. Параллельные линии Когда матрица 2x2 используется для преобразования одной пары параллельных линий, результатом оказывается другая пара параллельных линий. Чтобы убедиться в этом, рассмотрим прямую линию между точками А = [хх ух] и В — [х2 у2] и параллельную ей линию между точками Е и F. Покажем, что любое однотипное преобразование этих линий является также параллельным. Для этого рассмотрим наклоны линий АВ, EF, А*В* и E*F*. Наклон как АВ, так и EF определяется соотношением mj — X2—Xt ’ (2.16)
Преобразуя прямую АВ с помощью общего преобразования 2x2, получим прямую с граничными точками А* и В*. ЛГ1 У11 Г« Ь1 _ Г«*1 + СЙ М + х2 У-2 J [с d J ~ 1^2 + су2 Ьх2 4- dy2 х* у\' Х2 У2. 'А* В* (2-17) Затем определяем наклон А*В*: (bxz + dy^—jbXi + dyd b(x2~xd+d(y2—yd 2 (ах2 + су2) — (ахг + суд а (х2 — xt) + с (у2 — уд ’ или b d ~ У*. -----х12=х^=_^М_. 18) а , с У2—У1 a + crrii k ' Поскольку т2 не зависит от координат х1г х2, уг и у2, a mlt а, Ь, с и d имеют одни и те же значения как для EF, так и для АВ, то отсюда следует, что наклон т2 для E*F* и для А*В* одинаков. Таким образом, параллельные линии остаются параллельными после преобразования. Это означает, что параллелограмм преобразуется в другой параллелограмм в результате действия матрицы преобразования 2X2. Эти простые результаты показывают возможность использования матричного умножения для проведения графических построений. 2.8. Пересекающиеся линии На рис. 2.3 показаны две штриховые пересекающиеся линии АВ и EF. Точка пересечения определяется координатами х = ;= 4/5 и у = 1/5. Теперь умножим матрицы, содержащие граничные точки двух линий АВ и EF, на преобразующую матрицу, равную результате получаем 1 2’ 1 —3 11 2 12 что дает сплошные линии А*В* и E*F*, показанные на рис. 2.3. Преобразованная точка пересечения определяется соотношением [4 4] [! 1].
Рис. 2.3. Преобразование пересекающихся линий 1 Юследнее означает, что точка пересечения исходной пары линий преобразуется в точку пересечения преобразованной пары. Завершая исследование преобразования прямых пересекающихся линий, покажем, что оно включает вращение, отображение и изменение масштаба исходных пар.)* Однако общий результат матричного преобразования легко показать, рассматривая отдельно результаты вращения, отображения и изменения масштаба. Для иллюстрации этих методов рассмотрим простую плоскую фигуру в виде треугольника. • 2.9. Вращение Рассмотрим плоский треугольник АВС, показанный на рис. 2.4,. а. Этот треугольник поворачивается на 90° вокруг начала координат против часовой стрелки, при этом осуществляется преобразование каждой вершины с помощью матрицы j . Если использовать матрицу, содержащую координаты вершин, Рис. 2.4. Вращение и отображение
то получим 3 —1 4 1 2 1 О 1 — 1 О ' 1 3 —1 4 — 1 2 (2-19) В результате будет сформирован треугольник А*В*С*. Поворот на 180° вокруг начала координат получается с помощью матрицы г—1 0] 1 , а поворот на 270 вокруг начала координат — с по- L г° —и мощью матрицы К 01' Заметим, что ни изменение масштаба, ни отображение в этом примере не имели места. 2.10. Отображение В то время, как чистое двумерное вращение в плоскости ху осуществляется вокруг оси, перпендикулярной к плоскости ху, отображение определяется поворотом на 180° вокруг оси, лежащей в плоскости ху. Два поворота треугольника DEF показаны на рис. 2.4,; б. Вращение около линии у = х происходит при использовании матрицы ’0 1 Г 0 Преобразованные новые выражения определяются соотно- шением (2.20) Вращение вокруг у = 0 получается при использовании ма- трицы Г1 1.0 01 В этом случае новые вершины определяются сле- дующим соотношением: 8 —Г 7 3 6 2 L0 —1J 6 2 — 1 2.11. Изменение масштаба Вспоминая наши рассуждения относительно преобразования точек, заметим, что изменение масштаба определяется значением двух членов основной диагонали матрицы. Если матрица ’2 О’ 0 2 воздействует на вершины треугольника как оператор, то имеет место увеличение в 2 раза координат относительно исходных.
Если значения членов не равны, то имеет место искажение. Эти результаты показаны на рис. 2.5. Здесь треугольник АВС преобразован с помощью Г2 0] 0 чего имеем таба, а треугольник DEF пре-.. ГЗ 01 0 2 к искажению масштабных матрицы , в результате 2 изменение масш- образован матрицей , ко- торая приводит из-за неравных коэффициентов. Теперь понятно, каким образом плоская поверхность, опреде- ленная с помощью вершин, соединенных прямыми линиями, может быть изменена в различных направлениях. С помощью соответствующих матричных операций над векторами положения, которые определяют вершины, можно управлять формой и положением поверхности. Однако для получения желаемой ориентации может потребоваться более одного преобразования. По- скольку матричное произведение некоммутативно, то порядок преобразований является важным при использовании комбинированных операций. 2.12. Комбинированные операции Для того чтобы проиллюстрировать результат некоммутативное™ матричного умножения, рассмотрим операции вращения и отображения на двух вершинах треугольника [х у]. Если за вращением на 90° следует отображение относительно оси х = 0, то эти два последовательных преобразования дают у] 0 Г —1 0 = [—У х] и затем '—I О’ [-У х] 0 j = [—к у}. С другой стороны, если за отображением следует вращение, получается следующий результат: Г—1 [х У] 0 1 = [—* У\ и [—к у] 0 Г -I О = х]-
Далее мы рассмотрим поведение точек и линий, чтобы определить результат простых матричных преобразований. Как будет показано ниже, с помощью матричных преобразований можно выполнять операции над каждой точкой в плоскости. Например, только точка, которая остается инвариантной в матричном преобразовании 2x2, является началом координат. Все другие точки в плоскости системы координат преобразуются. Это преобразование можно интерпретировать как преобразование исходной плоскости и системы координат в новую форму. Более формально можно сказать, что преобразование осуществляет перенос изображения с одной плоскости на другую. Примеры этого переноса показаны в следующем параграфе. 2.13. Преобразование единичного квадрата Рассмотрим квадратно-решетчатую сетку, состоящую из единичных квадратов в плоскости ху. Четыре вектора положения точек единичного квадрата с одним углом в начале координат записываются в виде "о О" 1 О 1 1 ’ О 1 где [0 0]—точка А, начало координат; [1 0] — единичная точка В на оси х; [1 1] — вершина С внешнего угла; [0 1] — единичная точка D на оси у. Этот единичный квадрат показан на рис. 2.6, а. Применение 'a b 1 общего матричного преобразования Дк единичному квадрату приводит к следующему: А- 0 0 0 0 ~ А* В > 1 0 Га Ь' а b <-В* с> 1 1 [с d а . Л , А Г*- (2-21) + с b + d «— С* v D > 0 1 с d +-D* Результаты этого преобразования представлены на рис. 2.6, б. Первая строка в соотношении (2.21) показывает, что начало координат не подвергается преобразованию, т. е. А = А* = — [0 0]. Далее следует вывод о том, что координаты В* определяются первой строкой общей матрицы преобразования, а координаты О* второй строкой этой матрицы. Таким образом, если координаты точек В* и D* (т. е. (1, 0) и (0, 1)) известны, то общая матрица преобразования определена. Если стороны единичного квадрата параллельны и заведомо известно, что парал-
Рис. 2.С. Общее преобразование единичного квадрата: а — до преобразования; б — после преобразования дельные линии преобразуются только в параллельные, то преобразованная фигура является параллелограммом. Влияние членов а, Ь, с и d в матрице 2x2 можно проанализировать раздельно: Элементы & и с вызывают сдвиг (см. параграф 2.4) исходного квадрата в направлениях- у и х соответственно. Это можно увидеть на рис. 2.6. Элементы а и d характеризуют масштабные коэффициенты, что отмечено ранее. Таким образом, общая матрица размера 2x2 осуществляет комбинацию сдвига и изменения масштаба. Это также позволяет легко определить площадь^Гпаралле-лограмма A*B*C*D*, показанного на рис. 2.6. Площадь параллелограмма может быть рассчитана следующим образом: Ля = (а 4- с) (Ь 4- d) — -i- (ab) — ~±-(cd) — __£.(& + & + d)__|_(c + o + c)> или Ап ad — be — det a b' c d (2.22) Можно показать, что площадь любого преобразованного параллелограмма Аа является функцией определителя матрицы преобразования и связана с площадью начального квадрата Ак простым соотношением Ап = Лк (ad - be). (2.23) Поскольку площадь общей фигуры можно представить как сумму единичных квадратов, то площадь любой преобразованной фигуры А( связана с площадью исходной фигуры А£ зависимостью Af = Аг (ad — be). (2.24) Это соотношение справедливо для площадей фигур произвольных форм.
2.14. Произвольная матрица вращения размера 2x2 Общую матрицу 2x2, которая осуществляет вращение фигуры относительно начала координат, можно получить из рассмотрения вращения единичного квадрата вокруг начала координат. Это показано на рис. 2.7 для вращения против часовой стрелки, принимаемого за положительное. Как следует из рис. 2.7, точка В с координатами (1,0) преобразуется в точку В*, ДЛЯ Рис. 2.7. Вращение единичного квадрата которой X* = (1) COS 6 и у* = = (1) sin 6, а точка D, имеющая координаты (0, 1) переходит в точку D* с координатами х* = —(1) sin 6 и у* = (1) cos 0. Учитывая полученные ранее результаты для произвольной матрицы преобразования размера 2 х2, в которой координаты точки В* определяются первой строкой матрицы преобразований, а координаты точки D* — второй строкой, общую матрицу вращения размера 2x2 можно записать как cos 0 sin 0 —sin 0 cos 0 (2.25) 0 1 — 1 0. Для частного случая поворота на 90“ последнее выражение приводится к результатам, полученным в параграфе 2.9, т. е. В действительности соотношение (2.25) соответствует комбинации изменения масштаба и сдвига, которая оставляет размеры фигуры неизменными. Следовательно, матрица преобразований (2.25) осуществляет только вращение на произвольный угол 0. 2.15. Двумерное смещение и однородные координаты До сих пор не обсуждалось смещение на плоскости точек и линий, рисунков или контуров, получаемых из точек и линий. Это обусловлено тем, что вводить константы переноса внутрь структуры общей матрицы размера 2x2 не представляется возможным. Следуя Форресту [2.2], отметим, что эту трудность можно устранить за счет введения третьей компоненты в векторы точек [х у] и [х* у*], т. е. представляя их в виде [х у 1 ] и
lx* у* 1 J. Матрица преобразования после этого становится матрицей размера 3x2: ’ 1 О" О 1 т п Это необходимо, поскольку число столбцов в матрице, описывающей точку, должно равняться числу строк в матрице преобразования для выполнения операции умножения матриц. Таким образом, Г1 01 о т 1 п [х у откуда следует, 1] = [х+ т у + п] = [х* у*], (2.26) что константы т, п вызывают смещение х* и у* относительно х и у. Поскольку матрица 3x2 не является квадратной, она не имеет обратной матрицы (см. приложение Б). Эту трудность можно обойти, дополнив матрицу преобразования до квадратной размера 3X3. Например, ’ 1 0 0" 0 1 0 т п 1 Заметим, что третья компонента векторов положения точек не изменяется при добавлении третьего столбца к матрице преобразования. Используя эту матрицу в соотношении (2.26), получаем преобразованный вектор [х* у* 1 ]. Добавление третьего элемента к вектору положения и третьего столбца к матрице преобразования позволяет выполнить смещение вектора положения. Третий элемент здесь можно рассматривать как дополнительную координату вектора положения.Итак, вектор положения [х у 1 ] при воздействии на него матрицы 3x3 становится вектором положения в общем случае вида [X Y Н]. Представленное преобразование было выполнено так, что [X У Н] = = [х* у* 1 ]. Преобразование, имеющее место в трехмерном пространстве, в нашем случае ограничено плоскостью, поскольку Я = 1. Если, ~Р~ однако, третий столбец Я матрицы преобразования Т размера 1_8_ о 3x3 отличен от , то в результате матричного преобразования получим [х у 1 ] = [X У Н ], где Н =/= 1. Плоскость, в которой теперь лежит преобразованный вектор положения, находится в трехмерном пространстве. Однако сей
час нас не интересует то, что происходит в трехмерном пространстве. Итак, найденные х* и у* получены с помощью пучка лучей, проходящих через начало координат. Результат преобразований показан на рис. 2.8. Из рассмотрения подобных треугольников видно, что Н/Х = = l/х* и H/Y = 1/у*. Рассматривая три компоненты, запишем это в виде [X*f/* И=[4 ТГ 1]-(2’27) Рис. 2.8. Геометрическое представление однородных координат Представление двумерного вектора трехмерным или в общем случае «-мерного вектора (« + 1)-мерным называют однородным координатным воспроизведением. При однородном координатном воспроизведении «-мерного вектора оно выполняется в (« + 1)-мерном пространстве, и конечные результаты в «-мерном пространстве получают с помощью обратного преобразования. Таким образом, двумерный вектор [х у] представляется трехкомпонентным вектором [hx hy h]. Разделив компоненты вектора на однородную координату h, получим X—Т " » = <2-28) Не существует единственного однородного координатного представления точки в двумерном пространстве. Например, однородные координаты (12, 8, 4), (6, 4, 2) и (3, 2, 1) представляют исходную точку [3 2]. Для простоты вычислений выбираем [х у 1 ], чтобы представить непреобразованную точку в двумерных однородных координатах. Преобразование ~а Ь’|* [х* у*] = [х у] с d в дополнительных координатах задается выражением в однородных координатах в виде а b d О [X Y Н] = [х у 1] О" О 1 с О * Заметим, что левая часть уравнения является результатом преобразования, т. е. здесь записываем матричные уравнения в виде В = АТ вместо АТ = В. Далее будем использовать именно такие соотношения для перевода результатов в машинные алгоритмы.
Выполнение указанных выше преобразований показывает, что X — х*, Y = у*, а Н = 1. Равенство единице дополнительной координаты означает, что преобразованные однородные координаты равны исходным координатам. В общем случае Н =f= 1, и преобразованные обычные координаты получаются за счет нормализации однородных координат, т. е. и (2.29) Геометрически все преобразования х и у йроисходят в плоскости Н = 1 после нормализации преобразованных однородных координат.. Преимущество введения однородных координат проявляется при использовании матрицы преобразований общего вида порядка 3x3 ~а b р~ с d q t * т п s с помощью которой можно выполнять и другие преобразования, такие как смещение, операции изменения масштаба и сдвига, обусловленные матричными элементами а, Ь, с и d. Указанные операции рассмотрены ранее. Чтобы показать воздействие третьего столбца матрицы преобразований 3x3, рассмотрим следующую операцию: 1 О О [X-F Щ = [ху 1] О р~ 1 Я =[ху О 1 01; здесь X — х, Y — у, а Н = рх + qy + 1. Переменная Н, которая определяет плоскость, содержащую преобразованные точки, представленные в однородных координатах, теперь образует уравнение плоскости в трехмерном пространстве. Это преобразование показано на рис. 2.9, где линия АВ, лежащая в плоскости ху, спроектирована на линию CD плоскости рХ -|- qY — — //+1 = 0. На рис. 2.9 величины р — q = 1. Выполним нормализацию для того, чтобы получить обычные координаты: .* X X Х ~ Н ~ pX + qY+ 1 ’ У У У ~ Н ~ pX + qY+ \ ‘
Рис. 2.9. Преобразование в однородных координатах Полагая р = q = 1, для изображенных на рис. 2.9 точек А и В с координатами соответственно (1, 3) и (4, 1) получим * 1 1*3 х*= Т+3-+1 --5- и = После преобразования А в С* и В в D* имеем * 4 2*1 = l.+ 4+ 1 = ~3~ =-6-- Однородные координаты для точек С* и D*, показанные на (1 3 \ / 9 1 \ -g-, -g-, 1) и -g~> И-Результатом нормализации является перевод трехмерной линии CD в ее проекцию C*D* на плоскость Н = 1. Как показано на рис. 2.9, центром проекции является начало координат. £ Основная матрица преобразования размера 3x3 для двумерных однородных координат может быть подразделена на четыре части: a b = р с d \ q т п \ s
Как мы видим, а, Ъ, с и d осуществляют изменение масштаба, сдвиг и вращение; тип выполняют смещение, а р и q — получение проекций. Оставшаяся часть матрицы, элемент s, производит полное изменение масштаба. Чтобы показать это, рассмотрим преобразование Г1 О 01 [X У Н] = [ху 1] = \х у s]. (2.30) 1 О о s Здесь X = х, Y = у, а Н = s. Это дает х* = х/s и у* = y/s. В результате преобразования [х у 1 ] —> [x/s y/s 1] имеет место однородное изменение масштаба вектора положения. При s < 1 происходит увеличение, а при s > 1 уменьшение масштаба. 2.16. Точки в бесконечности Использование однородных координат дает удобный и эффективный способ, отображения множества точек одной координатной системы в соответствующее множество преобразованной системы координат. Как правило, бесконечная область одной координатной системы будет отображаться в конечную область другой координатной системы. При этом прямые линии, параллельные в одной системе координат, в общем случае не будут параллельными в другой. Как будет показано ниже, геометрические свойства, например точки пересечения, можно оценить в любой из этих систем координат. Пусть две линии, заданные уравнениями х + у = 1; 2х — Зу = 0, имеют точку пересечения в х = 3/5, у = 2/5. Это решение может быть получено в элементах однородной системы координат. Переписывая уравнения в виде х + у — 1 = 0, 2х — Зу = 0, можно представить их в матричном виде [* У 1] 21 = [0 0]. Однако, чтобы матрица имела себе обратную, она должна быть квадратной. С этой целью дополним все матрицы последнего уравнения третьим столбцом: 1 1 2 01 —3 0 1 [* У 1] = [0 0 1]. (2-31) 0
Обращением квадратной матрицы обозначим М, будет в соотношении ( . ), которую м-‘ = 3 - 5 1 5 3 “Г Умножая обе части уравнения (2.31) ния ММ-1 = I получим на М \ с учетом соотноше- [х у 1] = 1[0 0 ’3 1] 1 3 01 у = 2/5, 'как это и требовалось. Таким образом, х = 3/5 и Рассмотрим теперь две параллельные линии, определенные уравнениями х + у = 1; х + у = 0. Поступая как прежде, придем 1 1 —1 [х у 1] к 1 1 о матричному уравнению 01 о = [0 0 1]. 1 этом уравнении не имеет обратной, Однако квадратная матрица в поскольку две строки одинаковы. Возможно другое выражение, которое позволяет иметь обратную матрицу (см. работу [2.3]): [* У 1] г 1 1о =[0 0 х]. (2.32) Обращением матрицы 3x3 из ГО 0 1 мх = уравнения (2.32) является —Г 1 0 2 5 5 2 5 2 О О 1 1 1 — 1 0 о о 1 —1 Умножение обеих частей уравнения (2.32) на обратную матрицу дает '0 [х у 1] = [0 0 х] 0 1 1 1 —1 —Г 1 = [х —х 0] = х[1 —1 0]. (2.33) 0
Результирующие однородные координаты (1; —1; 0) должны представлять «точку пересечения» двух параллельных линий в бесконечности. Обычно двумерный однородный вектор [а b 0] образует точку в бесконечности на линии ау—Ьх = 0. Тот факт, что вектор с однородной компонентой Н, равный нулю, представляет точку в бесконечности, может быть проиллюстрирован процедурой, изложенной ниже. Рассмотрим линию у* = (3/4) х* и точку [ХУ] = [4 3]. Таблица 2.1 Г Вспомним, что точка [4 3] может быть представлена в однородных координатах любыми способами, показанными в табл. 2.1 (см. работу [2.3]). Заметим, что в табл. 2.1 при И 0 отношение у*!х* остается равным 3/4. Далее заметим, что следующие одна за другой пары [х* у*], которые попадают на линию у* = (3/4) х*, становятся ближе'к бесконечности. Таким образом, в пределе, когда Н —»0, точка в бесконечности [х* у* 1]= [оо со 1] задается значениями [X У Н]== = [4 3 0] в одноррдных координатах. Из этого следует, что вектор положения [10 0] представляет точку в бесконечности на оси х* и вектор [010] представляет точку в бесконечности на оси у*. В такой форме однородные координаты дают удобное представление точек в бесконечности в дополнение к свойствам обобщенных преобразований. 2.17. Двумерное вращение вокруг произвольной оси Выше было рассмотрено вращение изображения около начала координат. Однородные координаты обеспечивают поворот изображения вокруг точек, отличных от начала координат. В общем случае вращение около произвольной точки может быть выполнено путем переноса центра вращения в начало координат, поворотом относительно начала координат, а затем переносом точки вращения в исходное положение. Таким образом, поворот
вектора положения lx г/ 1J около точки (т, п) на произволь-ный угол может быть выполнен с помощью преобразования [* У ,1] 1 0 0 1 О' 0 cos 0 —sin 0 sin 0 cos 0 О' 0 X —т — -п 1 " 0 0 1 ' 1 0 О' X 0 1 0 = [Х Y Н]. (2.34) т п 1 записать Выполнив две операции умножения матриц, можно [X Y Н] — [х у 1] х ~ cos 0 sin 0 х —sin 0 cos 0 —tn (cos 0 — 1) + n (sin 0) — m (sin 0) — n (cos 0—1) 0" 0 . (2.35) 1 Предположим, что центр изображения имеет координаты (4, 3) и желательно повернуть изображение на 90° против часовой стрелки вокруг его^ центральной оси. Действие, выполненное с помощью матрицы '010 —1 оо; 0 0 1’ вызывает вращение вокруг начала координат, а не вокруг оси. Как сказано выше, необходимо вначале осуществить перенос изображения таким образом, чтобы желаемый центр вращения находился;^ начале координат. Это осуществляется с помощью матрицы переноса 1 0 0' 0 10. —4 —3 1 Затем следует применить матрицу вращения и, наконец, привести результаты к началу координат посредством обратной матрицы. Вся операция 1 [X Y Н] — [х у 1] 0 —4 0 О' 1 0 —3 1 1 О' о о 0 1 [1 о 4 0 01 (2.36) о —1 о 1 о 3 1 может быть объединена в одну матричную операцию путем выполнения матричных преобразований вида [X Y Н} = [х у 1] '0 1 О' — 1 0 0 7 —1 1 (2.37)
a) б) Рис. 2.10. Вращение: а — вокруг оси х; б — вокруг оси у- в — вокруг оси 2 В результате будет получено х* — XIН и у* = Y/Н. Двумерные вращения около каждой оси ортогональной системы представлены на рис. 2.10. Машинный алгоритм для выполнения двумерного вращения около произвольной точки дан в приложении В вместе с другими алгоритмами для двумерного смещения, изменения масштаба и отображения. СПИСОК ЛИТЕРАТУРЫ 2.1. Fox, L., An Introduction to Numerical Linear Algebra, Oxford University Press, London, 1964. 2.2. Forrest, A. R., «Co-ordinates, Transformations, and Visualization Techniques», CAD Group Document N. 23, Cambridge University, June 1969. 2.3. Ahuja, D. C., and Coons, S. A., «Geometry for Construction and Display», IBM Syst. J., Vol. 7, Nos. 3, and 4, pp. 188— 205, 1968.
Глава j -------— —-=———------—----- ТРЕХМЕРНЫЕ ПРЕОБРАЗОВАНИЯ И ПРОЕКЦИИ 3.1. Введение Для наилучшего восприятия формы объекта необходимо иметь его изображение в трехмерном пространстве. Во многих случаях наглядное представление об объекте можно получить лишь путем выполнения операций вращения и переноса, а также путем построения его проекций. В этом нетрудно убедиться на примере некоторого относительно сложного объекта. Для того чтобы получить представление о его форме, конструктору необходимо выполнить операции вращения, наблюдения на некоторых расстояниях с различных сторон и т. д. Если эти операции выполнять с помощью ЭВМ, то все результаты, полученные для плоского изображения, необходимо распространить на пространственное. С учетом этого введем снова однородные координаты. Тогда точка в трехмерном пространстве [х у z] представится четырехмерным вектором [х у z 1] или [X Y Z Н]. Преобразование из однородных координат описывается соотношениями [X У Z Я] = [х у z 1]Т (3.1) и где Т — некоторая матрица преобразования. Обобщенная ма-трйца преобразования 4X4 для трехмерных однородных координат имеет вид ~ а b с р~ d е f q I т п s Эта матрица может быть представлена в виде четырех отдельных частей '3x3:Зх 1 ’ 1 Матрица 3X3 осуществляет линейное преобразование1 в виде 1 Линейным называют преобразование, трансформирующее исходную линейную комбинацию векторов в некоторую также линейную их комбинацию.
изменения масштаба, сдвига и вращения. Матрица-строка 1x3 производит перенос, а матрица-столбец 3X1 — преобразование в перспективе. Последний скалярный элемент выполняет общее изменение масштаба. Полное преобразование, полученное путем воздействия на вектор положения матрицей 4X4 й нормализации преобразованного вектора, будем называть билинейным преобразованием. Оно обеспечивает выполнение комплекса операций сдвига, частичного изменения масштаба, вращения, отображения, переноса, а также изменения масштаба изображения в целом. 3.2. Трехмерное изменение масштаба Диагональные элементы основной матрицы преобразования 4X4 осуществляют частичное и полное изменение масштабов. Рассмотрим преобразование а 0 0 0" 0 е 0 0 к у z И 0 0 /" 0 = [ах еу jz 1] = [х* f/* Z* 1], (3-3) _0 0 0 1_ которое производит частичное изменение масштабов. На рис. 3.1, а показано преобразование параллелепипеда в единичный куб путем изменения масштаба. Общее изменение масштаба получается за счет использования четвертого диагонального элемента, т. е. -1000" 0 10 0 [х у г 1] 0 0 10 = [X у Z S] = 0 0 0 s — — = [х* у* * II м | * т -г '] <зл> Это преобразование иллюстрирует рис. 3.1, б. Такой же результат можно получить при равных коэффициентах частичных изменений масштабов. В этом случае матрица преобразования должна быть равной ООО. S 0 — 00 S 0 0 — 0 S G 0 0 1
Рис. 3.1. Трехмерные преобразования с изменением масштабов
3.3. Трехмерный сдвиг Недиагональные элементы верхней левой подматрицы 3x3 от общей матрицы преобразования размера 4x4 осуществляют сдвиг в трех измерениях, т. е. "1 b с 0 d 1 f 0 [X у Z 1] h i 1 0 == _0 0 0 1_ = [х 4-bx-}-y-[-iz cx-f-fy-^-z 1]. (3.5) Простой трехмерный сдвиг единичного куба показан на рис. 3.1, в. 3.4. Трехмерные вращения В предыдущих параграфах было показано, что матрица 3x3 обеспечивала комбинацию операций изменения масштаба и сдвига. Однако, если определитель матрицы 3x3 равен +1, то имеет место чистое вращение около начала координат. Перед рассмотрением общего случая трехмерного вращения вокруг произвольной оси исследуем несколько частных случаев. При вращении вокруг оси х размеры вдоль оси х не изменяются. Таким образом, матрица преобразований будет иметь нули в первой строке и первом столбце, за исключением единицы на главной диагонали. Другие элементы определяются при рассмотрении вращения единичного куба способом, описанным в параграфе 2.13. Это приводит к матрице преобразования, соответствующей повороту на угол 6 вокруг оси х и определяемой соотношением “1 0 О 0- о cos е sin е о Т-“ 0 —sin 6 cos 6 0 ‘ .0 0 0 1_ Вращение предполагается положительным, т. е. по часовой стрелке, если смотреть из начала координат вдоль оси вращения. На рис. 3.2, а показан поворот на —90° относительно оси х. Для вращения на угол Ф около оси у нули ставят во второй строке и втором столбце матрицы преобразования, за исключением единицы на главной диагонали. Полная матрица определяется выражением “cosO 0 — sinO 0" 0 1 0 0 т = sinO 0 собФ 0 0 0 0 1
На рис. 3.2, б показан поворот на 90° вокруг оси у. Аналогично матрица преобразования для вращения на угол ip вокруг оси z имеет вид cos ip simp 0 0 — simp cosip 0 0 0 07 1*0 0 0 2 0 1 (3-8) Анализ определителей для матриц (3.6)—(3.8) показывает, что для любой матрицы вращения детерминант равен +1. 1 Так как вращения описываются^ умножением матриц, то трехмерные вращения некоммутативны, т. е. порядок умножения будет влиять на конечный результат.Для того чтобы показать это, рассмотрим вращение вокруг оси х, за которым следует вращение на такой же угол вокруг оси у. Используя уравнения (3.6) и (3.7) при 6 = Ф, получим Т = 1 0 0 0" cosO 0 — sin Ф 0 0 COS0 sin 6 0 0 1 0 0 0 — sin 6 cos 6 0 sin Ф 0 cos Ф 0 0 0 0 1_ 0 0 0 1 cos 6 3 sin e 0 - sin2 6 cos 6 cos 6 sin 6 0 e cos е sin е — sin 6 cos2 6 0 * 0 D 0 1
Рис. 3.3. Некоммутативность трехмерных вращений
Обратная последовательность действии, т. е. вращение вокруг оси у и следующее за ним вращение на такой же угол вокруг оси х при 6 = Ф, дает собФ 0 — Б1пФ 0" “1 0 о 0“ 0 1 0 0 0 COS0 sin0 0 т = sin Ф 0 соэФ 0 0 — sin0 COS0 0 0 0 0 1 _ _0 0 0 1 ~ cos 9 sin2 6 — cos 0 sin 6 О 0 cos 6 sin 6 О sin 0 — cos 0 sin 0 cos2 0 0 0 0 0 1 (3.10) На рис. 3.3 для левого верхнего изображения штриховыми линиями показаны результаты двух последовательных вращений, описанных матрицей преобразования (3.9). Изображение, полученное вращениями, выполненными в другой последовательности, описанными уравнениями (3.10), показаны сплошной линией. Из сравнения полученных изображений видно, что при изменении порядка вращения получаются разные результаты. Часто бывает необходимо вращать изображение вокруг одной из осей декартовой системы координат. Соответствующие алгоритмы, описывающие вращения вокруг осей х, у и z, приведены в приложении. В. 3.5. Отображение в пространстве Иногда требуется выполнить зеркальное отображение трехмерного изображения. В трех измерениях наиболее просто отображение осуществляется относительно плоскости. Для отображения без изменения масштабов необходимо, чтобы определитель преобразования был равен —1,0. При отображении относительно плоскости ху изменяется только знак ^координаты z. Следовательно, матрица преобразования для отображения относительно плоскости ху имеет вид "1 0 0 0~ 0 1 0 0 Т = 0 0 — 1 0 (3.11) _0 0 0 1_ Отображение единичного куба относительно плоскости ху показано на рис. 3.4. Для отображения относительно плоскости yz 1 0 0 0" 0 10 0 0 0 10 0 0 0 1
А 1 0 -1 1" 1 0 0 0' W 1 0 11 А* В 11-11 0 10 0 1111 В* С 10-21 0 0-10 10 2 1 С* D 1 1-2 1 ООО 1, 112 1 D* Е 2 0-11 2 0 11 Е* F 2 1-11 2 111 F* G 2 0-21 2 0 2 1 6* I 2 1 -2 1 2 1 2 1 I* Рис. 3.4. Пространственное отображение относительно плоскости ху а для отображения относительно плоскости xz "1 О О О" 0—100 0 0 10 0 0 0 1 (3.13) Алгоритм трехмерных отображений приведен в приложении В. Отображение относительно других плоскостей можно получить путем комбинации вращения и отображения. 3.6. Пространственный перенос Трехмерный линейный перенос изображения определяется выражением "10 0 0 1 0 1 " 0 [X Y Z Н] = [х у z 1] 0 0 1 0 . (3.14) _1 т п 1 _ После перемножения получим [X Y Z И] = [(х + /) (у + т) (z + n) 1 1;
отсюда следует, что х* = -^- = * + /; ^=^ = ^ + т: (3.16) Z* =-^- = z + п. Алгоритм пространственного переноса приведен в приложении В. 3.7. Трехмерное вращение вокруг произвольной оси Метод двумерного плоского вращения вокруг произвольной оси был рассмотрен в параграфе 2.7. Обобщением этого метода является способ вращения около произвольной оси в трехмерном пространстве. Как и для плоского случая, рассматриваемая процедура заключается в переносе изображения и заданной оси вращения, обеспечивающем вращение вокруг оси, проходящей через начало координат. Метод трехмерного вращения заключается в линейном переносе, вращении вокруг начала координат и обратном линейном переносе в исходное положение. Если ось, вокруг которой выполняется вращение, проходит через точку А = = [/ т п 1 ], то матрица преобразования определяется следующим выражением: [X У Z Н] = [х у z 1] х ~ 1 0 0 9" "1000" 0 1 0 0 0 10 0 0 0 10 R 0 0 10 (3.17) — 1 —т —п 1 1 т п 1 где элементы матрицы вращения R размера 4x4 определяются в общем случае соотношением п?-|-(1 — n?)cos0 «^(l —cos 0)-|-Пз sin 6 — cos6) — n3sin0 «1+ (1 — n|)cos0 —» пгПз (1 — cos 0) «2 sin 0 п2Пз (1 — cos 0) — nr sin 0 0 0 П1П3 (1 — cos 0) — n2 sin 0 0 - —» П2»з (1 — cos 0) -j- sin 0 0 ni + (1 — nijcos 0 0 ) 0 1 Определение элемента матрицы вращения R проведено в следующем параграфе.
Соотношения (3.17) и (3.18) можно использовать для'разработки машинных алгоритмов. Такие алгоритмы весьма удобны при проектировании. Это преобразование, а также и другие, проведенные в этой главе, могут быть выполнены аппаратно в дисплее. Алгоритм, основанный на соотношении (3.17), осуществляющий трехмерное вращение в пространстве вокруг произвольной оси, приведен в приложении В. Алгоритмы вращения вокруг осей х, у и z, которые рассмотрены выше, являются частными случаями данного алгоритма. 3.8. Элементы обобщенной матрицы вращения 1 Рассмотрим рис. 3.5; где показана произвольная ось вращения ON, смещенная таким образом, чтобы она проходила через начало координат. Осуществим вращение точки Р на смещенном объекте вокруг этой оси на угол 0. При этом рассматриваемая точка переместится из Р в Р*. На рис. 3.5 PQ = P*Q, и обе эти линии перпендикулярны к OQ. Линия P*S проведена перпендикулярно К PQ. Чтобы определить элементы матрицы R, необходимо выразить координаты точки Р* через три переменные: координаты точки Р, угол вращения 0 и направление оси вращения, представленное единичным вектором п. Направление оси вращения наиболее просто выражается тремя направляющими косинусами: пг = cos а, n2 = cos 0, п3 = = cosjp. Углы_а, р и у указаны на^рис. 3.5, а направляющие Рис. 3.$. Трехмерное вращение вокруг произвольной оси х Этот параграф может быть опущен без ущерба для освоения последующего материала.
косинусы являются тремя омпонент ми единичного вектора п. Для любого произвольного вектора Q = ад <72j + <7зк этот единичный вектор определяется соотношением п = ущ, где । q | — абсолютная величина [вектора, т. е. | Q | = jA/i + <7г + <7з> а, 1, j и к —единичные векторы, отложенные по осям координат х, У и z соответственно. Отсюда следует, что Qi cos а = г 1 ---- = пг; + + cos р = • г—-?8 =г- = п2; cos -у = -77 ,.“3 „=г> = 1ц. Vql + ql + ql Таким образом, единичный вектор задается в виде п = ад -}- «2 j 4- п3к, или в матричной форме n = l«i п2 п3]. Рассмотрим еще скалярное и векторное произведения векторов, необходимые при выводе векторов Р* и Р. Скалярное произведение векторов определяется следующим соотношением: Р - П = | Р 11 п [ cos Ф == | РI cos Ф, где Ф угол между двумя векторами, показанными на рис. 3.5. Полагаем, что Р = [х у z], а п = [«! п2 п3]; тогда скалярное произведение может быть выражено в матричной форме p.n = x«i + z/n2-Pzn3 — [x у z] п2 . -П3- Векторное произведение задается соотношением к ’ п3 Z . М2 П3 .У Z. j П-2 У «1 «3 х z «1 «2 х У . В матричной форме векторное произведение i п х Р = det ftj , Lx = i (ад — Пзу} + j (П3Х — nrz) + k (ад — ад). записывается в виде th . 0. ' О п х Р = [X у Z] —Пз «2 ^3 О — «1 Справедливо также выражение | п X Р | = | п 11Р | sin Ф = | Р | sin Ф, где Ф — угол между двумя векторами.
Следующие три векторных равенства получены с помощью рис. 3.5. Q 4- QP* = р*; (3.19) QP* = QS + SP*; (3.20) Q + QP = р. (3.21) Из выражения (3.21) можно получить вектор QP = (Р—Q). Поскольку модули векторов QP и QP* равны, то длина вектора QS, который направлен по QP, определяется соотношением QS = | QP | cos 0. Таким образом, QS = (Р — Q) cos 0. Используя этот результат и объединяя выражения (3.19) и (3.20), получим Р* = Q + (Р - Q) cos 0 + SP*. (3.21 а) Длина вектора SP* будет SP* = |QP|sin0 = |P-Q|sin0. Направление вектора SP* перпендикулярно плоскости PQN, поэтому оно параллельно вектору пХР. Единичный вектор, в этом направлении определяется соотношением _ пХР _ п X Р |пХР| | Р | sin Ф' Следовательно, вектор SP* = |F^IP-Qlsine’ где | Р | sin Ф — | QP | = |Р — Q|, и, таким образом, SP* = = (nxP) sin0. Уравнение (3.21а) теперь может быть записано в виде P* = Q + (P-Q)cos0 + (n X Р) sin 0. (3.22) Из рис. 3.5 видно, что вектор Q является проекцией вектора Р на ось вращения. Величина Q определяется соотношением Р X п = = | Р | cos Ф, а направление Q — вектором п. Используя равенство Q = (Р'п)п, уравнение (3.22) можно привести к виду -p*==(P.n)n(l — cos0) + Рcos0 + (n X P)sin0. Как и требовалось, это уравнение описывает преобразованную точку через координаты исходной точки, угол поворота и направление оси вращения. Теперь запишем эти результаты в матричной форме. Используя приведенные выше матричные выражения для скалярного произведения (Р-n) и векторного произведения (nX Р), уравнение для Р* можно записать в виде П1 Р* = [х у z] п2 [«! п2 п3](1 — COS0) + [X у Z] X
о х COS 0 + [X Р* = [Х у Z 1] у Z] —ns ^2 П1 П1«2 П1П2 «2 П1П3 П2Пз О О Пз О — П! tlltl3 П2П3 2 Пз О —«2 sin 6; 0_ COS 0) + (3.23) О “1 0 0 0“ - 0 — 0~ 0 1 0 0 — «3 0 0 sin© + 0 0 1 0 COS0 п2 — «1 0 0 _0 0 0 1_ 0 0 0 0_ (3.24) Выражение в вращения R. скобках позволяет получить требуемую матрицу Она может быть приведена к виду (3.18): П14~(1 — Oi)cos0 П1«2 (1 — COS 0) — П3 Sin 0 П1П3 (1 — COS 0) + n2 sin 0 о «1«2 (1 — COS 0) + Пз Sin 0 «2 + (1 — n|)cos0 п2Пз (1 — cos 0) — «1 sin 0 0 (1 — cos 0) — n2 sin 0 0 —> п2Пз (1 — cos 0) -J-- sin 0 0 «3 + (1 — «3) cos 0 0 0 1 Из полученного выражения (3.18) следует, что для выполнения произвольного вращения с использованием уравнения (3.17) необходимо знать координаты точки Р, направляющие косинусы оси вращения [nx п2 п31 и угол поворота 0. В качестве примера рассмотрим вращение вокруг оси z. В этом случае пу = 0, п2 = О, а п3 — 1,0, и матрица R приводится к виду - cos© sin© 0 О- —sin 0 cos 0 0 0 0 0 10 _ 0 0 0 1_ Данный результат согласуется с матрицей, приведенной в параграфе 3.4 для вращения плоскости ху относительно оси г.
3.9. Аффинная и перспективная геометрия Идея описания точки вектором возникла ,из геометрических представлений. Теоремы геометрии развивались как для перспективной, так и для аффинной геометрии. Теоремы аффинной геометрии идентичны теоремам евклидовой геометрии. В ней важными являются понятие параллельности и соотношения между параллельными линиями. Поскольку евклидову геометрию в течение ряда лет преподают в школе, то основанные на ней методы черчения и составления эскизов могут служить графическим средством общения. Аффинное преобразование является комбинацией линейных преобразований, сопровождаемых переносом изображений. Для аффинного преобразования последний столбец в обобщенной "О- матрице преобразования размера 4x4 должен быть равен О О _1 В противном случае, как будет показано ниже, в параграфе 3i.ll, преобразованная однородная координата Н не будет единичной, и нет однозначного соотношения между аффинным преобразованием и матрицей преобразования 4X4. Аффинные преобразования формируют удобную подсистему билинейных преобразований, так как произведение двух аффинных преобразований также является аффинным. Это позволяет представить обобщенную ориентацию системы точек по отношению к произвольной координатной системе при сохранении единичного значения однородной координаты И. Перспективными изображениями часто пользуются художники и архитекторы, так как эти изображения позволяют получить картину, близкую к реальной, однако из-за сложности построений их редко используют конструкторы. В тех случаях, когда для машинного представления изображения используются однородные координаты, одинаково легко могут быть получены как аффинные, так и перспективные преобразования. В перспективной геометрии нет двух линий, параллельных друг другу, и перспективная плоскость может быть рассмотрена как полусферическая поверхность, а перспективное преобразование — как преобразование из одного трехмерного простран ства в другое. Перспективное преобразование имеет место в случае, когда последний столбец обобщенной матрицы преобразования 4X4 не нулевой. Часто перспективное преобразование ассоциируется с построением проекции на плоскости, например, из точки z = clt именуемой центром проекции. Комбинация перспективного преобразования с проекционным образует перспективную проекцию.
Перспективная проекция представляет со о преобразование изображения из трехмерного пространства в двумерное. Если центр проецирования располагается в бесконечности, то перспективная проекция называется аксонометрической. Иными словами, вид проекции зависит от расположения этого центра. 3.10. Аксонометрические проекции Аксонометрическая проекция получается с помощью аффинного преобразования, определитель которого равен нулю. Существуют несколько типов аксонометрических проекций, которые находят применение в начертательной геометрии и инженерной графике. Для получения математических зависимостей, описывающих аксонометрические проекции, используется матрица преобразования размера 4X4, необходимая для проведения аффинного преобразования системы точек. Точки затем проецируются на плоскость из центра проецирования в бесконечности. Классификация общих аксонометрических проекций приведена в табл. 3.1. Таблица 3.1 Аксонометрические проекции Проекция Описание Ортогональная Диметр ическая Изометрическая Матрица преобразования осуществляет только вращение; таким образом, координатные оси остаются ортогональными во время проецирования Две из трех осей во время проецирования одинаково сокращены Все три оси во время проецирования одинаково сокращены Аксонометрические проекции были показаны на рис. 3.2, 3.3. Аксонометрическая проекция из трехмерного пространства на плоскость z = п может быть получена с помощью следующей операции: Г1 0 0 01 0 0 1 о о о о о [XY Z Н]^[ху zl] = к у п 1]. (3.25) L0 0 п 1_ В таком случае [х* у* z* 1 ] = [х у п 1 ]. 'Заметим, что это преобразование представляет собой перенос изображения в направлении z на величину п, обусловленный преобр азованием -1 0 0 0- 0 10 0 т = 0 0 1 0 ’ _0 0 п 1 _
который следует за проецированием из бесконечности в плоскость 2 = 0, заданным преобразованием г-1 0 0 0 0 1 0 0 Т’ = 0 0 0 0 _0 0 0 1_ В результате объединения преобразований Т' и Т" получим матрицу Т"Т', приведенную в уравнении (3.25). Для выполнения операции переноса необходимо переместить плоскость г — 0 в некоторое другое положение. Тогда проекция в плоскости 2 = 0 будет соответствовать проекции в плоскости г — п. Преобразования аксонометрической проекции в соответствующую нулевую плоскость всегда содержат нулевой столбец, соответствующий плоскости проекции. Такие проекции часто называют ортографическими. Их обычно используют в черчении. Примеры аксонометрического проецирования в плоскости х — I и у = т заданы соответственно преобразованиями Как указано в табл. 3.1, матрица преобразования для ортогонального аксонометрического проецирования осуществляет чистое вращение. Этот тип преобразования был рассмотрен в параграфе 3.5. Вспомогательные изображения, используемые в чертежах, являются прямоугольными проекциями. Пример ортогональной проекции единичного куба в плоскости 2 = 0 после поворота на 90° вокруг оси х показан на рис. 3.6. Чтобы получить соотношения для диметрических и изометрических проекций, вспомним, что комбинированные вращения, которые следуют за проецированием из центра, лежащего в бесконечности, являются основой для получения аксонометрических проекций всех типов. Например, рассмотрим вращение вокруг оси у, за которым следует вращение вокруг оси х. С учетом уравнений (3.7) и (3.6) получим
А 0 0 0 1' 10 0 0 хл 0 0 0 1 А* В 0 0 11 0 0 0 0 0 0 0 1 в* С 0 10 1 0-100 0 10 1 с* D 0 111 .0 0 0 1. 0 10 1 D* Е 10 0 1 10 0 1 Е* F 10 11 110 1 F* G 110 1 10 0 1 G* I .1111. .110 1. I* Рис. 3.6. Аксонометрические проекции Перемножая матрицы, найдем следующее выражение: -cos Ф sin Ф sin 0 —sin Ф cos 0 0” 0 cos 0 sin 0 0 [X Y Z Н] = [х у z 1] . „ „ . _ „ . . . sin Ф —cos Ф sin 0 cos Ф cos 0 0 L 0 0 0 1_ (3.26) С помощью этой матрицы преобразования единичный вектор оси х, равный [1 0 0 1], преобразуется к виду [X Y Z Я]=[со8Ф sin Ф sin 0 —sin Ф cos 0 1]; следовательно, х* = cos Ф, у* = sin Ф sin 0, z* = —sin Ф cos 0. При проецировании на плоскость z* = 0 не учитывают координату z*, как это предварительно было показано уравнением (3.25) с п — 0. В результате этого преобразования единичный начальный вектор оси z будет иметь длину |/х*2 г/*2 = |/cos2 Ф (sin Ф sin 0)2. Аналогично единичный вектор на оси у, равный [01011, преобразуется к виду [X Y Z Н] = [0 cos0 sin 0 1 ],
т. е. имеем х* =0, у* = cos 6, z* = sin 0. Длина преобразованного единичного вектора по оси у теперь определяется соотношением l/cos2 0 = |cos 0|. Для того чтобы создать диметри-ческую проекцию, значения двух преобразованных единичных векторов сокращают в равное число раз. Приравнивая значения векторов осей х и у, получим cos2 Ф -t sin2 Ф sin2 0 = cos2 0. Используя тождества cos2 Ф — 1 — sin2 Ф и cos2 0 = 1 — sin2 0, можно записать, что £Ш2ф = Нй^г- (3-27) Если выбранное значение угла Ф удовлетворяет уравнению (3.27), с помощью матрицы в уравнении (3.26) выполняют диметрическое проецирование. Рассмотрим пример диметрического проецирования. Одним способом выбора sin 0 является сокращение оси z в фиксированное число раз. При этом единичный вектор на оси z, равный [0 0 1 11, преобразуется к виду [X Y Z Н] — [sinФ —cos®sin0 совФсозО 1] или х* = sin Ф, у* = — cos Ф sin 0. Уменьшим преобразованный единичный вектор до значения 1/2, полагая . sin2 Ф + cos2 Ф sin2 0 = (1/2)2, или sin2 Ф + (1 — sin2 Ф) sin2 0 = 1/4. С учетом уравнения (3.27) получаем уравнение 8 sin4 0—9. sin2 0+1=0. Оно имеет корни sin2 0 = ±1/8 и sin2 0 = ±1,0, sin 0 = К1/8, или 0 = 20,705°; тогда sin Ф = /(1/8)//(1 — 1/8), или Ф = 22,208°. Теперь можно определить элементы матрицы преобразования в уравнении (3.26). Матрицу преобразования (3.26) после вычисления тригонометрических функций запишем в виде -0,925820 0,133631 —0,353553 о- 0 0,935414 0,353553 0 [X Y Z Н] = [X у z 1] 0,377964 —0,327321 0,866025 0 0 0 0 1_ Соответствующая диметрическая проекция показана на рис. 3.7. Наиболее общей формой является изометрическая проекция. Для ее образования нужно в одинаковое число раз сократить
Рис. 3.7. Аксонометрические проекции все три оси. Для этого необходимо, чтобы выполнялись соотношения cos2 Ф 4- sin2 O sin2 0 = cos2 0 и sin2 Ф + cos2 Ф sin2 0 — cos2 0. Из первого условия получим sin2 Ф = t е , а из второго sin2O= • Отсюда sin20 = l/3, или sin 0 = lZT/3,
a 0 = 35,26439°. Тогда sin2 Ф = = 4 > и ф = 45°. Угол, который проекционная ось х составляет с горизонталью, определяется соотношением tga =--------—• ^ля sinO = = У1/3 имеем sin2 Ф = 1/2, а для cos2 Ф = 1/2 этот угол а == = arctg I—1 = 30°. Поэтому при построении изометрических проекций в качестве чертежного инструмента обычно используют треугольник с углами 30 и 60°. Для изометрической проекции матрица преобразования в уравнении (3.26) имеет вид г-0,707107 0,408248 [X Y Z Н] —[х у z 1] 0 0,707107 0,816597 —0,408248 —0,577353 0-0,577345 0 0,577353 0 0 1_ Пример изометрической проекции также показан на рис. 3.7. Наклонные проекции Кавалье и Кабине не сохраняют ортогональности системы координат. Характеристики этих двух типов проекций приведены в табл. 3.2. Поскольку указанные проекции не часто используют в инженерной практике, то далее их рассматривать не будем. Таблица 3.2 Наклонные проекции Проекции Описание Кавалье Две оси кажутся перпендикулярными и не сокращены; третья ось наклонена по отношению к горизонтали и не сокращена Кабине Частный случай проекции Кавалье, в котором третья ось укорочена в 2 раза Простая ортографическая проекция на нулевую плоскость, перпендикулярную любой из трех ортогональных осей, получается, когда соответствующий столбец в матрице преобразования размера 4x4 содержит все нули. Например, будет получена проекция на плоскость z = 0, если используется следующая матрица: г! 0 0 01 L.0 0 0 1J Алгоритм для реализации подобных проекций приведен в приложении В. Прямоугольная проекция может быть получена путем
использования предварительно представленных алгоритмов пространственного вращения, за которыми следует простой алгоритм, приведенный выше. Алгоритм определения матрицы для характерных диметриче-ских и изометрических преобразований, рассмотренных выше [т. е. уравнение (3.26) с 6 = 20,704811°, Ф = 22,20765° и 0 = == 35,26439°, Ф = 45° соответственно], предназначенный для проецирования на плоскость г = 0, приведен в приложении В. З.П. Перспективные преобразования Как отмечалось выше, ненулевые элементы в первых трех строках последнего столбца матрицы преобразования 4X4 осуществляют перспективное преобразование. Перспективная проекция получается путем перспективного преобразования и проецирования на некоторую двумерную плоскость «наблюдения». Перспективная проекция на плоскость z = 0 обеспечивается преобразованием Г1. О 0-1 \Х Y Z Н] = [х у z 1] = [X у 0 (rz+ 1)]. (3.29) L0 О 0 1J Таким образом, обычными преобразованными координатами являются *__ X __ х х ~ ТГ ~ «4-1 ’ __ ____ о Н «4-1 (3.30) Геометрический смысл этого преобразования может быть проиллюстрирован с помощью рис. 3.8. Исходная точка Р переводится в точку Р* путем рассмотренного выше преобразования при г = 1/k. На рис. 3.8 центр проекции находится в точке с координатами (0, 0, —k), а плоскостью проецирования является 2 = 0. Поскольку упомянутое выше действие не вызывает смещения, то начало координат не изменяется и соотношение между Рис. 3.8. Перспективная проекция точки 0 0 0 1 о
координатами х, у и х*, у* остается тем же самым. Рассматривая подобные треугольники, показанные на рис. 3.8, получим, что Анализ плоскости yz подобным образом даст у‘ = -^— (3.31) -+1 Координаты х*, у* являются преобразованными координатами, которые получены с помощью матричной операции с г = = \/k. Эта операция осуществляет перспективное проецирование на плоскость z = 0 из центра, помещенного в точку z = —k. В перспективном проецировании преобразованное пространство не является ’евклидовым, поскольку ортогональность осей не сохраняется. При достижении точкой k бесконечности, получаются аксонометрические преобразования, рассмотренные выше. Уравнения (3.30) и (3.31) показывают, что при z = 0 х* = х и У* = У- Вследствие этого преобразования точки, расположенные в плоскости наблюдения z = 0, при перспективном проецировании не изменяются. Однако это справедливо только в том случае, когда однородная координата Н является единичной и преобразования применяются к точке [х у z 1]. Так как аффинные преобразования сохраняют для Н значение единицы, то перспективному преобразованию может предшествовать произвольная последовательность аффинных преобразований. Таким образом, чтобы получить перспективные изображения из произвольной точки наблюдения, вначале используют аффинные преобразования, позволяющие сформировать систему координат с осью z вдоль желаемой линии визирования. Затем применяют перспективное преобразование, а проекционное преобразование используют для того, чтобы спроецировать общее положение точек на плоскость наблюдения z = 0 в текущей системе координат. На практике, часто аффинные преобразования применяют также для того, чтобы изменить масштаб и направление проецирования [3.3]. Выше было рассмотрено проецирование на плоскость z = 0. Однако это не всегда может быть удобным. Одной из причин этого неудобства является то, что приТпроецировании|'на плоскость z = 0 теряется информация по координате z, которая может быть полезной при проверке неявно выраженных точек на плоскости [3.4].
Для того чтобы не потерять информацию по координате z, можно использовать перспективное преобразование вида с координатами (х*, у*, z* 77ТГ’ -77ТТ’ 0 <3-33’ X и получить соответствующие результаты в пространстве. Заметим, что начало системы координат [ООО 1 ] снова остается неизменным, а точка [0 0 1 0] в бесконечности на оси z теперь преобразуется в точку [X Y Z Н\ = [0 0 1 г] с координатами (х*, у*, z*, 1) = (0, 0, 1/r, 1) на оси z*. Это означает, что положительная полуплоскость (0 < z < оо) проецируется в ограниченную область (0 с z* с 1/г). Кроме того, линии, которые первоначально были параллельны оси, теперь будут проходить через точку [0 0 1/r 1 ]. Эту точку часто называют, точкой схода перспективного преобразования. Как отмечено выше, если результаты преобразования проецируются на плоскость, получается перспективная проекция. Оказывается, что плоскость z = 0 является проекционной плоскостью, при этом центр проекции находится на той же самой оси, что и точка схода, на одинаковом расстоянии от противоположной стороны нулевой плоскости. Иначе говоря, если точка схода находится в точке z = 1/г на оси z, то Центр проекции находится в точке z = —1/г на той же оси. Это иллюстрирует рис. 3.9. Рис. 3.9. Проекция линии, параллельной оси z
Аналогично, перспективное преобразование [X Y Z Д] = [х у г 1] с координатами (х*, у*, г*, 1) — ( будет приводить к точке 0, 1). Перспективное пр -1000-0 1 0 q ooio у 1)1 (3-34) _0 0 .0 1 _ х у г 1 \ (3 351 w+i’ да+i’ w+i’ схода на оси у с координатами (0, l/q, гобразование - 1 0 0 р - 0 10 0 [X Y Z Н] = [х у z 1] 0 0 10 = [X у Z (рх+ 1)] _0 0 0 1 _ с координатами (Х*, 0*, Z*. 1)=/------------У-г-, ---1) ' а ' 7 \ рх +1 рх 4-1 рх +1 / (3.36) (3.37) приводит к точке схода на оси х с координатами (1/р, 0, 0, 1). Преобразования, заданные уравнениями (3.32), (3.34) и (3.36), называют одноточечными или параллельными перспективными преобразованиями. С их помощью на рис. 3.10, а получены одноточечные перспективные преобразования единичного куба, спроектированного на плоскость z = 0. Точка схода здесь расположена на оси z с координатой z = —10. Более естественное одноточечное перспективное изображение может быть получено путем центрирования плоскости BCGF относительно оси z. Это обеспечивается смещением всех вершин единичного куба на х = —0,5 и у — —0,5 перед применением перспективного преобразования. Результирующая картина показана на рис. 3.10, б. Такое центрированное одноточечное, перспективное изображение часто используют художники. Однако оно может давать искажение глубины изображения, если точка схода отодвигается слишком далеко от его центра. Этим объясняются искажения изображения, которые иллюстрирует рис. 3.10, а. Если два элемента в четвертом столбце преобразования матрицы являются ненулевыми, то получается двухточечная, или угловая перспектива. Двухточечное перспективное преобразо вание Г 1 0 0 рп 0 0 1 0 0 1 [X Y Z Н] = [х у z 1] = [х у z(px+<7y+ 1)] L.0 0 0 1
п ш Г1 о о о 1 = Го оо1 “|а* = 0100 000 0,9 В* ООО “0,1 О 1 о 0,9 С* .0 001J 0101 о* 1001 Е* 1 О 0 0,9 F* 1 1 О 0,9 G* .110 1 JI* а) IV О О О О о 1,11 О 1 1 о 1,11 о 1,11 1,11 1 1 О 1 А* 0 1В* О 1 с* О 1 D* О 1 Е* О 1 F* О 1 G* О ijl* IV -0,5 -0,5 0 1 А* = -0,5 -0,5 -0,5 0 0,9 В* -0,556 -0,5 0,5 0 0,9 С* -0,556 -0,5 0,5 0 1 D* -0,5 0,5 -0,5 0 1 Е* 0,5 0,5 -0,5 0 0,9 F* 0,556 0?5 0,5 0 0,9 G* 0,556 . 0,5 0,5 0 1 I* . °-5 V “0,5 о —Э,5з6 О -0,556 О 0,5 О -0,5 О -0,556 О 0,556 О 0,5 О 1 А* 1 В* 1 С* 1 D* 1 £* 1 F* 1 G* IJl* Рис. ЗЛО. Одноточечное перспективное изображение: с — иецеитрированные координаты; I — векторы положения исходного куба; II — матрица преобразования; III — векторы положения преобразования куба; IV — нормализованные векторы положения преобразованного куба; б — центрированные координаты; I — векторы положения исходного куба; II — матрица смещения; III — матрица Цолучеиия перспективного изображения и проекции; IV — векторы положения преобразованного Куба; V — нормализованные векторы положения
1,2 1.2 -0,5 -0,5 -0,5 -0,5 0,5 0,5 0,5 . 0,5 изображение: 1 К точке схода ' на оси у (у=10) ,F‘ G* л* в* с* D* Е* О О 0,91 0,91 О О о о о о 0,91 0,91 0,83 0,83 0,83 0,83 К точке схода на оси х(х=10) О О о о о о о о 1 1 1 1 А* В* С* D* Е* -0,5 -0,5 0,5 0,5 -0,5 -0,5 0,5 0,5 О О О о о о 1 А* = -0,5 -0,5 0 1 А* 1 В* -0,5 -0,5 0 1 В* 1,1 С* -0,455 0,455 0 1 С* 1,1 D* -0,455 0,455 0 1 D* 1,1 Е* 0,455 -0,455 0 1 Е* 1,1 F* 0,455 -0,455 0 1 F* 1,2 G* 0,417 0,417 0 1 G* 1,2_ I* . 0,417 0,417^ 0 1 V перспективное иецеитрированные координаты; I — векторы положения исходного куба; II Рис. 3.11. Двухточечное а ... ж г, „ . . . . . ___ матрица получения перспективного изображения *и проекции; III — векторы положения преобразованного куба; IV — нормализованные векторы положения преобразованного куба; б — центрированные координаты; I — векторы положения исходного куба; II — матрица преобразования; III — матрица получения перспективного изображения н проекции; IV — векторы положения преобразованного куба; V — нормализован иые векторы положения преобразованного куба
с обычными координатами (А А Л 77+Vh • тт+i+r- ') (3-39) приводит к двум точкам схода: одна расположена на оси х, в точке с координатами (1/р, 0, 0, 1), а другая — на оси у, в точке с координатами (0, \!q, 0, 1). Это показано на рис. 3.11, а, где результаты проецируются на плоскость z — 0. На рис. 3.11, а точками схода являются точка на оси х с координатой х = 10 и точка Рис. 3.12. Трехточечное перспективное изображение: I — векторы положения исходного куба; II — матрица преобразования; III — векторы положения преобразованного куба; IV — нормализованные векторы положения преобразованного куба на оси у с координатой у = 10. Если мы сначала отцентрируем ось z по •отношению к фронтальной плоскости, как показано на рис. 3.11,6, то приемлемой двухточечной перспективы пока не получим. Поэтому,, чтобы получить наглядную двухточечную перспективу, изображение необходимо сначала повернуть относительно оси у. Эта операция будет рассмотрена ниже. Если три элемента 4-го столбца матрицы 4Х 1 преобразования ненулевые, то получается трехточечная, или косая перспектива. Трехточечное преобразование Г 1 0 0 рп 0 0 1 0 0 1 я г [X Y Z Н\ = \х у z \\ [х у z(px + qy + rz-\- 1)] L0 0 0 1 J (3.40)
с обычными координатами (х*, у*, z*, 1) = ______х______ у ___________________z______ j px + qy+'rz+l ’ рх 4- ду 4- гг ’ рх 4- qy 4- rz 4- 1 ’ (3-41) приводит к трем точкам схода: одна на оси х с координатами (1/р, 0, 0, 1), другая на оси у с координатами (0, l/q, 0, 1) и третья на оси z в точке с координатами (0, 0, 1/r, 1). Трехточечное изображение единичного куба показано на рис. 3.12. Результаты проецируются на плоскость г = 0. На рис. 3.12 точки схода расположены на оси х в точке с координатой х = 10, на оси у в точке с координатой у = 10 и на оси z в точке с координатой z = —10. » 3.12. Способы получения перспективных изображений При получении перспективного изображения относительную линию горизонта обычно располагают на уровне глаз, как это показано на рис. 3.13- Точки схода в этом случае располагаются Рис. 3.13. Получение перспективного изображения на бумаге: 1 — глаз; 2 — бумага; 3 — плоскость изображения; 4 — предмет на линии горизонта (уровень глаз), на которой параллельные линии сходятся в одной точке. На рис. 3.14, а показано, как образуются точки пересечения. Вообще, различные параллельные линии будут иметь различные точки схода. Это иллюстрирует рис. 3.14, б. Плоскости изображения, наклонные относительно опорной плоскости, имеют точки схода, которые могут распо
лагаться выше или ниже уровня горизонта (глаз). Ути точки, показанные на рис. 3.14, в, часто называют следом точек. При использовании дисплея с катодно-лучевой трубкой положение точки наблюдения или глаза обычно фиксировано. В этом случае для получения требуемого перспективного изображения можно манипулировать положением и ориентацией изображения Рнс. 3.14. Точки схода и точки следа параллельных линий на катодно-лучевой трубке. Для этого необходимо выполнить один или несколько поворотов и одно или несколько смещений объекта. Таким образом, если точка наблюдения расположена на линии, перпендикулярной к передней грани единичного куба в ее центре, то одноточечная перспектива «выглядит правильно». В этом изображении все боковые плоскости пересекаются в одной точке схода на горизонтальной линии, расположенной на уровне глаз, а все перпендикуляры будут проведены как истинные вер
тикали. Фронтальная и задняя плоскости куба параллельньГпло-скости изображения и не пересекаются. Будем теперь вращать единичный куб вокруг оси у и смещать его к точке [0 ni п]. Результирующая фигура будет наблюдаться из точки k, расположенной на оси z, и окончательно проецироваться на плоскость z = 0. Применение уравнений (3.7), (3.11) и (3.29) при г = \!k дает г cos 0 0 —sin 0 0 1 0 sin 0 0 COS0 _ -о т п 0 ~1 0 0 0 “ 0 0 10 0 0 0 0 0 4- К 1 -* 0 0 0 1 cos 0 0 0 О 1 О sin 0 О О О т О sin 0 k О cos 0 k~ Т-+ 1 Поскольку необходима проекция на плоскость 2 = 0, третий столбец матрицы преобразования будет нулевой. Заметим, что. два из трех элементов в четвертом столбце, которые определяют перспективу, ненулевые. Таким образом, будет получено двухточечное перспективное изображение. Восемь вершин единичного куба, выраженные в однородных координатах, могут быть представлены в виде матрицы размера 8X4. Перемножение данной матрицы и вышеупомянутой матрицы обеспечивает необходимые преобразования над каждой точкой. Данное положение можно представить в виде следующего выражения: “0 0 0 0 0 1 0 1 1 0 1 о 1 0 0 1 0 1 1 1 1 _1 1 о 1 1 1 1 1 1 1 cos 0 0 0 1 sin 0 0 0 т sin 0 0 0 cos 0 0 k 0 '-Т+1
0 m 0 sin 6 sin 6 m 0 cos 0 . n . , -fe~ + ~k + 1 COS 0 , n ( , k 1 k 1 = 0 cos 6 cos0-|-sin 0 cos 0 sin 0 COS0 1 m 0 m 0 m 0 1 + m 0 1 + m 0 — sin k sin 0 k + sin 0 , + - ~ Ф e -I c 1 1 Ф о "г 4- S 8 ®i ° ° • k 1 — sin k 1 CT> + ar ф _ i л г । Для 0 = 60°, т = Е ных однородных КОО i, n = 1 и k эдинат имеет “0 —2 0,86 —2 0,86 —1 0 —1 0,5 —2 1,36 —2 1,36 —1 0,5 ' —1 = 1 эта г вид 0 2“ 0 2,5 0 2,5 0 2 0 1,14 0 1,64 0 1,64 0ч 1,14_ матрица преобразован- Поскольку [х* у* 1] — (х*, У*) задаются матрице: X Y . H H X -1 , TC проецируемые точки “О —1,0 ~ 0,344 —0,8 0,344 —0,4 0 —0,5 0,44 —1,75 0,83 —1,22 0,83 —0,61 0,44 —0,88
Подобного рода преобразование куба показано на рис. 3.15. Обратим внимание на то, что произошло с параллельными сторонами куба. Линии, которые первоначально были параллельны соответственно осям хи г, теперь пересекаются в одной из двух точек схода. Пересечение исходных параллельных линий происходило в бесконечности. Теперь они пересекаются в определенных точках, расположенных на оси х*. Линии, первоначально параллельные оси у, остаются параллельными и после преобразования. Трехточечная перспектива с точкой наблюдения k на оси г может быть получена посредством выполнения вращений около двух различных осей. Например, изображение перед выполнением перспективного преобразования сначала можно было повернуть на угол 0 вокруг оси у, а затем на Ф вокруг оси х. Полный комплекс преобразований единичного куба для получения трехточечной перспективы определяется следующим выражением:
О — 1/6 sin 6 cos Ф О 1/6 51пФ О 1/6 cos 0 cos Ф л /1 I m sin Ф.+/sin 6+ncosO 3.13. Точки в бесконечности Чтобы показать более ясно, что происходит в точках в бесконечности, рассмотрим следующий пример. Пример 3.1. Перспективное преобразование. Пусть три точки заданы коор- Таким образом, точка х=оо преобразуется в точку с координатами х* = = 0,5/(—0,86) = —0,58 и у * — 0, котораи является точкой схода VP1 на рис. 3.15. Точка у = оо преобразуется в у* = оо, а точка г = оо преобразуется в точку с координатами х = 0,86/0,5 = 1,7 и к* = 0, которая является точкой схода VP2 на рис. 3.15. В результате за счет использования однородных координат точки в бесконечности в одной системе координат преобразуются в определенные точки в другой системе. Для лучшего уяснения этой важной характеристики однородных координат рассмотрим преобразование линии, параллельной оси г, на плоскости x*z*. Применение матрицы перспективного преобразования к произвольной точке на линии АВ, изображенной на рис. 3.9, дает г1 0 0 0 -1 0 10 0 [X Y Z Н\ = [х у z 1] 0011/6 = [xyz (|+ 1)], L0 0 0 1 _ причем (х*, у*, Z*, 1) = (- х у 2 , л 9 Z . , , Л. »+ k +1 k +1 )
Эта операция (при k — Mr) преобразует АВ в линию А*В*, также показанную на рис. 3.9. Линия А*В* лежит на прямой, которая проходит через точку схода с координатами (0, 0, k). Если координата z не учитывается, то линия А* В* проецируется на плоскость г* — 0, при этом получаем линию А'В'. В результате образована проекция линии АВ на плоскость г* = 0 с центром в точке [0 0 —k]. Обратим внимание на симметричность точки схода и центра 'проекции. Алгоритм, который обеспечивает получение данного перспективного изображения, приведен в приложении В. 3.14. Восстановление трехмерной информации Восстановление трехмерного изображения или его положения в пространстве является общей проблемой. Эта проблема часто встречается при работе с чертежами, которые обычно представляют собой ортографические проекции. Метод восстановления трехмерного изображения или его положения по двум или более видам проекций, расположенным на чертеже, хорошо известен конструкторам. Метод же восстановления трехмерного вектора положения по двум перспективным проекциям, например по двум фотографиям, не столь хорошо известен. Очевидно, если метод пригоден для перспективных проекций, то он также подходит и для простейших ортографических проекций и фактически для всех видов проекций, рассмотренных выше. Однако, как мы увидим ниже, при наличии некоторой другой информации требуются косвенные сведения о преобразовании. Напомним, что перспективное преобразование в общем случае может быть представлено с помощью матрицы размера 4x4 в виде [х у z l]T = [Х Y Z Н], (3.42) где Г7'1 т\2 Т\з T’vr ТЪ т22 Т'23 Т24 Т' = Т'з2 Т'зз Т'з4 -П1 Т’и2 Т43 Т44- Результаты могут быть спроецированы на плоскость, например 2 = 0, с помощью уравнения (3.28), т. е. путем использования матрицы преобразования - 1 0 0 0 - 0 10 0 0 0 0 0 -0 О 0 1 _
Произведение двух матриц Г ти Л-2 0 Г14-1 Т-21 Т-2Я 0. Т24 Т31 Т32 0 T3i (3.43) Lt41 Т*2 0 С помощью матрицы можно записать преобразование в виде Г 711 т13 0 Л4~1 ^21 722 0 Т24 = [Х У 0 1] (3-44) [х у z 1] 7^31 Т32 0 ^34 Lt41 7^42 0 7^44 - или [X У 0 1] = [х* у* 0 1]. (3.45) Заметим, что х* и у* являются координатами в перспективной проекции на плоскость 2 = 0. Такая же процедура может быть выполнена при использовании проекций на плоскости х = 0 или у = 0. Раскрывая уравнение (3.45), получим Тцх Ч- Т-21У " г ^siz " г ^4i — fix*', (3.46а) Т12х + Т^у + T32z + Г42 = ///=; (3.466) Тих + T2iy + ТМ2 + = И. (3.46в) Подставляя значения Н из уравнения (3.46в) в соотношения (3.46а) и (3.466), находим (Л1 - Л4х*) х + (721 - 721х*) у + (Tsl - Т^х*) г + (Т41 - Т44х*) = 0; (3.47а) (Л-2 - V) X + (Т22 - Т^у + (Тз, - Т^у*} z + (Т42 - V) = 0. (3.476) В соответствии с предложением Сазерленда [3.9], эту пару уравнений можно рассматривать для трех различных случаев. В первом случае предполагается, что Т и х, у, z известны. Тогда ’имеем два уравнения с двумя неизвестными х* и у*. Эти уравнения могут быть использованы для решения непосредственно в координатах перспективной проекции. Этот подход применялся в предыдущих примерах данной главы. Во втором случае поочередно могут быть приняты известными Т, х*, у*. При этом имеем два уравнения с тремя неизвестными координатами х, у, z. Такая система уравнений не имеет единственного решения. Однако, если имеются две перспектив
ные проекции в виде двух фотографий, то уравнение (3.47) может быть записано для обеих проекций: (T'h - Т}^’1) х + (П - Т'24х*')у + + (Th - Т^х'1) z + (Th - TV1) = 0; (Тщ — ') X -|- (Т22 — т\^у *) у -|- + (Th - Tht/*1) 2 + (Th - TV) = 0; ' (Th - tV2) x + (Th - Th/2) у + + (Ti> - Th/2) 2 + (Th - Th/2) = 0; (t!2-tV2)x + (t22-tV2)^ + 4" (^32 — Tlty 2) 2 -|- (T42 — Т44У 2) = 0. Здесь верхние индексы 1 и 2 означают первый и второй виды перспективной проекции. Заметим, что преобразования Т1 и Т2 не должны быть одинаковыми. Эти уравнения могут быть пере- писаны в матричной форме: АХ = В, (3.48) где tL-tV1 Т\2-Т\^1 Т2п - Т^х 2 rh-rV1 rh-rV1 T2i - Tf4/2 Th - V “ Th-Tht/*1 Th-rV2 ; ггй -тй *2 _ Т12 — 1\4у X’ B’MTV-rh tV1 ^2 rp2 *2 1 22 — 1 24У = [X У z]; - 7h/2 T232 -TV2_ -Th T^’2-ThJ. Уравнение (3.48) распадается на четыре уравнения с тремя неизвестными координатами х, у, г. Его решение может быть получено только приближенно методом подбора *. Итак, получен очень эффективный метод определения координат трехмерного изображения. Пример 3.2. Трехмерное восстановление. Предположим, что положение точки в одной перспективной проекции определяетси координатами (0,3763; —0,8258; 0; 1), а в другой — координатами (0,6548; 0; 0,2886; 1). Первое преобразование перспективной проекции является результатом поворота изображения на 30° 1 Среднеквадратичная оценка может быть вычислена на основе решения уравнения вида АТАХ = АТВ, где АТА — квадратная матрица. Можно получить, что X = [АТА] 1АТВ. Заметим, что если решение не получается, то наложенные условия являются избыточными, и единственного решения, которое обеспечивает минимум квадрата ошибки, не существует.
вокруг оси у, за которым следует поворот на Ь " около оси х и смещение на две единицы в отрицательном направлении по оси у. Точка проекции находится на оси z с координатами (0, 0, 1). В результате получаем проекцию изображения на плоскости г = 0. Другая перспективная проекция является результатом поворота изображения на 30° вокруг осей х и у. Точка проекции находится на оси у с координатами (0, 1, 0). В результате получаем проекцию изображения на плоскости у = 0. Матрицы Т1 и Т2 получаются в виде “ 0,5 0 0 —0,867 - -0,867 0 —0,5 о - тг = 0 1 0,867 0 0 0 0 0,5 иТа = 0,25 0 0,433 0,433 0 0,75 0,867 —0,5 _0 —2 0 2 _ _0 0 0 1 _ Тогда матрица А имеет вид - 0,826252 0 0,67885 -1 Л- —0,715969 0,867 1 0,4129 —0,317712 0,7604 _ —0,5 0,182784 —0,8943 _ И Ет = [0,7526 0,3484 0,6548 0,2886]. Решение дает точку X = [0,5 0,5 0,5], т. е. центр единичного куба. Алгоритм, на котором основан этот метод, приведен в приложении В. В третьем случае используется уравнение (3.47). Отметим, что, если в перспективной проекции известно расположение нескольких точек на поверхности изображения, то можно определить элементы преобразования Тц. Эти элементы преобразования далее можно применять для определения положения неизвестных точек на основе описанного выше метода. Чтобы убедиться в этом, вновь обратимся к уравнениям (3.46), которые перепишем в виде ТцХ -{- Т2^у -J- TgyZ -]- 741 — 1\$хх* — Т^ух* — Т^х* — Т44х* — 0; (3.49а) ТцХ -|- Т22у + TS2z -|- Т42 — Тиху* — Т.^уу* — T^zy* -|- Т4^у* = 0. (3.496) Если положить, что х*, у* и х, у, z известны, то уравнения (3.49) будут содержать 12 неизвестных элементов преобразования Tq. Применение этих уравнений к шести известным некомпланарным размещениям на поверхности изображения и на перспективной проекции даст систему из 12 уравнений с 12 неизвестными. Эти уравнения могут быть решены относительно Ttj. Таким образом, преобразование будет определено. Заметим, что
в этом случае не тре уется заранее знать преобразование. Если, например, перспективные проекции являются фотографиями, то ни положения, ни ориентации фотокамеры знать не требуется. В матричной форме система 12 уравнений может быть запи- сана в виде Xi 0 —XiXi У1 0 —ухх* 21 0 —ZlXi 1 0 Xi Tn 0 Xi —Xiyi 0 У1 * —У\У\ 0 ?1 —Ziyr 0 1 У1 тХ2 Х2 0 —Х2Х2 Уг 0 —у2х2 22 0 —Z2X2 1 0 X2 714 0 х2 —х2у2 0 У2 —У2У2 0 22 —z2y2 0 1 У2 т2Х Хз 0 —Х3Х3 № 0 —УзХз 23 0 —гзУз 1 0 xl т22 0 Хз —ХзУз 0 Уз —УзУз 0 23 —z3t/3 0 1 Уз Т24 х4 0 —Х4Х4 У* 0 —У4Х4 24 0 —Z4X4 1 0 X4 73i 0 х4 • Х4У4 0 У4 —У4У4 0 24 —Z4y*4 0 1 У4 732 х5 0 —Х5Х5 Уб 0 —УзХз 25 0 —Z5X5 1 0 X5 Т34. 0 х5 —ХзУз.. 0 Уб —УбУб 0 25 —г5уз 0 1 Уб Л1 х6 0 —Х6Хв Ув 0 —УбХв 26 0 —Z6X6 1 0 Хб 712 _ 0 х6 —ХбУв 0 Уб —УбУб 0 26 —Zeye 0 1 Уб_ _ Т 44 — (3.50) где индексы соответствуют точкам с известными координатами. Уравнения (3.50) могут быть записаны в более компактной форме: А'Т = 0. Поскольку уравнения (3.50) однородные, они будут содержать произвольный масштабный коэффициент. Следовательно, элемент Тм, например, может быть принят равным единице, а результирующее преобразование нормализовано. При этом система сводится к 11 уравнениям. Если преобразование нормализовано, то последний столбец в А' перемещается в правую часть, и однородное матричное уравнение решается. Пример 3.3. Элементы для восстановления. В качестве частного примера рассмотрим единичный куб с шестью известными координатами его вершин, заданными в виде ~0 0 0“ Р = 0 0 1 0 1 1 0 1 0 > 1 о о 1 0 1
соответствующие точки в преобразованной форме представляются соотноше- нием - 0 —1 “ 0,344 -0,8 р* = 0,344 0 -0,4 -0,5 • 0,44 - -1,75 0,83 - -1,22 Тогда уравнение (3.48) принимает вид 0 0 0 0 0 0 0 0 0 1 0 0 Л1 0 0 0 0 0 0 0 0 0 0 1 0 Лг 0 0 0 0 0 0 1 0 0 1 0 1 714 0 0 0 0 0 0 0 1 0 0 1 0 Тп 0 0 0 1 0 —0,344 1 0 —0,344 1 0 0,344 Т 22 0 0 0 0 1 0,4 0 1 0,4 0 1 —0,4 Г 24 = 0 0 0 0 1 0 0 0 0 0 1 0 0 Т31 0 0 0 0 1 0,5 0 0 0 0 1 —0,5 т 32 1 0 —0,44 0 0 0 0 0 0 1 0 0,44 Г84 0 1 1,75 0 0 0 0 0 0 0 1 —1,75 Лг 1 0 —0,83 0 0 0 1 0 —0,83 L 0 0,83 _0 1 1,22 0 0 0 0 1 1,22 0 1 —1,22_ Г 44 Решение даст - 0,867 - 0 -0,5 0 1 0 Т 0,5 • 0 0,867 0 —2 2 Алгоритм, реализующий этот метод, приведен в приложении В. 3.15. Стереографическая проекция После того, как объект установлен в данное положение, можно использовать различные способы его наглядного представления. Такие способы, как штриховка, раскраска и др., определяются
Рис. 3.16. Стереоскоп Рис. 3.17. Стереографические перспективы возможностями используемых технических средств и в книге не рассматриваются. Другие же способы, такие как стирание открытых линий или кадрирование изображения, могут быть реализованы с помощью ' программных или аппаратных средств. Еще один возможный путь получения наглядного пространственного изображения — это использование стереоскопа. Причем часто стереографическая проекция оказывается предпочтительнее других видов изображения. Графическое представление инженерных сооружений — мостов, башен оказывается более наглядным в стереографической проекции. Следовательно, для существенного улучшения восприятия пространственных изображений, таких как системы трубопроводов, архитектурные сооружения, медицинская рентгенография, структура органических молекул и кристаллических решеток, следует использовать стереографические проекции. В стереографической проекции каждым глазом необходимо рассматривать отдельный перспективный вид. Стереоскоп, показанный на рис. 3.16, может быть использован для наблюдения отдельных трехмерных объектов. При необходимости с помощью стереоскопа можно наблюдать пространственные изображения на дисплее, подключенном к вычислительной машине. Для человека со средним зрением наиболее сильный стереоэффект появляется при расположении изображения перед глазами на расстоянии около 50 см. Так, для расстояния между глазами в 5 см стереоугол е == arctg (5/50) = 5,71°. В стереоскопе обозначим через d масштабное расстояние между глазами
(см. рис. 3.17). Если окуляр стереоскопа имеет фокальное расстояние k единиц, то величина d определяется условием arctg (4) = 5,71°. Таким образом, для того чтобы выдержать точное значение стереоугла е, требуется величина d — &/10.Чтобы обеспечить такое масштабное расстояние, при создании перспективного изображения для левого глаза требуется горизонтальное смещение объекта на -^-dl2 = Ц-&/20, а для правого глаза необходимо горизонтальное смещение на —d/2 — —Л/20. Перед получением стереографической проекции целесообразно отцентрировать объект по отношению к оси г, а затем повернуть его вокруг оси у для обеспечения двухточечной перспективы или вокруг осей у и х для обеспечения трехточечной перспективы. Следует всегда помнить, что при вращении некоторые точки изображения могут оказаться за точкой наблюдения г — k. При этом происходит искажение проекций. Чтобы предотвратить данное явление, можно сделать еще одно смещение в отрицательном направлении по оси г так, чтобы обеспечить расположение точки непосредственно в плоскости х*у* или за ней, т. е. ~г* < 0. Указанные операции приведут к новым векторам положения точек, описывающим преобразованное изображение. Для создания стереопары матрицу, содержащую новые векторы положения, преобразуют с помощью следующих двух матриц: для левого глаза для правого глаза одно для левого глаза, а другое — для правого. На этом промежуточном этапе изображение для левого глаза будет расположено справа от начала координат, а изображение для правого глаза — слева, как показано на рис. 3.18. Наконец, последняя операция должна смещать два перспективных изображения на надлежащее расстояние вдоль оси х для размещения каждого изображения непосредственно перед соответствующим глазом. Как показано на рис. 3.18, (х*)Л является средним между наибольшим и наименьшим значениями хД, a (x*)L — среднее значение между наибольшим и наименьшим значениями х£. Положим D = (x*)L — (х*)^. Тогда для вычисления величины D необходимо найти нормализованные значения х* для каждой перспективной проекции. Окончательное горизонтальное смещение изображения в направлении оси х на L — D + (Е — D)/2 для правого глаза и на
I левый глаз Правый глаз Рис. 3.18. Вспомогательное стереоизображение, полученное: I — правым глазом; II — левым глазом —L для левого глаза обеспечивает требуемое положение стереопары. Величина Е — это расстояние между глазами человека-наблюдателя, которое измеряется в масштабе выхода прибора. Например, если точки для правой проекции расположены в диапазоне 2 < хД с 4, а для левой проекции — в диапазоне —4 с < x*L < —2, то эти две проекции можно изобразить графически на обычном листе бумаги, используя размер в 10 см для —5 < < х* < 5. Значит, действительное расстояние в 5 см между глазами человека, измеренное относительно этого масштаба, должно быть около Е = 2,5. Для определения наилучшего значения Е могут понадобиться одна или две итерации. Алгоритм получения стереопары объекта, который приходится перемещать и вращать для получения желаемого изображения, приведен в приложении В. При вычислениях используются представленные выше левая и правая матрицы стереопары, а .также матрица преобразования для получения требуемого разделительного расстояния между глазами. На рис. 3.19 показан пример стереоизображения несложного пространственного проволочного каркаса, полученного с помощью подпрограммы STEREO на основе алгоритма, приведенного Рис. 3.19. Простая стереопара
в приложении В. Вектор положения, описывающий проволочный каркас, имеет, вид ” 0 0 0” 1 0 0 1 0 1 1 1 1 0 1 1 0 12. 0 0 2 —10 2 —10 0 —1 1 0 0 1 0 До вызова подпрограммы STEREO эти данные преобразованы с помощью подпрограммы 3DTRANS (приложение В, параграф В. 10) при I = —0,5, т = —1,5 и п = —0,5. Затем был выполнен поворот на 20° вокруг оси у для подготовки плоского изображения. Для этой операции была использована подпрограмма 3DYROT (приложение В, параграф В.7). Расчеты на ЭВМ показали, что максимальное значение z = 1,9226. Затем снова была использована программа 3DTRANS с параметрами I = 0, т = 0 и п =--• —1,9226 для того, чтобы поместить объект позади плоскости х*у*. Далее использовалась подпрограмма STEREO (приложение В, параграф В.17) с параметрами k = 4 и Е — 2. Полученная стереопара показана на рис. 3.19. При этом было проведено общее изменение масштаба для сопряжения поля изображения с используемой запоминающей катодно-лучевой трубкой. СПИСОК ЛИТЕРАТУРЫ 3.1. Roberts, L. G., «Homogeneous Matrix Representation and Manipulation of N-Dimentional Constructs», Document MS 1405, Lincoln Laboratory, M.I.T., Cambridge, Massachusetts, May 1965. 3.2. Ahtija, D. V., and Coons, S. A., «Geometry for Construction and Display», IBM Syst., J., Vol.7, Nos. 3 and 4, pp. 188— 205, 1968. 3.3. Woodsford, P. A., «The Design and Implementation of the GINO 3D Graphics Software Package», Software-Pract. Ex-per., Vol. 1, 1971. 3.4. Woodsford, P. A., «GINO — Design and Implementation», CAD Group Doc. 27, UML, Cambridge University, 1969.
3.5. Coons, S. A., «Transformation and Matrices», unpublished notes, University of Michigan Short Course in Computer Aided Design, 1971. 3.6. Forrest, A. R., «Co-ordinates, Transformations, and Visualization Techniques», CAD Group Doc. 23, Cambridge University, June 1969. 3.7. Forrest, A. R., «Computational Geometry», Proc. Roy. Soc. (London), Vol. A321, pp. 187—195, 1971. 3.8. Kubert, B., Szabo, J., and Giiilieri, S. «The Perspective Representation of Functions of Two Variables», J. Assoc. Comput. Mach., Vol. 15, 2, pp. 193—204. April 1968. 3.9. Sutherland, 1. E., Three Dimentional Data Input by Tablet», Proc. IEEE, Vol. 62, 2, pp. 453—461, April 1974.
Глава ПЛОСКИЕ КРИВЫЕ I 4.1. Введение В настоящее время для построения кривых вручную применяется множество различных способов. Необходимый для этого инструмент может быть выбран из широкого разнообразия карандашей, ручек, кисточек, ножей и т. д. Для вычерчивания кривых используют циркули, линейки, обычные лекала, корабельные лекала, плазы, шаблоны и многие другие механические устройства. Кроме того, можно использовать модели, цветные диаграммы и перспективные сетки. В этой главе рассмотрены принципы, которые оказываются удобными при построении кривых на плоскости методами машинной графики. В предыдущих двух главах было описано преобразование точек. Как известно, кривая может быть представлена совокупностью точек при условии, что. они близко расположены друг к другу. Однако математическое описание кривой имеет ряд преимуществ по сравнению с ее представлениями с помощью ряда точек. Перечислим основные из этих преимуществ. 1. Математическое описание является точным, так как оно позволяет легко вычислить такие характеристики кривой, как наклон и радиус кривизны. 2. Математическое описание можно в компактном виде хранить в памяти машины. 3. Изображение может быть легко воспроизведено, если оно представлено математически в ЭВМ в виде алгоритма. 4. При аналитическом определении кривой в интересующей нас области отпадает необходимость в интерполяционной схеме для нахождения промежуточных точек. 5. Использование точек для представления кривых вызывает трудности, если для удовлетворения некоторому заданному критерию необходимо непрерывно изменять форму кривых. В этом случае математическое представление кривых оказывается более приемлемым. Теперь рассмотрим различные методы математического описания кривых на плоскости.
4.2. Непараметрические кривые Математически кривая может быть представлена в параметрической или непараметрической форме. Непараметрически кривая описывается в виде явной или неявной функции. Для плоской кривой явное параметрическое выражение имеет вид У = Цх). (4.1) В этой функции для каждого значения х существует только одно значение у, поэтому явная функция не может представлять замкнутые или многозначные кривые. Это ограничение можно преодолеть, используя неявную функцию f (х, у) = 0. (4.2) а Точка на неявном криволинейном сегменте может быть определена вычислением корня алгебраического уравнения. Определение корней неявных кривых иногда требует громоздких расчетов. Как явные, так и неявные непараметрические кривые зависят от вида описывающих их координат. Следовательно, простота описания кривых и вычисления их характеристик определяется выбором системы координат. Тем не менее, несмотря на отмеченные затруднения, непараметрические кривые широко используются [4.1, 4.2]. При этом различные виды кривых описываются несложными уравнениями второй и третьей степени. С математической точки зрения, определение кривой по известному расположению ряда точек представляет собой задачу интерполяции. С помощью полиномиальной интерполяции можно обеспечить прохождение кривой через все известные точки. Для этого требуется определение коэффициентов полинома некоторой степени. Истинная форма кривой между заданными точками зависит от порядка полинома и от известных граничных условий. Можно представить и иную задачу, когда значения точек заданы с некоторой конечной точностью и требуется определить кривую, которая описывает «правильное» направление изменения данных. Вообще, эта кривая может проходить только через некоторые из многих заданных точек, но может и не проходить ни через одну из них. Подобная задача возникает, когда необходимо определить кривую на основании экспериментальных данных или результатов измерений, полученных каким-либо другим способом. Эта интерполирующая кривая дает оценочные значения во всем рассматриваемом диапазоне. Когда заданные точки содержат существенную неопределенность, применяют метод наименьших квадратов. Этот метод минимизирует сумму квадратов отклонений по оси у между наблюдаемыми и оцениваемыми значениями. Функцию у = f (х) выбирают на основе экспериментальных данных исследуемого процесса.
При методе наименьших квадратов обычно используют явные непараметрические степенные и экспоненциальные функции, а также полиномы. Степенная функция может быть представлена как у = ахь, а экспоненциальная функция в виде у = аеЬх, где а и b — константы. Аппроксимирующий полином ищут в виде у = сг 4- с2х 4- сях2 4- 4- сп+1хп. Независимо от выбора не- линейной функции при использовании метода наименьших квадратов для определения неизвестных констант и аппроксимирующего уравнения требуется решение системы линейных алгебраических уравнений. Большинство вычислительных средств содержит программы для нелинейной интерполяции методом наименьших квадратов. В работе [4.3] на языке БЕЙСИК описан хорошо обоснованный алгоритм, реализующий этот метод. Далее в данной главе рассматриваются плоские кривые, которые проходят через заданные точки. Общий вид явного уравнения второй степени записывается как 'ах2- 4- 2Ьху 4- су2 4- 2dx 4- 2еу 4- f = 0. (4.3) Определяя постоянные коэффициенты a, b, с, d, е, f, можно получить различные плоские кривые. Для установления частных видов кривых, проходящих через специальные точки, как это будет показано ниже, используются граничные условия. Если в общем уравнении (4.3) выбрать с — 1, то для определения криволинейного сегмента между двумя точками (чтобы определить величины оставшихся пяти коэффициентов) нужно задать пять независимых условий. При каждом., выборе необходимо задавать положение двух концевых точек сегмента, его наклон в каждой из них и промежуточную точку, через которую должна проходить кривая. Если положить b = 0 и с = 1, то аналитическое описание результирующей кривой определяется с помощью лишь четырех дополнительных условий: необходимы две концевые точки и два концевых наклона. Если положить а = 1, b = 0 и с = 1, то гладкая простейшая кривая будет определена. В таком случае кривая описывается соотношением х® 4- У2 + 2dx 4- 2еу 4- f = 0. (4.4) Тремя условиями, необходимыми для нахождения d, е и f, здесь могут быть две концевые точки и либо наклон начала, либо наклон конца криволинейного сегмента. Можно также задавать две концевые точки и одну внутреннюю точку, через которую должна проходить крйвая. Если положить а = b = с = 0, то получается прямая линия. В этом случае уравнение (4.4) будет иметь вид 2dx 4- 2еу 4- f = 0, (4.5)
или з/= -(-г)* -lF = mx+b' (4-6) где т — наклон прямой линии. Величины т и b определяются двумя концевыми точками линии. Для создания точки перегиба в криволинейном сегменте необходимо использовать кривую более высокого порядка, например кубическую. Форма этой кривой может выражаться соотношением a+bx+cx2 -\-dx3 — у =0. (4.7) Значения четырех коэффициентов определяются двумя концевыми точками., и наклонами в них. При использовании осезависимых непараметрических кривых возникают сложности, если кривая в концевой точке имеет вертикальный наклон относительно выбранной системы координат. Этот неопределенный наклон не может быть использован в качестве граничного условия. В этом случае необходимо изменить систему координат или аппроксимировать неопределенный наклон наибольшей допустимой положительной или отрицательной величиной. Кроме того, если точки на осенезависимой непараметрической кривой вычисляются с равным приращением по х, то они не будут распределены равномерно вдоль кривой. Это может повлиять на качество и точность графического изображения. Трудности могут быть преодолены при использовании параметрических кривых для машинного построения графических изображений. 4.3. Параметрические кривые В параметрической функции каждая координата точки на кривой представляется как функция одного или большего числа параметров. Для кривой с одним параметром вектор положения точки на кривой определяется одним значением параметра. Если t — параметр, а кривая плоская, то ее можно записать в виде * - f (ty, 1 (4.8) у = в (ty J Тогда вектор положения точки на кривой определяется следующей матрицей, имеющей единственную строку: Р(П = [/(0Ж0]. (4-9) Непараметрическую функцию при необходимости можно получить из параметрической путем исключения параметра t из уравнений (4.8); в результате получим одно уравнение с элементами х и у.
В дополнение к простым кривым параметрическая ункция пригодна для представления замкнутых кривых и кривых с множеством значений при заданной величине независимой переменной. Касательный вектор в точке на параметрической кривой дается соотношением Р'(0 = [х' у’} -[Г (О g'(01. (4.10) где знак ' означает дифференцирование по параметру. > Наклон кривой dy/dx определяется выражением dy dy/dt __ g' (t) dx dx/dt f (/) Когда в уравнении (4.11) f (f) = 0, наклон dy/dx неопределен. Однако здесь неопределенный наклон не приносит дополнительных вычислительных трудностей, поскольку в таком случае одна компонента касательного вектора равна нулю. Так как точка на параметрической кривой характеризуется значением параметра, то параметрическая функция осенезависима. Длина кривой определяется диапазоном изменения параметра. Это часто используется для нормализации параметра t таким образом, чтобы параметрическая кривая определялась при 0 с t 1,0. Благодаря осенезависимости параметрическая кривая легко преобразуется в кривую того же самого вида, но с Иной ориентацией. Это позволяет за счет использования методов ма- тричного умножения, рассмотренных в предыдущих поднять вращение, перенос, изменение масштаба главах, вы-и получать перспективную проекцию. Сравнение параметрического и непараметрического описаний дуги окружности показано на’рис. 4.1. Этот рисунок был использован Вудс-фордом [4.4] для того, чтобы показать, что с помощью параметрических функций можно обеспечить улучшение распределения точек на кривой и таким образом получить лучшее графическое представление. Четверть окружности, показанная на рис. 4.1, а, представляется непараметрической функцией у = = V1 — х2. Для получения точек на дуге были использованы равные приращения по х. Эта функция неудобна для вычислений, так как необходимо извлекать квадратный корень. Кроме того, получаются плохие Рис. 4.1. Способы задания окружностей X ~ COS0 у = sinB результаты, так как длины дуг между соседними точками неодинаковы.
Рис. 4.1, б получен на основании той же функции, заданной параметрически в виде Р (/) = [cos 0 sin0]. (4-12) Результат здесь хороший, так как длины дуг между соседними точками равны. Однако вычислительная процедура неэффективна, так как для определения тригонометрических функций требуется несколько операций. На рис. 4.1, в показан другой вариант параметрического представления заданного соотношения: (4.13) где t = tg (0/2). При таком выборе требуется очень малое время на вычисления, однако длины дуг получаются не точно равными между собой. * Теперь рассмотрим задачу определения значения у, когда величина х известна. В качестве примера- положим, что х = 0,5 и требуется определить у на единичной окружности. Для явного представления находим, что у = ]/1 — х2 — 1^0,75 — 0,866. Для параметрического представления необходимо вначале определить значение параметра t через х, а затем, используя это значение, вычислить у. В соответствии с уравнением (4.12) для параметрического представления имеем х = cos 0; у = sin 0, откуда 0 = arccos х — arccos 0,5 — 60°; у = sin 60° = 0,866. В свою очередь, из уравнения (4.13) можно записать 1 — t2. х~ 1-Н2’ _ 2/ V ~ 1 + /2 • Решение первого из этих уравнений дает t = -7^ = 0.57735, \ 1 +* / Кз и, таким образом, . . 2 j/”3 КЗ р. с ее у--^3- = — = 0,866. В случае слишком сложных параметрических представлений для нахождения неизвестных значений явных переменных наиболее подходящим может быть итерационный поисковый метод.
4.4. Непараметрическое представление конических сечений Конические сечения находят широкое применение для многих приложений. Приведем некоторые полезные зависимости из аналитической геометрии. Рис. 4.2 иллюстрирует, как пересечение плоскостью правильного кругового конуса дает различные конические сечения, такие как окружность, парабола, эллипс и гипербола. Общее определение конического сечения может быть записано в следующей форме. Коническое сечение — это кривая, описываемая точкой, которая движется таким образом, что отношение расстояния от этой точки до фиксированной точки (фокуса) к расстоянию до фиксированной линии (директрисы) является постоянной величиной е, называемой эксцентриситетом. Все конические сечения могут быть описаны неявной кривой второй степени ах2 + Ьху + су2 + dx + еу + / — 0. (4.14) Член Ьху в этом уравнении определяет ориентацию конуса по отношению к некоторой исходной системе координат. Если исходная система координат выбрана таким образом, что одна из осей является осью симметрии кривой, то Ь = 0. Поскольку всегда можно повернуть кривую таким образом, чтобы ось симметрии являлась одной из осей исходной системы, то можно рассматривать уравнение ах'2 + с'у'2 + d' х' + ёу' + /' = 0, (4.15) где а — a cos2 а + b cos а sin а + с sin2 а; с' = a sin2 а -|- с cos2 а — b sin а cos а; d' = d cos а + е sin а; ё = —d sin а -|- е cos а; Г = А a ctg2a = -^. (4.16) Рис. 4.2. Конические сечения: — гипербола; 1 — плоскость; 2 — правильный конус; б — парабола; в — эллипс; — окружность Ч <u
Если кривая расположена таким образом, что одна из йсХОД-ных осей является осью симметрии, то она может быть повернута на любой угол а в новом направлении. Если коэффициенты о', с', d', е' и f известны для первоначальной ориентации оси симметрии, то коэффициенты a, b, с, d, е и f уравнения (4.14) в новой ориентации определяются соотношениями а — a’ cos2 а + с' sin2 а, b = 2 (с' — d') cos а sin а; с = a’ sin2 а + с' cos2 а; d — d' cos а + е sin а; е = е' cos а — d' sin а; / = /'• (4.17) Уравнение (4.i4) в таком случае может быть использовано для определения требуемой кривой. Коническим сечением, описываемым уравнением (4.14), является эллипс, парабола или гипербола, в зависимости от величины дискриминанта Ь2— 4ас (см. работу [4.5]). Так, кривая будет параболой, если Ь2 — 4ас = 0, эллипсом или окружностью, если Ь2 — 4ас < 0, и гиперболой, если Ь2 — 4ас > 0. Уравнение (4.15) соответствует окружности в случае, когда а’ = с'. Окружность с центром в точке с координатами (Л, k) и радиусом г описывается соотношением (х — h)2 + (/ — k)2 = г2, (4.18) где / d'2-\-e“—4а'f' \ ____ Г ~ \----"^4^------~ ) • 3деСЬ Г °’ При г — 0 окружность вырождается в точку. Парабола получается при а' = 0 и с' = 0. В общем виде уравнение параболы определяется зависимостью (л/ — h)2 = 4р (у’ — k), (4.19) где *=-^, е’+О. Уравнение (4.19) представляет параболу, осью симметрии которой является у'. Если х' и у' поменять местами, осью симметрии будет х'. Если параметр р > 0, то ветви параболы будут направлены вверх или вправо; если р < 0, то парабола будет иметь ветви, направленные вниз или влево.
Если ни d', ни с' в уравнении (4.15) не являются нулями, а а' и с' имеют один и тот же знак, т. е. при а'с' > 0, то получим эллипс с центром в точке с координатами (h, k), уравнение которого в этом случае запишется в виде где ^_20.2 = (^._fe)a = f, а > р, (4.20) h = - -£-г\ 2а k = - —' 2с' ’ а2 = -Д-; а р2 = -4-; г с» здесь to. II £ % N аз w о • При g = 0 получим точку. Эксцентриситет эллипса s определяется соотношением e= <t а Уравнение (4.15) определяет гиперболу, если ни а', ни с' не являются когда а'с' динатами нулями, и они имеют противоположные знаки, т. е. < 0. Уравнение гиперболы с центром в точке с коор-(й, &) в этом случае описывается зависимостью (4.21а) или Х~*)а_,.(<-*)8 =1, (4.21б) где хо о м “ II • II II II J. J. £ '4 Л здесь 'll 1 "У + Л.1 «3 Л “ *• W о
При g = 0 гипербола вырождается в пару пересекающихся прямых линий. Заметим, что для гиперболы направление раскрытия определяется знаками о' и с', в то время как ориентация определяется соотношениями знаков а' и с'. Эксцентриситет гиперболы определяется выражением К«2 + Р2 , 4.5. Непараметрические дуги окружности Многие из рассмотренных выше способов определения кривых основаны на использовании конических сечений. Поскольку определялись относительно короткие сегменты кривых, то можно было выбирать координаты, которые давали достаточно гладкие кривые, даже если распределение точек не было равномерным. Обводы кораблей и самолетов в этом случае могут быть построены с достаточной степенью точности. Одним из преимуществ этого подхода была относительная простота вычисления точки пересечения двух кривых, каждая из которых задается непараметрическими алгебраическими уравнениями. Пример 4.1. Дуга окружности, проходящая через три точки. Рассмотрим определение кривой, проходящей через точки, заданные координатами (1, 1), (2,2) и (3,2) соответственно (см. также параграф 4.11). Для получения кривой, проходящей через эти точки, положим а' = с' = 1 и запишем уравнение (4.15) в виде , х2 + у2 + dx + еу + f = О, где для удобства штрихи опущены. Подставляя в это уравнение координаты точек, получим 2 + d+ e+ f= 0; 84-2d+2e+f = 0; 13 + 3d + 2е + f = 0. Решение этих трех уравнений с тремя неизвестными дает d = —5, е = 1 и f — 4. Таким образом, уравнение для дуги окружности, проходящей через три заданные точки, имеет вид х® + i/2 — 5х — £/+4=0; 1 С х <: 3. Центр дуги окружности размещен в точке с координатами х = h - — d/2a = 5/2 и у = k = е/2а = 1/2. Используя уравнение (4.18), определим радиус найденной окружности: г =К5/2- Продифференцировав уравнение (4.18), получим 2xdy + 2ydy — 5dy = 0 или dy 5 — 2х dx 2у — 1 ’ откуда следует-, что при х = 5/2 dyldx = 0, а при у = 1/2 dyldx — оо. Заметим, что этот неопределенный наклон получается вне дугового сегмента между точками.
Кривые для использования в машинной графике должны быть представлены в том виде, в каком их задает пользователь. Например, пусть необходимо получить дугу окружности Заданного радиуса между двумя концевыми точками, а не проходящую через три точки, как в предыдущем примере. Пример 4.2. Дуга окружности заданного радиуса. Пусть две концевые точки имеют, как и в предыдущем примере, координаты (1, 1) и (3, 2). Дополнительно зададим значение радиуса г = 5. Из уравнения (4.15) получим следующие три уравнения: 2+d + e+/=0; 13 + 3d + 2е + f = 0; ос d2 + e2—4af Их решение весьма сложно из-за нелинейных членов в третьем уравнении. В таком случае следует использовать итерационный способ. Пользуясь методом последовательных приближений, можно найти следующее решение приведенных выше уравнений: d= —8,4; е= 5,7; f — 0,7 при а= с= 1,0. Таким образом, центр дуги окружности, которая удовлетворяет заданным условиям, находится в точке с координатами х = 4,2 и у = —2,85. Дуга теперь не проходит через промежуточную точку [2 2]. Может возникнуть необходимость изменения наклона дуги окружности в начальной или конечной точках. Это можно сделать за счет выбора соответствующих условий. Пример 4.3. Дуга окружности с фиксированным углом поворота. Если в точке [1 1] необходимо иметь начальный наклон +1, а наклон в конечной точке, равный 0, то конечная точка на дуге окружности не может быть определена произвольно. Зададим следующие условия для этого случая: у = 1 при х — 1; = 0 при х = 3, dx г которые приводят к системе уравнений 2 + d + e + ^O; 4 + d-]-e = 0; 6+d = 0, имеющей решение d = —6, е = 2, f = 2. Уравнение для дуги окружности в этом случае запишется в виде х2 + у^ — вх + 2у + 2 = 0-, 1<х<3. Заметим, что х = 3, у = (—2 ± К32)/2. Таким образом, конечной является точка [3 1,828]. Если конечная точка на дуге окружности должна быть заданной, то дополнительно к двум концевым точкам может быть указан только один концевой наклон. Например, чтобы сопрячь две прямые линии, нужно задать начальную точку, конечную точку и наклон в конечной точке.
X Рис. 4.3. Смещенная система координат Пример 4.4. Дуга окружности с за-данным наклоном в концевой точке. Даны концевые точки [1 1] и [3 2] с dyldx = 0 при х = 0, что приводит к условиям 2 + d + e + / = 0; 13 + 3d + 2e + / = 0; 6 + d = 0. Тогда при h = 3; k = 1/2 и г = 5/2 получим d = —6, е = 1 и f = 3. Это ре* шение дает в начальной точке наклон, равный 4/3, что может быть неприемлемо. В этом случае потребуется итерационное решение для нахождения конечной точки, позволяющей получить приемлемый наклон в начальной точке. При другом подходе нужно потребовать, чтобы пользователем был задан радиус, обеспечивающий приемлемые наклоны в двух концевых точках, и дальше поступать, как в примере 4.2. Эти примеры иллюстрируют задачи, возникающие при создании программных или аппарат ных средств связи между пользователем и графическим изображением. Желаемую кривую можно получить простым или итеративным методом в зависимости от известных или желаемых характеристик кривой. Даже тогда, когда требуемое уравнение для кривой известно, для расчетов, которые дают хорошо различимые точки вдоль кривой, может потребоваться много машинного времени. Кроме того, при рассмотрении непараметрических кривых внимание должно быть сосредоточено на том, чтобы найти действительные, а не мнимые корни, при этом может потребоваться изменение шага независимой переменной между последовательно заданными точками в зависимости от местной кривизны и системы координат. Рассмотрим снова задачу определения дуги окружности, проходящей через три точки. Если точки расположены далеко от начала системыДкоординат, то значения коэффициентов могут оказаться большими. Чтобы избежать этого, смещают начало исходной системы координат в первую точку и вводят новую систему координат х', у’, как показано на рис. 4.3. Исходные точки относительно преобразованной системы определяются соотношениями Ро = [0 0]; Pl = [(Х1 — Хо) (У1 — //о)] = [х'1 У1]; Рг = [(х2 — х0) (у2 — уЬ)] = [%2 у'г]- Поскольку вследствие выбора новой системы координат х'о = у'о = = 0, то f' = 0. Два других уравнения, полученных путем вычи
сления общего уравнения с учетом преобразованных координат точек Pi и Р2, имеют вид х'2 + У1 + + е’У1 = 0; х2 + У2 + хг + е'Уг = 0- Решение этих уравнений относительно d' и е' дает d, = у^^ + у'^-у'Л^ + у^ . ’ (х^У'1— ЛУд е> = -4 Ui2 + У12) — x'i (х22 + у'2) (Х1У2 У1^2) Отсюда следует, что центр дуги окружности относительно системы координат х'у' характеризуется координатами хг _ __ d' _ У2 (хГ + У12) — У{ (х'22 -j-Уг). с ' 2а' 2(х'1У2— х2^) > _ _ е' _ xi (х'2 Ч~ Уг2) — *2 (xi + f/i ) Ус 2а' 2(х’1у'2 — х2у\) Относительно исходной системы координат координаты центра определяются довольно просто: хс = х’с + х0; Уе = Ус + Уо- Если требуется определять точки пересечения, законы перемещения режущего инструмента, ограниченные площади, объемы или находить какую-либо другую геометрическую информацию, то необходимые вычисления могут быть упрощены путем выражения уравнений в явной форме. В явном виде дуга окружности задается соотношением у = = f (х) или х = g (у). Зная коэффициёнты общего уравнения кривой второго порядка, для первого случая можно записать ,__ е' ± |/е'2—4 (х'2-j-d'x') У — 2 ’ для второго d' ± Кd'2—4(y,2 + eV) 2 Такого рода вычисления, как определение площади, заданной интегралом J у’ dx', или нахождение точек пересечения окружности с прямой у' = тх' + Ь, можно осуществлять, используя математические методы. В качестве примера непараметрического представления конического сечения в приложении В приведен алгоритм получения
полной окружности. Основой алгоритма является то, что вблизи оси х используются равные приращения Аг/. Таким образом, между у = 0 и у = —г |/'2 используются равные приращения Ах, а между х >= j/ 2 и х = 0 — равные приращения Ь.у. Этот алгоритм предусматривает получение только восьми точек. Далее, чтобы избежать вычислений корня из отрицательных чисел, используется абсолютная величина аргумента квадратного корня. Алгоритм оказывается сложным и малоэффективным. Пример построения полной окружности, полученной с помощью этого алгоритма, показан на рис. 4.4. Алгоритм обеспечивает приемлемые сегменты окружности в средней части каждого квадранта и очень грубые сегменты в любом другом месте. Для улучшения результатов можно увеличить число точек. В случае, когда основным требованием должна быть гладкость кривой, рекомендуется использовать параметрическое представление. Рис. 4.4. Приближенное представление окружности в непараметрической форме 4.6. Параметрическое представление конических сечений Параметрическое представление конических сечений наиболее приемлемо для построения осенезависимых кривых. Эти кривые для ряда приложений могут иметь преимущества по сравнению с непараметрическими кривыми. Однако ни тот, ни другой тип представления кривой не является универсальным средством, поскольку оба имеют преимущества и недостатки и оба находят применение в машинной графике. Конические сечения довольно просто могут быть представлены в параметрической форме. Окружность с центром в начале координат 'параметрически можно ‘записать в виде х = г cos 0; (4.22) г/г sin 6, (4.23) где г — радиус окружности, а 0 — параметр. В параграфе 4.3 отмечалось, что одинаковые приращения по углу 0 дают хорошее изображение на экране дисплея, однако вычисления при этом малоэффективны, так как в этом случае требуется неоднократное обращение к тригонометрическим функциям. В соответствии с работой [4.6] покажем, что в этом случае возможен гораздо более эффективный алгоритм.
4.7. Параметрическое представление окружности Окружность может быть представлена параметрически путем исключения вычислений тригонометрических функций на каждом шаге. Это обеспечивается применением формул двойного угла в виде cos (0 + de) ;= cos 0 cos dG — sin 0 sin d0; sin (0 + d6) = cos 0 sin de + cos de sin 0. Поскольку полной окружности соответствует диапазон изменения угла 0 от 0 до 2л то, предполагая, что рассматривается конечное число точек на ней, угол de можно считать константой. В таком случае координаты любой точки на окружности с центром в начале координат определяются соотношениями х,г+1 = г cos (0 + de)-, (4.24) Уп+i = г sin (0 + de). (4.25) Использование формулы двойного угла позволяет переписать уравнения (4.24) и (4.25) в виде хл+1 == хп cos de — уп sin de- (4.26) yn+i = хп sin de + уп cos dO. (4.27) Если центр окружности расположен в точке с координатами (h, k), то координаты любой точки окружности определяются соотношениями xn+1 ~h-\-(xn — h) cos de — (уп — k) sin d0; (4.28) Уп+i = k -j- (xn — h) sin de + (y,L — k) cos de. (4.29) Подпрограмма на БЕЙСИКе, реализующая алгоритм параметрического представления окружности, приведена в приложении В. Поскольку de является константой, величины sin de и cos de необходимо вычислить только один раз. Это приводит к более эффективному алгоритму. Результаты, полученные с использо- ванием этого алгоритма, показаны на рис. 4.5. Заметим, что расстояние между точками получились одинаковыми. 4.8. Параметрическое представление эллипса Можно отметить, что для окружности фиксированное число точек обеспечило хорошее ее представление, когда эти точки соединялись короткими векторами. Разбиение окружности фиксированным числом точек с одинаковыми угловыми приращениями позволяет получить каче- Рис* 4.Б. Представление окружности в параметрической форме
Рис. 4.6. Представление эллипса с большим эксцентриситетом ственное ее изображение. Однако для эллипса, если при вычислении точек используются одинаковые по значению угловые приращения, получается плохое изображение. Это, в частности, относится к эллипсам с большим эксцентриситетом (е « 1) (рис. 4.6). Из рис. 4.6 видно, что оконечные участки эллипса не представляются одинаково. Данное явление объясняется тем, что возле концов эллипс имеет значительную Крутизну и при одинаковой величине угловых приращений эту кривую нельзя качественно представить несколькими точками. Кроме указанного метода, можно пользоваться методом равнопериметрических длин. При достаточном 'количестве точек этот метод будет давать лучшее представление плоских кривых. Однако на участках эллипса с малой кривизной число точек должно быть уменьшено, поскольку, лишние точки увеличивают затраты машинного времени. Как отмечено в работе [4.5], определение равнопериметрийеских длин связано с 'вычислением эллиптического интеграла, что и приводит к увеличению времени решения данной задачи на ЭВМ. Было бы целесообразно брать малые приращения вдоль параметрической кривой вблизи оконечных участков, где кривизна большая, и гораздо большие приращения вдоль той части кривой, где малая кривизна. Для решения проблемы распределения точек рассмотрим параметрическое представление эллипса с центром в начале координат с главными полуосями а и Ь. В этом случае х — a cos 0; (4.30) у = b sin 0, (4.31) где 0 — параметр. Изменение 0 в пределах от 0 до 2л охватывает полностью весь эллипс. Заданное фиксированное число точек может быть использовано для того, чтобы представить эллипс „ 2л приращениями по параметру 0, скажем, приращением п _ у-, где п — число точек. Анализ дифференциалов dx = —a sin 0 J0; (4.32) dy = b cos 0 d0 (4.33)
показывает, что желаемые приращения по параметру получаются сами собой. Когда значение 6 близко к 0 или л, т. е. возле оконечных участков кривой, имеем | dx | « О и | dy | « bdB, а когда значение 6 близко к л/2 или Зл/2, т. е. вдоль пологой части кривой, имеем | dx | cd0 и | dy | » 0. Таким образом, вблизи оконечных участков имеется большее количество точек, чем на других участках кривой. В действительности отношение размера приращения по периметру на оконечных участках к размеру приращения вдоль сторон эллипса равно приблизительно Ыа. Далее заметим, что в случае окружности, где b = а, оптимальное представление дает тот же результат, т. е. равный периметр или равные угловые приращения. Поскольку должны быть использованы равные приращения по параметру 0, т. е. использовано фиксированное число точек, то эффективный алгоритм вновь может быть разработан путем использования формул двойного угла [4.6]. Здесь эллипс предполагается наклоненным на угол i к горизонту, как показано на рис. 4.7. Отсюда х' = х cos i — у sin i; (4.34) у' = х sin i + у cos i, (4.35) или x' = a cos 0 cos I — b sin 0 sin i; (4.36) y' = a cos 0 sin i + b sin 0 cos i. (4.37) Введение координат центра эллипса дает 4+1 = хс -J- х'п cos i — у'п sin i; (4-38) г/A+i = Ус + х'п sin i -J- у’п cos i. (4.39) Рекуррентные соотношения алгоритма для эллипса, приведенного в приложении В, основаны на методе, несколько отличном от метода, который ранее был использован для окружности. В этом случае угловая переменная используется во внутреннем цикле. Смит [4.6] показал, что этот алгоритм может быть сделан еще более эффективным, таким, что потребуется только четыре
Рис. 4.8. Представление эллипса в параметрической форме операции сложения и четыре операции умножения в пределах внутреннего цикла. Смит также показал, что этот метод _ дает вписанный многоугольник максимальной площади. Таким образом, выполнение операций сложения и умножения обеспечивает качественное представление эллипса, как, например, показано на рис. 4.8. 4.9. Параметрическое представление параболы Рассмотрим параболу (центрированную относительно начала координат), когда осью симметрии является положительная часть оси х, как показано на рис. 4.9. В прямоугольных координатах такая парабола представляется в непараметрической форме выражением у2 = 4ах. (4.40) Параметрическое представление уравнения (4.40) имеет вид x = tg20; (4.41) z/= ±2 |/а tg 0, (4.42) где 0 < 0 < л,/2. Хотя это обеспечивает хорошее представление параболы, Смит [4.6] отмечает, что оно не дает изображения с максимально вписанной площадью и, следовательно, не является самым эффективным преобразованием. Другим параметрическим представлением, которое дает максимум вписанной площади, является х = «0а; (4.43) у = 2а0, (4.44) где 0 < 0 < оо охватывает всю параболу. Парабола, однако, в отличие от эллипса не является замкнутой кривой. Таким образом, часть параболы, которую требуется изобразить, должна быть ограничена выбором максимального значения угла 0 = = 0щах- Это может быть выполнено различными путями; например, можно было бы ввести ограничения по оси х. Если это сде- лано, то 6гаах = -!%2-. (4.45) При введении ' ограничения по оси у имеем 6п.ах = ^-. (4.46) Рис. 4.9. Парабола
Когда значение 0max установлено, можно разработать алгоритм вычисления N точек для представления параболы в первом квадранте. Если парабола получена в первом квадранте, то остаток параболы, который появляется в четвертом квадранте, может быть получен путем отображения относительно оси х (см. параграф 2.10). Соответствующий алгоритм для получения требуемых точек в первом квадранте приведен в приложении В. Алгоритм предусматривает фиксированное число точек и использует постоянное приращение по параметру 0. Параболы со смещенными центрами или другой ориентацией можно получить, используя операции вращения и смещения. Для 0п+1 = 6„ + de уравнения (4.43) и (4.44) получают вид xn+i — а6„ + 2tz0„ d0 -j- a(d0)2; г/„+1 = 2ав„ + 2а (16; они могут быть записаны также в форме хп+1 = Хп + уп de + a (de)2; (4.47) Уп+i = Уп + 2а de. (4.48) На рис. 4.10 показан пример параболы, полученной за счет использования рекуррентных соотношений. В отдельных случаях могут быть более удобны другие параметрические представления. Это зависит от информации, заданной пользователем. Например, если параболическая дуга должна быть проведена между двумя точками и необходим контроль концевых наклонов, то предлагается следующая форма уравнений: х (t) = (Qx - C2RX - Рх) t2 + 2 (Rx - Px) t + Px; y® = (<ly-ZRy + Py)? + 2(Ry-Pv)t + Py, Oc/cl, 0. Здесь параметром служит t, а двумя концевыми точками параболы являются Р = [Рх РД и Q = [Qjc Qj,]. Точка R = [Рх Ry\ Рис. 4.11. Задание параметрической параболы по трем вершинам
представляет собой точку пересечения двух концевых касательных. Этот метод называют методом определения параболы по вершинам, поскольку использованы три вершины Р, Q и R, которые определяют параболу, как показано на рис. 4.11. Более общий метод определения кривой по вершинам открытого многоугольника был разработан Безье и обсуждается в следующей главе. 4.10. Параметрическое представление гиперболы Для представления гиперболы было принято допущение, что она центрирована относительно начала координат с положительной частью оси х в качестве оси симметрии. Представление этой гиперболы в прямоугольных непараметрических координатах определяется соотношением *2 у2 . a2 bz которое показывает, что ее вершина находится на расстоянии а, а наклоны асцмптот равны ±Ыа. Параметрическое представление задается зависимостями х = —a sec 0; У = —b tg 6, (4.49) (4.50) где угол 0 < 0 < л/2 определяет желаемую гиперболу. Смит [4.6] отмечает, что в случае параметрического представления вписанный многоугольник не является многоугольником максимальной площади, однако его площадь близка к максимальной. На основании формулы двойного угла может быть получен эффективный алгоритм параметрического представления гиперболы. Чтобы убедиться в этом, напомним, что Sec (6 -f- d6) cos (g cos g cos - gjn g gin ^g , a tg(6 + d6)= Таким образом, можно записать хп+1 — ± a sec (6 -J- d6) = ± 6cose_£,tge sin 6/e ’ X”+1 b cos d0 — yn sin rfO ’ г,„1=±ие(е + ^е)=±А!М«; ' ,,____, fe (i/n + tg d6) г/„+1-± 6 + j/ntgde • (4-51) (4.52)
Алгоритм HYPERB1, приведенный в приложении В, осйоВай на этих зависимостях. . Другим параметрическим представлением гиперболы, которое дает вписанный многоугольник с максимальной площадью, является х = a ch 6; (4.53) у = b sh 6. (4.54) Гиперболические функции определяются как ch 6 = (ее + е-е)/2, a sh 0 — (ее — е~е)/2. По мере изменения 0 вычерчивается гипербола. Формулы двойного угла для ch и sh определяются соотношениями ch (0 + dB) = ch 0 ch dB + sh 0 sh d0; sh (0 + d0) = sh 0 ch d0 + ch 0 sh d0. Это позволяет записать уравнения (4.53) и (4.54) как хп+1 = a (ch 0 ch dB + sh 0 sh dO); Уп+i = b (sh 0 ch dB + ch 0 sh dB) или xwi = ch dB + -j- yn sh dB; (4.55) y..+i = xn sh dB -J- yn ch dB. (4.56) Как и для параболы, чтобы ограничить размер гиперболы, необходимо установить максимальный угол 0 = 0тах. Если мы рассматриваем ветвь гиперболы в первом и четвертом квадрантах и хотим получить часть гиперболы для а < х < а + с, то 0гаах = arcch (4-57) Подобным образом можно обеспечить и другие ограничения. Алгоритм HYPERB2, данный в приложении В, основан на уравнениях (4.55) и (4.56). Поскольку большинство вычислительных систем не имеет гиперболических функций, вместо них используются экспоненциальные зависимости, т. е. , e-d0 chdO = —р—; „de „-de sh dB =-----g---, а обратный гиперболический косинус записывается как arcchх = l°g В+>=)-log (х-1) . Пример представления гиперболы с использованием этого метода показан на рис. 4.12. Рис. 4.12.', Представление гиперболы в параметрической форме
4.11. Процедура использования конических сечений -В параграфе 4.5 было рассмотрено непараметрическое представление кривой, проходящей через три точки. По существу был применен прямой метод. Здесь мы рассмотрим ту же задачу, но определим расположение центра и радиус окружности, которая будет проходить через три особые точки. Однако здесь задача проведения окружности отделена от задачи вычисления ее параметров. Рассмотрим три произвольных точки Plt Р2, Р3 в системе координат х, у, как показано на рис. 4.13. Общее непараметрическое уравнение для окружности, проходящей через эти три точки, имеет вид (х — h)2 + (у — /г)2 = г2. (4.58) Так как точки Plt Р2, Р3 могут находиться в любом месте плоскости х, у, непосредственная подстановка значений координат в уравнение (4.58) может привести к чрезмерно большим числам. Это затруднило бы решение уравнений. Поэтому сместим начало системы координат в первую точку Рх. Как дальше станет очевидным, эта операция сделает решение более удобным. Полагая х' = х — т и у' = у — п, где тип являются параметрами смещения (см. параграф 2.15), имеем т — хг, п = z/1. Уравнение (4.58) можем затем переписать в системе координат х', у' как (Z — h')2 + (/ — k')2 = г2, (4.59) где h' = h — т и k' k — п. Непосредственная подстановка значений координат точек Р1Т Рис. 4.13. Геометрическое построение дуги окружности, проходящей через три точки Р2 и Р3 в системе координат х'у' даст й,2 + А!'2-г2 = 0 для PjJ х? - 2x'th' + Л'2 + у? - 2y'ik' + + k'2 — г2 = 0, i=2,3 для Р1, р3. Эти уравнения представляют собой три уравнения с тремя неизвестными h', k' и г, которые могут быть решены. Однако система уравнений является нелинейной, и для ее решения требуется итерационный процесс, который нежелателен. Заметим, однако, что, так как начало координат расположено в точке Рп первое уравнение
можно всегда вычесть из второго и третьего для исключения нелинейных членов. Результирующие уравнения описываются вы- ' ражением 2x-h’ ф-2^' + i = 2,3. (4.60) Таким образом, получаем два нелинейных уравнения с двумя неизвестными h' и k', которые могут быть решены непосредственно. Радиус можно определить из первого уравнения: г2 = h '2+ k’2. Располо- Рис. 4.14. Параметриче- ское построение дуг окружности, проходящей через три точки жение центра окружности и ее радиус теперь известны. Чтобы провести дугу окружности, необходимо сначала поместить ее центр в точку с координатами (h', k') или (Л, k), как пока- зано на рис. 4.13. Если 0! = arctg и.02 = arctg (4.61) Л1 л3 известны, то можно использовать параметрический или непараметрический алгоритм со стандартным расположением центра окружности в начале координат. В результате этого можно получить точки, которые описывают дугу окружности, проходящую из точки Pj в точку Р3 через точку Р2. Пример 4.5. Процедура получения дуги окружности. Рассмотрим три точки Ръ Р2, Р3, заданные координатами (3,2), (4 ,4) и (0, 6) соответственно. Смещение начала координат в точку Pt приводит к Р[ = = [0 0], Р2 = [1 2] и Р2 = [—3 4]. Уравнения (4.60) в этом случае принимают вид 2/г' + 4/г' = 5; —W + 8/г' = 25. Решение этой системы дает k' = 2, h’ = —3/2 и г = 5/2. Перенос начала координат в центр окружности приводит к точкам Р*= [3/2 —2], Р2 = [5/2 0] и Р| = [—3/2 2]. Таким образом, из уравнений (4.61) следует, что 0!= arctg (—2/(3/2)) = arctg (—4/3) = —53,13°; 02 = arctg (2/(—3/2)) = arctg (—4/3) = 126,87°. Это определяет входные угловые параметры для подпрограммы вычерчивания Дуги окружности. Для улучшения распределения точек вдоль дуги окружности выбираем параметрическую форму. На рис. 4.14 показан результат параметрического представления дуги. Алгоритм, используемый для получения этой кривой, имеет название 3PCIRARC и приводится в приложении В. Подпрограмма параметрического представления дуги окружности рассматривалась в параграфе 4.7.
4.12. Интерполяция дугой окружности Неоднородность или неточность кривой обычно является качественной оценкой, основанной на ее восприятии человеческим глазом. Тем не менее можно выбрать количественную оценку неоднородности кривой и в соответствии с этим критерием получать желаемые кривые. Одним из таких критериев, успешно используемых Мехлюмом [4.8], является минимизация интеграла от квадрата кривизны вдоль длины дуги. Кривизна может быть выражена соотношением «=07^- <4'62> где штрихи означают производную по х. Таким образом, проблемой является минимизация I, где значение I задается зависи- Задача минимизации величины I с помощью вариационного исчисления была решена Мехлюмом [4.8]. Важный результат, выраженный р виде теоремы, устанавливается следующим образом: при проведении кусочной кривой, которая минимизирует интеграл от квадрата кривизны вдоль дуги, ее сегменты должны быть направлены так, чтобы кривизна дуги между концевыми точками каждого сегмента изменялась линейно. Предположим, что такая кривая должна быть проведена между двумя определенными концевыми точками и несколькими а — линейная аппроксимация; б — ступенчатая аппроксимация
заданными промежуточными точками. Кривизна профиля между этими точками может выглядеть подобно тому, как это изображено на рис. 4.15, а. Однако, как отмечено Мехлюмом, действительное направление изменения линейной кривизны трудно определить. Это требует решения эллиптических интегралов, постоянные интегрирования которых зависят от характерных граничных условий. Мехлюм предложил, чтобы аппроксимация кусочной линейной кривизны осуществлялась путем ее замены серией горизонтальных отрезков с постоянной кривизной^на каждом шаге (рис. 4.15, б). Профиль кривизны в таком случае будет кусочно-постоянным по длине кривой. Поскольку постоянная кривизна описывает дугу окружности, то кусочная кривая представляется серией дуг окружности с различными центрами и радиусами. Большое число шагов, т. е. дуг окружностей, будет давать наиболее близкое приближение к идеальной кривизне. Требуемое число дуг окружности зависит от расстояния между заданными точками, изменения кривизны в пределах криволинейного сегмента и требуемой точности графического построения. Подробности этого метода получения гладких кривых с помощью интерполяции дугами окружностей приведены в указанной литературе. Результатом итерационного процесса являются значения радиуса и координат центра для каждой дуги окружности, а также значения координат точки, где кривизна изменяется. Следовательно, подпрограммы для получения дуг окружности, заданных параметрически, могут быть использованы для получения истинной кусочной кривой. СПИСОК ЛИТЕРАТУРЫ 4.1. Datasaab, «Formela General Description», Reg. N. 917—E, SAAB AKTIEBOLAG, 58188, Linkoping, Sweden, 1965. 4.2. «Computer Graphics Arrangement Program, COGAT Systems Manual», NAVSHIPS 0900—037—9030, CASDAS 233083/MFTS, Naval Ship Engineering Center, Washington, D. C., Nov. 1972. 4.3. Gottfried, B. S. «Programming with Basic, Schaum's Outline Series, McGraw-Hill Book Company, New-York, 1975. 4.4. Woodsford, P. A., «Mathematical Methods in Computer Graphics— A Survey». Gesellschaft fur Informatike, Vol. 5, Symposium on Computer Graphics, Berlin, Oct. 1971. 4.5. Thomas, G. B., Sr., Calculus and Analytical Geometry, Addison — Wesley Publishing Company, Cambridge, Mass., 1954. 4.6. Smith, L. B., «Drawing ellipses, hyperbolas or parabolas with a fixed number of points and maximum’ inscribed area», Com-put. J., Vol. 14, p. 81, 190. 4.7. Cohen, D., «Linear Difference Curves», in Advanced Computer Graphics, Plenum Press, New York, 1971. 4.8. Mehlum, E., «Curve and Surface Fitting based on Variational Criteriae for Smoothness», Central Institute for Industrial Research (CIIR), Oslo, Norway Dec., 1969.
Глава 5 ПРОСТРАНСТВЕННЫ Е КРИ ВЫ Е 5.1. Введение Как правило, в природе встречаются трехмерные изображения. Однако большая часть графических методов относится к двумерным. В результате изображения представляются в виде плоских чертежей. Поэтому при представлении трехмерных изображений применяют двумерные в виде деталировок. Использование цифровой вычислительной машины для получения кривых открывает новые возможности в черчении. При этом трехмерные пространственные .кривые могут быть определены, получены, запомнены, видоизменены и выданы в качестве выходных документов. Пространственные кривые можно изобразить на двумерной плоскости с помощью аксонометрических и перспективных проекций, как было показано в гл. 3. Трехмерные модели могут быть получены непосредственно с помощью режущего инструмента на станках с цифровым управлением. В данной главе рассмотренное ранее описание кривых распространяется на трехмерные пространственные кривые. 5.2. Представление пространственных кривых Как и плоские кривые, пространственные кривые могут быть представлены непараметрически или параметрически. Трехмерные пространственные кривые, выраженные в непараметрической форме, задаются явно с помощью системы уравнений вида х = х; y = f (*); Z = g (х). (5.1) Пространственную кривую можно выразить и непараметрически в неявной форме. В этом случае она математически представляется пересечением двух поверхностей, заданных соотношениями / (х, у, z) — 0; 1 (5.2) g (х, у, г) = 0. J В качестве примера рассмотрим две поверхности второго порядка, описанные зависимостями f (х, у, г) = у — z2 = 0; j g (х, у, г) — zx — у2 = 0. )
Значения хи у могут быть выражены через г при z =f= О, чтобы получить описание кривой в явной форме, определенной пересекающимися поверхностями уУ2 __ 7з. Z (5-4) Заметим, что пересечение поверхностей второго порядка приводит к пространственной кривой третьей степени. Метод решения в случае описания поверхностей неявными функциями имеет силу, если для точки с координатами (х, у, z), которая удовлетворяет двум уравнениям поверхностей, справедливо соотношение det df дх dg дх df ду dg dy =¥=0. Подобный метод применяют, когда решение находится для х = = /(#). z = g (у) или у = f (х), z = g (х). В общем случае пространственная кривая параметрически выражается в виде х = х (/);' У = У (0; Z—Z (/), . (5.5) где параметр t изменяется в заданных пределах < t < /2). Из уравнения (5.1) следует, что х можно рассматривать в качестве параметра х = t. В этом случае кривая выражается в параметрической форме зависимостями х = t\ у = f (0; Z = g (0- (5-6) Если рассматривать непараметрическое явное представление, заданное уравнением (5.4), то можно положить z — t и параметрически эту кривую представить в виде х = /3; У t2-, г = t. (5.7) Некоторые типы параметрических кривых имеют хорошо известные аналитические описания. Например, параметрическая пространственная кривая, которой придается форма, подобная
шву на теннисном мяче или еис оле, выражается следующими уравнениями: здесь х — X cos (б + — ft cos 3 (б + 5 t/=ix [asin (б + + fcsin 3 (б + г = с sin (26); (5-8) X 1 + d sin (26) - 1 + d ; 9 р= 1 — d sin (26) — 1 — d а параметр 6 = 2nt, где 0 C t <g 1,0. Если d = 0 и (? = 4ab, то пространственная кривая лежит на сфере радиуса а + Ъ. Если а = 1,0, Ъ 0,5, с = ]/2, а d = 0, то кривая лежит на сфере радиуса 1,5. Другим примером параметрической кривой является цилиндрическая спираль. Параметрически уравнения задаются в виде х = a cos t; у = a sin t; z = bt (5-9) для а 4= 0, b 4= 0, —оо < t <Z оо. Эта кривая лежит на поверхности правильного кругового цилиндра радиуса |а|. Преобразование с помощью уравнения г — bt равномерно сдвигает точки кривой в направлении оси г. Через каждый промежуток в 2л по параметру t переменные х и у возвращаются в их начальное состояние, а переменная г увеличивается или уменьшается на 2л | b | в зависимости от знака Ь. Это изменение по оси z называется шагом спирали. Если аналитическое описание кривой неизвестно, можно использовать интерполяционную схему для того, чтобы провести кривую через ряд заданных точек. При этом, для того чтобы определить коэффициенты номинальной формы задания пространственной кривой и установить критерий гладкости, используют особые граничные условия. При выборе способа представления пространственной кривой приходится учитывать многие факторы. Желаемый вид машинного ввода, требуемый тип преобразований, удобство связи между пользователем и вычислительной машиной, графический прибор, применяемый для графического представления выхода — все это приводит к различным ограничениям. Если входом является набор точек, которые лежат на желаемой кривой, то часто ис-
пользуют сплайновые сегменты, для того чтооы сформировать гладкую кривую, проходящую через указанные точки. Это рассматривается в следующем параграфе. 5.3. Кубические сплайны Математический термин «сплайн» происходит от своего физического аналога — разметчика плазов. Физически сплайн можно представить в виде длинной узкой рейки из дерева или пластика, которую используют разметчики для проведения кривой между заданными*точками. Рейке придают форму с помощью свинцовых грузов. При изменении числа и положения свинцовых грузов рейка изгибается и может проходить через заданные точки, в результате чего кривая оказывается гладкой. Если физически сплайн рассматривать как тонкую упругую балку с модулем Юнга Е, то изгибающий момент где I — момент инерции; R (х) — радиус кривизны. Для небольших изгибов радиус кривизны R (х) может быть заменен на 1/у", где штрихи означают вторую производную по х. Таким образом, мы имеем У'(х) = ^-. Заменяя действие грузов реакцией опор, можно считать момент М (х) линейной функцией от расстояния между опорами. Принимая М (х) = А и интегрируя вышеуказанное уравнение дважды, находим, что физически сплайн описывается кубическим полиномом. Вообще математическое описание сплайна является кусочным полиномом степени k с непрерывными производными порядка k — 1 в местах соединений между сегментами. Таким образом, кубический сплайн имеет непрерывность второго порядка в местах соединений. Кусочные сплайны полиномов низкой степени обычно более пригодны для формирования кривой, проходящей через серию точек. Использование полиномов низкой степени упрощает требования к вычислениям и уменьшает числовые погрешности, которые возникают с увеличением порядка кривых. Эти погрешности могут приводить к нежелательному отклонению, когда несколько точек должны быть соединены в общую кривую. Однако, поскольку полиномом низкой степени нельзя описать соединение произвольного ряда точек, то необходимы смежные полиномиальные сегменты. Общим методом, основанным на этих рассужде-
Рис. 5.1. Кубический сплайн ниях и аналогии с физическим сплайном, является использование серии кубических сплайнов с каждым сегментом, соединяющим только две точки. Кроме того, кубический сплайн предпочтителен, поскольку он представляет собой пространственную кривую самой низкой степени, которая допускает точку изгиба, т. е. имеет возможность изгибаться в пространстве. Уравнение единственного параметрического кубического сплайнового сегмента в элементах параметра t имеет вид 4 р (0 = S в/-1; /1 <• t < t2, (5.Ю) i=i причем Р (/) = [х (t) у (f) z (t)], т. е. Р (/) можно представить в виде вектора положения любой точки на сплайне. Он имеет три компоненты х (/), у (t) и z (t), которые могут быть рассмотрены как декартовы координаты этого вектора. Коэффициенты Вг определяются с помощью четырех специальных граничных условий для сплайнового сегмента. В развернутом виде уравнение (5.10) можно записать как Р (0 = Bi + В2/ + В3/2 + Р4/3. (5.11) Пусть данной парой точек, через.которые проходит криволинейный сегмент, будут точки Р1Т Р2 (рис. 5.1, а). Соответствующие касательные векторы к этим заданным точкам определяются величинами Р{ и Рг, которые являются производными по параметру t. Внутри кубического сегмента параметр t изменяется между двумя значениями концевых точек и t2. Чтобы упростить расчеты, можно положить t-L — 0. Требуемые граничные условия для каждого кубического сегмента определяются параметрами двух концевых точек и ка-
сательного вектора в каждой из них. Для единственного сегмента между точками Рт и Р2 эти условия задаются выражениями Р(0) = Рь Р(4) = р2; — I =Р? dt |<=о ь (5.12) rfP I dt |/=/г = ₽2. Четыре соотношения следуют из уравнений (5.11) и (5.12): P^^Bi-P,; (5.13) 4 т|ы“ S (' - О''~2в< 1« - В= - р’ь (614) 1=2 Р (^2) = Е В/’1 |z=/, = Bi + В2/2 + В3^ + В4/2; (5.15) 1=1 4 1/=/2 = 2(i’ ~f_2Bz =Вг+2Вз*2+зв^- (5-1б) i=l Решая их относительно В3 и В4, получим В — 3 (Р2 Р1) _ 2Р1 р2 • /С 17Х »з-----/| -р- (Ь-1/) В _ 2 (Р1 — Рз) | _₽£_ | Р2 /г 1 оч + ti + tl Vх18) с учетом того, что Вт = Рх и В2 = Р{. Эти значения Вп В2, В3 и В4 определяют кривую для кубического сплайна. Форма кубического сплайнового сегмента зависит от положения концевой точки и касательных векторов. В результате заметим, что значение параметра t = /2 получается в точке на конце сегмента. Поскольку каждый из векторов концевых точек и векторов, касательных в них, имеет по три компоненты, то параметрическое уравнение для кубической пространственной кривой зависит от 12 векторных величин и значения параметра t на конце сегмента. Подстановка соотношений (5.13), (5.14), (5.17) и”(5.28) в формулу (5.11) дает уравнение для кубического сплайнового сегмента: Р (0 Pi + р;/ + Г- ( -%~Р1) - -ф- - -р-р + L £2 £2 г2 J Р-19) Уравнение (5.19) справедливо для одного кубического сплайнового сегмента. Оно может быть обобщено для любых двух
смежных кубических сегменЮв Рй (/) и Р/г+1 (/), причем 1 «а < k с п — 2, где п — число заданных точек, через которые должна проходить кривая (рис. 5.1, б). Обобщенные уравнения записываются в виде Р* (0 = Рл + Pit/ + Гз (РА+1 - РЛ) 2Р* Р/г+1 ] L tz ^2 J 2(Pfe—Pfe+i) , Pfe , Pfe+l ] tl "Г tl "Г tl J и (5.20) pft+i (о - p*+i + р;+1/+[3(Р^.. р**л> -L гз 2Рл+1 ^3 _ Рл+2.1/2 1 *3 J . Г2 (Р*+1 Р^+а) । Pfe+i . V +1 Ц 1 Ч 1 ] J3 Z2 ь (5.21) при условии, что изменение параметра для первого сегмента находится в пределах 0 < /2, для второго 0 с / < t3 и т. д. Например, если охарактеризованы только три вектора положения (заданные точки), то известными условиями для всей кривой между точками Р4 и Р3 являются векторы положения Рп Р2, Р3 и векторы, касательные в точках на концах кривой, т. е. PJ и Рз. Чтобы обеспечить непрерывность второго порядка для кубического сплайна, необходимо наложить условие постоянства кривизны во внутренней точке соединения двух промежутков. Это означает, что вторая производная Р" (/) непрерывна в месте соединения. Из уравнения (5.10) имеем 4 Р" (0 = Е (i - 1) (i - 2) В/-3; ti « t < t2. (5.22) i=l В конце первого кубического сплайнового сегмента, где t = t2, P" = 6B4^4-2B3 и в начале второго сплайнового сегмента, где t = 0, Р" = 2В3. Приравнивая эти два результата и используя уравнения (5.17), (5.18), получаем щ Г 2(pi~ рв) . ILiJll । о Г3(Р2-Р1) 2Р1 _Р£] _ L % + ti + ti J +z L ti t2 t2 J = 2 Г 3(Ря7-Р2-)- — ----. (5.23) Умножение на t2t3 и группировка членов этого уравнения даст соотношение *зР1 -f- 2 (/3 -j- Ра + ^гРз = = \& (Рз - Ра) + 4 (Ра - Р1) 1. (5.24) *2^3
которое может быть решено для Р2 — неизвестного касательного вектора во внутренней точке соединения. Снова заметим, что концевые значения параметра t, т. е. t2 и ts встречаются в результирующем уравнении. Приведенные результаты для п заданных точек могут быть обобщены для того, чтобы получить п — 1 кубических сплайновых сегментов в зависимости от положения, наклона, а также непрерывности кривизны во всех внутренних точках сочленения. Набор составных сплайновых сегментов показан на рис. 5.1, б. В общем случае уравнения (5.20) и (5.21) применяют для любых двух смежных заданных точек. Условие непрерывности производной второго порядка [уравнение (5.24)] при этом приводится к виду tk+^k + 2 (/fe+2 4" Zfe+1) Pfe+l + /ft+lPft+2 = — —-1------\tk+2 (Pfe+2 — Pfe+l) + tk+2(Pfe+l — Pfe)] I 1 C k С n — 2. lk+llk+2 (5.25) Уравнение (5.25) применяют в виде рекуррентных соотношений для всех сегментов. Поэтому соответствующее матричное уравнение для всех кусочных кубических сегментов запишется в виде ta 2 (t2 Q 0 2& + /4) 0 t3 0 2(M-Q h "Pi" P2 Рз -П-[/2(Рз-Р2) + *з(Р2-Р1)] *2^3 3 [Z|(P4_P3) + ^(P3_P2)] (5.26) \tn-l (P„ - P„-l) + tn (P„_l - P„_2)I Из матричного уравнения (5.26) получаем п — 2 обычных уравнений с п неизвестными. Система уравнений определена, если заданы два концевых касательных вектора PJ и Р'. Таким образом, для того чтобы получить кривую, кроме векторов положения Pi (1 < i < п) должны быть заданы Р[ и Р„. Затем уравнения (5.26) используют для вычисления промежуточных касательных векторов Рг, Рз, Рп-ь Этот расчет очень удобно выполняется с помощью обращения матрицы (см. параграф 5.5).
Касательные векторы используют для того, чтобы вычислить коэф-фициенты Pt-, заданные обобщенными уравнениями (5.13), (5.14), (5.17) и (5.18) для^каждого криволинейного сегмента; например, B1=P*; (5.27) В2 = Р*; (5.28) n 3(Pfe+i~ Pfe) 2Pfe Pfe+1 . 65 9Q1 3 ^1 tk+l IM Z-M ! D (Pfe Pfe+1) . Pfe = /3 । ,2 - ‘fe+l ‘fe+1 । Pfe+1 /2 ' ‘fe+1 (5.30) Окончательно каждый кубический сегмент получается с помощью уравнения (5.10) при 0 с t « /тах. Прежде чем строить кривую, необходимо выбрать максимальное значение параметр3 Апах. для каждого сегмента, т. е. /2, ^з, tn- От этого зависит гладкость кривой. Непрерывность вторых производных во внутренних точках соединения сама по себе не дает гладкости сплайна в смысле минимума кривизны вдоль кривой. Для того чтобы получить минимум кривизны, а следовательно, и максимум гладкости, должны быть минимизированы коэффициенты В3 и В4 для каждого сегмента за счет правильного выбора диапазона изменения параметров. Определять эти условия не требуется. Для того чтобы обеспечить гладкость кривых, достаточную для большинства практических целей, можно использовать простейшие методы выбора /гаах. При одном из подходов требуется установить максимальные значения параметров равными длинам хорд между следующими одна за другой заданными точками. Это дает достаточно гладкие кривые для графического дисплея. При втором подходе требуется нормализация изменения параметров путем выбора fmax ==1,0 для каждого кубического сегмента. Как можно было увидеть из предыдущих уравнений, для каждого выбранного /пих будут получаться свои значения коэффициентов, а следовательно, различные кривые, проходящие через заданные точки. Так как модуль касательных векторов изменяет .я, то будет изменяться и наклон кубических сегментов. С другой стороны, направление касательных векторов управляет формой кубических сегментов в их концевых точках. 5.4. Нормализованные параметры Несмотря на относительную гладкость результирующей кривой, при ее задании можно установить диапазон изменения нормализованных параметров для всех кубических сегментов сплайновой кривой. При таком подходе параметр t изменяется в пре-
делах 0 < / < 1 для всех промежутков, и уравнение (5.26) можно переписать в виде '4100. . .“ - Р2 - -3(Р3 —Pi) —Р! " 14 10 0. . Рз 3(Р4-Р2) 0 14 10. . 3(Р6-Р3) .01410. = • . (5.31) .... 0 1 4_ _ Р"-1 _ _ з (Р„ Рn-2) Р п-2 _ Четыре коэффициента для каждого параметрического кубического уравнения, заданные уравнениями (5.27) — (5.30), могут быть выражены в матричной форме как в4" 2 —2 1 1 Pfe " В3 —3 3 - -2 —1 Pfe+l в2 — 0 0 1 0 Pfe , 1 < k < n — 1. (5.32) в. 1 0 0 0 Pfe+l В нормализованном виде трехдиагональную матрицу в уравнении (5.31) необходимо обращать только один раз для того, чтобы получить касательные векторы во внутренних точках соединения. Для ряда п векторов положения это дает значительную экономию машинного времени. Однако, если векторы положения распределены неравномерно, то, как показывает опыт, гладкость результирующей кривой не будет такой же, как в случае, когда параметрическую длину каждого сегмента принимают равной ее локальной хорде. Нормализация проводится при рассмотрении кубических граничных кривых для трехмерных кусков поверхности (см. гл. 6). Хотя параметрические кубические сплайны имеют много преимуществ, им свойственны также и недостатки, которые ограничивают их применение для представления и изменения кривых. Так, с помощью параметрических кубических сплайнов нельзя точно передать дугу окружности, т. е. истинные окружности могут быть представлены только приблизительно. Они также не дают хорошего приближения к асимптотическим кривым, тем не менее ими широко пользуются, особенно в кораблестроении и авиационной промышленности. 5.5. Граничные условия Если уравнение (5.26) используется для нахождения касательных векторов во внутренних точках соединения кривой, определенной п точками, то в результате получается неквадратная
матрица, имеющая п — 2 строки и п столбцов. Матрица-столбец касательных векторов содержит п строк, матрица-столбец коэффициентов содержит п — 2 строки. Таким образом, уравнение (5.26) может быть записано в виде МР« = В, (5.33) где М — матрица (и — 2) X п; Р' •— матрица (и X 1); в-матрица (и — 2) X 1. Ненулевыми элементами в каждой строке неквадратной матрицы являются только М (J, J — 1), М (J, J) и М (J, J + 1) для 2 < J п — 1. Отсюда расширенная форма уравнения (5.33) представляется как _____ __ я М(2, 1) 714(2, 2) М(3, 2) Л4(3, 3) 7Й(7У-1, TV-1) M(N-1,N)_ ~P'(k, 1)" Р'(&, 2) Р' (k, TV) ~ В (k, 2) В(k, 3) B(k, N— 1) (5.34) Для того чтобы получить единственное решение при неизвестных ' касательных векторах, как показано ниже, необходима квадратная матрица М, которая может быть образована с помощью специальных граничных условий на каждом конце полной кусочной пространственной кривой. В этом случае уравнение (5.33) может быть записано в виде МР' = В, (5.35) где М — требуемая квадратная матрица. Следовательно, внутренние касательные векторы Рг, ..., P«-i могут быть заданы с помощью выражения Р' = MJB, (5.36) где М-1 — матрица, обратная М. 1 Если значения Р' известны, то величины В(- для каждого сегмента могут быть вычислены на основе уравнений (5.27), (5.30).
Существует много вариантов задания граничных условий кусочных кривых в пространстве. Например, если известны лишь несколько точек или по физическим соображениям требуется точное воспроизведение наклонов кривой на концах отрезка, то желательно предусмотреть различные варианты задания граничных условий. Непосредственное решение получается заданием двух концевых касательных векторов Р[ и Р„ всего кусочного сплайна. Это граничное условие называется закрепленным концевым, условием [5.2] или фиксированным сплайном [5.31. Полное матричное уравнение для пространственной сплайновой кривой в этом случае описывается выражением 7И(2, 1) 7И(2, 2) М(3, 2) 7И(3, 3) M(N — 1, N— 1) N) Р'& 1) P'(/e, 2) Р' (k, 3) ~B(Z>, 1) В (6, 2) В (k, 3) (5.37) Р' (k, N— 1) Р'(/г, 2V) В (k, N - 1) B(k, N) При этом подразумевается, что Р' (k, 1) = В (k, 1), как и требовалось. Заметим, что результирующая квадратная матрица М является также трехдиагональной. Эта система уравнений легко может быть решена для неизвестных касательных векторов Р' (k, 2), .... Р' (k, N— 1). Поскольку указанная матрица трехдиагональная, то решение можно получить очень компактным способом с помощью рекуррентных формул. Эта процедура используется в алгоритме, который представлен-в приложении В. Другие концевые условия будут увеличивать число ненулевых элементов в первой и последней строках матрицы М. Например, • rf2P Л гх рассмотрим математическое концевое условие - = I). Это условие называется слабым. Полагая уравнение (5.22) равным нулю для первого участка (k — 1) при t = 0 и используя уравнение (5.17), получаем 3 (Р2-Р1) 2. /8 (5.38)
Если то же самое условие используется для последнего участка (k = N — 1) при t = 4i, то с помощью уравнений (5.29) и (5.30) получим 2р;_! + 4Р; = -£- (Р„ - Р„_!). (5.39) Это приводит к тому, что ненулевые элементы в первой строке квадратной матрицы М равны М (1, 1) = 1,0 и М (1, 2) = 0,5. Ненулевые элементы в последней строке при этом М (N, N — 1) = = 2,0 и М (N, N) = 4,0. В матрице В элемент В (/г, 1) равен правой части уравнения (5.38), а элемент В (k, N) — правой части уравнения (5.39). Заметим, что это слабое концевое условие также приводит к трехдиагональной матрице М. Двумя другими условиями, используемыми на практике, являются циклическое и ациклическое концевые условия. Циклический сплайн можно использовать для получения замкнутой кривой или части кривой, которая периодически повторяется. Это основано на следующих характеристиках концевых условий: Pi(0) = P;(Q (5.40) и Р1(0) = К(/„), (5.41) т. е. наклон и кривизна в начале и конце кривой равны. Вспоминая уравнения (5.16) и (5.28) — (5.30), можно заключить, что условие, выраженное уравнением (5.40), дает р; - р;_, = 2 Г3(р„-рп-1) /2 2Р«-1 (5.42) Аналогично условие, выраженное уравнением (5.41), приводит к виду Г 3(Р2~Р1) 2P'i Z2 ~3(РП-РП-1) ‘п 2Pn-i Для того чтобы получить единственное уравнение, эти два уравнения можно объединить. В сочетании с матрицей М оно даст квадратную матрицу порядка (и — 1) X (и — 1). Отметим, что порядок матрицы уменьшен на единицу. Это происходит потому, что условия наклона И кривизны, наложенные на две из п точек, не являются больше независимыми. Таким образом, существуют только п — 1 независимых наклонов, которые должны быть определены. Далее объединим уравнения (5.42) и (5.43), умно-
жая уравнение (5.43) на tn, а затем выййтая его из уравйёнйя (5.42). В результате приходим к выражению р; - р;_! - 2 оГЧРп-.- —• о ' 3(р2—Pl) 2Р1 Р2 <1 Р„) /3 п *2 *2 Рп-1 । Рп 1 / t2 + I2 ‘ п nJ tn £ п - 6 [-2(Рп~!3 Рп) + + 41 & (5-44) 1п гп 1п _ Учитывая, что Pi = Р„, и перегруппировав члены, получим 2(1 +-^-)р; + р^ + р;_1 = = 3 (Р2 - Рх) - 3 (P„_i - P„)J-. (5.45) Использование этого результата позволяет записать уравнение (5.35) в виде 714(2, 1) 714(2, 2) 714(2, 3) 714(3, 2) 714(3, 3) 714 (N ~ 1), N~ 1) Р'(*. О Р'(7г, 2) Р'(/г, 3) В (k, 1) В (k, 2) В (/г, 3) (5.46) Р'(/г, N — 1) В (/г, N — 1) Для того чтобы обратить нетрехдиагональную матрицу в уравнении (5.46), можно использовать обычный метод исключения Гаусса или какие-либо другие методы обращения матриц. Заметим, что матрицы Р' и В теперь являются матрицами (п — 1) х 1-го порядка, как это требовалось для умножения матриц в уравнении (5.46). Ациклический сплайн подобен циклическому сплайну, за исключением Pi (0) = - р; (/„) и рТ(О) = -ри*п).
Следующая за этим процедура, используемая для вЬЩода уравнения (5.45), даст 20 + V) pi + p2^--pn-i = = 3 (Р2 *- Ра) + 3 (P„_i - Р„) у- • (5-47) Таблица 5.1 Концевые условия для пространственных сплайнов Концевое условие Нулевые элементы матрицы M в первой и последней строках В (*, 1); В (*, W) 1. Закрепленное (фиксированное) Р' (0), Р' (tn) м (1,1) = 1; М (N, N) = 1 В(/г,1) =U(W); В (k,N) = и (k.N) 2. Слабое *Е = 0 М (1,1) = 1; М (N, N — 1) = 2; М (1, 2) = 0,5; М (N, N) = 4 I5 1 £ ° Л । ч । У CU & cf со |сч ° II " 3. Ци dP dt н da~P dt* кличность _ d p t=o dt fe=i _ d2~P t=o~ dt* *=i 7 -1 M **^1 М (1,1) =2(1 + -^-); М(1,2) = ф-; *2 М(1л —1) = 1 В (&,1) = = 3(P2-P1)4L-»2 -3(p„_i-pn)-^-; 1п В (kt N) не определен 4. Ацикличность dP | dt L=o — fe=i dP I dt |*=f„ k=N—l и d2P I dta |/=o ~ fe=i _ d2P 1 d/2 k=N-1 А1(1,1)=2(1+А); М(1,2)= А; ?2 —1) = —1 в (Ы) = = 3(Р2-Ра)А + +3(р„_1-р„)--!-; tn В (k, N) не определен
Рис. 5.2. Сравнение концевых условий: а — закрепленного н слабого; б — циклического и ациклического; в — слабого и циклического концевых условий для открытых кривых Из уравнения (5.47) следует, что при наложении концевых ациклических условий, необходимо изменить знак элемента М. (1, N — 1) матрицы М для граничных условий циклического сплайна, а также знак элемента В (k, N— 1) [см. уравнение (5.46)1. Сплайн этого вида используется для получения параллельных концевых участков с касательными векторами, которые равны по модулю, но противоположны по направлению. Концевые условия кубических сплайнов, рассмотренные выше, сведены в табл. 5.1. Кубические сплайны будут иметь непрерывные первые и вторые производные при любых приведенных концевых условиях. Однако при значительном числе заданных точек машинное время, требуемое на обращение матрицы М, может быть чрезмерным. Другие типы концевых условий для сплайнов рассмотрены в работах [5.3, 5.4]. Сравнение влияния различных концевых условий показано на рис. 5.2. Эти результаты получены с помощью подпрограммы SPLINE, приведенной в приложении В. На рис. 5.2, а закре-„ du пленная кривая имеет заданный наклон dy ) dx = Wl-dT> Равныи
—1 в начале, и +1 в конце. Другая кривая имеет слабые гра-d2P „ ничные условия, при которых = 0 в каждой концевой точке. Имеет место существенное изменение формы кривой, особенно вблизи начала. Обе кривые проходят через четыре заданные точки и состоят из трех участков. В этом конкретном случае программой предусматривается выдача 10 внутренних точек на каждом участке. На рис. 5.2, б показаны две замкнутые кривые: кривая с циклическими концевыми условиями, проходящая через 12 заданных точек, где первая и последняя точки имеют координаты х — 0, у = 0, а также замкнутая кривая при ациклическом концевом условии в х = у— 0. Заметим, что концевой касательный вектор в начальной точке направлен по нормали вверх, в то время как касательный вектор в конечной точке этой кривой — вертикально вниз. На рис. 5.2, в сравнивается слабое граничное условие с циклическим. Из рисунка видно, как циклическое концевое условие можно использовать при незамкнутой кривой. Однако начальное направление .концевого касательного вектора для кривой с циклическими условиями совпадает с направлением касательного вектора на противоположном крае этой кривой. Пример 5.1. Кубические сплайны. Предположим, что три вектора положения точек Рх = [0 01, Р2= [1 2], Р3 = [3 2] известны. Используя слабые концевые условия, найдем с помощью кубического сплайна приближенную кривую, проходящую через эти точки. Положим <тах равным длинам хорд каждого участка. Вначале вычислим расстояния и ts: h - = J/F + 25 = /5; t3 = У(х3-х2Г + (у3~у2У = К(3-1)2 + 02 = 2. Используя, уравнение (5.26) и слабые концевые условия (5.38) и (5.39), получим матричное уравнение, с помощью которого определяют внутреннюю производную Pg, в виде 7Й(Р’-Р1) —'[5 (Р8- Р2) + 4(Р2- PJ] 3 (Р8 - Рг)
Решение для производных, полученных обращением квадратной матрицы 3X3 с последующим умножением, дает р;‘ Р2 1,1574 —0,3148 —0,0787 0,1574 0,0440 “ —0,08798 _Рз_ 0,1574 —0,0787 0,2940 _ 0,671 (Р2 - Рх) 0,671[5(Р8-Р2) + 4(Р2-Р1)] 3(Р3-Р2) Таким образом, Р'1 == 0,5654 (Р2 - Р,) - 0,132 (Р3 - Р2) = = 0,5654 [1 2]-0,132 [2 0] = [0,3013 1,1308]; Р2 = 0,2112 (Р2 - Р,) + 0,2641 (Рз - Р2) = = 0,2112[1 2]-j-0,2641 [2 0] = [0,7394 0,4224]; Рз _ 0,1056 (Р2 - РО + 0,618 (Рз - Р2) = ' = — 0,1056 [1 2] 4-0,618 [2 0] = [1,1305 —0,2111]. Уравнения (5.11) и (5.27)—(5.30) позволяют провести расчет кубических сплайновых сегментов. Для первого сегмента имеем р (/) = в± + в2/+ в3/2 + в4/3 и В1=Р1=[0 0]; В2 = р[ = [0,3013 1,1308]; вз- 5 (Ра Р1) у- = 0,6[1 2]-0,8944 [0,3013 1,1308] — —0,4472 [0,7394 0,4224] = [0 0]; в*=1й(Р1-Р2)+4+4== = 0,17889[—1 —2]0,2 [0,3013 1,1308] + + 0,2 [0,7394 0,4224] = [0,0293 —0,0472]. Выбор отношения <//2 = 1/3; 2/3 дает / = 0,745; 1,4907; тогда Р (0,745) = [0 0] +0,745 [0,3013 1,1305] + (0.745)2 [0 0] + + (0,745)3 [0,0293 —0,0472] = [0,2366 0,8227] и, аналогично, Р (1,4907)= [0,5462 1,5289].
Для второго промежутка уравнения (5.27) и (5.30) дают В1 = Р2-=[1 2]; В2 = Р2 = [0,7394 0,4224]; В3 = 3(Рз4~Ра) — -ф- — -^- = [0,19535 —0,31685]; В4 = = [—0,03253 0,05283]. Выбирая новые отношения t!t3 = 1/3; 2/3, получим t= 2/3; 4/3 и уравнение (5.11) даст Р (А) = [1,573 2,1579]; Р (А) = [2,256 2,125]. Полученные результаты приведены на рис. 5.3. Следует отметить, что для нахождения внутренних производных необязательно обращать матрицу. Уравнения (5.24), (5.38) и (5.39) могут быть легко решены с помощью соответствующей подстановки. Алгоритм для нахождения] подгонок с помощью кубических сплайнов при п известных точках приведен в приложении В. Возможны различные модификации рассмотренного выше метода, которые могут дать в некоторых случаях лучшие результаты. Например, Маннинг [5.5] описывает алгоритм, позволяющий менять наклон кривой путем изменения длины касательных векторов в заданных точках (узлах), через которые проходит кривая. Этот метод нашел применение при раскрое обуви с помощью вычислительных машин. Другой метод улучшения гладкости кривой с помощью явных кубических сплайнов описан Денманом [5.6]. Он основан на численном поиске в диалоговом дратурного интегрирования по этого метода является то, что Рис. 5.3. Результаты аппроксимации с помощью кубического сплайна для примера 5.1 режиме с использованием ква-методу Гаусса. Особенностью концевые условия выбираются автоматически на основе критерия минимизации. Указанный метод используется в автомобильной промышленности. Для сглаживания колебаний, которые могут возникнуть в кубических сплайнах, используют напряженные сплайны. Колебания появляются из-за того, что на кубический сплайн действуют локальные возмущения в каждой заданной точке кривой, поэтому третья производная оказывается только кусочно-постоянной. Непосто-
яйство третьих производных может вызвать нежелательные йз-гибы в некоторых точках кривой. Рассмотрим физическую интерпретацию сплайна в виде бруса, нагруженного в определенных точках. Если тонкий подвижный брус имеет малые колебания, то для их устранения нужно приложить усилие к концам бруса (выровнять сплайн). Напряженный сплайн является математическим аналогом этой процедуры. Теория и применение этих методов рассмотрены в работах [5.7, 5.8]. 5.6. Параболическая интерполяция Метод параболической интерполяции, рассмотренный здесь, впервые был предложен А. У. Оверхаузером [5.9]. Интерполяционная схема предполагает наличие четырех последовательных точек одновременно. Плавная кривая между двумя внутренними точками образуется путем сопряжения двух перекрывающихся параболических сегментов. Первый параболический сегмент задается первыми тремя точками, а последние три точки из ряда, состоящего из четырех точек, определяют второй, параболический сегмент. Рассмотрим четыре последовательные точки в пространстве, которые характеризуются векторами положения Р3, Р4, Р5 и Рв. Две перекрывающиеся параболы Р (г) и Q (s), проведенные между этими точками, показаны на рис. 5.4. Каждая парабола проходит через три точки и определяется своей местной системой координат. Парабола Р (г), проходящая через точки Р5, Р4 и Р6, описывается следующим уравнением в системе координат «, г:\ w = Р (Г) =ar(d — г). (5.48) Как показано на рис. 5.4, ось г направлена вдоль хорды Р3Р6, а ось и перпендикуляр на г в плоскости, определяемой точками Р3, Р4 и Р6. Длина хорды между точками Р3 и Р6 обозначена через d. Парабола может быть полностью охарактеризована двумя конечными точками Р3, Р5 ;и третьей точкой Р4, лежащей на кривой. Значение постоянной а выбирают так, чтобы парабола Р (г) проходила через точку Р4. Рис. 5.4. Параболическая интерполяция
Рис. 5.5. Геометрические соотношения для функций г (/) и s (/) Аналогичным образом параболу Q (s) задают так, чтобы она проходила через точки Р4, Р5 и Рв. В этом случае парабола описывается уравнением v = Q (s) = ₽s (е — s); (5.49) здесь ось s направлена вдоль хорды Р4Р6, ось v перпендикуляр на к s в плоскости, определяемой точками Р4, Р5 и Рв, а величина Р выбрана так, что парабола проходит через точку Р5. Длина хорды между точками Р4 и Рв обозначается через е. Параметр t теперь выбирают как расстояние, измеренное вдоль хорды между точками Р4 и Р5. Кривую С (t), являющуюся усреднением двух перекрывающихся парабол, строят между точками Р4 и РБ с помощью интерполяции. Смешанная кривая С (0 определяется уравнением [' -(т)']₽(г) + V (6'60) где i0 — расстояние между точками Р4 и Р5. Коэффициенты парабол Р (г) и Q (s) выступают в роли параметров интерполяции, которые линейно изменяются от 1,0 до 0 и от 0 до 1,0 соответственно. Векторы положения Р3, Р4, Р5 и Рв, указанные выше, задают в декартовой системе координат, тогда как интерполирующие параболы Р (г) и Q (s) задают в местных системах координат. Для того чтобы получить параметрические параболические уравнения в системе координат xyz, полезно использовать геометрический пример, показанный на рис. 5.5. На рис. 5.5, а отрезок P4J перпендикулярен отрезку между точками Р3 и Р5. Таким образом, плоскость иг может быть задана скалярным произведением (Р4- J)(P5 —Р3) = 0. (5.51) Если J находится в плоскостиЪг на расстоянии г — xd, то в системе координат xyz имеем J = Ps + x(P5-P3), (5.52)
и уравнение (5.51) может быть записано в виде {Р4 - [Рз + х(Р5 - Р3)]} (Р5 - Р3) = 0. Решая его относительно х, получим Л. . (Р4 ~ Р3) (Р5 ~ Р3) _ (Р4 - Р3) (Р.5 ~ Р3) (5.53) (5.54) P(r) соот- .. (Рэ-Рз)2 d2 При этим векторное уравнение для точки Р на параболе относительно системы координат xyz записывается в виде ношения Р (г) = Р3 + 4 (РБ - Рз) + ar (d - г) (Р4 - J) (5.55) или, с учетом уравнения (5.52) для J, в виде выражения р 0 = Рз + Т (рв ~ ps) + ar (d - г) [(Р4 - Р3)-Х(Р5 - р3)1. (5.56) Остается- определить а и параметрическое уравнение для г (f). Поскольку в системе координат иг имеем Р (xd) = Р4, то векторное уравнение для Р4 — J запишется в виде Р4 — J = axd (d — xd) (Р4 — j) или 1 “ — d2x(l —х) (5.57) Требуемое соотношение для г = г (t) может быть получено из геометрических построений, показанных на рис. 5.5, а. Из этого следует, что г = xd 4- t cos 0, (5.58) где cos 6= (Р5-Р4)^-=^-. (5.59) Для параболы Q(s) аналогичные уравнения можно получить, используя рис. 5.5, б. Для параболы Q (s) соотношение s = s (/) запишется в виде s = t cos 6 = ЦР5 - Р4) (5.60) И Q (s) = Р4 -(Рв - Р,) + ps (е - s) [(Р5 - Р4) - х (Рв - Р4)]. (5.61) Если точки заданы, то нужно применить процедуру для вычисления х с использованием уравнения (5.54), а затем для вычисления а применить уравнение (5.57). При заданном значении параметра t величина г определяется уравнениями (5.58) и (5.59). Точки, лежащие на кривой Р (г), вычисляются на основании уравнения (5.56). Эта же процедура затем повторяется, для параболы Q (s). Для того чтобы продлить полученную кривую через дополнительные точки, интерполирующая кривая Ct- (^) формируется
между каждой парой соседних точек. Это дает непрерывную кривую, которая также является непрерывной по первой производной во внутренних заданных точках. Ее первые производные можно легко определить, если уравнение (5.50) переписать в виде С(0 = P(0 + ^[Q(0- Р(0]- (5-62) В этом случае rfc dP . t / dQ dP \ 1 D4 ,|- -йГ = ^г + -7гЬг-тг) + V(Q”P)- (5’63) В точке P4 интерполирующей кривой t = 0 и P = Q. Таким образом, / rfc \ _ / dP \ s \ dt )pi \ dt /p4 Это означает, что наклон интерполирующей кривой равен наклону параболы Р (г) в точке Р4. Аналогично, в точке Р5 на смешанной кривой t = /0 и Р = Q. Таким образом, Уравнение интерполирующей кривой С (t) является кубическим, если оно записано в основной декартовой системе координат. Поэтому внутри интервала может появиться точка перегиба. Однако интерполяционная кубическая кривая, которая определяет кривую между точками Р4 и Р6, не проходит через точки Р3 и Рв. Этим параболическая интерполяция отличается от других интерполяционных алгоритмов, которые обеспечивают прохождение кубической кривой через четыре точки, лежащие на заданной кривой. Как показано Оверхаузером [5.91, это свойство исключает появление ложных отклонений в процессе задания кривой. Параболическую интерполяцию можно использовать только для внутренних сегментов кривой. Два концевых сегмента должны быть простыми параболами, проходящими через первую и последнюю из трех заданных точек соответственно (см. параграф 4.9). Расстояние между этими точками может быть меньше, чем для других сегментов, что позволяет более точно задать наклон кривой в ее конечных точках. Близко расположенные пространственные точки можно'также использовать на участках большой кривизны. Метод параболической интерполяции приводит к иному способу задания и построения кривой. В изложенном ранее методе, использующем кубический сплайн, прежде чем строить кривую, необходимо было задать весь набор точек и два касательных вектора в конечных точках. При параболической интерполяции, для того чтобы начать построение кривой, необходимы только три точки. Они определяют исходный параболический сегмент между точками Р4 и Р3, проходящий через точку Р2. Затем может быть
добавлена четвертая точка, и сопрягающий отрезок кубической кривой между точками Р2 и Р3 будет определен, как показано выше. Последующие точки можно добавлять одну за другой: они задают участки непрерывной кубической интерполирующей кривой, которые составляют ее внутреннюю часть. Если изображение получается неправильным, то последняя точка или точки могут быть уничтожены, и будет найдена новая форма путем использования других точек. Когда художник, модельер или дизайнер делает эскиз, он использует короткие, перекрывающиеся штрихи для того, чтобы получить желаемый контур. Это похоже на метод, который можно использовать при параболической интерполяции. Если эскиз строится с помощью вычислительной машины, то векторы, характеризующие точки, легко могут быть изображены различными способами. В некоторых случаях желательно сделать эскиз с помощью параболической интерполяции, а затем результирующие точки соединения использовать в качестве данных для других методов. Пример 5.2. Параболическая интерполяция. Предположим, что векторы положения Р3 = [0 0], Р4 = [1 1], Рв = [3 2] и Рв = [4 3] известны. Определим кривую между двумя точками Р4 и Р5, используя параболическую интерполяцию. Процедура заключается в следующем. 1. Для каждого промежутка, состоящего из трех точек, необходимо: а) вычислить х\ б) определить а или Р; в) найти г или з для данного t. 2. Вычислить интерполирующую кривую. Для первого промежутка уравнение (5.54) дает х (Pg-P3)(P6-P3) (i + j) (3i + 2j) (PB-P3)2 (9 + 4) = 0,3846. 1 о Из уравнения (5.57) следует, что а = d2x(l —х) = 13 0,3846(1 —0,3846) = °’325‘ С помощью уравнения (5.58) вычислим сначала to = /(2)2+(1)2 = /ЁГ; (Р6 - Р<) (Р6 -Р3) _ (21 + j) (3i + 2j) 6 + 2 tod 1Л5 1Л13 “/5 /13 = 8 = 0,9923, Кб /13 а затем г = xd + t cos 0 = 0,3846 /13 + 8< = 1,3867 + 0,9923/. /5/13 При t!t0— 1/3 имеем t — 0,745, которое даст г = 2,126. В этом случае, исходя из уравнения (5.56), имеем Р(г) =P3 + -j(P5-P3) + «r(d-r) [(Р4 -Р8) -(Рв -Р3)]; Р (2,126) = Р3 + 0,5896 (Рв — Р3) + 1,0223 [(Р4 — Р3) — 0,3846 (Рв — Р3)] =
= [0 0] + 0,5896 [3 2] + 1,0223 [11] —0,3846 [3 2] = = [О 0] + [1,7688 1,1792]+ 1,0223 [—0,1538 0,2308]; Р (2,126) = [1,612 1,154] |///о=1/5- При tltn= 2/3 имеем t = 1,4907 и г = 2,8659; уравнение (5.56) в этом случае даст Р (2,8659) = [2,279 1,7487] |^0=2/3- Для второго промежутка имеем х _ (Р5-Р4) (Р«-Р4) _ 8 _ х = (р6-р4) 13 °’6154’ ₽ = 0,325; ~ 1^5; ¥ е= /13; cos 0 = (Ps ~ (Рс ~~.fr) = 0,9923; /ое s = t cos 0 = 0,99232. При t!t0 = 1/3 имеем 2 = 0,745 и з= 0,7392; уравнение (5.61) даст Q (S) = р4 + -J- (Рв - Р4) + ₽s (е - S) [(Р6 - Р4) - X (Pe - Р4)] = = Р4 + 0,205 (Р6 - Р4) + 0,6887 [(Р6 - Р4) — 0,6154 (Р„ - Р4)] = = [1,721 1,251] |^о=1/3; при t/t0 — 2/3 t — 1,4907 и s = 1,479; уравнение (5.61) даст (2(1,479) =[2,3882 1,584] |//4=2/3. Уравнение (5.62) может быть теперь использовано для того, чтобы усреднить две параболы и получить желаемую кривую между точками Р4 и Рв, т. е. Рис. 5.6. Результаты параболической интерполяции для примера 5.2. « + (-£-) о W; при t/tQ =1/3 2 С (0,745) = ~ Р (2,126) + О + 4-0(0,7392) =[1,648 1,361], О а при tlta = 2/3 С (1,4907) = 4- Р (2,8659) + О 9 + -f_Q (1,479) = [2,352 1,6398]. О Результаты вычислений иллюстрирует рис. 5.6. Алгоритм реализации описанного выше метода параболической интерполяции приведен в приложении '.В.
5.7. Кривые Безье В ранее рассмотренных методах построения трехмерных кривых получаемая кривая проходит через все заданные точки, т. е. эти методы являются методами интерполяции. Во многих случаях они позволяют получить прекрасные результаты. Однако указанные методы имеют некоторые недостатки, которые делают их малопригодными для систем построения кривых в диалоговом режиме. Это объясняется тем, что задание формы кривой с помощью таких числовых 'характеристик, как направление и модуль касательных векторов, не обеспечивает интуитивного ощущения правильности построения кривой, т. е. не всегда существует очевидная связь между числами и формой кривой. Кроме того, методы подгонки трехмерными кривыми в результате дают кривую одного и того же порядка, который не меняется от сплайна к сплайну. Для того чтобы увеличить кривизну, нужно вводить больше точек, формируя лишь большее число кубических сплайнов. Безье [5.10, 5.11, 5.12] описан другой метод изображения кривой, который создает у пользователя более естественное восприятие связи между входом и выходом. Это позволяет использовать программу в качестве рабочего инструмента художника, модельера или дизайнера, которые могут изменять форму кривой и ее порядок за счет просто задаваемых входных параметров до тех пор, пока выход не будет соответствовать желаемому образу. Кривая Безье определяется «вершинами» многоугольника, который единственным образом задает форму кривой. Кривой принадлежат первая и последняя вершины, в то время как другие вершины характеризуют производные, порядок и вид кривой. Таким образом, кривая задается посредством открытого многоугольника, как показано на рис. 5.7. Так как вид кривой зависит от формы многоугольника, то изменение положения вершин этого многоугольника создает у пользователя значительно более ясное интуитивное ощущение восприятия связи между входом Рис. 5.7. Кривые Безье
.И выходом. Для того чтобы увеличить порядок любого криволи-нейного сегмента, нужно лишь задать дополнительные вершины. Такая методика отличается значительной гибкостью и лишена многих недостатков методов подгонки кубическими сплайнами и параболической интерполяции. Кроме того, при использовании кривых Безье упрощается внесение изменений. Любое изменение вершин в заданном промежутке оказывает влияние на вид кривой только внутри этого промежутка, в то время как оставшаяся часть кривой будет прежней. Математически кривая Безье описывается полиномиальной функцией, которая осуществляет интерполяцию между первой и последней вершинами. Полиномы Безье относятся к классу полиномов Бернштейна. Поэтому говорят, что кривая Безье строится в базисе Бернштейна. Базисная функция задается соотношением = (5-64) где (0 = гщ?й)Г- <><«»; п — степень полинома; i — порядковый номер отдельной вершины. Вообще, n-й порядок полинома характеризуется п -f- 1 вершинами. В этом случае точки кривой задаются выражением Р (0 = Д Р/„, z (О, О < t < 1, (5.66) где Рг — функция компонент векторов различных вершин. В начальной точке криволинейного сегмента 4,о(0) = = 1. (5.67) В конечной точке криволинейного сегмента имеем = ‘5-м> Уравнения (5.67) и (5.68) вместе с уравнением (5.66) показывают, 4то Р (0) = Ро и Р (1) = Р„, т. е. вершины Рои Р„ действительно являются начальной и конечной точками криволинейного сегмента. Другой особенностью интерполяционной функции является то, что максимальные значения достигаются при t = i/n. Этот максимум определяется согласно работе [5.12] как ^(^“(т)''^1’"'-- (5£»>
Рис. 5.8. Многоугольники Безье для полиномов третьей Степени Например, для кубического полинома В качестве примера рассмотрим кубические кривые Безье, показанные на рис. 5.8. Предположим, что приращения параметра t для сегмента постоянны. Допустим t = 0; l!s\ 2/3; 1. В этом случае, используя уравнения (5.64) и (5.65), получим Л,1 ® 1 (1 “/2)" ЗЦ1 “ П и Л,2 == WiF (1 — 0 = з/2 (1 — о- Результаты сведены в табл. 5.2. Используя данные табл. 5.2 и уравнение (5.66), получим р(т)=4-р«+4р-+тр>+4-р- Таблица 5.2 Параметры кривой Безье, п = 3, i = 0-i-3 t А, о Л,1 •^8,2 •^8,8 Примечание 0 1/3 2/3 Г 1 8/27 1/27 0 . 0 4/9 2/9 0 0 2/9 4/9 0 0 1/27 8/27 1 ^з,о|/=о = 1 Ад = 3/(1-О2 j8>2i=3^(i-0 А, зк=1 —1
Таким образом, для того чтобы построить кубический криво-линейный сегмент, необходимо лишь задать четыре вершины многоугольника и затем, используя уравнения (5.64) и (5.65), вычислить точки вдоль кривой для Ос t с 1,0. Следует отметить, что задавать параметрические производные в явном виде необязательно. Пользователь может быстро научиться предсказывать форму кривой по виду многочлена. Различные сегменты кубических кривых Безье показаны на рис. 5.8. Хотя нет необходимости в задании производных при построении отдельных кривых Безье, при сопряжении двух кривых такого типа эти производные приходится задавать для получения одинакового наклона и кривизны в точке сопряжения. Для r-й производной в начальной точке справедливо выражение ' V (°) = Т^7)Г 2 (-1)"' ( ; ) (5.70) а в конечной точке соотношение г ₽г(1>=тАгЕ(-1’'(9₽"-'- <5-71’ Таким образом, первые производные в концевых точках соответственно P'(O) = n(Pi-Po) (5.72) и Р'(1)= л (5.73) Это показывает, что первая производная кривой Безье в начальной и конечной точках равна тангенсу угла наклона начального и конечного сегментов многоугольника. Эти наклоны определяются направлениями отрезков, соединяющих крайние пары вершин. Аналогично вторые производные Р" (0) = п (п - 1) (Ро - 2Р, + Р2) (5-74) и Р" (0) = л (л — 1) (Р„ - 2Р„_г + Р„_2)- Эти результаты показывают, что вторые производные кривой Безье в начальной и конечной точках зависят от двух крайних сегментов многоугольника или от его трех крайних вершин. Вообще г-е производные в конечной и исходной точках определяются конечной или начальной точкой и ее г соседними вершинами. Следовательно, условия непрерывности при сопряжении кривых Безье могут быть заданы достаточно просто. Если одна кривая Безье n-го порядка определена вершинами Р,, а примыкающая кривая Безье /n-го порядка — вершинами at, то в этом случае непрерывность первой производной в точке соединения
имеет место, когда Р' (1) = gQ' (0), где g— скаляр. Используя уравнения (5.72) и (5.73), получим (5-75) Поскольку кривая должна быть непрерывной в точке соединения, то Qo = Рп- Таким образом, наклон в конце сегмента равен начальному наклону следующего сегмента, когда три точки Рп и P„_t лежат на одной прямой. Для частного случая двух смежных кубических кривых Безье (рис. 5.9) п — т = 3. Если как направление, так и модуль касательных в точке соединения совпадают, то уравнение (5.75) даст Q i — Qo — Рз — P2 Q j — Р3- Таким образом, Qx + Р2 — 2 Р3. гЭто означает, что точка Р3 является средней точкой промежутка PaQi- Заметим, что непрерывность наклона требует только того, чтобы точка Р3 лежала на P2Qi где-то между точками Р2 и Qx. Для тех же самых кривых Р и Q, рассмотренных выше, непрерывность второй производной задается выражением т (т - 1) (Qo - 2Qj + Q2) = n (п - 1) (PZi_2 - 2Р^ + Р„). (5.76) На практике может возникнуть необходимость увеличения порядка кривой, т. е. увеличения числа вершин многоугольника, для того чтобы сохранить непрерывность производной более высокого порядка. Это сделать часто легче, чем расщепить всю кривую на меньшие сегменты, оставив порядок кривых прежним, скажем, третьим. Простота увеличения порядка сегментов кривой, что предпринимают для лучшего задания ее формы, является одним из основных преимуществ метода Безье. Пример 5.3. Кривая Безье. Предположим, что Ро= [1 1], Pi = [2 3] и Р2 = [4 3] являются векторами положения многоугольника Безье. Согласно уравнениям (5.64)—(5.66) имеем где Р (0 = L р A i i=0 п! i 1 (п — i)! ’ Здесь п = 3, поскольку мы имеем четыре вершины. Рис. 5.9. Непрерывность первого порядка для кубических сегментов Безье
Отсюда (ЛЛ =______6_____ \ i ) i I (3 — i) I и Js. о W = (1) t° (i — o® = (1 — 0s; ^3.i(0= 3/ (i — oa; 4г(0=3/а(1-/); /s,3 (0 = t3. Таким образом, P (/) = Po/g.o + Pi/s, 1 + P2^s, 2 + PsA, s- • Величины Jn i для различных значений параметра t приведены в табл. 5.3. Таблица 5.3 Коэффициенты для кривой Безье t Л.О J»,i •?Ъ,2 /а,8 t ^8,0 7а, 1 /а, 2 Js,3 0 0,15 0,35 0,5 1 0,614 0,275 0! 125 0 0,325 0,444 0,375 0 0,0574 0,239 0,375 0 0,0034 0,043 0,125 0,65 0,85 1 0,043 0,0034 0 0,239 0,0574 0 0,444 0,325 0 0,275 0,614 1 Окончательно получим Р(0) = Ро = [1 1]; Р (0,15) = О,614Ро + 0,325?! + 0,0б74Ра + 0,0034Р3 = [1,5 1,765]; Р (0,35) = О,275Ро + 0.444Р1 + о.239Р2 + 0,043Р3 = [2,248 2,367]; Р (0,5) = 0,125Р0 + 0,375?! + 0,375Р2 + 0,125Р3 = [2,75 2,5]; р (0,65) = 0,043Р0 + 0.239Р1 + 0,444Ра + 0,275Р3 = [3,122 2,36]; Р (0,85) = 0,0034Р0 + 0.514Р1 + 0,325Ра + 0,614Р3 = [3,248 1,75]; Р (0= Рз = [3 !]• Эти точки вместе с задающим многоугольником изображены на рис. 5.10. Рис. 5.10. Кривая Безье для прймера 5.3 Алгоритм, который можно использовать для вычисления сегментов кривой Безье, заданных векторами положения вершин многоугольника, приведен в приложении В. 5.8. Кривые на основе В-сплайнов С математической точки зрения, кривая, которую строят путем использования вершин характеристического многоугольника, определяется
С помощью некоторого алгоритма интерполяции или аппрокси-мации, устанавливающего взаимосвязь между кривой и многоугольником. Этот алгоритм обеспечивается выбором базиса или весовой функции. Как отмечалось в предыдущем параграфе, использование базиса Бернштейна приводит к кривым Безье, которые строят с помощью уравнения (5.66). Они обладают несколькими полезными свойствами. Две характеристики базиса Бернштейна ограничивают кривизну получающихся кривых. Во-первых, это число вершин характеристического многоугольника, определяющего порядок полинома, который задает кривую. Так, кубическая кривая должна характеризоваться многоугольником с четырьмя вершинами и тремя промежутками. Многоугольник с шестью вершинами всегда дает кривую 5-го порядка. Единственным путем снижения порядка кривой является уменьшение числа вершин, и, наоборот, единственным путем увеличения порядка кривой является увеличение числа вершин. Во-вторых, это значение весовой функции Jn<i (t), заданное уравнением (5.64), которое не является нулем для всех значений параметра в пределах внутреннего промежутка кривой. Поскольку любая точка на кривой Безье является результатом взвешивания значений всех определяющих вершин, то изменение в одной вершине влияет на весь внутренний промежуток. Практически это ограничивает возможность осуществлять независимые изменения внутри промежутка. Так как наклоны концов кривой Безье устанавливаются направлениями первой и последней сторон многоугольника, то можно изменить среднюю вершину характеристического многоугольника без изменения направления концевых наклонов. Однако форма всей кривой определяется общей природой базиса Бернштейна. Невозможность независимого изменения наклона в некоторых случаях может создать значительные трудности. Существует другой базис, называемый В-сплайн базисом, по отношению к которому базис Бернштейна представляет собой частный случай. Этот базис обычно не является глобальным. Локальный характер поведения В-сплайн кривых обусловлен тем, что каждая вершина Рг связана с единственной базисной функцией. Таким образом, каждая вершина влияет на форму кривой только в пределах диапазона значений параметра, где связанная с ней базисная функция не является нулем. В-сплайн базис позволяет также изменить порядок результирующей кривой без изменения числа вершин задающего многоугольника. Теория В-сплайнов впервые была предложена Шенбергом [5.13]. Рекуррентные формулы для численных вычислений были опубликованы Коксом [5.14] и Буром [5.15]. Райзенфельд [5.16] применил В-сплайн базис для получения кривых. Если предположить, что Р (f) — векторы положения вдоль кривой в виде функции параметра t, то кривая, сфер-
мированная посредством В-спЛайн базиса, задается соотношением п p(0 = S (5.77) где Р,- — вершины характеристического многоугольника. Для t-й нормализованной В-сплайн базисной кривой k-ro порядка весовые функции Nlik(t) определяются рекуррентными формулами = { 1, если х{ < t <5 xI+x; О, во всех других случаях и ДГ. С А — Nj, k-j (О I (Xj+k — t) ^i+1, k-i (0 zg Yg\ ’ Xi+k-i — Xi -r xl+k— *1+1 ' 1 ’ Величины xt являются элементами узлового вектора, который рассматривается ниже. Параметр t изменяется от 0 до /Шах вдоль кривой Р (О- Для В-сплайн кривых необходимо использовать дополнительную переменную, чтобы учитывать их собственную кривизну. Это достигается за счет использования узлового вектора, являющегося последовательностью действительных целых чисел xiy таких что xt с хм для всех xt. Примерами узловых векторов являются векторы [0 1234] и [0 001 12333]. Значения Xi рассматриваются как параметрические узлы. Они могут быть использованы для указания диапазона изменения параметра t, который используется для генерации В-сплайн кривой при 0 < t < /гаах. Напомним, что диапазон изменения параметра для кривой Безье был выбран произвольно в пределах 0 с t с 1 для кривой любого порядка. Теперь отойдем от этого допущения и используем узловой вектор для того, чтобы охарактеризовать изменение параметра кривой. Например, вектор [0 1 2 3 4] показывает, что параметр t изменяется от 0 до 4. Число промежуточных узловых векторов зависит от числа сторон задающего многоугольника. Двойной промежуточный узел указывает на то, что в этой точке находится двойная вершина (промежуток нулевой длины), а тройной промежуточный узел характеризует три совпадающие вершины (два промежутка нулевой длины). Точка на В-сплайн кривой, которая соответствует параметрическому узлу (t = xz), называется геометрическим узлом. Удобно использовать равномерно расположенные узлы с единичными расстояниями между несовпадающими узлами, так как при этом получаются целочисленные значения компонент узлового вектора. Дополнительно к уз-
левому вектору должен быть задан порядок кривой. Если по-рядок k равен числу вершин многоугольника и не существует сложных вершин, то будет получена кривая Безье. По мере того как порядок уменьшается, генерируемая кривая приближается к задающему многоугольнику. При k = 2 полученная кривая является последовательностью прямых линий, которые идентичны задающему многоугольнику. Порядок кривой отражается в узловом векторе, который используется для создания кривой. Необходимо задавать узлы сложности k как в начале, так и в конце серии узлов. Например, рассмотрим пятигранник (и + 1 = 5) без сдвоенных вершин. В таком случае параметр t изменяется от 0 до и — k + 2 в пределах всей кривой. Для кривой третьего порядка, заданной пятью вершинами, параметр /гаах — 4 — 3 + 2 = 3. Полный узловой вектор с кратностью, равной 3 на каждом конце, в этом случае задается вектором [ООО 1 2333]. Кривая второго порядка для того же задающего многоугольника имеет узловой вектор [0 0 1 2 3 4 4], а кривая четвертого порядка — вектор [0 0 0 0 1 2 2 2 2). Если используется семь вершин многоугольника, то получится кривая третьего порядка, для которой узловой вектор имеет вид [0 0 0 1 2 3 4 5 5 5]. В качестве последнего примера рассмотрим многоугольник с четырьмя различными вершинами. Узловой вектор для кривой 2-го порядка имеет вид [0 0 1 2 3 3]. Если две центральные вершины совпадают и составной узел располагается между двумя конечными узлами, то узловым вектором для кривой второго порядка будет вектор [0 0 1 1 2 2]. Если гладкость достигается за счет введения производных более высокого порядка, то порядок кривой определяет, насколько она гладкая. Например, кривая четвертого порядка является непрерывной по первой и второй производной, а также и по положению точек вдоль всей кривой. В-сплайн кривая математически задается как полиноминальная сплайн функция порядка k (степени k — 1), поскольку она характеризует следующие два условия: функция Р (t) есть полином степени k — 1 на каждом интервале (/,</< х/+1); Р (t) и все ее производные порядка 1, 2, ..., k — 2 непрерывны вдоль всей кривой. Таким образом, В-сплайн кривая четвертого порядка является кусочным кубическим сплайном. Учитывая гибкость задания кривых на основе В-сплайнов, йожно использовать различные способы коррекции формы кривой. Например, можно изменять порядок k (в пределах 2 < fee < п + 1) введением кратных вершин или за счет изменения числа и (или) положения кратных вершин в задающем многоугольнике. Эти процессы иллюстрируют рис. 5.11—5.16. На рис. 5.11 показаны три В-сцдайн кривые различного порядка, каждая из
Рис. 6.12. В-сплайн кривые с кратными вершинами; через косую дробь указаны порядок кривой и число вершин I? которых проходит через одни угольника, заданные в виде и те же четыре вершины много- “0 0" 3 9 6 3 Кривая'второго порядка образует три прямые линии между четырьмя вершинами, кривая четвертого порядка соответствует кривой Безье для - заданного многоугольника, кривая третьего порядка занимает промежуточное положение. Заметим, что все три кривые имеют одни и те же конечные наклоны, определяемые наклоном первого и последнего отрезков фазового многоугольника. Чем выше порядок кривой, тем больше, ее форма будет отличаться от формы задающего многоугольника. Таким образом, увеличение порядка спрямляет кривую. Рис. 5.12 иллюстрирует влияние сложных вершин в характеристическом многоугольнике. Для каждой из четырех кривых показано, что порядок кривой равен числу вершин характеристического многоугольника. Нижняя кривая на рис. 5.12 идентична
нижней кривой на рис. 5.11, где кривая четвертого порядка опре-делена четырьмя вершинами многоугольника. Вторая кривая на рис. 5.12 является кривой пятого порядка со сдвоенной вершиной в точке [3 9]. Третья кривая является кривой шестого порядка с тройной вершиной в точке [3 9]. Последняя кривая седьмого порядка имеет задающий многоугольник вида ~0 О” 3 9 3 9 3 9 3 9 6 3 _9 6_ с четырьмя кратными вершинами в точке [3 9]. Из рис. 5.12 ясно, каким образом можно провести кривую ближе к определенной вершине за счет использования кратных вершин, сохраняя при этом одни и те же конечные наклоны для каждой кривой. С другой стороны, понижение порядка приводит к смещению кривой по направлению к вершинам многоугольника. На рис. 5.13 задающим многоугольником для каждой кривой является многоугольник “ О 0“ 2 5 4 8 6 3 . 6 3 8 6 _10 7_ Из этого следует, что в четвертом элементе многоугольника имеется сдвоенная вершина. Здесь кривые деформируются за счет изменения их порядка при неизменном виде характеристического многоугольника. Первая кривая является кривой седьмого порядка; порядок этой кривой равен числу вершин многоугольника. Вторая кривая — это кривая пятого порядка. Ее форма ближе к исходному многоугольнику, особенно около сдвоенной вершины. Третья кривая имеет порядок, равный трем. Заметим, что в сдвоенной вершине имеется излом, поскольку наклон и кривизна в ней не являются непрерывными. Сдвоенная вершина необходима для того, чтобы создать излом в кривой третьего порядка. Утроенная вершина образует излом в кривой четвертого порядка. Это свойство обычно используют при проектировании кораблей.
10 8 6 4 2 0 Рис. 5.16. В-сплайн кривая третьего порядка Рис. 5.14 демонстрирует, как можно осуществить локальные изменения, не нарушая формы кривой в целом. Каждая кривая является кривой пятого порядка и задается характеристическим многоугольником с семью вершинами, среди которых нет сложных. Единственное'4 различие между кривыми заключается в расположении пятой вершины многоугольника, как показано на рисунке. Из рис. 5.14 следует, что начальная часть каждой кривой не изменяется. Это обусловлено локальной природой В-сплайн базиса. На рис. 5.15 изображены кривые от второго до пятого порядка, полученные с помощью многоугольника с шестью вершинами, также не содержащего сложных вершин. Кривая четвертого порядка является кубическим сплайном. Метод В-сплайн кривой позволяет построить кубический сплайн с помощью многоугольника с тремя и большим числом вершин. Поскольку в этом многоугольнике имеется пять отрезков, то кривая пятого порядка является кривой Безье. Особенно интересна кривая третьего порядка, так как она представляет собой касательную к внутренним отрезкам многоугольника в их средних точках. Это иллюстрирует также рис. 5.16, где кривая третьего порядка формируется с помощью характеристического многоугольника с восемью вершинами. Пример 5.4. В-сплайн кривая. Рассмотрим те же самые четыре вектора положения для многоугольника, что и в предыдущем примере для кривой Безье. Ими являются Ро = [1 1 ], Рх = [2 3], Р2= [4 3], Р3= [3 1]. Положение узлового вектора для кривой второго порядка, определенной четырьмя вершинами многоугольника, задано как [0 0 1 2 3 3], где х0 — 0, = 0, х2 = 1, .... XS ~ 3. Используя уравнение (5.78), будем считать, что 0/0 = 0. Требуемые величины k определяются выражениями N т = К~~°) <0 ш fa-0 ^1.1 (0 • х0 х2 х± N _ 0-0) ^1.1(0 , (х3-/)/У2,1(0 . ,sV ' Xa— Xi ‘ x3 —-x2 ’
Л/ Z Z (0 , - 0 N3>1 (П . 7V2,2 \l) — ~ ~ I --------------J X3 -Xj Л4 —X3 N (n = (/-2) N3,j(t) fe-QA^tO _ 3,2 \ / о I v v * Л4 X3 Xg X4 В частности, при t = 0 No 2 (0) = 0 (l)/0 + (1 — 0) (1)/1 = 1,0 и Л+2 (0 = = 0 (1)/1 + (2 — 0) (0)/I = O’. Для i= 0,5 найдем, что Wj 2 (/) = 0,5 (1)/1 + -|- (2 — 0,5) (0)/l = 0,5, а для t = 1 вычислим, что Л/32 (1) = ’1 (0)/l + 2 (0)/0 = — 0. Другие значения У,,/, находятся аналогичным образом. Табл. 5.4 дает окончательные результаты. Используя значения Ni,j, приведенные в табл. 5.4, можно определить точки на кривой второго порядка. Из уравнения (5.77) в общем случае имеем Р (0 = Р<М,2 + PiA/1>2 + P2W2>2 + PSWS,S. Для t= 0 получим Р (0) = Ро (О + Pi (0) + Р2 (0) + Р3 (0) = Ро. Аналогично найдем Р (0,5) = Ро (0,5) + Рх (0,5) 4- Р2 (0) + Р3 (0) = 0,5 (Ро + Рх); Р (1) = Ро (0) + Pi (1) + Ра (0) + Р3 (0) = Рх; Р (1,5) = Ро (0) + Рх (0,5) 4- Р2 (0,5) + Р3 (0) = 0,5 (Рх + Р2). Таблица 5.4 Весовые функции для В-сплайна второго порядка t М>,а ЛГ>,. ^2,2 ^8 ,2 t Л^0,2 Nt,2 N3, 2 0 1 0 0 0 2,0 0 0 1,0 0 0,5 0,5 0,5 0 0 2,5 0 0 0,5 0,5 1,0 0 1,0 0 0 3,0 0 0 0 1,0 1,5 0 0,5 0,5 0 ' Таким образом определяются последние три точки Р (2) = Р2, Р (2,5) = 0,5 X X (Р2 + Р3) и Р (3) = Р3. Эти точки, очевидно, попадают на прямые линии, соединяющие вершины многоугольника. Теперь, если порядок кривой увеличивается с двух до четырех при том же самом задающем многоугольнике, имеющем четыре вершины, то будет получена кривая Безье, поскольку порядок кривой равен числу вершин. Узловой вектор (для <гаах = 3 — 4+2 = 1) будет [0 0 0 0 1 1 1 1]. Весовые функции, заданные уравнением (5.78), имеют вид л/ (f\ — а-о)^,8 (o , (1-ПА/1,3(/) . 2V0,4 \Ч 0—0 1 1—0 N. (fl — a-o)^,3(«) , (i-0tf2,3(0 . IV1,4 \4 1—0 1 1—0 w Л (fl — (/-0) JV213 (0 , (1-0^3,з(0 . /v2,4 V/ 1 —0 1 1—0 Д7 - (fl — K-0)W3,3 (/) , (1-OW4,3(/) IV3,4 V7 1 —0 ' 1 ’ 1-1
Переходя к определению величин Ni,3, получим А/„ (f\ (t-0) W0,a(t) , (1-/)ZV112 (Z) . 2V0,3 V/ 0 — 0 1 0—0 J ЛЛ „ (t - 0) zv112(z) , (1-/)ZV2,2 (Z) . /vl,3 vJ 0—0 1 1 —0 > AZ ~ (f\ (Z -0) U2,2(t) । (i — Z) N3l2 (Z) . /V2,8V/ 1 —0 1 1 —0 J AZ (f\ - (z — o) N3,2 (Z) , (1-Z)ZV4,2 (Z) . /vs,3 V/ — 1-0 1 1-1 J Д7 ( — (Z-1)ZV412(Z) , (1-Z)ZV6,2 (Z) iV4f4 V) 1 — 1 1 1-1 Уравнения для N{>3, в свою очередь, включают величины N{>2, заданные соотношениями ZV0,a (Z) = (z-o)AzOil(z) , (0—Z)^.i(Z) 0—0 , 1 1 0—0 zv1>a (Z) = (Z-O)Wi,i(Z) , 0—0 1 (0-Z) w211 (Z) 0 — 0 ♦ AZ„ « (Z-O)W211(Z) , (1-Z) ZV3,i(Z) IV2,2vJ 0—0 . 1 1 — 0 N3,2 (Z) — (Z-O)WS11(Z) . (l-Z)ZV4,i(Z) 1 —0 г 1 — 1 (Z-1)ZV4>1-(Z) r (1-Z)^4(Z) lV4t2 V/ 1—1 1 1-1 (Z-l)W6,i(Z) , , (l-Z)ZV6>i(Z) Z^5,2 (Z) 1 — 1 1 r=f Вычислим точку на кривой при t = 0,5. Поскольку определенная узловым вектором вариация параметра для данного случая попадает в интервал 0 С < i < 1,'то значение Р (0,5) должно соответствовать величине Р (0,5), найденной в призере, приведенном в параграфе 5.7. Для Z = 0,5 N3,i = ZV1,1 = = У41=У51=Де1=0иУ31 = 1,0. Таким образом, N0’2 = ZVi’2 = ZV4’2= = ZV8,2 - 0 и Ms,а (0.5) = 0 + (0,5)1 (1) = 0,5; ZV3,a (0.5) = + о = 0,5. Используя полученные результаты, найдем, ^о,з — ^4,з = 0; (°-5|,(0'5) "0.25; (0.5) (0.5) + (0.51(0.5) =0 6!). «v=»aWL + O = 0,25.
Аналогично найдем ЛГ0(4 = о + (9’5) <9>29)- = 0,125; (0,5) (0,25) ,+ (0.5)(0:5)0)375. ^4=(0.5)(0,5)-+ (0.5) (0,25) . =0>375; лгм = (9’9.Ц9^)_ + о = о,125. Окончательно точка на кривой при t— 0,5 задается уравнением (5.77) в виде Р (0,5) = Ро^О,4 + + P2^2,4 + Рз^8,4, или Р (0,5) = [1 1] 0,125+[2 3] 0,375 +[4 3] 0,375 + [3 1ДО,125 = [2,75 2,5]. Компонента х в этом случае Рх = 2,75, а компонента у будет Ру = 2,5, что совпадает с результатами для кривой Безье. Алгоритмы, с помощью которых можно построить требуемые узловые векторы В-сплайн базиса и соответствующие В-сплайн кривые, приведены в приложении В. СПИСОК ЛИТЕРАТУРЫ 5.1. Higdon, A., Ohlsen, Е., Stiles, W. and Weese, J., Mechanics of Materials, 2-nd edition, John Wiley and Sons, Inc., New York, 1967. 5.2. South, N. E., and Kelly, J. P., «Analytic Surface Methods», FORD Motor Company N/C Development Unit, Product Engineering Office, December 1965. 5.3. Nutbourne, A. W., «А Cubic Spline Package PART 2 — The Mathematics», Comput. Aided Des., Vol. 5, No. 1, January 1973. 5.4. Adams, J. Alan, «А Comparison of Methods for Cubic Spline Curve Fitting», COMPUT. Aided Des., Vol. 6, pp. 1—9. 1974. 5.5. Manning, J. R., «Computer-Aided Footwear Design: A method of constructing smooth curves», SATRA (SHOE and Allied Trades Research Association — SATRA House, Rockingham Road, Kettering Northants, England) Research Report R. R. 251, December 1972. 5.6. Denman, H. H., «Smooth Cubic Spline Interpolation Function», Industrial Mathematics, J. Ind. Math. Soc., Vol. 21, Part 2, pp. 55—75, 1971. 5.7. Cline, A. K-, «Curve Fitting Using Splines Under Tension», Atmos. Tech., No. 3. pp. 60—65, 1973. 5.8. Schweikert, D. C., «An interpolation curve using a spline in tension», J. Math. Phys., Vol. 45, pp. 312—317, 1966. 5.9. Overhauser, A. W., «Analytic Definition of Curves and Survaces by Parabolic Blending», Technical Report No. SL68— 40, Ford Motor Company Scientific Laboratory, May 8, 1968.
Б. 10. Bezier, Р. Е., Emploi des Machines a Commande Numerique, Masson et Cie, Paris, 1970. Translated by Forrester D. R. and Pankhurst, A. F. as Bezier, P. F., Numerical Control Mathematics and Application, John Wiley and Sons, Inc., London 1972. 5.11. Bezier, P. E., «Example of an Existing System in the Motor Industry: The Unisurf System», Proc. Roy. Soc. (London), Vol. A321, pp. 207—218, 1971. 5.12. Forrest, A. R., «Interpolation and Approximation by Bezier Polynomials», CAD Group Doc. No. 45, UML, Cambridge University October 1970. 5.13. Schoenberg, I. J., «Contributions to the Problem of Approximation of Equidistant Data by Analytic Functions», Q. Appl., Math., Vol. 4, 1946, pp. 45—99; 112—141. 5.14. Cox, M. G., «The Numerical Evaluation of B-Splines», National Physical Laboratory DNAC 4, August 1971. 5.15. De Boor, Carl, «On Calculating with B-Splines», J. Approx. Theory, Vol. 6, pp. 50—62, 1972. 5.16. Riesenfeld, R. F. «Berstein — Bezier Methods for the Computer — Aided Design of Free — Form Curves and Surfaces. Ph. D. Thesis, Syracuse University, March 1973.
Глава ь ....—..............—. . . ОПИСАНИЕ И ПОСТРОЕНИЕ ПОВЕРХНОСТИ 6.1. Введение Поверхности и их описание играют важную роль в большинстве процессов проектирования и производства. Очевидными примерами этого могут служить проектирование и производство автомобилей, самолетов, кораблей, деталей машин, изделий из стекла и одежды. Традиционным способом представления поверхности является использование ортогональных проекций. Однако многие сложные поверхности не могут быть эффективно представлены таким образом. Развитие интерактивных методов проектирования с помощью вычислительных машин наряду с разработкой станков с цифровым управлением привело к созданию более эффективных методов описания поверхностей. Причем основной упор делается не на машинное графическое изображение поверхности, а на такое ее математическое описание, с помощью которого можно получить либо чертежи, либо ленты для станков с цифровым управлением. Возможность изготовления требуемой поверхности по числовым данным, содержащимся в памяти ЭВМ, была показана Безье [6.11, Сабином [6.2], Петерсом [6.3] и др. Ниже рассмотрены различные методы аналитического и численного, представления трехмерной поверхности. Сначала остановимся на простой сферической поверхности. 6.2. Сферические поверхности Некоторые свойства кривых, которые используются при определении поверхностей, можно продемонстрировать на примере поверхности с известным аналитическим описанием. С этой целью рассмотрим сферическую поверхность. Характерные кривые на поверхности получаются с помощью плоскостей, которые пересекают сферу. В качестве примера рассмотрим пересечение единичной сферы и плоскости, заданной уравнением z = cos01 = a1 (рис. 6.1, а). Результирующая кривая является широтой. Уравнение для широты получается путем совместного решения уравнений двух поверхностей. Непараметрическое уравнение для единичной сферы имеет вид х2 4- у* + z2, = 1,0. (6-1)
Рис. 6.1. Пересечение плоскости и сферы: а — широта; б — долгота Таким образом, пересечение определяется уравнением х2 4- у2 = 1 —о?. На рис. 6.1, б плоскость при 6 = 60, которая пересекает сферу, характеризуется уравнением х sin 60 — у cos 60 = О или сгх — Ь1У = 0. (6.2) Такое пересечение плоскости и поверхности дает долготу. Решая уравнения (6.1) и (6.2) совместно, получим уравнение для кривой в виде [(>У + 1] +22=1’°- Участок сферической поверхности может быть образован посредством пересечения сферы четырьмя плоскостями (рис. 6.2). Это дает две^широты и две долготы для границ полученного участка. Векторное уравнение для результирующего участка поверхности S (6, Ф) имеет вид S = (cos 0 sin Ф) ех + Рис. 6.2. Участок сферической поверхности + (sin 6 sin Ф) еа + (cos Ф) е3, (6-3) где ех, е2 и е3 — единичные векторы в прямоугольной системе координат, aS — вектор положения на поверхности сферы (см. рис. 6.2). Этот участок поверхности можно рассматривать как траекторию
движения точки в трехмерном пространстве с двумя степенями свободы, управляемую посредством.переменных параметров 0 иФ. Параметрическое представление единичной сферической поверхности имеет вид х = cos 0 sin Ф; у = sin 0 sin Ф; Z = cos Ф. (6.4) Заметим, что для параметрического представления поверхности требуется два параметра 0 и Ф. Участок, показанный на рис. 6.2, характеризуется указанными параметрами, лежащими в пределах О < 0 « л/2 и л/4 < Ф < л/2. Из рис. 6.2 видно, что участок поверхности определяется четырьмя граничными кривыми АВ, ВС, CD и DA. Для сферического участка они являются дугами окружностей. Дальнейший анализ показывает, что форма граничной кривой может быть описана определенными касательными векторами в конце каждой кривой, т. е. восемью касательными векторами в каждой угловой точке А, В, С и D (рис. 6.2). Для известной аналитической поверхности эти концевые касательные векторы можно получить, дифференцируя уравнение, описывающее поверхность. Для сферической поверхности, показанной на рис-. 6.2, они определяются выражениями = — (sin 0 sin Ф) в! -j- (cos 0 sin Ф) е2; (6.5) = (cos 0 cos Ф) ег (sin 0 cos Ф) е2 — (sin Ф) е3. (6.6) Модуль каждого из этих касательных векторов равен единице. В угловой точке А имеем 0 = О, Ф = л/2 as ае _'е2’ as а® = — ез- В угловой точке С имеем 0 = л/2, Ф = п/4 и as _ 1 36 ~ /2 еь as 1 1 а® /2 ез’ Здесь модуль производной dS/dO равен 1/J/2, а модуль произ водной dS/дФ будет 1. Касательные векторы во всех четырех углах показаны на рис. 6.2, а их параметры приведены в табл. 6.1.
Касательные векторы для сферической поверхности, изображенной на рис. 6.2 Точка 5S 1 as 1 5S |5S| 56 1 561 5Ф |5Ф| А е2 1 — e3 1 В 1 1 1 _ 1 1 KFе2 KF KF 4 KF Сз с 1 i 1 i 1 /г ei KF KF c‘ KF Сз D Cl i — ез 1 При описании границ участка поверхности используются также смешанные производные или векторы кривизны в угловых точках. Для единичного сферического участка они описываются выражением -£»- (#)=4- (§•)=- (sin 6 cos ф) ei+(cos 6 cos ф) ea- (6-7) Модуль вектора кривизны определяется зависимостью | 5^~5Ф | = sin2 ® cos2 Ф + cos2 ® cos2 Ф = cos Ф’ (6-8) 52S Заметим, что в угловой точке А = 0, а в угловой точке С d2S /1 \с 56 5Ф Векторы кривизны и их модули для участка сферической поверхности показаны в табл. 6.2. Для указания формы и ориентации участка поверхности можно использовать нормаль к поверхности. Нормали к поверхности задаются векторным смешанным произведением двух касательных векторов. Для сферического- участка имеем cos 6 sin Ф sin 6 cos Ф точках А 1 ез О —sin Ф и D N- —ед и —е2, в угловойт очке В N=------(ех + е3), а в угловой точке С N=-4- (е2 + е3). Нормали в угловых точках В и С показаны на рис. 6.2. Нормали для участка поверхности, на- N =_ — 56 ‘ 5Ф — sin 6 sin Ф cos 6 cos Ф Из этого следует, что в угловых N = —е9. в угловойт очке В N = - (6-9)
Векторы кривизны для сферической поверхности, приведенной на рис. 6.2 Точка а / as \ ао \ ае) I а / as \ I ] ао \ ае) ] А 0 0 в 1 1 /2- °2 /Г с 1 1 /г ei /2" D 0 0 правленные от центра сферы, имеют отрицательные значения этих величин. Единичная нормаль к поверхности определяется величиной п = N/| N |. Раскрывая уравнение (6.9), получим N = — (cos 6 sin2 Ф) в! — (sin 6 sin2 Ф) е2 — (sin Ф cos Ф) es (6.10) и | N | = ]/ cos2 6 sin4 Ф -)- sin2 6 sin4 Ф + sin2 Ф cos2 Ф = sin Ф. (6.11) Таким образом, п = — (cos 6 sin Ф) ех — (sin 6 sin Ф) е2 — (cos Ф) е2, (6.12) где |п |=1,0. (6.13) Еще одной векторной операцией, которую можно использовать для описания поверхности, является скалярное перемножение векторов. Для рассматриваемого участка поверхности получим -Ц- -Ц- = [(—Sin 0 sin Ф) ех + (cos 0 sin Ф) е2] [(cos 0 cos Ф) ej + + (sin 6 cos Ф) e2 — (sin Ф) e3] = 0. (6.14) Так как скалярное произведение этих касательных векторов равно нулю, то два касательных вектора взаимно перпендикулярны. Таким образом, на поверхности линии при Ф — const (широты) перпендикулярны линиям при 0 = const (долготам). Воспользовавшись сферической поверхностью для иллюстрации ряда полезных понятий, например таких, как касательные векторы, векторы кривизны и нормали к поверхности, рассмотрим теперь методы описания произвольных поверхностей.
6.3. Плоские Поверхности Рис. 6.3. Параметрический пря< моугольник Некоторые методы изображения поверхностей удобно рассмотреть на примере плоской поверхности. В этом параграфе мы используем ограниченную с четырех сторон плоскую поверхность. Четыре стороны, определяющие поверхность, являются линиями, которые соединяют четыре угла и образуют границы. Как показано в предыдущем параграфе, с помощью уравнения (6.4) можно выражать точки, которые попадают на поверхность, в виде функции двух параметров. Пусть этими двумя параметрами будут и и w. Выражение для плоской поверхности в этом случае имеет вид X-/(U, »);] (6 |6) У = g («. ay). J Функции в уравнениях (6.15) выбирают таким образом, чтобы четыре граничные линии описывались следующими четырьмя условиями: U — Сх, Cj «• w с С-2, и = с.2, С w С с2; w — Ci, ti « и с с2; w — с.2, q с и^с%. Эти условия определяют квадрат на плоскости uw, как показано на рис. 6.3. Функции, которые описывают рассматриваемую поверхность, являются функциями, изображающими этот квадрат. Дифференциалы функций хну, описанных уравнениями (6.15), соответственно , дх , dx . ах =; -г— аи 4- dw; ди ‘dw dy — -jr-du J- dw. du 1 ow Эти уравнения можно записать в матричной форме: 'dx' dy. Уравнение (6.17) связывает изменение дифференциалов на пло-скости^ют с соответствующим изменением дифференциалов на плоскости ху. (6.16) dx du 'du ' dy dy [dw. dw dw - (6-17)
Примеру6.1. Плоская поверхность. Рассмотрим поверхность на плоскости ху, заданную двумя параметрическими уравнениями вида х — Зп + w; у = 2u-f- 3w uw, с границами, которые характеризуются следующими условиями: и = 0, 0 с 1,0; и =; 1, 0 < w с 1,0; w = 0, 0 с и С 1,0; w = 1, 0 с и С 1,0. Эта поверхность показана на рис. 6.4, а. Уравнения для границ могут быть получены путем подстановки соответствующих значений и и ш. Итак, имеем и = 0, у = Зх, и — 1, у = 4х — 10; ИУ = 0, у = х; w = 1, у= х-{- 2. Производные, которые содержатся в уравнении (6.17), имеют вид ^-=3; -^ = 1; >=2+w; -^- = 3+«. ди dw ди ди> Из приведенных частных производных можно найти наклоны границ. При w = const dy _ dyjdu _ 2 + Д' . dx ~~ dx/du ~ 3 ’ при и = const dy ___ ду/dw ___ 3 +« dx dx/dw 1 Эти наклоны можно иайти из рис. 6.4, а. Можно также ввести дополнительные линии для того, чтобы лучше представить участок поверхности. Например, при и = 1/2 уравнением дополнительной линии является и = (14х — 17)/4. При w = 1/2 линия описывается уравнением у = (10x4- 13)/12. Эти две линии показаны на рис. 6.4, а штриховыми линиями. Рис. 6.4. Способы задания плоских поверхностей
Аналогичные вычисления можно сделать для выражения пло-ской поверхности, описанной уравнениями и = f (х, у); W = ё(х, у). На рис. 6.4, б показана поверхность, которая характеризуется уравнениями вида (6.18) г/2 . и = -2—; X X2 w =—. У Ее границы описываются соотношениями 1 < w < 4; 1 <i а) < 4; 1 < и <5 4; 1 С и « 4. граничной кривой приведены на w и = 1, и = 4, ш = 1, w = 4, Уравнения для каждой рис. 6.4, б. Для задания границы поверхностей могут быть использованы и другие виды кривых, такие как конические сечения, кубические сплайны, полиномы Безье или В-сплайн кривые. 6.4. Представление криволинейных поверхностей Прежде чем приступить к подробному описанию криволинейных трехмерных поверхностей, необходимо сделать несколько допущений. Сначала предположим, что описание поверхности основано на векторном параметрическом представлении. Для этого существуют несколько причин. Данный вид представления является осенезависимым. Он устраняет неопределенность значений наклона относительно некоторой произвольной системы осей, дает единственное представление многозначных поверхностей или пространственных функций, облегчает представление пространственных кривых в однородных координатах и допускает использование трехмерных преобразований однородных координат, рассмотренных в гл. 3. Далее предположим, что поверхность может быть представлена в виде кусочно-непрерывной, т. е. составленной из отдельных участков, которые соединяются по границам. Не будем пытаться представить всю поверхность аналитически. Для эффективного описания поверхности введем некоторые обозначения. Для этого представим кривую в виде векторной функции простой переменной, т. е. кривая Р (t) описывается зависимостью Р (/) = [х (t) у (t)] для плоской кривой и Р (0 = = Iх (О у (О г (01 для пространственной кривой. Здесь t является параметром. Как мы видели в предыдущих двух пара-
графах, для описания поверхности требуются две параметрические величины. Таким образом, можно предположить, что поверхность описывается векторной функцией двух переменных Р (и, эд) =- [х (и, w) у (и, w) z (и, эд)]. Кривую на этой поверхности можно представить за счет фиксации либо и, либо эд. Например, функция Р (и£, эд) представляет кривую при и — ut — const, а функция Р(и, wt) — кривую при w — = const. Кривая на поверхности Р (u, w) может быть также описана в виде уравнения связи двух параметров. Например, f (и, w) = 0. Эта связь может задавать также пересечение плоскости с участком поверхности. Точку на поверхности можно представить путем задания значений обоих параметров, т. е. Р («,, эд£), или путем задания двух независимых соотношений между параметрами f (и, w) = 0 и g (и, w) = 0. Заметим, что последнее представление необязательно определяет единственную фиксированную точку. Допустим, что участок поверхности может быть составлен по известным данным, т. е. рассмотрим поверхность, которая должна быть построена. Для этого примем следующее: Р — вектор, полученный по известным или входным данным проектирования; Q — вектор, определяющий поверхность, конструируемую по входным данным. Таким образом, векторы Р и Q совпадают только в заданных точках. 6.5. Билинейные поверхности Одной из простейших поверхностей является билинейная поверхность. Предположим, что четыре угловые точки поверхности заданы на плоскости uw точками Р (0, 0), Р (0, 1), Р (1, 0), Р (1, 1), т, е. углами единичного квадрата. Необходимо построить функцию двух переменных, или билинейную поверхность Q (и, эд), где переменные (и, эд С 10, 11) позволяют линейно интерполировать любую точку на поверхности. Это даст функцию (рис. 6.5, а) Q (w, эд) = Р(0, 0) (1 — и)(1 — эд) + Р(0, 1)(1 — «)эд-|- + Р(1, 0)и(1-эд) + Р(1, 1)иэд, (6.19) или Q(w, эд) = [(1 — и) и] ’Р(0, 0) Р(0, 1)1Г1 _Р(1, 0) Р(1, !)] . — эд эд Здесь легко проверить, что Q (0, 0) = Р (0, 0) и т. д. Тогда точка в центре поверхности (и — эд = 0,5) определяется соотношением q(0 5, 05)г. [Р(0. 0) + Р(0, 1) + Р(1, 0) + Р(1. 1)1
a — плоская; Q (0.25; 0,25) = P (0,0) (0,75)« + P (0,1) (0,75) (0.25) + P (1,0) (0,75) (0,25) + + P (1,1) (0,5)» = 0,5625 P (0,0) + 0.I875P (0,1) + 0,1875 P (1,0) + 0,25 P (1,1) или [x (u, tti) у (и, w)] = [(1 — u)(l — w)(l u) w u(I — w) uw] X X p (0, 0)" P (0, 1) P (1, 0) = [0,5625 0,1875 0,1875 0,25] -o o- 0 1 1 0 = [0,4375 0,4375]; -P (1.1). _! 1. 6 — пространственная: [x (u, w) у (u, w) z (u, w)] = [(1 - u)(l - so) (1 - u) w u(l - га) uw] X "P (0, 0)" -0 0 0 - p (0, 1) 0 I 0 X P (1.0) = [(1 - u)(l - w) (l-u)sa u(l-w) uw] 1 0 I -P 0. *)_ -Oil-
Вообще, билинейная поверхность и векторы положения угловых точек поверхности являются трехмерными. Это позволяет записать уравнение (6.19) в более компактной матричной форме. В частности, Q[x(m) у {и, w) z(u, о»)] = UP, где Q — вектор положения на интерполируемой поверхности; Р — матрица векторов положения угловых точек, а U = [(1 -т ы)(1 — w) (\—u)w и(1—w) uw]. Пример использования двумерных векторов положения показан на рис. 6.5, а. Пример трехмерной билинейной поверхности показан на рис. 6.5, б; здесь заданными трехмерными векторами положения были четыре из восьми углов единичного куба. Алгоритм, с помощью которого можно строить участок билинейной поверхности, приведен в приложении В. 6.6. Линейчатые поверхности Линейчатые поверхности часто применяют в авиационной или кораблестроительной промышленности. Для того чтобы получить линейчатую поверхность, предположим, что известны две граничные кривые, связанные с противоположными сторонами единичного квадрата на плоскости uw. Допустим, что это кривые Р (и, 0) и Р (и, 1). Их можно задать, используя любой из способов, рассмотренных в гл. 5. Линейчатая поверхность в этом случае получается с помощью линейной интерполяции между этими кривыми, как показано на рис. 6.6. Интерполяционная схема определяется соотношением Q(w, &у) = Р(ы, 0)(1 — &у)4-Р(ы, 1)лу. (6.20) Заметим, что Q (0,0) Р (0,0) и т. д. Далее учтем, что края интерполируемой поверхности и задан- ных кривых совпадают, т. е. Q(w, 0) —P(w, 0); Q(m, 1) = Р(м, 1). С другой стороны, можно предположить, что известны Р (0, w) и Р (1, лу). Тогда линейчатая поверхность задается выражением Q (и, w) = Р (0, w) х X (1 -ц)4-Р(1, w)u. (6.21) Опять нетрудно показать, что Q (0, 0) = Р (0, 0), и т. д.
Пример 6.2. Линейчатая поверхность. Две кривые Р (и, 0) и Р (и, 1) заданы сегментами кубических сплайнов (см. параграф 5.3). Необходимо найти уравнение для линейчатой поверхности между двумя границами. Сегменты кубических сплайнов введены для того, чтобы получить закрепленные концы. Предположим, что для Р(ц, 0) и Р(и, 1) Pi = [0 0 0]; Pi = [10 0]; Ps = [0 10]; P2 = [l 1 1]; ₽{ = [0 1 1]; Р; = [0 11]; Р'=[0 1-1]; Р;=[01-1]. Отсюда, используя уравнение (5.19), получим Р (и, 0) = [0 0 0] + [0 1 1] t + [0 0 —3] /а + [0 0 2] I9; Р (и, 1) = [1 0 0] + [0 1 1] t + [0 —0,6213 0,7929] 4- [0 0,2929 —0,707] I9-Тогда уравнение (6.20) дает Q(«, w) = [w 0 0] + [0 1 1] t + [0 —0,6213о> (—3 + 3,7929о>)] <2+ + [0 0,2929о> (2 — 2.707UI)] t9. Это выражение определяет поверхность, изображенную на рис. 6.6. 6.7. Линейные поверхности Кунса Если известны четыре граничные кривые Р (и, 0), Р (н,1), Р (0, то) и Р (1, лу), то можно предположить, что сумма уравнений линейчатых поверхностей (6.20) и (6.21) в двух направлениях должна дать желаемый результат. Суммируя эти уравнения, получаем Q (и, w) = Р (и, 0) (1 — w) Р (и, 1) w Р (0, &у) (1 — ы) + Р 0» w)u-(6.22) Однако исследование уравнения (6.22) в угловых точках поверхности дает соотношение Q (0, 0) = Р (0, 0) 4- Р (0, 0) и т. д„ а на краях Q(0, да) = Р(0, 0)(1 -&у)4-Р(0, 1)и>4-Р(0, и>). Как видим, ни одно из них не соответствует исходным данным. Исследование уравнения (6.22) показывает, что несоответствие, возникает из-за того, что угловые точки просчитываются дважды, поскольку, например, Р (0, 0) содержится в описании граничных кривых Р (и, 0) и Р (0, лу). Правильный результат можно получить, вычитая лишние угловые точки, что приводит к выражению Q(w, цу) = Р(н, 0)(1 — &y)4~P(w, 1) w 4- Р (0, лу)(1—п)4- 4- Р (1, w) и - Р (0, 0) (1 - и) (1 - йу) - Р (0, I) (1 - «) w - — Р(1, 0) и (1 — w) —Р(1, 1)нйУ. (6.23)
Пример такой поверхности приведен на рис. 6.7. Можно легко показать, что в угловой точке Q (0, 0) = Р (0, 0) и т. д., а вдоль границ Q (0, ру) = Р (0, py),Q(w, 1).= Р(н, 1)ит. д. Указанные соотношения Рис. 6.7. Линейная поверхность Кунса означают, что интерполяция в угловых точках и на границах правильная. Такое линейное объединение четырех граничных кривых является простейшей поверхностью Кунса. В общем виде поверхность Кунса рассмотрена в параграфе 6.17 и в работе ричной форме уравнение (6.22) имеет вид Q(w, ру) = [(1 — и) и] ’Р (0, w) ‘ Р (1, ру) _ + [Р («, 0) — [1 — и ГР(О, 0) u] Lp (1, 0) Р(0, 1)- Р(1. 1). [6.4]. В мат- P(w, 1)] X '1 — w W 1 — w W Его можно записать более компактно: Q (и, w,) = [ 1 — и и 1 ] х Р(0, 0] -Р(1, 0) . р (и, 0) —Р(0, 1) Р(0, w) Д Г1 — w~ —Р (1,1) Р(I, ру) 11 w P(w, 1) 0 JL 1 _ (6.24) Функции (1 — и), и, (1 — &у) и w называются весовыми функциями. С их помощью по граничным кривым можно получить описание внутренней формы поверхности. Пример 6.3. Линейная поверхность Кунса. Пусть четыре граничные «кривые» являются диагоналями четырех граней единичного куба, как показано на рис. 6.7. Необходимо найти центральную точку на линейной поверхности Куиса между этими границами. Для центральной точки на поверхности уравнение (6.24) дает 0 0 0“ -0,5' Qx (0,5; 0,5) = [0,5 0,5 И — 1 0,5 — 1 0,5 1 0. 0,5 . 1 ' 0 ' = [0,5 0,5 1] 0 .0,5. ' 0 = 0,5; —1 0,51 70,5- Q^(0,5; 0,5) = [0,5 0,5 1] 0 -0,5 —1 0,5 0,5 0 _ 0,5 _ 1 .
= [0,5 0,5 <2г(0,5; 0,5) = [0,5 0,5 —1 1] о .0,5 О 0,5-1 Г0,5" —1 0,5 0,5 0,5 О L 1 . = [0,5 0,5 = 0,5. Другие точки на поверхности вычисляют аналогичным образом. Основанный на уравнении (6.24) алгоритм, с помощью которого можно получить поверхность Кунса, приведен в приложении В. 6.8. Участок бикубической поверхности В предыдущих параграфах были рассмотрены представление и описание участков простой поверхности исходя из понятия точки. Остановимся на некоторых практических приложениях. Одно из наиболее удобных описаний участков поверхностей основано на использовании параметрических многочленов 3-го порядка для граничных кривых Р (и, 0), Р (и, 1) и Р (0, &у), Р (1, w) и весовых функций. Весовые функции для этой схемы приведены ниже. "’''помним, что многочлен 3-го порядка (5.11) имеет вид Р (0 = Bj + В2/ + В3/2 + ВЛ (6.25) где Р (/) — функция векторных величин, имеющая компоненты X, у, Z. Для удобства ограничим диапазон изменения параметра t интервалом 0 < t < 1, т. е. используем нормализованный параметрический многочлен третьего порядка. Для граничных кривых поверхности параметр t = и — для одной пары кривых и t = w — для другой пары. Приведем весовые функции, которые позволят провести интерполяцию точек на единичном квадрате между двумя параметрическими многочленами третьего порядка, описывающими граничные кривые, т. е. между кривыми Р (0) и Р (1). В уравнении (6.25) содержатся четыре неизвестных коэффициента, следовательно, для их определения требуется четыре независимых^уравнения. Производная от многочлена (6.25) Р'(0 = В2 + 2В3/+ звл (6.26)
Теперь, полагая в уравнениях ( .2Ь) и ( .2 ) значение пара-метра t = 0 или t — 1, получаем Р(0) = Вх; (6.27а) Р(1) = В1 + В2Ч-Вз + В4; (6.276) Р'(0) —В2; (6.27в) Р'(1)^В2 + 2Вз + ЗВ4. (6.27г) Запись уравнений (6.27) в матричной форме дает ~Р(0)"| г0 0 о 11гв4- Р(1) 1111 в3 ,„поч Р'(0) “ 0 0 1 0 в2 (6,28) _P'(1)J 1_3 2 1 0J LBj или Р = МВ. (6.29) Решая уравнение (6.29) относительно коэффициентов, получим В = МХР, (6.30) где - 2 —2 1 1- —3 3 —2 —1 М1 = 0 0 1 0 (6.31) _ 1 0 0 0_ что согласуется с уравнением (5.22). Подстановка уравнения (6.30) в уравнение (6.25) и группировка членов приводят к соотношению Р (ц) = Л («) Р (0) + F2 (и) Р (1) + F3 (ц) Р' (0) -j- Г4 («) Р' (1), (6.32) или, в общем виде, считая t параметром, [Л(0 М) F3(t) = = [Z3 ? t —2 1 1- 3 —2 —1 0 1 0 1 0 0_ (6.33) Функции Ft (f) можно рассматривать как скалярные весовые функции параметрического многочлена третьего порядка. В них использованы величины Р (0), Р (1), Р' (0) и Р' (1) для того, чтобы образовать непрерывную кривую. На рис. 6.8 приведены эти весовые функции. Используем полученные результаты для построения бикубического участка. Для этого воспользуемся той же процедурой, что и для образования билинейного участка. Сначала построим поверхность, которая убудет .удовлетворять семейству граничных условий на краях, где и = 0 и и = 1, после чего построим другую
1,0 Рис. 6.8. Весовые функции параметрических кривых третьего порядка поверхность, которая будет удовлетворять граничным условиям на краях, где w = 0 и w — 1. Для получения бикубического участка объединим эти результаты. Для удобства введем систему обозначений для производных векторов положения. В частности, Р“(Ы) = ^_ 4 диа диа р>) = ^ Это означает, что подстановка осуществляется после дифференцирования. Более высокий порядок производных задается следующими выражениями: и Например, Ра’ь(и, Р“- 6(nz, wf) да+ьР(и, w) диа dwb _ Эа+ьР {и, w) диа дшь u~ui ' W~W; Р1 1 (Ui, Wj) = д2Р (и, ai) dudw Тогда линейчатая поверхность, удовлетворяющая граничным условиям на краях, при постоянном и представляется соотношением - Q (и, w) = Р (0, го) (1 — Зп2 4- 2п3) + + Р (1, да) (Зн2 - 2н3) - Р1,0 (0, да) (и — 2и2 + w3) + 4-Р1’°(1, да)(—п2Ч-п3). (6.34) Заметим, что здесь используются кубические весовые функции, ранее заданные в элементах обобщенного параметра^. Легко показать, что вдоль границ уравнение (6.34) приводит к требуемому
результату; например, при и = О Q(u, w) = Р* (0, w), т. е. по-' лучена кривая вдоль края при и = 0. рй Аналогично линейчатая кубическая поверхность, которая будет удовлетворять граничным условиям на краях, при w — const описывается соотношением Q (и, w) — Р (и, 0) (1 — Зда2 -f- 2да3) 4- Р (w, 1) (Злу2 — 2да3) + + Р°л(ц, О)(да-2да24-да3)-4-Ро,1(ц, 1)(—да^да3). (6.35) Легко показать, что и здесь граничные условия на краях выполняются. Так же, как и при построении билинейного участка, простое сложение уравнений (6.34) и (6.35) не дает правильного’резуль-тата. Снова угловые'точки поверхности будут учтены дважды — как в касательных векторах каждой угловой точки для граничных кривых, так и в смешанных производных, т. е. векторы кривизны в углах будут также учтены. Таким образом, нужно вычесть эти слагаемые с соответствующими весами для того, чтобы правильно построить поверхность. Окончательный результат для участка бикубической поверхности описывается зависимостью Q(m, да) = [АДи) F2(u) F3(u) Fi(u)] у. P(0, 0) P(0, 1) P(l, 0) P(l, 1) P’’°(0, 0) P’’0(0, 1) p>.°(l, 0) p’-°(l, 1) P°’ 1 (0, 0) P°’1 (1, 0) P1, 1 (0, 0) P1’1^, 0) Р0, 1 (0, 1)~ (да) р°-1 (1, 1) Г2(да) Р1’1 (0, 1) F3(w) р1’1 (1, 1)_ (6.36) компактно в виде Уравнение (6.36) можно переписать более Q = (щ да) = [и3 и2 ц 1 ] NPNT [да3 да2 да 1 ], (6.37) где N—квадратная матрица, приведенная в уравнении (6.31); Р — квадратная матрица, приведенная в уравнении (6.36); NT — транспонированная матрица. Анализ уравнений (6.36) и (6.37) показывает, что участок бикубической поверхности характеризуется кубическими весовыми функциями Flt F2, F3, Fit четырьмя граничными кривыми, четырьмя угловыми точками, восемью касательными и четырьмя векторами кривизны в угловых точках. Матрицу Р размерности 4x4 можно рассматривать как матрицу граничных условий. Она содержит информацию только об угловых точках, о касательных векторах и векторах кривизны в угловых точках. Для данного участка поверхности все элементы матрицы Р являются известными постоянными. Исследование
Ограничения, Наложенные на весовые функций Таблица 6.3 Функция и = 0 или w = 0 и — 1 или W = 1 Функция и = 0 или w = 0 и — 1 или W — 1 Л к Fs Ft * Штрих либо W. 1 0 0 0 и обозначают 0 1 0 0 производную К* Fl F's F't э по независ 0 0 1 0 имей переме! 0 0 0 1 [ной либо и, матрицы Р показывает, что ее элементы можно классифицировать следующим образом: Р = Угловые координаты цу-касательные векторы • Касательные векторы Векторы кривизны Для того чтобы участок поверхности был физически реализуем, смежные границы должны пересекаться в угловых точках. Для этого на функции, используемые для представления граничных кривых, накладывают ограничения. Например, в угловой точке А на рис. 6.9 Р (0, w) = Р (и, = Р (и, 1); в угловой точке С Рис. 6.9. Система обозначений участка трехмерной поверхности 0); в угловой точке В Р (0, w) = Р (ц, 1) = Р (1, и>); в угловой точке D Р (1, йу) = Р (н, 0) Методика определения ограничений, наложенных на весовые функции для того, чтобы они удовлетворяли заданным граничным условиям, изложена в работе [6.4]. В табл. 6.3 приведены ограничения на весовые функции. Фцрма бикубического участка определяется структурой матрицы Р размерности 4X4, т. е. видом размещения угловых векторов положения, модуля и направления касательных векторов и векторов кривизны в угловых точках. Рис. 6.10, а показывает влияние изменения модулей угловых касательных векторов вдоль границ (0, &у) и (1, w). На рис. 6.10, б показано влияние измене-
Рис. 6.10. Коррекция участков бикубической поверхности: а — изменение модуля касательного вектора; б — изменение направления касательного вектора; & — нулевая кривизна в точке С; г — конечная кривизна в точке С ния направления тех же самых угловых касательных векторов, а на рис. 6.10, в и 6.10, а — влияние суммирования вектора в участке исходной поверхности с нулевыми векторами кривизны. Участок бикубической поверхности успешно был использован для проектирования поверхностей [6.5, 6.6]. Однако можно отметить некоторые недостатки подхода, основанного на применении участков бикубической поверхности в системе машинного проектирования. Основной недостаток связан с тем, что для описания поверхности нужно задать три вида различных величин: векторы положения, касательные векторы, векторы кривизны. Обычно их модули —величины различного порядка. Например, для участка, имеющего 10 единиц в длину, касательные векторы могут иметь порядок модуля 10 единиц, векторы кривизны — 100 единиц и векторы положения — 1000 единиц. Кроме того, пользователь, как правило, не может использовать свою интуицию при формировании поверхностей из-за изменения элементов в заданной матрице. Например, угловой касательный вектор Р0-1 (0, 0) направлен к внутренней части граничной кривой, тогда как угловой касательный вектор Р0-1 (0, 1) направлен от внутренней части граничной кривой (см. рис. 6.10 и 6.11). Заметим также, что увеличение «/-компоненты углового касательного вектора Р0-1 (0, 0) приводит к тому, что граничная кривая (0, и») изгибается вверх, тогда как увеличение «/-компоненты углового касательного вектора Р0-1 (0, 1) на равную величину дает противоположный эффект в угловой точке (0, 1). Такие же неожиданные эффекты возникают при изменении приращения векторов
Рис. 6.11. Влияние изменения концевых касательных векторов на форму граничной кривой: а — исходная кривая; б — конечная кривая кривизны.Одинаковые прйра-щения всех векторов кривизны вызывают противоположный изгиб поверхности в углах (0, 1) и (1, 0) по сравнению с изгибом в углах (0, 0) и (1, 1). Таким образом, изменение компонент матрицы граничных условий Р может иметь очень сложный характер. Алгоритм, который используют для создания участка бикубической поверхности, описанной уравнением (6.37), приведен в приложении В. 6.9. ^"-участок Для того чтобы уменьшить трудности, которые встречаются при воспроизведении участков бикубической поверхности, иногда строят упрощенный участок поверхности, названный в честь Фергюсона ^"-участком [6.7]. ^"-участок является участком бикубической поверхности с нулевыми векторами кривизны. Поверхность на границах ^"-участка обладает непрерывностью 1-го порядка, потому что при ее построении в угловых точках задаются нулевые смешанные производные. Поэтому такие поверхности в ряде случаев нельзя считать достаточно гладкими. Тем не менее, легче сконструировать и модифицировать £7“-участок, поскольку он наиболее приемлем для многих видов задания поверхностей. В частности, 'Т'-участки пригодны для представления осесимметричных поверхностей, таких как вазы, чашки, бутылки, фюзеляжи самолета и т. д. 6.10. Поверхности Безье В предыдущих параграфах был рассмотрен ряд проблем описания поверхностей. Во всех случаях предполагалось, что задана необходимая математическая информация, такая как векторы положения, касательные векторы, векторы кривизны или весовые функции. Однако подготовка такой информации может оказаться чрезвычайно трудной задачей для пользователя-нематематика или пользователя, незнакомого с вычислительной техникой. Разработан ряд методов, позволяющих преодолеть эту трудность. Наиболее удобным является метод, основанный на распространении понятия кривой Безье (см. параграф 5.7) на поверхности [6.8].
Описание участка поверхности Ьезье может быть представлено в форме уравнения (6.36). Используя биномиальное представление кривой Безье, данное в параграфе 5.7, опишем участок поверхности многоугольниками Безье с четырьмя вершинами. Участок поверхности Безье выражается соотношением Р(«, да) = [(1—и3) 3(1—«)2« 3(1— и) и2 и3] х (1 — w)3 X В 3(1 — w)2w 3(1 — w)w2 (6.38) где ~В1,1 Bi, г В1.з В1, 4 В2,1 В2, 2 В2, з Вг,4 в = Вз, г Вз, 2 Вз, з Вз, 4 —Вд, 1 В4, 2 В4, 3 В4, 4_ (6.39) Тензор В составлен из векторов положения точек задающего многоугольника, который показан на рис. 6.12. В формулировке Безье только угловые точки А, В, С и D действительно лежат на поверхности. Точка В112 определяет вектор наклона от первой ко второй точке на первом многоугольнике Безье в' направлении и. Точка В2>1 характеризует вектор наклона от первой ко второй точке на первом многоугольнике Безье в направлении w. Точки В1.3, В2.4, В3, 4, В4>3, В4, 2 И Вз, 1 заданы таким же образом. Точки В2,2, В2>3, В3>3 и В3>2, расположенные на внутренней части задающей многоугольной поверхности, используются для того, чтобы задать векторы кривизны в угловых точках А, В, С и D соответстве нно. Как показано на рис. 6.12, поверхность Безье полностью определяется набором точек, являющихся вершинами многоугольной поверхности. Эти точки служат для того, чтобы определить двухпараметрическое семейство кривых Безье на изображенной поверхности. Для того чтобы получить параметрическую кривую на поверхности Безье, показанную на рис. 6.12, допустим, что кривая характеризуется пара Рис. 6.12. Поверхность Безье с характеристическим многогранником 4x4: — — — — —. граница поверхности; •------— задающая сетка
метрами 0 «! и с 1,0 и ш — Си где О С С < 1,0. Перед построением этой кривой должны быть вычислены элементы тензора S, заданного уравнением (5.53). При w = Сх матричное произведение В 3(1 — w)2w 3(1 — U>) W2 w3 (6.40) дает четыре вектора положения Ръ Ра, Р3 и Р4 для многоугольника Безье, который определяет кривую Безье при значении w — Сг. Точка Р4 лежит на границе поверхности Оау, а точка Р — на границе поверхности lw. Точки Ра и Р3 лежат вне кривой. Матричное произведение Р(и, G) = 1(1-и)3 3(1—и)2 и 3(1 - и) и2 и3] -РГ р2 р3 _р4_ (6-41) определяет точку на поверхности вдоль кривой w = Cv Для каждого значения и уравнение (6.41) дает соответствующий вектор положения для точки на поверхности. Граничные кривые для поверхности Безье могут быть определены аналогично границам поверхности Кунса. Действительно, поверхность Безье может быть расположена внутри семейства обобщенных поверхностей Кунса, описанных в параграфе 6.12. Например, вдоль границы и = 0, 0< 1,0 кривая Безье определяется зависимостью С — [Bi, i В2, i В3,1 В4>1] (1 — w)3 3(1 —w)2w 3(1 — w)w2 w3 (6.42) или, с другой стороны, "Ви" С = [(1 — &у)3 3(1 — ю2) w 3(1 — W) W2 &У3] Вг, 1 Вз, 1 (6.43)
Рис. 6-13. Поверхность Безье с характеристическим многогранником 3X5 Граничная кривая Безье для 0 < и < 1,0; w = 1,0, в свою очередь, определяется выражением С = [(1— и)3 3(1— и)2 и 3(1 -и)2 В4, 2 В4, 3 _®4, 4. (6.44) Уравнения для других двух граничных кривых можно записать непосредственно по рис. 6.12. Иногда желательно получить участок поверхности, который не описывается квадратным тензором. Это делается для того, чтобы ограничить сложную поверхность простыми кривыми. Например, поверхность, показанная на рис. 6.13, имеет пятиточечные границы (кривые Безье) вдоль « = Ои и — 1,0 и трехточечные границы (кривые Безье) вдоль w = 0 и w = 1,0. Уравнение для границы вдоль w = 0 запишется как C = [(l— w)2 2(1— w)w (6.45) Уравнение для границы вдоль и = 0 имеет вид С = [(1 - и)4 4ы (1 — ы)3 6«2 (1 — и)2 4«3 (1 — и) и4] “В1.Г ®2, 1 Вз. 1 Вд.! _ВБ,1_ (6.46)
Тогда уравнение поверхности описывается выражением Р(«, w) = [(1 — м)4 4«(1 — и)3 6«2(1—«)2 “ (1 — U>)2 2(1 —w)w 4и3(1 — и) и4] X (6-47) Пятиточечная граничная кривая Безье имеет преимущество по сравнению с четырехточечной кривой, поскольку изменение в центральной точке не влияет на наклон в любой концевой точке граничной кривой. Таким образом, форму поверхности можно корректировать без изменения положения точек, которые могут быть впоследствии независимо заданы исходя из требований непрерывности сопряжения смежных поверхностей. Поверхность Безье, рассмотренная выше, может быть представлена поверхностью,описанной декартовым произведением, в частности соотношением т т Q(«, о>) = Е Е В/+1, /+14. z («) Кт, j(w), 1=0 /=0 (6.48) где, по аналогии с уравнением (5.63), (6.49) /<«,/ = (6.50) а каждое из значений тип меньше, чем число вершин многоугольника в направлениях w и и соответственно. Безье успешно использовал свой метод для промышленных целей [6.8]. В системе Unisurf, используемой на предприятиях фирмы Рено, кривую сначала рисуют от руки карандашом на плоскости ху для того, чтобы получить зависимость у — f (х). В вычислительную машину, управляющую графопостроителем и используемую.в качестве цифрового преобразователя, вводятся координаты вершин многоугольника, который приближенно задает кривую. Затем полученная кривая вычерчивается с помощью графопостроителя. Если необходимы исправления, то вершины многоугольника смещают и кривую перечерчивают до тех пор, пока она не удовлетворит проектировщика. Для задания трехмерной кривой процесс необходимо повторить для г = f (х). Этот метод используют для нахождения четырех граничных кривых, на которые опирается поверхность. Определение поверхности заканчивается заданием координат сети внутренних точек, определяющих поверхность. Эти данные затем вводят в вычислительную машину, чтобы программным путем осуществлять вра-
щение, масштабирование или строить перспективные проекции описанных пространственных кривых, или вводят в станок с цифровым управлением для получения трехмерных моделей из пенопластовых заготовок. А. П. Армит [6.9] также разработал систему проектирования, названную MULTIOBJECT, в которой используются участки поверхности Безье. Его система позволяет применять различные виды граничных кривых Безье, для задания которых требуется от трех до семи точек. Построение выполняется на основе биномиальных весовых функций. Метод построения поверхности по шеститочечным и четырехточечным .кривым широко применяется на практике. Система позволяет для кривой, разветвляющейся в любой точке, образовать пару непрерывных кривых того же порядка, что и исходная кривая. Эта система описана в работе [6.5] и подробно рассмотрена в работе [6.91. Как и в случае применения кривой Безье, при использовании уравнения (6.48) возникают трудности при введении местных изменений. Это связано с тем, что перемещение одной точки на многоугольной проектируемой поверхности будет влиять на внутреннюю часть поверхности Безье. Это может быть неудобно для проектировщика, особенно при выполнении деталировки. Для того чтобы осуществить местное изменение, нужно провести дополнительное разбиение участка. При использовании В-сплайн базиса, т. е. при применении В-сплайн кривых в качестве весовых функций, такие трудности не возникают. Об этом идет речь в следующем параграфе. Алгоритм построения поверхностей, основанный на применении уравнения (6.48) и кривых Безье в качестве весовых функций, приведен в приложении В. 6.11. В-сплайн поверхности Построение В-сплайн поверхностей может быть выполнено различными способами. По аналогии с поверхностью Безье, рассмотренной в предыдущем параграфе, наиболее просто построить поверхность, заданную декартовым произведением. Описание В-сплайн поверхности в этом случае имеет вид т т Q («. = S S Вш. /+1ЛГ,,k(u)MhL(w), (6.51) 1=0 /=о где по аналогии с уравнением (5.78) {1, если Х[ < и < х1+1; О, в остальных случаях; ДГ (и) = (ц • xj) Nj, k-i (и) (Х/+1 и) Nj+j, k-i (и) /g 52) ** xi+k-l xi xi+k xi+i a xt — элементы узлового вектора, рассмотренного в параграфе 5.8.
Далее 1, если yt < w с yi+1; О, в остальных случаях; .. / ч (И— yj)MhL-i(w) (yi+L—w)Mj+1< L-l(w) М; r to) =----------------------------:---------; 7' V ' yj+L-i—yj yi+L + yj+i здесь y( — элементы L-го узлового вектора, рассмотренного в параграфе 5.8. Каждое из чисел тип меньше, чем число вершин характеристического многоугольника в направлениях и и ш соответственно. Элементы задающей многоугольной поверхности Bz+1, j+1 показаны на рис. 6.12. Как и в случае В-сплайн кривых, узловые векторы различной кратности могут быть заданы либо в и, либо в w направлении. Однако рассмотренный выше метод построения требует, чтобы каждый характеристический многоугольник в заданном направлении имел одинаковую кратность. При других методах допускается изменение кратности узлов в заданном направлении для того, чтобы облегчить местное изменение формы поверхности. Более подробно использование В-сплайн кривых для построения участков поверхности рассмотрено С. А. Кунсом, У. Д. Гордоном, Р. Ф. Райзенфельдом и др. в работе [6.10]. 6.12. Обобщенные поверхности Кунса Анализ рассмотренных выше результатов позволяет обобщить описание поверхностей. Следуя Форресту [6.11], введем обобщенную скалярную функцию РГ1 { (о). Функции рпг- служат для объединения граничных условий и граничных кривых для того, чтобы сформировать поверхность. Индекс г указывает на то, что обобщенная весовая функция умножается на функцию, представляющую собой производную r-го порядка от граничной кривой. Для граничных кривых г = 0, для касательных векторов г = 1, а для кривизны или векторов кривизны г = 2. Индекс i указывает положение функции, которая берется с весом { на единичном квадрате uw. Предположим, что и = и{; тогда ро>1 (w) —весовая функция для кривой Р («, 1); р0, о (и)—весовая функция для кривой Р (0, w). '« Форрест [6.11] вывел некоторые свойства этих функций. Если участок задан только граничными кривыми то ₽0,1 (/) — £>i. /> {1 при i = j; 0 при i -у- j В качестве примера рассмотрим уравнение (6.19), описывающее билинейную, поверхность, т. е. Q(u, w) = (1 — u)(l — u>)P(0, 0) + (1 — ы)и>Р(0,1) + + u(l-u>)P(l, 0)4-twyP(l, 1).
Заменим линейную весовую функцию (1 — и) на pOtO (и) и потребуем, чтобы Ро. о (0) = 1, а р0>0 (1) = 0. Далее весовую функцию «заменим на р0, ! (и) при условии, что р0>1?(0) = Ои р0>1 (1) = 1; соответственно функцию (1 — w) заменим на ро, о (“О ПРИ Ро, о (0) = 1 и Ро.о (0 = 0, а функцию w на р0, х (ю) при ро, х ’(0) = 0 и р0.’х (1) = 1. Тогда уравнение (6.19) можно записать в виде Q(«, ^) = ₽о,о(и)Ро,оИР(О, О) + Рс,о(«)ро.х(ш)Р(О, 1) + + Po.iWPo,oHP(l, O) + po,x(«)Po.x(u>)P(l, 1). 1 Эго соотношение может быть переписано также в форме 1 1 Q (и, ю) = S Ро, i (и) Р (». «О + Е Ро, / (w) Р («> /) -i— 0 /=0 - S Ё Ро. i («) Ро. / И Р (». /)• (6.54) f=0 /=0 В уравнении (6.54) г = 0, поэтому можно сделать вывод, что простые билинейные поверхности Кунса являются непрерывными, но имеют разрывные производные. Бикубическую поверхность, рассмотренную в параграфе 6.8, можно записать в более общей форме. Прежде всего рассмотрим бикубические линейчатые поверхности, представленные уравнениями (6.34) и (6.35). В более общей системе обозначений уравнение (6.34) можно записать так Q(u, w) — Р(0, u>)P0.0(«) +Р(1, ку)Ро.1(«)4- + Р’’°(0, w)Px,0(«)4-P10 (1, u>)px,i(«) = -L ЕРм^Р'Л/. (6.55) l=o j=o а уравнение (6.35) в виде <Ж и>) = P(u, O)po,o(u>) + P(tz, l)po.x(u>) + + P0,1 («. 0) Рх, о M + P0’1 («. 1) Pi, i = = S £Р/./(^)Р0’г(«, /). 1=0 /=Ю (6.56) где весовые функции pZ;- подчиняются соотношениям 6р1Рг,, («)] dup Таким образом, — Pr, i (ui) — Spr&ij-I Ро, o(O) = 1, ро, о(1) = Ро, о(0) = Ро, о(1) - 0; Pi, 1(0) = ₽1, 1(1) - Й, 1(0) = 0, PJ, ! (1) == 1.
Сравнение уравнений (6.55) и (6.56) с уравнениями (6.34), (6.35) при учете выражения (6.33) показывает, -что [Ро, 0 (И) Ро, 1 (Ы) Р1, 0 (И) Р1, 1 (И)1 — = [и3 «2 и 1] = 1^1 (и) “2—2 1 1“ —3 3 —2 —1 0 0 10 1 0 0 0_ F2(tz) F3(u) F4(u)]-, (6.57a) (Ро, о Ро, 11 = [ffi!3 U>2 W 1] = [Fi(uO i “ i , iS S 1 О « to -CD 5 i g о о « to -S- "4 1 О ~ to >- О О — ьг II 1 1 (6.576) Возвращаясь теперь к участку бикубической поверхности, видим, что уравнение (6.36) может быть записано в обобщенной системе обозначений: Q(«, U>) = S S Pr'°(i, U>) ₽„;(«)+ 1=0 r=0 + S Sp°’s(«. Ж/И-/=0 s=0 - S S S S Pr-s (i, j) i («) ₽s, j (6.58) i=0 j=0 r=0 s=0 С помощью подстановки и (или) дифференцирования можно показать, что в угловых точках /) = Р(6 /); . Q1,0(i, /) = P1,0(i, /); ^О>1(6 D = P°'l(i, П; Qbl(i> /) а вдоль граничных кривых Q (t, w) — Р (i, w); Q(«. j) = P(u, /); Q0'/) = P0,1(«> /); Q1’ °(i, w) = P1’ °(i, w). Заметим, что, поскольку здесь г — 1, то на границах участка существуют производные до первого порядка, т. е. бикубические
участки могут Оыть сопряжены по границам с непрерывностью первого порядка. Если необходимо провести сопряжение при условии непрерывности производных до т(-го порядка по и = щ и до Пу-го порядка по w = то граничные кривые задают функциями Рг-0 (i, w) при 0 < г < m~t и Р°>s (и, j) при 0 < s < п;-, а веса функции 0r> i (и) и 0S, z (w). Уравнение поверхности при этом имеет вид 1 mi 1 «/ Q(«, = S S Pr' 4 ^)Pr, ,.(«>+ S £ P0, s(«> Ж! M- i=0r=0 /=0s=0 1 1 mi ”/ - S S I S Pr’ S (i. /) P„ t- («) Ps. j И, (6.59) i=0 /=0 r=0 s=0 где весовые функции обладают свойствами Pf, i (u'k) — SprStk для 0 < p < тр, Pf, i (“ft) = 6ps6/ft Для 0 < p < rij. (6.60) Уравнение (6.59) представляет наиболее общую форму поверхности Кунса. Нужно отметить, что широкого распространения этот вид поверхности не получил, хотя один из частных случаев, рассмотренных ранее, иногда применяют. Форрест [6.111 отмечает, что, если 1 mi P0,s(«. J) = S S Pr’ \i, /)Рг, «•(“). i=0 r=0 то два последних элемента уравнения (6.59) уничтожаются, и уравнение поверхности принимает вид 1 mi Q («, w) = £ £ Рг- 0 (i, и>) («). (6.61) г=0 r—Q Это соответствует одному из видов линейчатой поверхности. Аналогично, если Pr’°(i, и>) = S Рг> s (i, j=0 s=0 то уравнение поверхности запишется в виде 1 Q(«, w) = Е S Р0’ “(“, /)Ps.у(W), (6.62) /=0 s=0 что соответствует уравнению линейчатой поверхности с другими граничными условиями. Если налагаются оба условия, определяемые уравнениями (6.61) и (6.62), то уравнение поверхности будет иметь вид 1 1 mt nj QM = S Е S 2 Pr’ *(i, !)р„i(“)ps, f (W). (6.63) i=0 /=0 r=0 s=0
Это выражение является так называемым тензорным, или декар-товым произведением. Уравнение (6.63) имеет важное значение, так как оно представляет собой естественное распространение методов криволинейной аппроксимации на поверхности. Декартова поверхность, представленная уравнением (6.63), а также линейчатая поверхность, представленная уравнениями (6.61) и (6.62), — наиболее часто используемые поверхности Кунса. Если гщ == tij = 1, a задаются выражением (6.57), то уравнение (6.63) описывает бикубический участок, т. е. Q (и, w) = S s Г Г Рг' ’ (и. /) ₽„ I (и) ₽s, / « 1=0 у=зО г=0 s—О Можно заметить, что уравнение (6.63) является частным случаем уравнения (6.58). Описание участка бикубической поверхности уравнением (6.63) зависит только от информации в угловых точках— от векторов положения, касательных векторов, векторов кривизны и заданных кубических весовых функций. Уравнение (6.58), описывающее участок бикубической поверхности, учитывает также и граничные кривые для определения внутренней формы участка поверхности. Следовательно, описание бикубической поверхности уравнением (6.58) является более общим. Заметим, что в уравнении (6.56) и в его частных условиях суммирование проводится для i = 0; 1 и j = 0; 1, т. е. для граничных кривых. Это означает, что внутренняя часть участка поверхности зависит от граничных кривых, угловых точек, касательных векторов и векторов кривизны в угловых точках, а также от весовой функции, т. е. может быть изменена лишь с помощью граничных условий. Если, однако, проводить суммирование в пределах 0 с i с М, 0 с j < N, то будут учтены все кривые Р (wt-, w) и Р (и, Wj) между граничными кривыми и все нормальные производные на этих кривых. Это позволяет задать внутренние кривые и граничные условия для того, чтобы облегчить корректировку внутренней формы участка поверхности. В этом случае поверхность представляется зависимостью М mj N п1 Q(«, w) = £ £ Рг* °(Ы/, г0₽„ ((и) - Г Г Р°* ’(«. ^/)Ps. / i=o г—О /=0 s=0 М N т1 п! - m г р" ’ («о i (м) ₽s, / и- (6-64) i=0 у=0 Л—0 s=s0 Здесь весовые функции удовлетворяют соотношениям i (мл) = брАй при 0 р < tn}, 0 < /г с Л1; Ps. / GM = fips6/fe при 0 < р < Пу, 0 с k < N. Заметим, что степень интерполяционных нормальных производных задается величинами т( и nf. Далее отметим, что для М = = N = 1 уравнение (6.64) сводится к уравнению (6.56), описы-
Рис. 6.14. Поверхности, заданные внешними н внутренними условиями вающему поверхности Кунса. Рис. 6.14 иллюстрирует различие между поверхностями, описываемыми уравнениями (6.56) и (6.64). На рис. 6.14, а показана поверхность, определяемая внешними граничными условиями. Для построения внутреннего участка поверхности используются только граничные кривые Р (и, 0), Р (и, 1), Р (0, w) и Р (1, w), а также угловые точки, касательные векторы и векторы кривизны в угловых точках А, В, С и D. На рис. 6.14, б показана внутренняя часть поверхности, для построения которой были использованы также внутренние кривые Р (и, 0,5) и Р (0,5, w). Обобщенная линейчатая поверхность и поверхность, выраженная в декартовых координатах, могут быть получены так же, как и в предыдущем параграфе. Они описываются соотношениями м mt Q(u, u>)=I £Рг’°(щ- w)PnZ(u); (6.65) i=0 r=O N nj Q («, w) = S 2 P0, S («, ^) ₽s, i (6.66) j=0 s=0 M N mi nj и Q(w, w) = 2j 2j 2j L Pr’ s(ui- ЛЖ./С®)- (6.67) i=Q r— 0 s= 0 6.13. Заключение Последние две главы посвящены изложению основ некоторых способов описания кривых и поверхностей. Однако могут быть предложены и использованы многие другие способы. Рассмотренное направление молодое, оно развивается на основе новых идей и методов, постоянно освещаемых в литературе. Для того чтобы использовать эти способы на производстве или при конкретном проектировании, нужно учитывать специфику приложений и решать ряд дополнительных задач, таких как определение характера соединения участков поверхностей, расчет сечений, нахождение пересечения линий и поверхностей, формирова
ние структур данных и файлов, в которых хранится и преобразуется информация, написание программ анализа для вычисления необходимых параметров, удаление скрытых линий и поверхностей для соответствующего графического дисплея и т. д. Методы решения указанных задач можно найти в современной литературе по машинному проектированию. Основы машинной графики, изложенные в данной книге, помогут читателю освоить эти методы и успешно применять их на практике. СПИСОК ЛИТЕРАТУРЫ 6.1. Bezier, Р. Е., Emploi des Machines a Commande Numerique, Masson et Cie, Paris, France, 1970; Bezier, P. E., «Examples of an Existing System in the Motor Industry: The Unisurf System»)- Proc., Roy., Soc., (London), Vol. A321, pp. 207— 218, 1971. 6.2. Sabin, M. A., «An Existing System in the Aircraft Industry. The British Aircraft Corporation Numerical Master Geometry System», Proc., Roy., Soc., (London), Vol. A321, pp. 197— 205, 1971. 6.3. Peters, G. J., «Interactive Computer Graphics Application of the Bi-Cubic Parametric Surface to Engineering Design Problems», McDonnell Douglas Automation Company. St. Louis, Missouri, presented at Society of Industry and Applied Mathematics 1973 National Meeting, Hampton, Va., 18—21 June 1973. 6.4. Coons, S. A., «Surfaces for Computer — AIDED Design of Space Forms», M. I. T. Project MAC-TR-41, June 1967. (Also as AD 663 504). 6.5. Armit, A. P., «Computer Systems for Interactive Design of Three — Dimensional Shapes», Ph. D. Thesis, Cambridge University, November 1970. 6.6. Lee, T. M. P., «Analysis of an Efficient Homogeneous Tensor Representation of Surfaces for Computer Display», in Advanced Computer Graphics. Edited by Parslow, R. D., and Green, R. E., Plenum Press., New York, pp. 1119—1141, 1971. 6.7. Ferguson, J. C., «Multivariable Curve Interpolation», J. Assoc. Comput. Mach., Vol., No. 2, pp. 221—-228, April 1964. 6.8. Bezier, P., Numerical Control-Mathematics and Applications (translated by A. R. Forrest), John Wiley and Sons, Inc., London, 1972. 6.9. Armit, A. P., «Multipatch and Multiobject Design Systems», Proc., Roy., Soc., (London), Vol. A321, pp. 235—242, 1971. 6.10. Barnhill, R. E., and Riesenfeld, R. F., «Computer Aided Geometric Design», Academic Press, New York, 1974. 6.11. Forrest, A., «On Coons and other Methods for the Representation of Curved Surfaces», Computer Graphics and Imqge Processing, Vol., I, pp. 341—359, 1972.
ПРОГРАММНЫЕ СРЕДСТВА МАШИННОЙ ГРАФИКИ Для изложения принципов построения системы программных средств машинной графики удобно разбить всю систему на несколько частей. Две очевидные части — это вычислительная машина и графическое устройство, которые представляют собой аппаратные средства. В вычислительной машине располагаются база данных и программные средства ее преобразования. Однако в некоторых системах машинной графики эти функции могут быть разделены между двумя или более вычислительными системами. Графическое устройство является техническим средством, которое воспроизводит изображение. Общий вид системы программных средств показан на рис. А.1. Для связи между вычислительной машиной и графическим устройством существует две системы программных средств. Первая — это программные средства преобразования данных. Математические основы этой системы изложены в основной части книги. Она состоит из программ смещения, вращения и других преобразований базы данных. Специальные алгоритмы для выполнения многих этих функций приведены в приложении В. Эта система программных средств не зависит от типа внешних устройств, поскольку она связана только с математическими преобразованиями. Вторая система программных средств обеспечивает преобразование полученных числовых данных и подачу их на графическое устройство. С ее помощью осуществляется кодирование информации, посылаемой графическому устройству, и формируются команды, в соответствии с которыми это устройство чертит линии, ставит точки и т. д. Как указано ниже, в параграфах А. 1 и А.2, конкретная реализация такой системы 1 — ввод; 2 — база данных; 3 — программы преобразования базы данных; 4 — модифицируемая база данных; 5 — программы сопряжения с внешними устройствами; 6 — графические устройства; 7 — изображение; 8 — вычислительная машина
зависит от типа используемых внешних устройств. Поэтому в разделах А.1 и А.2 рассмотрены лишь принципы построения данной системы программных средств. АЛ. Команды машинной графики Как отмечено выше, при разработке системы машинной графики удобно выделить области, где процессор взаимодействует с графическим устройством. Все графические устройства получают информацию от процессора в виде потока данных, составленного из двоичных единиц (битов), однако структура потока данных для рядового пользователя редко представляет интерес. Более интересно понять, как взаимодействует поток данных с графическим устройством. Устройство управляется с помощью графических команд. Их обычно разделяют на три класса: управление курсором, управление состоянием прибора или режимом его работы и управление графическим вводом. Здесь понятие курсор используется в общем смысле, т. е. для обозначения электронного луча электронно-лучевой трубки графического прибора, печатающей головки на телетайпе, высокоскоростном печатающем устройстве, электростатическом матричном печатающем устройстве или пера на графопостроителе и т. д. Ниже кратко рассмотрены команды машинной графики, относящиеся к каждому из трех классов. Из команд машинной графики могут быть сформированы различные графические операции. Они будут рассмотрены в следующем параграфе. К командам, связанным с управлением курсором, относятся следующие две команды; перемещение курсора; включение (выключение) курсора. Функции каждой из этих команд ясны из их названия. Командами машинной графики, связанными с управлением состоянием прибора или режимом его работы, являются, например: алфавитно-цифровой режим (1); -графический режим (2); режим блокировки (3); режим абсолютных координат (4); режим относительных координат (5); режим стирания экрана (6); режим генерации штриховой линии (7); режим генерации кривой линии (8); включение режима местного слежения (9); выключение режима местного слежения (10) и т. д. Для одних графических устройств специальных режимов не требуется, а для других необходимы дополнительные режимы;
например, для дисплея с цветной электронно-лучевой трубкой требуются режимы синего, красного и желтого цветов. Отметим, что приведенный список режимов может быть реализован лишь с помощью сложного графического устройства. Рассмотрим назначение режимов. Алфавитно-цифровой и графический режимы служат для интерпретации потока данных как алфавитно-цифровых знаков или графических элементов. Режим блокировки обычно используется для того, чтобы терминал не воспринимал посылаемые в него данные, а также сигналы с клавиатуры, светового пера и др. Режимы абсолютных или относительных координат определяют соответствующую интерпретацию координат, заданных в команде положения. Режим стирания необходим для графических устройств с запоминающей электронно-лучевой трубкой. Режим генерации штриховой линии позволяет осуществить генерацию штриховых линий с использованием аппаратных возможностей графического устройства. Режим генерации кривой линии используется для того, чтобы аппаратными средствами строить кривые. Режим местного слежения предназначен для подключения аппаратных средств, которые позволяют видимому на экране графического устройства курсору отслеживать движение светового пера. Команда, связанная с графическим вводом, считывает положение курсора. При ее выполнении предполагается, что информация представлена в виде двух- или трехкомпонентного вектора положения, т. е. либо [х у], либо [х у г]. Все интерактивные вычислительные системы и языки высокого уровня одинаково воспринимают алфавитно-цифровую информацию, поэтому ввод знаков не считается командой машинной графики. Из вышесказанного видно, что существуют в основном четыре команды машинной графики, которые можно представить как встроенные команды, либо как программы языков высокого уровня, таких как БЕЙСИК или ФОРТРАН. Этими четырьмя командами являются: ONOFF (управляемая переменная); MOVE (коорд., коорд., < коорд. >); MODE (управляемая переменная); RC (коорд., коорд., <коорд.>), где символе >используется для того, чтобы представить вспомогательные переменные. Управляемая переменная в ONOFF должна быть целой (О или 1); она указывает, что курсор выключен или включен соответственно. Управляемая переменная в MODE должна быть целым числом, соответствующим номеру режимов работы, которые были приведены выше. На основе этих четырех команд могут быть сформированы графические операции, представляющие интерес для пользователя.
А.2. Операции машинной графики Команды машинной графики, рассмотренные в предыдущем параграфе, могут быть скомбинированы в операции машинной графики, которые обычно представляют собой определенный набор графических примитивов. Графические'операции представляют значительно больший интерес для пользователя, чем отдельные команды. В действительности пользователь может их не знать. Как и графические команды, графические операции можно разделить на три категории в зависимости от того, какие функции они выполняют: чертежные функции, функции управления терминалом или построением изображения и функции управления интерактивным прибором. С помощью классификации, рассмотренной в параграфе 1.6, и традиционных методов черчения выделим основные графические операции. Пользователю нужно иметь возможность передвигать курсор без проведения линий, начертить линию или изобразить точку как в абсолютных, так и в относительных координатах. Это можно сделать с помощью шести графических операций: абсолютного перемещения; относительного перемещения; изображения абсолютной точки; изображения относительной точки; безусловного проведения линий; условного проведения линий. Дополнительно пользователю могут понадобиться операции для печати текстов в указанном месте на изображении, например: печать абсолютного текста; печать относительного текста. Функционально каждая из этих графических операций может быть описана в виде графических команд. Например, алгоритм абсолютного перемещения можно представить в виде следующего набора команд: 1) установить графический режим — MODE 2; 2) выключить курсор — ONOFF 0; 3) установить режим абсолютных координат — MODE 4; 4) перейти к требуемым координатам MODE (коорд., коорд., <коорд. >); 5) установить алфавитный режим — MODE 1. Алгоритм изображения абсолютной точки имеет вид: 1) установить графический режим — MODE 2; 2) выключить курсор — ONOFF 0; 3) установить режим абсолютных координат — MODE 4; 4) перейти к требуемым координатам — MOVE (коорд., коорд., <коорд. >); 5) включить курсор ONOFF 1; 6) выключить курсор — ONOFF 0; 7) установить алфавитный режим — MODE 1.
Соответственно алгоритм абсолютного проведения линии: 1) установить графический режим — MODE 2; 2) включить курсор — ONOFF 1; 3) установить режим абсолютных координат — MODE 4; 4) перейти к требуемым координатам — MOVE (коорд., коорд., <коорд.>); 5) выключить курсор — ONOFF 0; 6) установить алфавитный режим — MODE 1. Алгоритм печати абсолютного текста имеет вид: 1) установить графический режим — MODE 2; 2) выключить курсор — ONOFF 0; 3) установить режим абсолютных координат — MODE 4; 4) перейти к заданному положению — MOVE (коорд., коорд., <коорд.>); 5) установить алфавитный режим — MODE 1; 6) включить курсор •—ONOFF 1; 7) печатать буквы; 8) выключить курсор — ONOFF 0; Остальные четыре операции в относительных координатах имеют такие же алгоритмы, за исключением того, что третья команда устанавливает режим относительных координат MODE 5). В каждом из упомянутых выше алгоритмов используются необходимые графические команды. После выполнения операции графическое устройство устанавливается в алфавитный режим с включенным курсором, что удобно для дальнейшей работы. Увеличение эффективности передачи данных может быть достигнуто за счет некоторых дополнительных усложнений. Например, алгоритм для операции «абсолютная точка» можно представить в следующем виде: 1) находится ли прибор в графическом режиме? если да — продолжать, если нет — установить графический режим — MODE 2; 2) выключен ли курсор? если да — продолжать, если нет — выключить курсор — ONOFF 0; 3) находится ли прибор в режиме абсолютных координат? если да — продолжать, если нет — установить режим абсолютных координат — MODE 4; 4) перейти к заданному положению — MOVE (коорд., коорд., <коорд. >); 5) включить курсор — ONOFF 1. Для такого алгоритма требуется дополнительно небольшая буферная память, в которой хранится информация о состоянии устройства после выполнения предыдущей графической команды. Однако существует возможность сокращения потока данных, передаваемых графическому устройству. Кроме того, анализ приведенного алгоритма показывает, что, если можно разработать
метод определения типа очередной команды — удет ли она графической или неграфической (символьной), то это позволит дополнительно повысить эффективность расчета. Следует отметить, что, хотя рассмотренные алгоритмы функционально одинаковы, они могут различаться по структуре в зависимости от типа графических устройств. Графические операции управления терминалом или изображением включают инициализацию графического устройства, стирание экрана для приборов с запоминающими электронно-лучевыми трубками, запуск и окончание кадров для восстановления'изображения в графических устройствах с электронно-лучевыми трубками, запоминание потока данных в буферной памяти и посылку его по команде в графическое устройство. Например, графические операции инициировать устройство, запустить кадр, освободить буфер могут служить для этих целей. Операция инициировать устройство служит для того, чтобы установить исходные условия и обнулить выходной буфер. Операция запустить кадр служит для того, чтобы стереть экран графического устройства с запоминающей электронно-лучевой трубкой; выдать команду на построение нового графика устройству с пером и чернилами; известить графическое устройство с восстановлением, что изображение закончено и нужно начать новый кадр. Команда освободить буфер служит для того, чтобы послать хранящийся поток данных в графическое устройство и перевести устройство в символьный режим. Для удобства кроме простой команды считывания положения курсора должны быть предусмотрены другие специальные операции. Как упоминалось в параграфе 1.5, разработано несколько интерактивных графических приборов. Как минимум, их графические операции ввода включают: считывание положения курсора; активацию аналогового планшета; активацию двухкоординатного потенциометра с рычажным указателем; активацию светового пера; активацию панели потенциометров; активацию функциональной панели. При необходимости могут быть добавлены другие операции или разработана обобщенная графическая операция ввода. Например, алгоритм для активации аналогового планшета с местным следящим устройством может быть представлен в виде: 1) установить графический режим •— MODE 2; 2) установить режим абсолютных координат—- MODE 4; 3) установить режим местного слежения — MODE 9; 4) считать положение курсора; 5) считать положения переключателей аналогового планшета; 6) выключить режим местного слежения — MODE 10; 7) установить алфавитный режим — MODE 1.
Другие графические операции имеют более простые алгоритмы. Сокращение потока данных для различных режимов можно получить за счет использования усложненных процедур контроля и т. д. А.З. Каноническое пространство Завершим обсуждение графических систем рассмотрением типов пространств или систем координат, которые представляют интерес как для пользователя, так и для разработчика системы. Существуют три типа пространства, которые представляют интерес, — это пространство пользователя, каноническое пространство и приборное пространство. Пространство пользователя представляет собой совокупность координат или единиц измерений, в которых задаются исходные данные; каноническое пространство является псевдопространством, используемым для получения результатов, не зависящих от типа применяемого устройства; приборное пространство представляет систему координат для адресации к графическому устройству, т. е. растровые точки или единицы измерения для приборов с электронно-лучевыми трубками, дюймы или сантиметры для. графопостроителей и т. д. Эти пространства показаны на рис. А.2. Понятие канонического пространства, или псевдопространства, представляет особый интерес. .Использование стандартного канонического *пространства позволяет создать независимые графические программные средства для любых графических устройств. На практике изображение сначала преобразуется из пространства или координат пользователя в стандартное каноническое пространство и затем из канонического в соответствующее приборное пространство. а — пользователя; б — каноническое; в — приборное
Упрощенно каноническое пространство можно представить в виде единичного квадрата в первом квадранте, следовательно, адресуемой областью псевдографического устройства, представленной каноническим пространством, является О С ха С 1,0; Ос « Уа < 1.0- Ограничение области изображения квадратом не является обязательным. Формат квадрата 1,Ох 1,0 принимают для исключения влияния типа графических устройств на характер изображения. Этот выбор определяется также тем, что многие графопостроители и большинство графических устройств с запоминающими электронно-лучевыми трубками имеют квадратную адресуемую область. Однако адресуемая и наблюдаемая области не всегда совпадают. Часто наблюдаемая область представляет собой прямоугольник, так как большинство графических устройств с запоминающими электронно-лучевыми трубками имеют наблюдаемую область, размер которой по одной оси составляет приблизительно 0,8 размера изображения по другой оси. В этом случае наблюдаемая область имеет вид параллелепипеда с 0 С xv С 1,0 и 0 с yv с 0,8. Кроме того, во многих графопостроителях можно удлинять одну из осей независимо друг от друга. В этом случае предполагается, что наблюдаемая область должна быть 0 с xv С а, где а — некоторое число, которое больше единицы. При этом подразумевается, что адресуемая область сохраняет прямоугольность. Однако к такому изменению масштабов нужно относиться с большой осторожностью, так как может возникнуть деформация геометрических фигур, т. е. окружность будет казаться эллипсом, что неприемлемо для геометрической машинной графики.
приложение б _______________________ МАТРИЧНЫЕ ОПЕРАЦИИ Для удобства здесь приведено несколько простых правил: матричной алгебры. Матрица — это прямоугольный массив чисел,, который подчиняется этим правилам. Б.1. Терминология Числа, которые составляют матрицу, называются ее элементами. Эти. элементы образуют строки и столбцы внутри матрицы. Если число строк и столбцов одинаково, то матрица называется квадратной. - Рассмотрим квадратную матрицу порядка 4X4, заданную в виде а11 «12 «13 «14 «21 «22 «23 «24 «31 «32 «33 «34 _аи «42 «43 «44 Первый индекс элемента относится к строке матрицы, а второй— к столбцу. Например, а34 — представляет собой элемент,, лежащий на пересечении третьей строки и четвертого столбца.. Матрица из т строк и п столбцов является матрицей порядка тХп. В приведенной выше квадратной матрице т = п. Элементы «и, «22, й83, «44 называются диагональными элементами. Сумма, диагональных элементов в квадратной матрице называется следом. Нулевой матрицей является матрица, в которой каждый элемент равен нулю. Единичной матрицей называется квадратная матрица, каждый элемент которой равен нулю, за исключением диагональных, элементов, равных единице. Например, единичная матрица по-, рядка 3x3 имеет вид ’I о о- 0 10. -0 0 1. Матрицы называются равными только в том случае, когда каждый-элемент одной матрицы равен соответствующему элементу другой, т. е. они должны быть одинаковыми.
•Б.2. Сложение и вычитание Если две матрицы имеют одинаковый порядок, то допустимо их сложение и вычитание. Для того чтобы сложить или вычесть две матрицы, необходимо сложить или вычесть каждые два соответствующих элемента этих матриц. Например, '1 2 3’ “1 4 7" 2 6 10" 4 5 6 + 2 5 8 = 6 10 14 1 8 9_ СО сг> со ДО 14 18 'О —2 —4" 2 0—2 4 2 0 ‘1 2 31 "1 4 7" 4 5 6 — 2 5 8 7 8 9J 3 6 9 Б.З. Умножение Умножение матриц — это наиболее используемая операция машинной графики. Рассмотрим матрицу порядка п1Хт1 и матрицу порядка п2Хт2. Для умножения таких матриц необходимо, чтобы величина т1 была равна величине п2. Это означает, что число столбцов первой матрицы должно быть равно числу строк второй матрицы. Покажем на примере правила умножения матриц. Если А — матрица порядка 4X3 и В — квадратная матрица порядка 3X3, то матричное произведение АВ определяется следующей операцией: С21 С31 _й41 G12 й13 й22 й23 й32 а33 ^42 ^43__ Д.2 ^21 ^22 Ь$1 Ьз2 t>13 Ьзз ацЬц -J- йг2&21 4“ а1зЬз1 ^21^11 4“ ^22^21 4“ й23^31 а31Ь11 4“ й32^21 4“ ^33^31 _а41Ьц 4~ &i2b21 4" а4,зЬз1 а11Ь12 4~ ^12^22 + а13^32 ^21^12 4" ^22^22 4” ^23^32 ЯзАг 4" й32^22 + ^33^32 й41^12 4“ й42^22 + й43^32 й11^13 4“ й12^23 4“ й13^33 ^21^13 4“ ^22^23 4“ fl23^33 й31^13 4“ Й32^23 4“ й33^33 й41Дз 4“ Й42^23 4“ а43^33_
Заметим, что матрица порядка 4x3, умноженная на матрицу порядка 3x3, дает матрицу порядка 4X3. В общем случае, матрица порядка n1Xm1, умноженная на матрицу порядка п2Хт2, где тг = п2, дает матрицу порядка njXmj Рассмотрим числовой пример: “1 3" 4 2 Г1 91 1 + 9 44-6 2 4 12" 8 + 8 1 1 [3 4J = 1+3 2 + 4 6‘ 4 6 4 12 12+16 _3 2_ _3 + 6 6 + 8 __ "10 14" 10 16 4 6 18 28 9 14 Операция матричного умножения некоммутативна. Это означает,, что в общем случае АВ не равно ВА, т. е. важен порядок выполнения матричного умножения. Матричные операции подчиняются первому и второму дистрибутивным законам, т. е. А (В 4 С) = = АВ 4 АС и (А 4 В) С = АС 4 ВС, и ассоциативному закону А (ВС) = (АВ) С. Б.4. Определитель квадратной матрицы Определитель квадратной матрицы А обозначается | А |. Многие свойства определителя используются в теории матриц. Метод, вычисления определителя покажем на примере квадратной матрицы размера 3x3. Если то «и «21 «si «12 «22 «32 «13 «23 «33 — «И «и «12 «13 М = «21 «22 «23 -«31 «32 «33- «22 «32 «23 «21 ~о «33 «31 «23 , «21 4 «13 «33 «31 «22 «32 — «11 («22«33 ---- «23«3г) -- «12 («21«33 --- «23«31) + «13 («21«32 ---- «22«31)- Это дает единственное значение определителя. Вычислим определитель матрицы 3 9 4 6 18. 2 5 3 Результатом является 3 (3—40) — 9 (18 — 16) 4 4 (30 — 2) = 3 (—37) — 9 (2) 4 4 4 (28) = —17.
Б.5. Обращение квадратной матрицы Существует много методов обращения квадратной матрицы. В большей части машинных языков есть функции или подпрограммы, необходимые для вычисления элементов обратной матрицы. В алгебре, рассматривающей простые переменные, если ах = у, то х = а~1у, где а'1 — величина, обратная величине а, т. е. .а-1 = 1/а. В матричной алгебре деление не определено, однако если АХ = Y, то X - A-1Y, где А 1 называется обращением квадратной матрицы А. Обратная матрица существует, если исходная матрица является квадратной и невырожденной. Таким образом, не каждая квадратная матрица имеет обратную. Однако, если определитель квадратной матрицы не равен нулю, то обратная матрица существует и это обращение единственно. Важным свойством обращения матриц, которое используется в этой книге, является то, что для любой квадратной матрицы А имеет место равенство А'А-1 = 1, где 1 — единичная матрица. Рассмотрим матричное произведение двух следующих матриц размерности 3x3: 1 1 со со oq со oq 1 1 ~ 6 — 2 —3“ — 1 1 0 1 0 1_ = “1 0 0“ 0 1 0 _0 0 1_ • Так как это произведение представлено выражением АВ = I, то, следовательно, В = А-1.
ПРИЛОЖЕНИЕ В АЛГОРИТМЫ ПРЕОБРАЗОВАНИЯ БАЗЫ ДАННЫХ Алгоритмы, представленные в этом приложении, основаны на математических положениях, изложенных в основной части книги. Эти алгоритмы даны в виде подпрограмм, описанных на языке БЕЙСИК, и могут быть легко переписаны с помощью других языков. Алгоритмы не рассчитаны на получение наибольшей эффективности, поскольку они предназначены для обучения. Предполагается, что в каждом из алгоритмов данные представлены в обычных координатах. Очевидная неэффективность, связанная с преобразованием к обычным координатам, допускалась преднамеренно. Опыт показывает, что пользователи обычно выполняют одно или два преобразования, после чего получают результат в обычных координатах, а затем продолжают преобразования. Если требуется повысить эффективность, то читатель может легко модифицировать алгоритмы или написать их самостоятельно, основываясь на теории, изложенной в книге. В.1. Алгоритм двумерного смещения Алгоритм для произвольного преобразования, использующий однородные координаты, приведен ниже в виде подпрограммы на языке БЕЙСИК. В нем использованы соотношения параграфа 2.15. 2DTRANS 100 SUB"2DTRANS":Р,Х(),Y(),M.N '2-0 TRANSLATION 110 'P=NUMBER OF X.Y-PAIRS 120 ' X()= ARRAY CONTAINING X-COORDINATES 130 'Y()=ARRAY CONTAINING Y-COORDINATES 140 'M=X TRANSLATION FACTOR 150 'N=Y TRANSLATION FACTOR 160 DIM U(100,3),V(100,3) 170 MAT U=ZER(P,3) 180 MAT V=ZER(P,3) 190 FOR 1=1 TO P 200 LET U(I,1)=X(I) •210 LET U(I,2)=Y(I) 220 LET U(I,3)=1 400 POSITION VECTORS 'REDIMENSION U&V FILL WITH ZEROS 'SET UP HOMOGENEOUS 'POSITION VECTORS 230 NEXT I 240 MAT T=ZER(3,3) 250 LET T(1,1)=T(2,2)=T(3,3)=1 260 LETT(3,1)=M 270 LET T(3,2)=N 280 MAT V=U»T 290 FOR 1=1 TO P 300 LET X(I)=V(I,1) 310 LET Y(I)=V(I,2) 320 NEXT I 330 SUBEND 'REDIMENSION T FILL WITH ZEROS 'PLACE 1'S ON DIA OF T MATRIX •SET X TRANSLATION FACTOR •SET Y TRANSLATION FACTOR 'CALC. TRANSLATED POSITION VECTORS 'RETURN TO PHYSICAL COOR. B.2. Алгоритм двумерного изменения масштаба Алгорим применения операции изменения масштаба приведен ниже в виде подпрограмм на языке БЕЙСИК. Данный алгоритм обспечивает как местное, так и общее изменение масштаба (см.
параграфы 2.11 и 2.15). При этом может возникнуть искажение изображения объекта. В алгоритме использованы однородные координаты. 2DSCALE SUB"2DSCALE":P,X(),Y(),A,D,S '2-0 SCALE •P=NUMBER OF X.Y-PAIRS 'X()=ARRAY CONTAINING X-COORDINATES •Y()=ARRAY CONTAINING Y-COORDINATES 'A=X STRETCHING FACTOR 1 D=Y STRETCHING FACTOR 'S=OVERALL SCALING S<1 MM S( 100,3),0(100,3) MAT SfZER(P,3) MAT 0=ZER(P,3) FOR 1=1 TO P LET LET S(1.1)=X(I) S(I,2)=Y(I) S(I,3)=1 A>1 STRETCHES A<1 CONTRACTS D>1 STRETCHES D<1 CONTRACTS ENLARGES S>1 REDUCES 400 POSITION VECTORS 'REDIMENSION S40 FILL WITH ZEROS 'SET UP HOMOGENEOUS •POSITION VECTORS 100 110 120 130 190 150 160 170 180 190 200 210 220 230 LET 290 NEXT I 250 MAT T=ZER(3,3) 260 LETT(1,1)=A 270 LET T(2,2)=D 280 LET T(3,3)=S 290 MAT Q=S»T 300 FOR 1=1 TO P 310 LET X(I)=Q(I,1)/0(I,3) 320 LET Y(I)=Q(I,2)/0(I.3) 330 NEXT I ЗАО SUBEND ' REDIMENSION T FILL WITH ZEROS 'SET X STRETCHING FACTOR 'SET Y STRETCHING FACTOR 'SET OVERALL SCALING 'CALC. TRANSFORMED POINTS 'CALC. PHYSICAL COOR. B.3. Алгоритм двумерного отображения Простой алгоритм отображения относительно оси х либо относительно оси у приведен ниже в виде подпрограммы на языке БЕЙСИК. Последовательность выполнения операций определяется параграфом 2.5. Используются однородные координаты. Данная операция также часто называется зеркальным отражением. 2DREFLT 100 SUB"2DREFLT":P,X(),Y(),N '2-D REFLECTION 110 •Р=NUMBER OF X.Y-PAIRS Т20 »X()=ARRAY CONTAINING X-COORDINATES 130 •Y()=ARRAY CONTAINING Y-COORDINATES 140 •N=REFLECTION CODE 1=X-AXIS, 2=Y-AXIS- 150 DIM S(100,3),Q(100,3) •100 POSITION VECTORS* 160 170 MAT S=ZER(P,3) MAT Q=ZER(P,3) ’REDIMENSION S&Q FILL WITH ZEROS 180 FOR 1=1 TO. P •SET UP HOMOGENEOUS 190 200 210 220 LET S(I,1)=X(I) LET S(I,2)=Y(I) LET S(I,3)=1 NEXT I ’POSITION VECTORS 230 MAT T=ZER(3,3) 'REDIMENSION T FILL WITH ZEROS 240 250 260 270 280 290 IF N=2 THEN 280 LET T(1,1)=T(3,3)=1 LET T(2,2)=-1 GO TO 300 LET T(2,2)=T(3,3)=1 LET T(l,1)=-1 •SET UP TRANSFORMATION MATRIX 300 MAT Q=S*T ’CALC. TRANSFORMED POINTS ЗЮ 320 ззо 340 FOR 1=1 TO P LET X(I)=Q(I,1) LET Y(I)=Q(I,2) NEXT I ’CALC. PHYSICAL COOR.
В.4. Обо щенный алгоритм двумерного вращения Алгоритм двумерного вращения вокруг произвольной точки приведен в виде подпрограммы на языке БЕЙСИК. В нем использованы положения параграфа 2.17. 2DR0T 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 ЗЮ 320 330 340 350 360 370 380 SUB"2DR0T":P,X(),Y(),T1,M,N P=NUMBER OF X.Y-PAIRS 'X()=ARRAY CONTAINING X-COORDINATES •Y()=ARRAY CONTAINING Y-COORDINATES •T1=R0TATI0N ANGLE IN DEGREES •M=X TRANSLATION FACTOR •N=Y TRANSLATION FACTOR DIM S(100,3),0(100,3) MAT S=ZER(P,3) MAT Q=ZER(P,3) FOR 1=1 TO P LET LET S(ll2)=Y(lj LET------- NEXT I T2=T1/57-2957795 T=ZER(3,3) T( 1,1)=T(2,2)=C0S(T2) T(1,2)=SIN(T2) T(2,1)=-SIN(T2) T(3,1)=-M«(C0S(T2)-1)+N«SIN(T2) T(3,2)=-a“SIN(T2)-N»(C0S(T2)-l) T(3,3)=1 o=s«t 1=1 TO p LET X(I)=0(1,1) LETY(I)=Q(I,2) NEXT X SUBEND S(I,1)=X(D S(I,3)=1 ' •2-е rotation '100 POSITION VECTORS 'REDIMENSION SAG FILL WITH ZEROS 'SET UP HOMOGENEOUS 'POSITION VECTORS LET MAT LET LET LET LET LET LET MAT FOR 'CONVERT TO RADIANS 'REDIMENSION T FILL WITH ZEROS •SET TRANSFORMATION MATRIX 'CALC. TRANSFORMED POINTS •CALC. PHYSICAL COOR. B.5. Алгоритм трехмерного изменения масштаба Алгоритм для трехмерного изменения масштаба приведен в виде подпрограммы на языке БЕЙСИК- Он использует уравнение (3.4). 3DSCALE 100 SUB'I3DSCALE":P,X(),Y(),Z(),A,E.J,S '3-D SCALE 110 'P=NUMBER OF X,Y,Z-TRIPLETS 120 'X()=ARRAY CONTAINING X-COORDINATE 130 'Y()=ARRAY CONTAINING Y-COORDINATE 140 'Z()=ARRAY CONTAINING 2 150 'A=X STRETCHING FACTOR 160 'E=Y STRETCHING FACTOR 170 'J=Z STRETCHING FACTOR 180 'S=OVERALL SCALING S>1 190 DIM U(100,4),V(100,4) 200 MAT U=ZER(P 4) 210 MAT V=ZER(P,4) 220 FOR 1=1 TO P 230 LET U(I,1)=X(I) 240 LET U(I,2)=Y(I) 250 LET U(I.3)=Z(I) 260 LET U(I,4)=1 270 NEXT I 280 MAT T=ZER(4,4) 290 LETT(1,1)=A 300 LET T(2,2)=E ^-COORDINATE A>1 STRETCHES, A<1 CONTRACTS E>1 STRETCHES, E<1 CONTRACTS J>1 STRETCHES, J<1 CONTRACTS ENLARGES S<1 REDUCES 400 POSITION VECTORS 'REDIMENSION U&V FILL WITH ZEROS SET UP HOMOGENEOUS 'POSITION VECTORS 'REDIMENSION T FILL WITH ZEROS 'SET X STRETCHING FACTOR 'SET Y STRETCHING FACTOR
310 LET T(3,3)=J 320 LET T(4,4)=1/S 330 MAT V=U»T 340 FOR 1x1 TO P 350 LET X(I)=V(I,1)/V(I,4) 360 LET Y(I)=V(I,2)/V(I,4) 370 . LET Z(I)=V(I,3)/V(I,4) 380 HEXT I 390 SUBEND •SET Z STRETCHING FACTOR •SET OVERALL STRETCHING FACTOR •CALC. TRANSFORMED POINTS •CALC. PHYSICAL COOR. B.6. Алгоритм трехмерного вращения вокруг оси х Алгоритм, приведенный ниже в виде подпрограммы на языке БЕЙСИК, позволяет осуществлять вращение векторов положения объекта вокруг оси х. В нем использованы однородные координаты. 3DXR0T 100 SUB" 3DXR0T": P, X(), Y (), Z (). T1 110 • 'P=NUMBER OF X.Y.Z-TRIPLETS 120 'X()=ARRAY CONTAINING 130 >Y()=ARRAY CONTAINING 140 *Z()=ARRAY CONTAINING 150 'TlxROTATION ANGLE IN 160 DIM U(100.4),V(100,4) 170 MAT U=ZER(P,4) 180 MAT V=ZER(P,4) 190 FOR 1=1 TO P 200 LET U(I,1)=X(I) 210 LET U(I,2)=Y(I) 220 LET U(I,3)=Z(I) 230 LET U(I,4)=1 240 NEXT I 250 LET T2=T1/57.2957795 260 MAT T=2ER(4,4) 270 LET T(1,1)=T(4,H)=1 280 LET T(2,2)=T(3.3)=C0S(T2) 290 LET T(2,3)=SIN(T2) 300 LET T(3,2)=-T(2,3) 310 MAT V=U«T 320 FOR 1=1 TO P 330 LET X(I)=V(I,1) 340 LET Y(I)=V(I,2) 350 LET Z(I)=V(I,3) 360 NEXT I 370 SUBEND •3-D ROTATION ABOUT X-AXIS X-COORDINATES Y-COORDINATES Z-COORDINATES DEGREES •WO POSITION VECTORS REDIMENSION U&V FILL WITH ZEROS SET UP HOMOGENEOUS POSITION VECTORS CONVERT TO RADIANS 'REDIMENSION T FILL WITH ZEROS SET UP TRANSFORMATION MATRIX CALC. TRANSFORMED JOINTS •CALC. PHYSICAL COOR. B.7. Алгоритм трехмерного вращения вокруг оси у Алгоритм, приведенный ниже в виде подпрограммы на языке БЕЙСИК, позволяет осуществлять вращение векторов положения объекта вокруг оси у. В нем использованы однородные координаты.
3DYR0T 100 SUB''3DYR0T'':P,X() ,Y(),Z(),T1 '3-0 ROTATION ABOUT Y-AXIS 110 ’P=NUMBER OF X,Y.Z-TRIPLETS 120 'X()=ARRAY CONTAINING X-COORDINATES 130 'Y()=ARRAY CONTAINING Y-COORDINATES 140 'Z()=ARRAY CONTAINING Z-COORDINATES 150 ’TIsROTATION ANGLE IN DEGREES 160 DIM U(100,4),V(100,4) 170 MAT U=ZER(P,4) 180 MAT V=ZER(P,4) 190 FOR 1=1 TO P 200 LET U(I,1)=X(I) 210 LET U(I,2)=Y(I) 220 LET U(I,3)=Z(I) 230 LET U(I,4)=1 240 NEXT I 250 LET T2=T1/57.2957795 260 MAT T=ZER(4,4) 270 LET T(1,1)=T(3,3)=C0S(T2) 280 LET T(3,»=SIN(T2) 290 LET T(1,3)=-T(3,D 300 LET T(2,2)=T(4,4)=1 310 MAT V=U»T 320 FOR 1=1 TO P 330 LET X(I)=V(I,1) 340 LET Y(I)=V(I,2) 350 LET Z(I)=V(I,3) 360 NEXT I 100 POSITION VECTORS 'REDIMENSION U&V FILL WITH ZEROS 'SET UP HOMOGENEOUS 'POSITION VECTORS 'CONVERT TO RADIANS 'REDIMENSION T FILL WITH ZEROS 'CALC. TRANSFORMED POINTS 'CALC. PHYSICAL COOR. 370 SUBEND B.8. Алгоритм трехмерного вращения вокруг оси z Алгоритм, приведенный ниже в виде подпрограммы на языке БЕЙСИК, обеспечивает трехмерное вращение вокруг оси г. 3DZR0T 100 SUB"3DZR0T":P,X(),Y(),Z(),T1 110 ’P=NUMBER OF X,Y.Z-TRIPLETS 120 'X()=ARRAY CONTAINING 130 'Y()=ARRAY CONTAINING 140 'Z()=ARRAY CONTAINING 150 'T1=ROTATION ANGLE IN 160 DIM U(1OO,4),V(1OO,4) 170 MAT U=ZER(P,4) 180 MAT V=ZER(P,4) 190 FOR 1=1 TO P 200 LET U(I,1)=X(I) 210 LET U(I,2)=Y(I) 220 LET U(I,3)=Z(I) 230 LET U(I,4)=1 240 NEXT I 250 LET T2=T 1/57.2957795 260 MAT T=ZER(4,4) 270 LET T(1,1)=T(2,2)=C0S(T2) 280 LET T(i,2)=-SIN(T2) 290 LET T(2,1)=-T(1,2) 300 LET T(3,3)=T(4,4)=1 310 MAT V=U*T 320 FOR 1=1 TO P 330 LET X(I)=V(I,1) 340 LET Y(I)=V(I,2) 350 LET Z(I)=V(I,3) 360 NEXT I 370 SUBEND 3-D ROTATION ABOUT Z-AXIS X-COORDINATES Y-COORDINATES Z-COORDINATES DEGREES '100 POSITION VECTORS 'REDIMENSION U&V FILL WITH 'SET UP HOMOGENEOUS 'POSITION VECTORS 'CONVERT TO RADIANS 'REDIMENSION T FILL WITH CALC. TRANSFORMED POINTS 'CALC. PHYSICAL COOR.
В,9. Алгоритм трехмерного отображения Алгоритм, который осуществляет трехмерное отображение относительно координатных плоскостей ху, xz или yz, приведен ниже в виде подпрограммы на языке БЕЙСИК. Отображения относительно других плоскостей могут быть получены путем комбинации операций вращения^и^отображения. 3DREFLT •3-D REFLECTIONS X-COORDINATES Y-COORDINATES Z-COORDINATES 100 SUB"30REFLT":Р,Х(),Y(),Z(),N 110 'P=NUMBER OF X.Y.Z-TRIPLETS 120 >X()=ARRAY CONTAINING 130 ’Y()=ARRAY CONTAINING 140 'Z()=ARRAY CONTAINING 150 ’^REFLECTION CODE: 1=XY-PLANE, 160 DIM 0(100,4),V(100,4) 170 MAT U=ZER(P,4) 180 Mat v=zer(p,4) 190 FOR 1=1 TO Р 200 LET 0(I,1)=X(I) 210 LET U(I,2)=Y(I) 220 LET U(I,3)=Z(I) 230 LET U(I,4)=1 240 NEXT I 250 MAT T=ZER(4,4) 260 IF N=2 THEN 310 270 -IF N=3 THEN 340 280 LET T(1,1)=T(2,2)=T(4,4)=1 290 LET T(3,3)=-1 -300 GO TO 360 310 LET T(4,4)=T(3,3)=T(2,2)=1 320 LETT(1,1)=-1 330 GO TO 360 340 LET T(1,1)=T(3,3)=T(4,4)=1 350 LET T(2,2)=-1 360 MAT V=U»T 370 FOR 1=1 TO P 380 LET X(I)=V(I,1) 390 LET Y(I)=V(I,2) 400 LET Z(I)=V(I,3) 410 NEXT I 420 SUBEND 2=YZ-PLANE, 3=XZ-PLANE 100 POSITION VECTORS ’REDIMENSION U&V FILL WITH ZEROS ’SET UP HOMOGENEOUS •POSITION VECTORS ’REDIMENSION T FILL WITH ZEROS •SET UP TRANSFORMATION MATRIX •CALC. TRANSFORMED POINTS •CALC. PHYSICAL COOR. B.10. Алгоритм пространственного переноса Алгоритм для смещения в трех измерениях приведен ниже в виде подпрограммы на языке БЕЙСИК. В нем использованы однородные координаты. 3DTRANS 100 SUB"3DTRANS":P,X(),Y(),Z(),L,M,N '3-D TRANSLATION 110 ’P=NUMBER OF X,Y,Z~IRIPLETS 120 'X()=ARRAY CONTAINING X-COORDINATES 130 ’Y()=ARRAY CONTAINING Y-COORDINATES 140 ’Z()=ARRAY CONTAINING Z-COORDINATES 150 *L=X TRANSLATION FACTOR 160 'M=Y TRANSLATION FACTOR 170 •N=Z TRANSLATION FACTOR 180 DIM U(100,4),V(100,4) •100 POSITION VECTORS 190 MAT U=ZER(P,4) •REDIMENSION U&V FILL WITH ZEROS 200 MAT V=ZER(P,4) 210 FOR 1=1 TO P SET UP HOMOGENEOUS 220 LET U(I,1)=X(I) ’POSITION VECTORS 230 LET U(I,2)=Y(I) 240 LET U(I,3)=Z(I) 250 LET U(I,4)=1
26d NEXT I 270 HAT T=ZER(9,9) 280 LET-T(1,1)=T(2,2)=1 290 LET T(3.3)=T(9.9)=1 300 LETT(9,1)=L 310 LET T(9,2)=M 320 LET T(9,3)=N 330 MAT V=U»T 390 FOR 1=1 TO P 350 LET X(I)=V(I,1) 360 LET Y(I)=V(I,2) 370 LET Z(I)=V(I,3) 380 NEXT I 390 SUBEND 'REDIMENSION T FILL WITH ZEROS ’PLACE 1’S ON MAG. OF T-MATRIX ’SET X TRANSLATION FACTOR ’SET Y TRAMSLATION FACTOR ’SET Z TRANSLATION FACTOR ’CALC. TRANS POSITION VECTORS CALC. PHYSICAL COOR. B.11. Алгоритм трехмерного вращения вокруг любой произвольной оси в пространстве Алгоритм, который осуществляет трехмерное вращение около произвольной оси в пространстве, дан ниже в виде подпрограммы на языке БЕЙСИК. Он основан на уравнениях (3.17) и (3.18). 3DGENR0T 100 SUB"3DGENR0T":P,X(),Y(),Z(),N1,N2,N31T1 '3-D GENERAL ROTATION 110 'PsNUMBER OF X,Y,Z-TRIPLETS 120 *X()=ARRAY CONTAINING X-COORDINATES 130 'Y()=ARRAY CONTAINING Y-COORDINATES. 190 'Z()=ARRAY CONTAINING Z-COORDINATES 150 'REDIRECTION COSINE OF ROTATION AXIS W.R.T. X-DIRECTION 160 'N2=DIRECTI0N ODSINE OF ROTATION AXIS W.R.T. Y-DIRECTION 170 ’N3=DIRECTION COSINE OF ROTATION AXIS W.R.T. Z-DIRECTION 180 'T1=R0TATI0N ANGLE IN DEGREES 190 DIM U(100,9),V(100,9) 200 MAT U=ZER(P,9) 210 MAT V=ZER(P,9) 220 FOR 1=1 TO P '100 POSITION VECTORS •REDIMENSION U&V FILL WITH ZEROS •SET UP HOMOGENEOUS 230 LET U(I,1)=X(I) 'POSITION VECTORS 290 LET U(I,2)=Y(I) 250 LET U(I,3)=Z(I) 260 LET U(I,9) = 1 270 NEXT I 280 MAT T=ZEH(9,9) • 'REDIMENSION T FILL WITH ZEROS 290 LET T2=T 1/57.2957795 'CONVERT Tl TO RADIANS 300 LET T(9,9)=1 'SET UP TRANSFORMATION MATRIX 310 LET T(1,1)=N1*N1+(1-N1*N1)»C0S(T2) 320 LET T(1,2)=N1»N2»(1-C0S(T2))+N3»SIN(T2) 330 LET T(1,3)=N1«N3,(1-C0S(T2))-N2»SIN(T2) 390 LET T(2,1)=N1»N2»(1-C0S(T2))-N3#SIN(T2) 350 LET T(2,2)=N2«N2+( 1-N2«N2)«C0S(T2) 360 LET T(2,3)=N2HN3it(1-C0S(T2))+N1*SlN(T2) 370 LET T(3,1)=N1«N3*(1-C0S(T2))^N2eSIN(T2) 380 LET T(3,2)=N2*N3*(1-C0S(T2))-N1»SIN(T2) 390 LET T(3,3)=N3»N3+(1-N3‘,N3)‘,COS(T2) 900 MAT V=U»T 'CALC. TRANSFORMED POINTS 910 FOR 1=1 TO P 'CALC. PHYSICAL COOR. 920 LET X(I)=V(I,1) 930 LET Y(I)=V(I,2) 990 LET Z(I)=V(I,3) 950 NEXT I 960 SUBEND
В.12. Аксонометрический проекционный алгоритм Алгоритм для простой ортографической проекции на нулевую плоскость, перпендикулярную любой из трех ортогональных осей, приведен ниже в виде подпрограммы на языке БЕЙСИК. PROJ 100 SUB"PROJ":P,X(),Y(),Z(),N ’PROJECTION 110 *P=NUMBER OF X,Y,Z-TMPLETS 120 'X()=ARRAY CONTAINING X-COORDINATES 130 ’Y()=ARRAY CONTAINING Y-COORDINATES 140 'Z()=ARRAY CONTAINING Z-COORDINATES 150 'N=CODE NUMBER INDICATING PERPENDICULAR AXIS: 160 'IrX-AXIS, 2-Y-AXIS, 3=Z-AXIS 170 DIM U(1OO,4),V(10O,4) 180 MAT U=ZER(P,4) 190 MAT V=ZER(P,4) 200 For 1=1 to p 210 LET 0(1,1)=X(I) 220 LET U(I,2)=Y(I) 230 LET U(I,3)=Z(I) 240 LET U(I,4)=1 250 NEXT I 260 MAT T=ZER(4,4) 270 LET T(1,1)=T(2,2)=1 280 LET T(3,3)=T(4,4)=1 290 IF N=3 THEN 350 300 IF N=2 THEN 330 310 LET T(1,1)=0 320 GO TO 360 330 LET T(2,2)=0 340 GO TO 360 350 LET T(3,3)=0 360 MAT V=U»T 370 FOR 1=1 TO P 38O LET X(I)=V(I,1) 390 LET Y(I)=V(I,2) 400 LET Z(I)=V(I,3) 410 NEXT I 420 SUBEND •100 POSITION VECTORS ’REDIMENSION U«V FILL WITH ZEROS SET UP HOMOGENEOUS ’POSITION VECTORS •REDIMENSION T FILL WITH ZEROS •PUT rs ON ALL DIA ELEMENTS •SET APPROPRIATE DIAGONAL TERM=O •CALC. TRANSFORMED POINTS •CALC. PHYSICAL COOR. B.13. Диметрический проекционный алгоритм Алгоритм, который осуществляет специальное диметрическое преобразование на основании уравнения (3.26) и построение проекции на плоскость z = 0, дан ниже в виде подпрограммы на языке БЕЙСИК. DIMETRIC 100 SUB"DIMETRIC:P,X(),Y(),Z() 'DIMETRIC PROJECTION 110 *P=NUMBER OF X,Y.Z-TRIPLETS 120 'X()=ARRAY CONTAINING X-COORDINATES 130 ’Y()=ARRAY CONTAINING Y-COORDINATES 140 'Z()=ARRAY CONTAINING Z-COORDINATES 150 DIM 0(100,4),V(100,4) '100 POSITION VECTORS 160 MAT U=ZER(P,4) 'REDIMENSION U«V FILL WITH ZEROS 170 MAT V=ZER(P,4) 180 FOR 1=1 TO P ’SET UP HOMOGENEOUS 190 LET U(I,1)=X(I) 'POSITION VECTORS 200 LET 0(I,2)=Y(I) 210 LET U(I,3)=Z(I) 220 LET 0(I,4) = 1
230 NEXT I 240 MAT T=ZER(4,4) 250 LET T( 1,0=0.925820 260 LET T(1,2)=0.133631 270 LET T(2,3)=0,353553 280 LET T(1,3)=-0.353553 290 LET T(2,2)=0.935414 300 LET T(3,0 =0.377964 310 LET T(3,2)=-0.327327 320 LET T(3,3) =0.866025 330 LET T(4,1|) = 1 340 MAT V=U»T 350 FOR 1=1 TO P 360 LET X(I)=V(I,1) 370 LET Y(I)=V(I,2) 380 LET Z(I)=V(I,3) 390 NEXT I 400 CALL "PR0J":P,X(),Y(),Z(),3 410 SUBEND •REDIMENSION T FILL WITH ZEROS 'SET UP TRANSFORMATION MATRIX •CALC. TRANSFORMATION •CALC. PHYSICAL COOR. •PROJECT ON TO Z=0 PLANE B.14. Изометрический проекционный алгоритм Алгоритм, который осуществляет изометрическое преобразование, рассмотренное в параграфе 3.10. [уравнение (3.26) для 6 = 35,264° и Ф — 45° ], и построение проекции на плоскость 2 = 0, приведен ниже в виде подпрограммы на языке БЕЙСИК. ISOMET 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 ЗЮ 320 330 340 350 360 370 380 390 400 SUB"ISOMET”:P,X(),Y(),Z() P=NUMBER OF X.Y.Z-TRIPLETS •X()=ARRAY CONTAINING •Y()=ARRAY CONTAINING •Z()=ARRAY CONTAINING DIM U(100,H),V(100,4) MAT U=ZER(P,M) MAT V=ZER(P,U) FOR 1=1 TO P LET U(I,1)=X(I) LET U(I,2)=Y(I) LET U(I,3)=Z(I) LET U(I,l|) = 1 NEXT I MAT T=ZER(4,9) LET TO,1)=T(3,D=0.707107 LET T(1,2)=0.408298 LET T(3,2)=-0.408288 LET TO,3) =-0.577353 LET T(3,3)=0.577353 LET T(2,2)=0.816497 LET T(2,3)=0.577345 LET T(4,4)=1 MAT V=U»T FOR 1=1 TO P LET X(I)=V(I,1) LET Y(I)=V(I,2) LET Z(I)=V(I,3) NEXT I CALL "PR0J":P,X(),Y(),Z(),3 SUBEND •ISOMETRIC PROJECTION X-COORDINATES Y-COORDINATES Z-COORDINATES •100 POSITION VECTORS •REDIMENSION UAV FILL WITH ZEROS •SET UP HOMOGENEOUS •POSITION VECTORS •REDIMENSION T FILL WITH ZEROS •SET UP TRANSFORMATION MATRIX •CALC. TRANSFORMATION •CALC. PHYSICAL COOR. •PROJECT ONTO Z=0 PLANE B.15. Алгоритм для перспективных преобразований Алгоритм для построения общего перспективного изображения оформлен в виде подпрограммы на языке БЕЙСИК.
PERSPEC SUB"PERSPEC":P1,X(),Y(),Z(),P,Q,R 'PERSPECTIVE TRANSFORMATION •P1=NUMBER OF X.Y.Z-TRIPLETS лтогилнлиом •X()=ARRAY CONTAINING X-COORDINATES •Y( )=ARRAY-CONTAININC Y-COORDINATES •Z()=ARRAY CONTAINING Z-COORDINATES •P=X-AXIS POINT OF PROJECTION •0=Y-AXIS POINT OF PROJECTION •R=Z-AXIS POINT OF PROJECTION DIM U(100,4),V(100,4) MAT U=ZER(P1,4) MAT V=ZER(P1,4) FOR 1=1 TO PI LET U(I,1)=X(I) LET U(i,2)=Y(I) LET U(I,3)=Z(I) LET U(I,4)=1 NEXT I MAT-T=ZER(4,4) '100 POSITION VECTORS •REDIMENSION U4V FILL WITH ZEROS •SET UP H0MOGENEOUS21O •POSITION VECTORS 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 LET T(1,1)=T(2,2)=1 290 LET T(3,3)=T(4,4)=1 300 LET T(1,4)=P ЗЮ LET T(2,4)=O 320 LET T(3,4)=R 330 MAT V=U«T 340 FOR 1=1 TO PI 350 LET X(I)=V(I,1)/V(I,4) 360 » LET Y(I)=V(I,2)/V(I,4) 370 LET Z(1)=V(I,3)/V(I,4) 380 NEXT I - 390 SUBEND •REDIMENSION T-FILL WITH ZEROS •PLACE 1'S ON DIAC. OF T MATRIX •SET X PROJECTION POINT •SET Y PROJECTION POINT •SET Z PROJECTION POINT •CALC. TRANSFORMATION •CALC. PHYSICAL COOR. B.16. Алгоритм трехмерного восстановления координат Алгоритм для восстановления трехмерных координат по двум перспективным проекциям в случае, когда элементы матрицы преобразования известны, приведен ниже в виде подпрограммы на языке БЕЙСИК. Он основан на уравнении (3.48). 3DREC0N1 100 SUB"3DREC0N1":T(,) ,S(,) ,X1,Y1 ,X2,Y2,X(,) ’3-D RECONSTRUCTION-1 110 >T(,)=4»4 TRANSFORMATION MATRIX FOR THE FIRST VIEW 120 'S(,)=4»4 TRANSFORMATION MATRIX FOR THE SECOND VIEW 130 'XI ,Y1=C00RDINATES OF POINT IN FIRST VIEW 140 'X2,Y2=C00RDINATES OF POINT IN SECOND VIEW 150 DIM A(4,3),B(4,1),C(3,4),D(3,3).E(3,3),T(3,1) 160 MAT-X=ZER(3,1) 'FILL X-MATRIX-WITH ZEROS 170. FOR J=1 TO 3 'FIND PROJECTION PLANE 180 FOR 1=1 TO 4 'IN T-MATRIX 190 IF T(I,J)<>0 THEN 220 200 NEXT I 210 GO TO 250 220 NEXT J 230 PRINT "TRANS T IS NOT A PROJECTION" 240 GO TO 660 250 ON J GO TO 260,290,320 'ELIMINATE O-COLUMN 260 LET 11=2 'FROM EQUATIONS 270 LET 12=3 280 GO TO 340 290 tET 11=1
Зое let 12=3 310 со то зао 320 LET 11 = 1 330 LET 12=2 340 FOR J=1 TO 3 'FINO PROJECTION PLANE 350 FOR 1=1 TO 4 'IN S-MATRIX 360 IF S(I,J)<>0 THEN 390 370 NEXT I 380 GO TO 420 390 NEXT J 1100 PRINT "TRANS S IS NOT A PROJECTION" A10 GO TO 660 420 ON J GO TO 430,460,490- - 430 LET J1=2 440 LET J2=3 450 CO TO 510 460 LET J1=l 470 LET J2-3 480 GO TO 510 490 LET J1 = 1 500 LET J2=2 510 FOR 1=1 TO 3 ,520 LET A(1,I)=T(IiI1)-T(I,4)*X1 530 LET A(2,I)=T(I,I2)-T(I,4)»YT 540 LET A(3,I)=S(I,J1)-S(I,4)»X2 550 LET A(4,I)=S(I,J2)-S(I,4)»Y2 560 NEXT I 570 LET B(1,1)=T(4,4)»X1-T(4,I1) 580 LET B(2,1)=T(4,4)«Y1-T(4,I2) 590 LET B(3,1)=S(4,4)*X2-S(4,J1) 600 LET B(4,1)=S(4,4)“Y2-S(4,J2) 610 HAT C=TRN(A) 620 MATRIX D=C«A 630 MAT E=INV(D) 640 HAT Y=C»B 650 HAT X=E»Y 660 SUBEND •ELIMINATE O-COLVMNl ’FROM EQUATIONS ’SET UP A-HATMX •SET UP B-MATRIX •TRANSPOSE A •FORM SO MATRIX FROM'A 4 IT'S TRANSPOSE •INVERT SQUARE MATRIX •FORM A TRANSPOSE • В •OBTAIN SOLUTION Алгоритм для восстановления преобразования, используемого для получения перспективной проекции по известному расположению шести точек в физическом и проекционном пространствах, приведен ниже в виде подпрограммы на языке БЕЙСИК. Он основан на уравнении (3.50) в нормализованной форме. 3DRECON2 100 SUB"3DRECON2":X(,),U(,),Т(,) *3-0 RECONSTRUCTION-2 110 'Х(,)=6«3 MATRIX CONTAINING THE LOCATIONS OF THE SIX POINTS 120 * IN PHYSICAL COORDINATES IN ORDER 130 'U(,)=6«2 MATRIX CONTAINING THE LOCATIONS OF THE SAME SIX 140 ’ POINTS IN THE PERSPECTIVE VIEW IN THE SAME ORDER 150 'T(,)=THE 4*4 TRANSFORMATION MATRIX 160 DIM A(12,12),B(11,11),C(11,1),D(11,I),E(11,11) 170 MAT T=ZER(4,4) 'FILL T&A MATRICES WITH ZEROS 180 MAT A=ZER(12,12) 190 FOR 1=1 TO 12 STEP 2 'SET UP A-MATRIX 200 LET J=J+1 210 LET A(I,1)=A(I+1,2)=X(J,1) 220 LET A(I,4)=A(I+1,5)=X(J,2) 230 LET A(I,7)=A(I+1,8)=X(J,3) 240 LET A(I,10)=A(1+1,11)=1 250 LET A(I,12)=U(J,1) 260 LET A(I+1,12)=U(J,2) 270 LET A(I,3)=-X(J,1)»U(J,1) 280 LET A(I+1,3)=-X(J, 1 )*U(J,2) 290 LET A(I,6)=-X(J,2)»U(J,1) 300 LET A(I+1,6)=-X(J,2)»U(J,2) 310 LET A(I,9)=-X(J,3)"U(J,1) 320 LET A(I+1,9)=-X(J,3)»U(J,2)
330 NEXT I 340 FOR 1=1 TO 11 ’SET UP, B&C MATRICES 350 FOR J=1 TO 11 ’FORM В-МАТЯ1Х 360 LET B(I,J)=A(I,J) 370 NEXT J 380 LET C(I,1)=A(I,12) ’FORM C-MATRTX 390 NEXT I 400 MAT E=INV(B) 'CALC. TRANS. MATRIX 410 MAT D=E«C 420 LET T( 1,1)=C(1,1) 430 LET T(1,2)=D(2,1) 440 LET T( 1,4)=D(3,1) 450 LET T(2,1)=D(4,1) 460 LET T(2,2)=D(5,1) 470 LET T(2,4)=D(6,1) 480 LET T(3,1)=D(7,1) 490 LET T(3,2)=D(8,1) 500 LET T(3,4)=D(9,1) 510 LET T(4,1)=D(10,1) 520 LET T(4,2)=D(11,1) 530 LET T(4,4)=1 540 SUBEND В. 17. Алгоритм формирования стереоизображения Алгоритм построения стереопары для объекта, который помещают в определенном месте и вращают для того, чтобы сформировать желаемый вид и перспективу, дан ниже в виде подпрограммы на языке БЕЙСИК. STEREO 100 SUB"STERE0":P1,X(),Y(),Z(),K,E,A(,),B(,) 110 'P1=NUMBER OF POINTS USED TO DEFINE OBJECT 120 'X()=ARRAY CONTAINING X-COORDINATES 130 'Y()=ARRAY CONTAINING Y-COORDINATES 140 'Z()=ARRAY CONTAINING Z-COORDINATES 150 'DIM X(P1),Y(P1),Z(P1) IN MAIN PROGRAM 160 'K=FOCAL LENGTH OF STEREO VIEWER «..,=1 170 'E=DISTANCE BETWEEN EYES OF OBSERVER (RELATIVE TO OUTPUT SCALE) 160 'A(,)=RESULTING XS-,YR-COORDINATES FOR LEFT EYE 190 'DIM A(P1,2) IN MAIN PROGRAM 200 'B(,)=RESULTING X’-.Y^-COORDINATES FOR RIGHT EYE 210 'DIM B(P1,2) IN MAIN PROGRAM 220 DIM U(100,4) 230 DIM L(100,4) 240 DIM R(100,4) 250 DIM P(100,4) 260 DIM 0(100,4) 270 FOR 1=1 TO P1 'SET UP HOMOGENEOUS 280 LET U(I,1)=X(I) 'POSITION VECTORS 290 LET U(I,2)=Y(I) 300 LET U(I,3)=Z(I) 310 LET U(I,4)=1 320 NEXT I 330 MAT T=ZER(4,4) 'CREATE LEFT-EYE PERSPECTIVE 340 LET T(1,1)=T(2,2)=T(3,3)=T(4,4)=1 350 LET T(3,4)=-1/K 360 LET T(4,1)=K/20 370 MAT L=U*T 380 LET T(4,1)=-K/20 'CREATE RIGHT-EYE PERSPECTIVE 390 MAT R=u«T 400 LET X2=X6-0 410 LET X3=X7=99999 420 FOR 1=1 TO PI 430 LET P(I,4)=Q(I,4)=1 'NORMALIZE RESULTS 440 LET P(I,1)=R(I,1)/R(I,4) 450 LET P(I,2)=R(I.2)/R(I,4?
460 LET C(I,1)=L(I,1)/L(I,4) 470 LET 0(I,2)=L(I,2)/L(1.4) 480 LET X1=P(I,1) 'FIND X* МАХ/MIN FOR L/R EYES 490 LET X5=0(I,1) 500 IF X1>X3 THEN 520 510 LET X3=X1 520 IF XKX2 THEN 540 530 LET X2=X1 540 IF X5>X7 THEN 560 550 LET X7=X5 560 IF X5<X6 THEN 580 570 LET X6=X5 580 NEXT I 590 LET D=(X6+X7)/2-(X3+X2)/2 'FIND EYE SEPARATION DISTANCE 600 LET L=D+(E-D)/2 6Ю MAT T=ZER(4,4) 'TRANSLATE RIGHT-EYE VIEW 620 LET T(1,1)=T(2,2)=T(3,3)=T(4,4)=1 630 LET T(4,1)=L 640 HAT R=P«T 650 LET T(4,1)=-L ' 'TRANSLATE LEFT-EYE VIEW 660 MAT L=0*T 670 MAT A=ZER(P1,2) 680 MAT B=ZER(P1,2) 690 FOR 1=1 TO PI 'SET UP RETURN MATRIX 700 LET A(I,1)=L(I,1) 710 LET A(I,2)=L(I,2) 720 LET B(I,1)=R(I,1) 730 LET B(I,2)=R(I,2) 740 NEXT I 750 SUBEND B.18. Алгоритм для непараметрической окружности Алгоритм, приведенный ниже в виде подпрограммы на языке БЕЙСИК, используется для построения окружности, заданной непараметрически. Этот алгоритм основан на результатах параграфа 4.5. Для построения параметрической окружности рекомендуется алгоритм В. 19. NPCIRCLE 100 §VB"NPCIRCLE'':H,K,R.N,X(),Y() 'NONPARAMETRIC CIRCLE HQ " H,K=XAY COOR. OF CENTER 120 ’ R=RADIUS OF CIRCLE 130 * N=NUMBER OF POINTS DESIRED 140 ' X( )=ARRAY CONTAINING THE X-COORDINATES OF CIRCLE 145 ' Y()=ARRAY CONTAINING THE Y-COORDINATES OF CIRCLE 150 ' N0TE:N MUST BE DIVISIBLE BY EIGHT. IF NOT PROGRAM WILL 160 ' USE NEXT HIGHER NUMBER DIVISIBLE BY EIGHT 170 LET A=INT(N/8) 'DETERMINE IF DIVISIBLE BY EIGHT 180 IF A=N/8 THEN 210 190 LET N1=(A+1)*8 'SET Nl DIVISIBLE BY EIGHT 200 CO TO 230 210 LET N1=N 230 MAT X=ZER(NU1) 240 MAT Y=ZER(N1+1) 250 LET D=R»(1-1/SQR(2))/(N1/8) 'CALC. INCREMENT 260 LETX(1)=R 'CALC. INITIAL POINT 270 LET Y( 1)=0 280 FOR 1=1 TO Nl 'CALC. POINTS AROUND ORIGIN 290 IF 1=1 THEN 370 'DETERMINE SECT. FOR CALC. 300 IF ABS(X(I))<0.0005 THEN 320 310 CO TO 340 320 IF Y(I)>0 THEN 440 330 GO TO 590 340 IF Y(I)<0.0005 THEN 500 350 IF X(I)<0.0005 THEN 430 360 IF Y(I)>=R/SqR(2)-0.0005 THEN 400 370 LET X(I+1)=X(I)-D 'CALC. POINTS 0-45 DEG.
38o LET Y(I+1)=SQR(ABS(R‘R-X(L,1)»X(I+1))) 390 CO TO 640 400 LET Y(I+1)=Y(I)+D ’CALC. POINTS «5-90 DEG. 410 LET X(I+1)=SQR(ABS(R*R-Y(I+1)»Y(I<1))) 420 CO TO 640 430 IF Y(I)<=R/SQR(2)+0.0005 THEN 470- 440 LET Y(I+1)=Y(I)-D ’CALC. POINTS 90-135 DEG. 450 LET X(I+1)=-SQR(ABS(R*R-Y(I+1)*Y(I+1))) 460 CO TO 64C 470 LET X(I+1)=X(I)-D ’CALC. POINTS 135-180 DEC. 480 LET Y(I+1)=SQR(ABS(RBR-X(I+i)*X(I+1))) 490 CO TO 640 500 IF X( I) >-0.0005 THEN 580 510 IF -Y(I)>=R/SQR(2)-0.0005 THEN 550 520 LET X(I+1)sX(I)+D 'CALC. POINTS 180-225 DEG. 530 LET Y(I+1)=-SQR(ABS(R*R-X(I+1)*X(I+1))J 540 CO TO 640 550 LET Y(I+1)=Y(I)-D ’CALC. POINTS 225-270 DEG. 560 LET X(I+1)=-SQR(ABS(R«R-Y(It1)»Y(1+1))) 570 * CO TO 640 580 IF -Y(I)<=R/SQR(2)+0.O0O5 THEN 620 590 LEI Y(I+1)=Y(I)+D 'CALC. POINTS 270-315 DEO. 600 LET X(I+1)=S0R(ABS(R*R-Y(I+1)EY(I+1))) 610 CO TO 640 620 LET X(I+1)=X(I)+D 'CALC. POINTS 315-360 DEC. 630 LET Y(I+1)=-S0R(ABS(R*R-X(I+1)EX(I+1))) 640 NEXT I 650 FOR 1=1 TO N1+1 ’TRANSLATE CIRCLE 660 * LET X(I)=X(I)+H 670 LET Y(I)=Y(I)+K 680 NEXT I 730 SUBEND B.19. Алгоритм для параметрической окружности Алгоритм для параметрического представления окружности дан в виде подпрограммы на языке БЕЙСИК. Он основан на уравнениях (4.28) и (4.29). CIRCLE 100SUB"CIRCLE";H,K,R,N,X(),Y() ’PARAMETRIC CIRCLE 110 ’H=X-COORDINATE OF CENTER OF THE CIRCLE 120 *K=Y-COORDINATE OF CENTER OF THE CIRCLE 130 'RiRADIUS 140 ’N=RUHBLR OF POINTS ON CIRCLE 150 *X() ARRAY CONTAINING THE X-COORDINATES OF POINTS ON CIRCLE 160 ’Y() ARRAY CONTAINING THE Y-COORDINATES.OF POINTS ON CIRCLE 170 LET P=2»3.14156/(N-1) 'CALC. INCREMENT IN THETA 180. LET C1=C0S(P) ’CALC. CONSTANTS 190 LET S1=SIN(P) 200 LET X(O)=H+R ’CALC. INITIAL POINT 210 LET Y(O)=K 220 FOR M=1 TO N 'INNER LOOP 230 LET X(M)=H+(X(M-1)-H)»C1-(Y(M-1)-K)«S1 240 LET Y(M)=K+(X(M-1)-H)»SU(Y(M-1)-K)»C1 250 . NEXT M 260 SUBEND B.20. Алгоритм для параметрического эллипса Алгоритм, приведенный ниже в виде подпрограммы на языке БЕЙСИК, используется для построения эллипса. Он основан на уравнениях (4.38) и (4.39) параграфа 4.8.
tLLIPSEl 100 SUB"ELLIPSE1":H,K,A,B,I,N,X().Y() 110 'H=X-C00RDINATE OF CENTER OF THE ELLIPSE 120 'K=Y-COORDINATE OF CENTER OF THE ELLIPSE 130 'A=LEHGTH OF SEMI-MAJOR AXIS 140 'B-LENGTH OF SEMI-MINOR AXIS 150 4= INCLINATION ANGLE OF MAJOR AXIS IN DEGREES 160 'N=NUMBER OF POINTS ON ELLIPSE 170 'X()=ARRAY CONTAINING THE X-COORDINATES OF POINTS ON ELLIPSE 18o *Y()=ARRAY CONTAINING THE Y-COORDINATES OF POINTS ON ELLIPSE 190 LET Р=2«3.16156/CN-1) CALC. THE INCREMENT IN THE PARAMETER 200 LET 11=1/57.2957795 •CONVERT I TO RADIANS 210 LET С 1=C0S( 11) •CALC. THE COSINE AND 220 LET S1=SIN(I1) •SINE OF THE INCLINATION ANGEL 230 LET C2=C0S(P) •CALC. THE INCREMENTS IN COSINE 240 LET S2=SIN(P) •AND SINE OF THE PARAMETER INCREMENT 250 LET 03=1 ’INITIALIZE THE’ACCUMULATION 260 LET S3=O •VARIABLES 270 FOR M=1 TO N •BEGIN INNER LOOP 280 290 LET X1=A»C3 LET Y1=B*S3 •CALC. INCREMENTS IN X AND Y зоо 310 LET X(M)=H+X1"C1-Y1“S1 LET Y(M)=K+X1«S1+Y1«C1 •CALC. NEW X AND Y 320 LET T1=C3I,C2-S3»S2 •CALC. NEW ANGLE FORMULAS 330 LET S3=S3aC2+C31'S2 •DOUBLE ANGLE FOR SINE . 360 LET С3=п 350 NEXT М 360 SUBEND •DOUBLE ANGLE FOR COSINE B.2I. Алгоритм для параметрической параболы Алгоритм для параметрической ^параболы, приведенный ниже в виде подпрограммы на языке БЕЙСИК, основан на уравнениях (4.43) и (4.44). PARABOLA 100 SUB"PARAB0LA":A,P1,N,X(),Y() 'PARAMETRIC PARABOLA 110 'ArDISTANCE FROM FOCUS TO VERTEX OF PARABOLA 120 'P1=MAXIMUM ANGLE (DEGREES) (CF. EQ. 6-65 OR 11-66) 130 'N-NUMBER OF POINTS ON PARABOLA 160 'X()=ARRAY CONTAINING THE X-COORDINATES OF POINTS ON PARABOLA 150 "Y()=ARRAY CONTAINING THE Y-COORDINATES OF POINTS ON PARABOLA 160 LET P=P1/((N-1)"57.295)7795) 'CALC. INCREMENT IN THETA 170 LET X(1)=0 'INITIALIZE 180 LET Y(1)=0 190 LET A1=A»P«P 200 LET B1=2*A*P 210 FOR Mr 2 TO M 'INNER LOOP 220 LET X(M)=A1+X(M-1)+P»Y(H-1) 230 LET Y(M)=B1+Y(M-1) 260 HEXT M 250 SUBEND B.22. Алгоритмы для параметрических гипербол Алгоритм, который формирует параметрическую гиперболу, приведен ниже в виде подпрограммы на языке БЕЙСИК- Алгоритм основан на уравнениях (4.51) и (4.52).
IlYPERBI loo sub,,hypebbiii:a,b,n.X().Y() 'parametric hyperbola 110 ’A=DISTANCE FROM CENTER OF HYPERBOLA TO VERTEX 120 'ErDETERMINES SLOPE FO ASYMPTOTES^*—Б/A 130 '))= NUMBER OF POINTS ON HYPERBOLA 140 -'X() =ARRAY CONTAINING X-COORDINATES OF POINTS ON HYPERBOLA 150 ’Y()=ARRAY CONTAINING Y-COORDINATES OF POINTS ON HYPERBOLA 200 LE1‘-P=3.141592654/(2*(N-1)) 'CALC. PARAMETER INCREMENT 210 LET C2=C0S(P) 'CALC. COSINE.S1NE.TANGENT 220 LET S2=SIN(P) 'CF PARAMETER INCREMENT 230 LET T2=TAN(P) 240 LET C9=B«T2 250 LET S9=B’C2 260 LETX(1)=A 'INITIALIZE 270 LET Y(1)=0 280 FOR M=2 TO N 'INNER LOOP 290 LET X(M) = (B’‘X(M-1))/(S9-Y(M.-1)»S2) 300 LET Y(M)=(B"(Y(M-1)+09))/(B-Y(M-1)°T2) 310 NEXT M 320 SUBEND Другой алгоритм, который формирует параметрическую гиперболу, также дан в виде подпрограммы на языке БЕЙСИК. Алгоритм основан на уравнениях (4.55) и (4.56). Он дает часть гиперболы в первом квадранте. Части гиперболы в других квадрантах или гиперболы, несимметричные относительно начала координат, могут быть получены с помощью соответствующих операций вращения, отображения и переноса. HYPERB2 100 SUB"HYPERB2":A,B.C.N,X().Y() 'PARAMETRIC HYPERBOLA 110 'A=DISTANCE FROM CENTER OF HYPERBOLA TO .VERTEX 120 'BzDETERMINES SLOPE FO ASYMPTOTES=+-B/A 130 'C=LIMIT OF X-COORDINATE 140 'N=NUMBER OF POINTS ON HYPERBOLA 150 'X():ARBAY CONTAINING X-COORDINATES OF POINTS ON HYPERBOLA 160 *Y()=ARRAY CONTAINING Y-COORDINATES OF POINTS ON HYPERBOLA 170 LET P2=(A+C)/A 'CALC. PARAMETER INCREMENT 180 LET P1=((LOG(1+P2)/L0G(10))-(L0G(P2-1)/L0G(10)))/(2»(N-1)) 190 LET C2=(EXP(P1)+EXP(-P1))/2 'CALC. COSH P1 200 LET S2=(EXP(P1)-EXP(-P1))/2 'CALC. SINH P1 210 LET X(1)=A ’ 'INITIALIZE 220 LET Y(1)=0 230 FOR M=2 TO N 'INNER LOOP 21)0 LET X(M)=C2*X(M-1)+(A/B)*S2*Y(M-1) 250 LET Y(M)=(B/A)*S2*X(M-1)+C2*Y(M-1) 260 NEXT H 270 SUBEND B.23. Алгоритм для окружности, проходящей через три точки Алгоритм, приведенный ниже в виде подпрограммы на языке БЕЙСИК, определяет дугу окружности, проходящую через три точки. Он основан на соотношениях параграфа 4.11.
3PCIRARC 100 SUB"3PCIRARC'":X(),Y(),N,H.K,R,S()',T() ’ARC THRU THREE POINTS 110 ’ X(),Y()=COORDINATES OF THREE POINTS 120 ' NaNUMBER OF STRAIGHT LINES TO REPRESENT ARC 130 • H,K=X.Y-COORDINATES OF CENTER (RETURNED) 140 ’ R=RADIUS (RETURNED) 150 "S()=ARRAY CONTAINING X-COORDINATES OF CIRCLE 160 * ТО-ARRAY CONTAINING Y-COORDINATES OF CIRCLE 170 MAT A=ZER(3) ’DIM & SET EQUAL TO ZERO 180 MAT B=ZER(3) 190 FOR 1=1 TO 3 ’COPY X() i Y() INTO A() i B() 200 LET A(I)=X(I) 210 LET B(I)=Y(I) 220. NEXT I 230 CALL"2DTRANS.":3,A(),B(),-A(1),-B(1) "TRANS. 1ST POINT TO ORIGIN 240 CALL""SOLVE":A(),B(),H1,K1 "SOLVE FOR CENTER OF TRANS. ARC 250 LET H=X( D+lll "CALC. CENTER-COORDINATES 260 LET K=Y(1)+K1 270 LET R=SQR(H1»Hl+Kl«K1) "CALC. RADIUS 280 CALL""2DTRANS.":3,A(),B(),-H1,-K1 "TRANS. CIRCLE TO ORIGIN 290 CALL"ATAN":A( 1),B( 1),T1 "CALC. BEGINNING i ENDING ANGLES 300 CALL"ATAN":A(2),B(2),T2 310 CALL'"ATAN"':A(3),B(3),T3 320 LET T1=T1«57.29577951 "CHANGE RADIANS TO DEGREES 330 LEI’ T2=T2*57.29577951 340 LET T3=T3»57.29577951 ' 350 IF TKT2 THEN 420 •TEST FOR DIFFERENT CASES 360 IF T2>T3 THEN 470 *T1>T2>T3 370 LET T3=T3-36O ’T1>T2<T3 CASE 1 380 . IF ABS(T3-T1)<360 THEN 470 ’TEST IF CASE 1 CORRECT 390 LET 73=73+360 ’T1>T2<T3 CASE 2 _ 400 LET T1=T1-36O 410 GO TO 470 420 IF T2CT3 THEN 470 'T1<T2<T3 430 LET T1=T1-36O 'T1<T2>T3 CASE 1 440 IF ABS(T3-T1)<360 THEN 470 ‘TEST IF CASE 1 CORRECT 450 LET Т1=Т1+ЗбО "TKT2XT3 CASE 2 460 LET T3=T3-36O 470 CALL"'ARCA":H.K,R.T1,T3,N,S(),T() "DRAW ARC THRU THE THREE POINTS 480 SUBEND 490 SUB"S0LVE":A(),B(),H1,K1 "SOLVE/FOR CENTER OF CIRCLE 500 " A(),B()=COOR OF 3 POINTS WHERE A(1)=B(1)=0 510 ’ HI,K1=X.Y-COOR OF CENTER (RETURNED) 520 MAT C=ZER(2,2) 530 MAT D=ZER(2,1) 540 MAT E=ZER(2,2) 550 MAT F=ZER(2,1) 560 FOR 1=2 TO 3 ~ 'SET UP MATRIX 570 LET C(I-1,l)=2«A(I) 580 LET C(I-1,2)=2»B(I) 590 LET JXI-1,1)=A(I)»A(I)+B(I)«B(I) 600 NEXT I 610 MAT E=INV(C) "CALC.' CENTER 620 MAT F=E*O 630 LET H1=F(1,1) "SET CENTER EQUAL TO HI,Kt 640 LET K1=F(2,1) 650 SUBEND 660 SUB"ATAN":X.Y,A "TAN OF (YX) 670 ' X,Y=PR0GRAM FINDS TANGENT OF (Y/X) ' 680 " A=TANGENT OF (Y/X) IN RADIANS (RETURNED) 690 IF Y<0 THEN 780 700 IF X=0 THEN 740 710 IF X<0 THEN 760 720 LET A=ATN(Y/X) "0-90 DEG. 730 GO TO 850 740 LET A= 1.570796327 "90 DEG. 750 GO TO B50 760 LET A= 3.141592654-ATN(ABS(Y/X)) "90-180 DEG. 770 GO TO B50 780 IF X=0 THEN 84o 790 IF X<0 THEN 820 800 LET A=6.2831853O8-ATN(ABS(Y/X)) "270-360 DEG, 810 CO TO 850
его let а= atH(abs(y/x))+3.i1‘i59265,i ’ 180-270 dec, Взо GO TO 850 81)0 LET Z=9.712388981 *270 DEG. 850 SUBEND 860 SUB"ARCA":X,Y,R,T1,T2.N.X(),Y() 'PARAMETRIC CIRCULAR ARC 870 'X=X-COORDINATE OF CENTER OF ARC 880 'YsY-COORDINATE OF CENTER OF ARC 890 'R=RADIUS OF ARC 900 'Tl,T2=BEGINNING AND ENDING ANGLES IN DEGREES 910 'N=NUMBER OF POINTS TO REPRESENT ARC 920 'X()=ARRAY CONTAINING THE X-COORDINATES OF THE ARC 930 'Y()=ARRAY CONTAINING THE Y-COORDINATES OF THE ARC 990 LET T3=T1/57.3958 ’ 'CHANGE DEGREES TO RADIANS 950 LET P=(T2-T1)/(57.295B«(N-D) 'CALC. INCREME(N-1)T IN RADIA(N-1)S 960 LET C1=C0S(P) 'CALC. COS & SIN OF INCREMENT 970 LET S1~S1N(P) 980 LET X(1)=X+R«C0S(T3) 'INITIALIZE THE ACCUMULATION 990 LET Y(1)=Y+R"SIN(T3) 'VARABLE 1000 FOR 11=2 TO N 'CALC. X.Y COOR. 1010 LET X(M)=X+(X(M-1)-X)«C1-(Y(M-1)-Y)»S1 1020 r LET Y(M)=Y+(X(M-1)-X)**S1+(Y(M-1)-Y)*C1 1030 NEXT M 1090 SUBEND B.24. Алгоритм для генерации кубических сплайнов Алгоритм аппроксимации по известным точкам с помощью кубических сплайнов с различными концевыми граничными условиями приведен в виде подпрограммы на языке БЕЙСИК. Алгоритм позволяет вычислить диапазон параметров на основе расстояний между заданными точками вместо использования нормализованных сплайнов. SPLINE 100 SUBI'SPLINE',:S,N,P(,),C1,C2,N(,),B(,),L(),Z,U(,),C(,) 110 ’SiCONTROL VARIABLE S=2 FOR 2-D CURVE, S=3 FOR 3-D CURVE 120 'N=NUMBER OF DATA POINTS 130 'P(,)=ARRAY CONTAINING DATA POINTS 11)0 'C1-INITIAL END CONDITION 150 '1=RELAXED 160 *2=CLAMPED 170 *3=CYCLIC 180 '9=ANTICYCLIC 190 'C2=FINAL END CONDITION 200 '1=RELAXED 210 '2=CLAMPED 220 'NOTE: IF A CYCLIC OR ANTICYCLIC INITIAL END CONDITION 230 'IS SPECIFIED THE FINAL END CONDITION IS ALSO SPECIFIED 290 'N(,)=NONZERO ELEMENTS OF M-MATRIX, SEE EO. (5-33) 250 'N MUST HAVE DIMENSIONS OF (N,2) OR (N,3) 260 'B(,)=ELEMENTS OF B-MATRIX, SEE EO. (5-33) 270 'B MUST HAVE DIMENSIONS OF (2,N) OR (3,N) 280 'L()=SPAN CHORD LENGTHS 290 'L MUST HAVE DIMENSIONS OF (N-1) 300 'Z=NUMBER OF INTERMEDIATE POINTS PER SPAN ЗЮ 'U(, ^ELEMENTS IN TANGENT VECTOR MATRIX, SEE EO. (5-33) 320 'U MUST HAVE DIMENSIONS OF (2,N) FOR 2-D AND (3,N) FOR 3-D 330 'U(1, )=X-COMPONENT 390 'U(2, )=Y-COMPONENT 350 'U(3, )=Z-COMPONENT IF APPROPRIATE 360 'NOTE: IF CLAMPED END CONDITIONS ARE SPECIFIED 370 'THEN THE VALUES FOR THE TANGENT VECTORS FOR 3B0 'THE FIRST END CONDITION MUST BE IN U(1,1), U(2,l), U(3,1) 390 'AND FOR THE LAST END CONDITION IN U(1,N), U(2,N), U(3,N) 1)00 'C(,)=ARRAY CONTAINING GENERATED POINTS ALONG CURVE 910 'C MUST HAVE DIMENSIONS OF (2,N+(N-1)''Z) OR (3,N<(N-1)'1Z) 920 'C(1, )-X-COiiPONENT 930 'C(2, )=Y-COMPONENT Ш 'C(3, )=Z-COMPONENT IF APPROPRIATE
LET Z.=Z.+1 IF Cl>2 THEN 560 •GENERATE CHORD LENGTHS AND ELEMENTS IN B-,U-, AND M-MATRICES •WHICH DEPEND UPON THE SPECIFIED END CONDITIONS. CALL"ENDPNT":S,N,P(,),N(,),B(,),L(),Z,U(,),C1,C2 •IMPLEMENT GAUSSIAN ELIMINATION TO SOLVE FOR THE •UNKNOWN TANGENT VECTORS. CALL"GAUSS”:S,N,P(,),N(,),B(,),L(),U(,) GO TO 580 •INVERT MATRIX M AND SOLVE FOR UNKNOWN TANGENT VECTOR MATRIX U. •(CYCLIC AND ANTICYCLIC SPLINES ONLY) CALL"MATINV,':S,N,P(,),N(,),B(I),L(),U(.),C1IZ •GENERATE THE POINTS ON THE SPLINE CURVE CALL"CURGEM":S,N,P( ,) ,L() ,Z,U(,) ,C( ,) SUBEND SUB"ENDPNT":S,N,P(,),N(,),B(,),L(),Z,U(,),C1,C2 IF C1=1 THEN 680 LET N(1,2)=1 ' LET N(1,3)=0 FOR K=1 TO S LET B(K,1)=U(K,1) NEXT К CO TO 700 LET N(1,2)=1 LEI N(l,3)=.5 FOR J=1 TO N-1 IF S=3 THEN 760 •CALCULATE THE 2-D SPAN CHORD LENGTHS LET L(J)=SQR((P(1,J+1)-P(1,J))~2+(P(2,J+1)-P(2,J))**2) GO TO 770 •CALCULATE THE 3-D SPAN CHORD LENGTHS LET L(J)=SQR((P(1,J+1)-P(1,J))"2+(P(2,J+1)-P(2,J))“2+(P(3,J+1)-P(3,J))"2) NEXT J IF C1=2 THEN 820 FOR K=1 TO S ’SET B(K,1) FOR RELAXED END LET B(K,1) = (3/(2»L(1)))«(P(K,2)-P(K,1)) NEXT К IF C2=1 THEN 890 LET N(N,1)=0 LET N(N,2)=1 FOR K=1 TO S LET B(K,N)=U(K,N) NEXT К GO TO 940 LET N(N,1)=2 LET N(N,2)=4 FOR K=1 TO S LET B(K,N)=(6/L(N-1))»(P(K,N)-P(K,N-1)) NEXT К 450 460 Ч7О 480 490 500 510 520 530 540 550 560 570 580 590 600 610 620 630 640 650 660 670 680 690 700 710 720 730 740 750 760 770 780 790 800 810 820 830 840 850 860 870 880 890 900 910 920 930 940 SUBEND 950 SUB"GAUSS":S,N,P(,),N(,),B(,),L(>,U(.) 960 970 980 990 1000 1010 1020 1030 1040 1050 1060 1070 1080 1090 1100 1110 1120 1130 1140 1150 1160 1170 1180 1190 1200 ‘ADD ONE TO NO. INTERMEDIATE POINTS •FIRST ROW OF M-MATRIX •FOR CLAMPED INITIAL END CONDITION •SET B(K,1)=U(K,1).FOR CLAMPED END 'FIRST ROW OF M-MATRIX ’FOR RELAXED END CONDITION •LAST ROW OF M-MATRIX •FOR CLAMPED FINAL END CONDITION •SET B(K,N)=U(K,N) FOR CLAMPED END •LAST ROW OF M-MATRIX •FOR RELAXED END CONDITION •SET B(K,N) FOR RELAXED END FOR J=2 TO N-1 LET N(J,1)=L(J) 'CREATE NONZERO VALUES FOR LET N(J,2)=2*(L(J)+L(J-1)) 'INTERNAL ROWS OF M-MATRIX LET N(J,3)=L(J-1) FOR K=1 TO S 'CREATE ROWS 2 THROUGH N-1 OF B-MATRIX LET B(K1J)=3*(L(J-1)"2»(P(K,J+l)-P(K,J))+L(J)"2*(P(K,J)-P(K,J-1))) LET B(K,J)=B(K,J)/(L(J)*L(J-1)) NEXT К NEXT J • THE FOLLOWING IS THE GAUSSIAN ELIMINATION, FOR 1=2 TO N IF N(I,1)=O THEN 1180 LET D=N(I-1,2)/N(I,1) FOR K=1 TO 3 LET N(I,K)=N(I,K)«D-N(I-1,K+1) 'REDUCE LET B(K,I)=B(K,I)»D-B(K,I-1) NEXT К LET Q=N(I,2) FOR K=1 TO 3 LET N(I,K)=N(I,K)/Q LET B(K,I)=B(K,I)/O NEXT К NEXT I FOR K=1 TO S FOR J=0 TO N-1 •NORMALIZE •NORMALIZE •SOLVE FOR UNKNOWN TANGENT VECTORS
1210 LET U(k,N-J)=(B<K,N-J)-N(N-J,3)*U(K,N+1-j))/N(N-J,2) 1220 NEXT J 1230 NEXT К 12*10 SUBEND 1250 SUB"CURCEN":S,N,P(,),L<).Z,U(,),C(,) 1260 LET 1=1 1270 FOR J=1 TO N-1 1280 FOR K=1 TO S 'SOLVE FOR THE FOUR CUBIC SPLINE COEFF. 1290 LET F(1,K)=P(K,J) 1300 LET F(2,K)=U(K,J) 1310 LET F(3,K)=(3/L(J)"2)*(P(KIJ+1)-P(K,J))-(1/L(J))*(U(KeJ+1)+2*U(KfJ)) 1320 LET Р(14,К)=(-2/Е(Л)'3)с(Р(К,2+1)-Р(К,3))+(1/Е(0)"2)»(и(К,Л+1)+и(К,Л)) 1330 NEXT К 13*10 FOR T=0 TO L(J) STEP L(J)/Z 1350 IF J=1 THEN 1380 1360 IF TOO THEN 13B0 1370 CO TO 1*190 1380 FOR K=1 TO S 'CALC. POINTS ALONG CUBIC SPLINE 1390 LET R(K)=F( 1 ,K)+F(2,K)«T+F(3,K)»(T"2)+F(A,K)«(T"3) 1*100 NEXT К 1*410 IF S=3 THEN 1*450 1*120 LET C(1,I)=R(1) 'CREATE C(,) MATRIX OF RESULTS 1*130 LET C(2,I)=R(2) 1*4*10 GO TO 1*480 1*150 LET C(1,I)=R(1) 1*460 LET C(2,I)=R(2) 1*170 LET C(3,I)=R(3) 1*480 LET 1=1+1 1*490 NEXT T 1500 NEXT J 1510 SUBEND 1520 SUB"MATINV":S,N,P(,),N(,),B(,),L(),U(,),C1,Z . 1530 DIM M(70,70),C(70),V(70,70),W(70) 'DIMENSION INTERNAL MATRICES 15*40 MAT M=ZER(N-1,N-l) 'INITIALIZE AND REDIMENSION 1550 MAT C=ZER(N-1) 'EACH INTERNAL MATRIX 1560 MAT W=ZER(N-1) 1570 MAT V=ZER(N-1,N-1) 1580 FDR J=1 TO N-1 .'CALC. SPAN CHORD LENGTHS 1590 IF S=3 THEN 1620 1600 LET L(J)=SOR((P(1,J+1)-P(1,J))"2+(P(2,J<1)-P(2,J))‘2) 1610 GO TO 1630 1620 LET L(J)=SOR((P(1,J+1)-P(1,J))*2+(P(2,J+1)-P(2,J))“2+(P(3,J+1)-P(3,J))A2) 1630 NEXT J 16*40 LET S3=L(N-1)/L(1) 1650 IF Cl=*l THEN 1730 1660 LET M( 1,1 )=2+2»S3 'FIRST ROW OF M-MATRIX 1670 LETM(1,2)=S3 'FOR CYCLIC SPLINE 1680 LET M(1,N-1)=1 1690 FDR K=1 TO S 'SET B(K,1) FOR CYCLIC SPLINE 1700 LET B(K,1) = (3/L(1))»(S3‘(P(K,2)-P(K,1)Ml/S3)»(P(K,N)-P(K,N-1))) 1710 NEXT К 1720 CO TO 1800 1730 LET M(1f1)=2+2«S3 'FIRST ROW OF M-MATRIX 17*40 LET M(1,2)=S3 'FOR ANTICYCLIC SPLINE 1750 LET M(1,N-1)=-1 1760 FDR K=1 TO S 'SET B(K,1) FOR ANTICYCLIC SPLINE 1770 LET B(K,1)=(3/L(1))«(S3*(P(KI2)-P(K,1))-(1/S3)»(P(K,N)-P(K,N-1))) 1780 NEXT К 1790 • 1800 'SET UP INTERIOR MATRIX AND INVERT 1810 FOR J=2 TO N1 'CREATE NONZERO VALUES FDR 1820 LET M(J,J-1)=L<J) 'INTERNAL ROWS OF M-MATRIX 1830 LET M(J,J)=2»(L(J)+L(J-1)) 18*40 FOR K=1 TO S 'CREATE ROWS OF B-MATRIX 1850 LET B(K,J)=3*(L(J-1)"2«(.P(K,J+1)-P(K,J))+L(J)"2»(P(K,J)-P(K,J-1))) i860 LET B(K,J)=B(K,J)/(L(J)‘L(J-1)) 1870 NEXT К 1880 NEXT J 1890 MAT V=INV(M) 'INVERT M-MATRIX 1900 FDR K=1 TO S 1910 FOR J=1 TO N-1 1920 LET C(J)=B(K,J) 'CALC. SINGLE ROW C-MATRIX 1930 NEXT J 19*40 MAT W=V*C 'CALC. TANGENT VECTOR VALUES
1950' FOR J=i TO N-i I960 LET U(K,J)=W(J) 1970 NEXT J 1580 NEXT К 1990 IF C1=4 THEN 2040 2000 FOR K=1 TO S 2010 LET U(K,N)=U(K,1) 2020 NEXT К 2030 GO TO 2070 2040 FOR K=1 TO S 2050 LET U(K,N)=-U(K,1) 2060 NEXT К 2070 SUBEND ’create tangent vector matrix SET FINAL TANGENT=INITIAL TANGENT' •SET FINAL TANGENT=-INITlAL TANGENT B.25. Алгоритм для параболической интерполяции Алгоритм, который реализует метод параболической интерполяции, описанный в параграфе 5.6, приведен ниже в виде подпрограммы на языке БЕЙСИК. PARBLEND 100 SUB"PARBLEND":R(,),N,C(,) •PARABOLIC BLENDING 110 120 130 140 150 160 170 1В0 190 200 210 220 230 240 250 260 270 2B0 290 300 ЗЮ 320 330 340 350 360 370 380 390 400 410 •R(,)=ARRAY CONTAINING THE COORDINATES OF FOUR POINTS •R(1, )=X-COORDINATES •R(2, )=Y-C00RDINATES • R(3, )=Z-COORDINATES • N=NUMBER OF POINTS ON CURVE • C(,)=ARRAY CONTAINING POINTS ON BLENDED CURVE C(1, )=X-COORDINATES • C(2, )=Y-C00RDINATES C(3, )=Z-CCORDINATES • NOTE: C MUST HAVE DIMENSIONS OF (3,N) DIM P(3,64),0(3,64) ’ALLOWS UP TO 64 SEGMENTS MAT S=ZER(3,3) 'INITIALIZE AND DIMENSION MAT T=ZER(3,3) MAT P=ZER(3,N) MAT Q=ZER(3,N) LET TO=SQR((R( 1,3)-R( 1,2) )''2+(R(2,3)-R(2,2))"2+(R(3,3)tR(3,2))"2) 'GALC. TO FOR J=1 TO 3 'SET UP TO GENERATE PARABOLAS FOR 1=1 TO 3 LET S(I,J)=R(I,J) 'THRU FIRST THREE POINTS LET T(I,J)=R(I,J+1) 'THRU LAST THREE POINTS NEXT I NEXT J CALL”GEM'':S(,), 1 ,TO,N ,P(,) CALL"GEN":T(.),2,TO,N,0(,) LET K=0 FOR T=0 TO 1 STEP (1/(N-1)) LET K=K+1 •GENERATE PARABOLA THRU FIRST THREE POINTS •GENERATE PARABOLA THRU LAST THREE POINTS •GENERATE BLENDED CURVE FOR 1=1 TO 3 LET C(I,K)=(1-T)*P(J,K)+T*0(I,K) NEXT I NEXT T 420 SUBEND 430 SUE"GEN":P(,),S1,TO,N,X(,1 440 'P(,)=ARRAY CONTAINING THREE POINTS FOR PARABOLA 450 'P(1, )=X COMPONENT 460 'P(2, )=Y COMPONENT 470 ’P(3, )=Z COMPONENT 4B0 'S1=C0NTR0L VARIABLE 1=FIRST PARABOLA, 2=SEC0ND PARABOLA 490 'N=NUMBER OF POINTS ON PARABOLA 500 'T0=CH0RD LENGTH BETWEEN MIDDLE POINTS 510 'X(,)=ARRAY CONTAINING THE POINTS ON THE PARABOLA 520 'X(1, )=X-C0MP0NENT 530 'X(2, )=Y-C0MP0NENT 540 'X(3, )=Z-C0MP0NENT 550 MAT T=ZER(3) 'INITIALIZE & DIMENSION 560 MAT S=ZER(3) 570 MAT M=ZER(3) 580 FOR 1=1 TO 3 ’SET UP 590 LET T(I)=P(I,2)-P(I,1) P(SUB4)-P(SUB3)
610 LET M(I)=P(I,3)-P(I,2) 620 NEXT I 630 HAT U=S»S 61)0 LET D=SQR(U) 650 MAT V=T«S 660 LET X=V/U 670 LET A=1/(U»X»(1-57X)) 680 IF SI=2 THEM 720 690 MAT W=M«S 700 LET T1=W/(T0*D) 710 GOTO 730 720 LET T1=V/(T0»D) 730 LET K=0 790 FOR T2=0 TO 1 STEP(1/(N-1>) 750 LET K=K+1 760 LET T=T0*T2 770 LET R=T*T1 760 IF Sir2 THEN 800 790 LET R=R+X*D 800 FOR J=1 TO 3 610 LET X(J,K);p(J.1)+(R/p)«£.0)+A‘R*(D-R)«(T(J)-X»S(J)) 820 NEXT J 830 NEXT T2 890 SUBEND •P(SUB5)-P(SUB9) ' (CF EO. 5-59) • CALC. D"2 • CALC. 0 • CALC. THE DOT PRODUCT (CF EO. 5-59) • CALC. X (CF EO. 5-59) CALC. ALPHA (CF EQ. 5-57) CALC. COS(THETA) (CF EO. 5-59) •CALC. COS(THETA) (CF EO. 5-59) •CALC. POINTS ON PARABOLA •CALC. T •TEST FOR FIRST OR SECOND PARABOLA B.26. Алгоритм кривой Безье Алгоритм построения сегментов кривой Безье дан ниже в виде подпрограммы на языке БЕЙСИК. Он основан на соотношениях параграфа 5.7. BEZIER 100 SUB"BEZIER,':N1,,S,X(,),Y(,),Z(,),P,R(,) 'BEZIER CURVE 110 *N1=NUMBER OF VERTICES IN BEZIER POLYGON 120 ’S=CONTROL VARIABLE 2=PLANE CURVE, 3=SPACE CURVE 130 'X( 1)=ARRAY CONTAINING THE X-COMPONENT OF POLYGON VERTICES 190 'Y( ,1)=ARRAY CONTAINING THE'Y-COMPONENT OF POLYGON VERTICES 150 *Z( ,1)=ARRAY CONTAINING THE Z-COMPONENT OF POLYGON VERTICES 160 'P=NUMBER OF POINTS ALONG BEZIER CURVE 170 'R( , )rARRAY CONTAINING THE POINTS ALONG THE BEZIER CURVE 1B0 *R(1, )=X-COMPONENT 190 'R(2, )=Y-COMPONENT 200 ’ *R(3, )=Z-COMPONENT 210 'INITIALIZE AND DIMENSION ALL MATRICES 220 ’ASSUMES A MAXIMUM OF 10- POLYGON VERTICES 230 MAT J=ZER(1,N1) 290 MAT C=ZER(1,1) 250 MAT D=ZER(1,1) 260 MAT E=ZER(1,1) 270 LET N-N1-1 280 'DEFINE FUNCTION TO EVALUATE BINOMIAL EXPANSION (CF EQ. 5-65) 290 DEF FNF(X) 300 IF X=0 THEN 360 310 LET Y=1 320 LET Y=Y»X 330 LET X=X-1 390 IF X=0 THEN 380 350 GOTO 320 360 LET FNP=1 370 GOTO 390 380 LET FNF=Y 390 FNEND 900 LET. K=1 910 FOR T=0 TO 1 STEP 1/(P~691) 'GENERATE BASIS FUNCTION (CF EQ. 5-69) 920 FOR 1=1 TO N 930 LET J(1,I+1)=(FNF(N)/(FNF(I)*FNF(N-I)))»T''I»(1-T)"(N-I) 990 NEXT I .950 MAT C=J«X 'GENERATE POINTS ALONG A 960 MAT D=J»Y '2-D OR 3-D BEZIER CURVE (CF EQ. 5-66)
ШLET R( 1,К)=С(1,1) 460 LET R(2,K)=L(1,1) 490 IF 3=2 THEN 520 500 MAT E=J«Z 510 LET R(3,K)=E(1,1) 520 LET K=K+1 530 NEXT T 540 SUBEND •CREATE POINT RESULTS B.27. В-сплайн алгоритм Алгоритмы, которые формируют требуемый В-сплайн, базисные узловые векторы и В-сплайн кривые, приведены ниже в виде подпрограмм на языке БЕЙСИК. Они основаны на соотношениях параграфа 5.8. Заметим, что в подпрограмме BSPLINE предусмотрено обращение к подпрограмме KNOT. Эта подпрограмма основана на использовании алгоритмов Кокса и Бура для формирования В-сплайн кривых различного порядка. BSPLINE SUBI,BSPLINE,,:A,C,V(;)-,S,P,R(,) •A=NUMBER OF POLYGON VERTICES MINUS ONE •CzORDER OF B-SPLINE BASIS •V(,)=ARRAY CONTAINING DEFINING POLYGON VERTICES 'VCl-J- ) CONTAINS X-COORDINATES •V(2, ) CONTAINS Y-COORDINATES *V(3, ) CONTAINS Z-COORDINATES •S=CONTROL VARIABLE S=2 FOR 2-D CURVE, S=3 FOR 3-D CURVE •P=THE NUMBER OF POINTS GENERATED ALONG THE CURVE 'R(,)=ARRAY CONTAINING THE RESULTING B-SPLINE CURVE •R(1, )'CONTAINS X-COORDINATES 'R(2, ) CONTAINS Y-COORDINATES ',4(3, ) CONTAINS Z-COORDINATES *N(, ^WEIGHTING FUNCTION (CF EQ. 5-78) DIM N(25,25) ,X( 100) MAT N=ZER((A+C),(A+C)) 'REDIMENSION N & FILL WITH ZEROS LET B=A-C+2 CALL"KNOT":V(,),B,C,X(),S FOR W=C-1 TO C+B FOR 1=0 TO B<-(C-1)»2-1 'INCREMENT KNOT VECTOR SUBSCRIPT IF low THEN 350 'CHECK FOR A GEOMETRIC KNOT IF X(I)=X(1+1) THEN 340 LET N(I,1)=1 'CALC. VALUES GO TO 350 'FOR N(I,1); LINES 260-320 LET N(I,1)=0 NEXT I FOR T=X(W) TO XCW+D-.05 STEP .05 'INCREMENT PARAMETER T LET L=L+1 FOR K=2 TO C 'CALC. VALUES OF N(I,K) IN FOR 1=0 TO A 'LINES 340-440 IF N(I,K-1)O0 THEN 430 LET D=0 GO TO 440 LET D=((T-X(I))»N(I,K-1))/(X(I+K-1)-X(I)) 'FIRST TERM, IF N(I+1,K-1) <>0 THEN 4.70 'EQ. (5-7B) LET E=0 GO TO 480 LET E=((X(I+K)-T)*N(I+1,K-l))/(X(I+K)-X(I+1)) 'SECOND TERM, LET N(I,K)=D+E 'EO. (5-78) LET G=V(1,I)*N(I,K)+G 'X-COHPONENT OF P(T) LET H=V(2,I) *N(I,K)+H IF S=2 THEN 530 LET Z=V(3,I)«N(I,K)+Z NEXT I i IF K=C THEN 590 LET G=0 LET H=0 LET Z=0 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 360 370 380 390 400 410 420 430 440 450 460 470 480 490 500 510 520 530 540 550 560 570
580 NEXT К 590 LET R(L,1)=G 600 LET R(L,2)=H 610 IF S=2 THEN 630 620 LET R(L,3)=Z 630- LET G=0 ’RESET INITIAL X,Y,Z VALUES 640 LET H=0 650 LET Z=0 660 NEXT T 670 NEXT W 680 LET L=L+1 690 LET R(L,1)=V(1,A) 700 LET R(L,2)=V(2,A) 710 IF S=2 THEN 730 720 LET R(L,3)=V(3,1) 730 SUBEND 740 SUB"KNOT": V( , ),B,C,X(),S 750 • V(,)=ARRAY CONTAINING DEFINING POLYGON VERTICES 760 • B=MAXIMUM T VALUE=A-C+2 770 ' C=ORDER OF B-SPLINE BASIS 780 • XCKaRRAY CONTAINING KNOT VECTORS GENERATED IN THIS SUBROUTINE 790 ' S=CONTROL VARIABLE S=2 PLANE S=3 SPACE CURVE 800 FOR 1=0 TO B+(C-1)»2 810 IF I>C-1 THEN 840 ’ASSURE MULTIPLICITY OF DEGREE C 820 LET X(I)=O 'ASSIGN MULTIPLE END KNOT VECTORS 830 GO TO 960 840 IF KB+C THEN 880 'CHECK IF END KNOT VECTORS REACHED 850 LET X(I)=X(I-1) 'ASSIGN MULTIPLE OR DUPLICATE KNOTS 860 GO TO 960 870 IF S=3 THEN 910 880 IF V(1,I-C)OV(1,I-C+1) THEN 950 'CHECK FOR REPEATING VERTICES 890 IF V(2,I-C)O,V(2,I-C+1) THEN 950 'CHECK FOR REPEATING VERTICES 900 GO TO 850 910 IF V(1,I-C)OV(1,I-C+1) THEN 950 920 IF V(2,I-C)OV(2,I-C+1) THEN 950 930 IF V(3,I-C)OV(3,I-C+1) THEN 950 940 GO TO 850 950 LET X(I)=X(i-l)+1 'ASSIGN SUCCESSIVE INTERNAL VECTORS 960 NEXT I 970 SUBEND B.28. Алгоритм для участка билинейной поверхности Алгоритм, используемый для построения участка билинейной поверхности, описанной уравнением (6.19), приведен ниже в виде подпрограммы на языке БЕЙСИК. BILINEAR 100 SUB"BILINEAR'':N,M,P(,),Q(,) ’BILINEAR SURFACE 110 120 130 140 150 160 170 180' 190 200 210 220 230 240 250 260 270 280 290 300 •tfcNUMBER OF INCREMENTS OF U ’M=NUMBER OF INCREMENTS OF W •P(,)=CONTAINS THE COORDINATES OF THE CORNER POINTS ’P HAS DIMENSIONS OF 4»3. FIRST COLUMN CONTAINS X-•COMPONENTS, SECOND Y-COMPONENTS, THIRD Z-COMPONENTS •OF THE CORNER POSITION VECTORS. •0(,)1CONTAINS THE COORDINATES OF THE INTERPOLATED SURFACE '0 WILL HAVE DIMENSIONS OF (M+1)(N+1)#3 •THE FIRST H+1 COORDINATE PAIRS CORRESPOND TO U=0=CONSTANT 'THE SECOND M+1 COORDINATE PAIRS CORRESPOND TO U=1/N=C0NSTANT 'THIRD M+1 COORDINATE PAIRS CORRESPOND TO U=2/N=C0NSTANT •NOTE: Q MUST BE DIMENSIONED IN DRIVER PROGRAM MAT O=ZEH((N+1)’(M+1),3) ’REDIMENSION 0 & FILI. WITH ZEROS FOR 1=1 TO N+1 'SET UP U=CONSTANT LOOP LET U=(1-1)/(N) 'CALC. INCREMENT FOR U FOR J=1 TO M+1 'SET UP W LOOP LET K=K+1 'INCREMENT POINT COUNTER LET W=(J-1)/M 'SET W LET 0(K,1)=P(1,1)»(1-U)«(1-W)+P(2,1)«(1-U)«W+P(3,1)»U*(1-W) LET Q(K,1)=C(K,1)+P(4,1)«U"W 'CALC. X-COMPONENT
310 LET 0(K,2)=P( 1,2)»( 1-U)«( 1-W)+P(2,2)»( l-U)«W+P(3,2)»U«(i-W> 320 LET 0(K.2)=0(K.2)+P(4,2)!:U*W 'CALC. Y-COMPONENT 330 LET Q(K,3)=P(1,3),(1-U)»(1-W)+P(2,3)»(1-U)«W^P(3.3)«u»(1-W) 340 LET O(K,3)=Q(K,3)+P(4,3)eU»W 'CALC. Z-COMPONENT 350 NEXT J 360 Next i 370 SUBEND B.29. Алгоритм для линейной поверхности Кунса Алгоритм, используемый для построения линейной поверхности Кунса, описываемый уравнением (6.24), приведен ниже в виде подпрограммы на языке БЕЙСИК- При этом предполагается, что граничная кривая может быть описана равномерно расположенными (по значению параметра) точками. Кривые Р (и, 0) и Р (и, 1) задаются тем же числом точек, что и кривые Р (0, w) и Р (1, w). „OONSLIN 100 SUB"LINEAR COONSLIN":N,M,A(,j,B(,),C(,),D(,),Q(,) 'LINEAR COONS SURFACE 110 ''NsNUMBER OF POINTS ON THE P(U,O) AND P(U,1) BOUNDARY CURVES 120 'M=NUMBER OF POINTS ON THE P(O,W) AND P(1,W) BOUNDARY CURVES 130 *A(,)=ARRAY CONTAINING THE POINTS ON THE P(U,O) CURVE 140 'HAS DIMENSIONS OF N‘3 150 'B(,)=ARRAY CONTAINING THE POINTS ON THE P(U,1) CURVE 160 'HAS DIMENSIONS OF №3 170 'C(,)=ARRAY CONTAINING THE POINTS ON THE P(0,W) CURVE 180 'HAS DIMENSIONS OF M»3 190 'D(,)=ARRAY CONTAINING THE POINTS ON THE P(1,W) CURVE 200 'HAS DIMENSIONS OF M*3 210 'Q(,)=ARRAY CONTAINING THE CURVES WHICH DESCRIBE THE SURFACE 220 'HAS DIMENSIONS OF (N*ML*3. THE FORMAT IS FOR A FIXED 230 'VALUE OF U. THE NEXT M ROWS OF THE 0 MATRIX CONTAIN 240 'THE VALUES FOR VARIABLE W. 250 'NOTE: Q MUST BE DIMENSIONED IN DRIVER PROGRAM 260 MAT 0=гЕН(№М,3) 'REDIMENION 0 & FILL WITH ZEROS 270 FOR K=1 TO M 'CALC. SURFACE 280 LET U=(K-1)/(M-1) 290 FOR J=1 TON 300 LET W=(J-1)/(N-1) 310 LET S=S+1 320 FOR L=1 TO 3 330 LET 0(S,L)=A(K,L),'(1-W)+B(K,L)»W4-C(J,L)»(1-U)+D(J,L)»U 340 LET 0(5,L)=0(S,L)-A(1,L)*(1-U)A(1-W)-B(1,L)ft(I-UJ^W 350 LET 0(S,L)=0(S,L)-A(N,L)»U»(1-W)-B(N,L)‘>U‘>W 360 NEXT L 370 NEXT J 380 NEXT К 390 SUBEND B.30. Алгоритм для участка бикубической поверхности Алгоритм, используемый для построения участка бикубической поверхности, описываемой уравнением (6.37), приведен ниже в виде подпрограммы на языке БЕЙСИК. Матрицы граничных условий и весовых функций предполагаются известными.
BICUBIC SUB"BKUBICI,:U1,W1.X(,),Y(,),2(,),Q(,) 'BI-CUBIC SURFACE ’(JUNO OF INCREMENTS ALONG U-DIRECTION ’W1=N0 OF INCREMENTS ALONG W-DIRECTIOM •X(,)=8 X 8 ARRAY CONTAINING THE X-COMPONENTS OF THE •P BOUNDARY CONDITION MATRIX EQ. (6-36) ’Y(,)=8 X 8 ARRAY CONTAINING THE Y-COMPONENTS OF THE •P BOUNDARY CONDITION MATRIX EQ. (6-36) •Z(,)-8 X 8 ARRAY CONTAINING THE Z-COMPONENTS OF THE •P BOUNDARY CONDITION MATRIX EO. (6-36) • P(,)=8 X 8 BOUNDARY CONDITION MATRIX EO. (6-36) • N(,)=8 X 8 BLENDING FUNCTION MATRIX EQ. (6-31) * U(. >=T X 1| CUBIC BLENDING VECTOR EQ. (6-37) • W(,)=8 X 1 CUBIC BLENDING VECTOR EQ. (6-37) • 0(, )=MATRIX CONTAINING THE POSITION VECTORS FOR THE •BICUBIC SURFACE, HAS DIMENSIONS OF (U1+1)»(U1+1) X 3 •FIRST COLUNM IS X-COMPONENT „ 'SECOND COLUMN IS Y-COMPONENT * 'THIRD COLUMN IS Z-COMPONENT •FIRST W1+1 ELEMENTS FOR U=0 •SECOND W1+1 ELEMENTS FOR U= 1/1)1, ETC. MAT P=ZER(8,8) . L .A • REDIMENSION MATRICES & MAT N=ZER(8,8) .'FILL HITH ZEROS MAT U=ZER(1,8) MAT W=ZER(1,8) MAT Q=ZER((U1+1)*(W1+1) .3) MAT A=ZER(8,1) Mat b=zer(8,i) MAT C=ZER(8,1) mat D=ZER(1,1) LET N( 1,1)=2 ’SET UP N-MATRIX LET N(1,2)=N(2,3)--2. LET N(2,1)=-3 LET N(2,2)=3 LET N(1,3)=N(1,6)=N(3,3)=N('I,1) = 1 LET N(2,8)=-l MAT M=TRN(N) 'CALC. TRANSPOSE OF N-MATRIX MAT P=X ’CALC. X-COMPONENTS OF LET K=K+1 'SURFACE-ELEMENTS FOR 1=0 TO U1 'SET UP U-MATRIX LET U2=I/U1 LET U(1,1)=U2"3 LET U(1,2)=U2*U2 LET U(1,3)=U2 LET U(T,8)=1 FOR J=0 TO W1 ICO no 120 130 1*10 150 160 170 160 190 200 210 220 230 280 250 260 270 280 290 300 310 320 330 3*10 350 360 370 380 390 *100 810 1120 1130 440 <150 860 870 880 890 500 510 520 530 580 550 560 570 580 590 600 610 620 630 680 650 660 670 680 690 700 710 720 730 LET I-L+l LET W2=J/W1 LET W(1,1)=W2'3 LET W(2,1)=W2«W2 LET W(3,1)=W2 LET.W(8,1)=1 MAT A=M«W MAT B=P«A MAT C=N«B MAT D=U*C LET 0(L,K)=D(1,1) NEXT J NEXT I IF K=2 THEN 720 IF K>2 THEN 780 MAT P=Y GO TO 870 MAT P=Z GO TO 870 •SET UP W-MATRIX •CALC. SURFACE ELEMENT •CALC. Y-COMPONENTS OF •SURFACE ELEMENTS •CALC. Z-COMPONENTS OF ’SURFACE ELEMENTS 780 SUBEND
В.31. Алгоритм получения поверхности" Безье Алгоритм получения поверхности Безье, описанной в декартовых координатах на основе уравнения (6.48), приведен ниже в виде подпрограммы на языке БЕЙСИК. Кривые Безье используются в качестве весовых функций. BEZSURF 100 SUB''BE7.SURF":X(,),Y(,),Z(,),N,M,P,S(,) 'BEZIER SURFACE 110 >X(,)=ARRAY CONTAINING THE X-COMPONENTS OF THE POLYGON VERTICES 120 >Y(,)=ARRAY CONTAINING THE Y-COMPONENTS OF THE POLYGON VERTICES 130 'Z(,)=ARRAY CONTAINING THE Z-COMPONENTS OF THE POLYGON VERTICES 140 ’NOTE: X,Y,Z HAVE DIMENSIONS OF N X M 150 ’FORMAT IS THAT SHOWN IN FIGS. 6-12 & 6-13 160 'NsORDER OF THE DEFINING BEZIER POLYGONS FOR U=0 AND U=1 170 'M=ORDER OF THE DEFINING BEZIER POLYGONS FOR W=0 AND W=1 180 ’PsNUNBER OF GRID LINES FDR THE -DEFINING SURFACE 190 'S(,)=POSITION VECTORS FOR SURFACE DEFINING GRID 200 'S(1, )=X-COMPONENTS 210 'S(2, )=Y-COMPONENTS 220 *S(3, )=Z-COMPONENTS 230 'FORMAT IS THAT FOR A FIXED VALUE OF U THE NEXT 240 'M ELEMENTS CONTAIN THE VALUES FOR THE CURVE O(U(SUB I) ,W) 250 'S HAS DIMENSIONS OF 3 X P"2 260 MAT B=ZER(N,M) 'REDIMENSION & ZERO INTERNAL MATRIX 270 DEF FNF(X) ’DEFINE FUNCTION TO CALC. FACTORIAL CF EQ.(5-65) 280 IF X=0 THEN 340 290 LET Y=1 300 LET Y=Y*X 310 LET X=X-1 320 IF X=0 THEN 360 330 GOTO 300 340 LET FNF=1 350 GOTO 370 360 LET FNF=Y 370 FNEND 36o FOR C=1 TO 3 ’FOR EACH COMPONENT CALC. SURFACE 390 LET W1=0 ’GRID POSITION VECTORS 400 ON C GOTO 410,430,450 *110 MAT B=X ’X-COMPONENT *120 GOTO 460 430 MAT B=Y ’Y-COMPONENT 440 GOTO 460 450 MAT B=Z ’Z-COMPONENT 460 FOR U= OTO 1 STEP 1/(P-1) ’FOR FIXED U CALC. VARIOUS W'S 470 FOR W= CTO 1 STEP 1/(P-1) 460 LET W1=W1+1 490 FOR 1=0 TO N 500 LET Jl=(FNF(N)/(FNF(I)*FNF(N-I)))*U''i*(1-U)<'(N-l) 510 FOR J= О TO M 520 LET K1 = (FNF(M)/(FNF(J)*FNF(M-J)))*W''J*(1-W)''(n-J) 530 LET S(C,Wl)=S(C,W1)+B(I+1,J+1)*J1*K1 540 NEXT J 550 NEXT I 560 NEXT W 570 NEXT U 580 NEXT C 590 SUBEND
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ А абсолютная точка, алгоритм изображения 198 абсолютное перемещение, операция 198 абсолютные координаты, режим 198 аксонометрическая проекция 67 алгоритмы 198, 207 алфавитно-цифровая клавиатура 17 алфавитно-цифровой режим 197 аналитическая геометрия, некоторые зависимости 103 — поверхность 165 — пространственная кривая 124 аналоговый планшет 19 аналого-цифровой преобразователь 18 APT 9 ассоциативный закон 205 аффинное преобразование 66 ациклический сплайн 135 Б база данных 12 базис Бернштейна 148 базисная функция 148, 153 барабанный графопостроитель 24 безусловное проведение линии, операция 198 БЕЙСИК 7 BEZSURF 233 BICUBIC 232 бикубическая линейчатая поверхность 181 BILINEAR 220 билинейная поверхность 171 ----Кунса 189 билинейное преобразование 54 BSPLINE 229 .S-сплайн 153 — кривые 153 — поверхность 187 бит 13, 196 буферная память 21, 189 быстродействующее печатающее устройство 26 В ввод, графический ^197 вектор 29 — положения 34, 50 векторная функция 171 весовая функция 153, 175 внешние граничные условия 193 внутренний участок поверхности 193 восстановление 86 вращение 43, 50 — вокруг произвольной оси 56, 61, 65, 68 — вокруг оси х 210 — вокруг оси у 210 — вокруг оси 2 211 выделение кадра 15 вычитание матриц 204 Г генератор векторов 29 — кривой 12 — символов 17 геометрия, перспективная 66 гипербола 104 — параметрическая 116 гиперболическая функция 117 HYPERB1 222 HYPERB2 222 граничная кривая 165 граничные условия 100, 126, 131 — точки 35 графический ввод 197 — режим 198 графопостроитель 24 Д двухточечная перспектива 76 двухкоординатный потенциометр 17 диагональные элементы 203 DIMETRIC 214 2DREFLECT 208 2D ROT 209 2DSCALE 208 2DTRANS 207 диметрическая проекция 70 директриса 103 дискриминант 104
дисплей на электронно-лучевой трубке 20 дифференциалы 168 длина слова 13 долгота 164 дуга окружности 107 Е евклидова геометрия 66 единичная нормаль к поверхности 167 единичный вектор 164 — квадрат 11 ELLIPSE1 221 3 закрепленное концевое условие 133 замкнутая кривая 134 И изменение масштаба 207 изображение 11, 17 ISOMET 215 изометрическая проекция 70 инициализация 200 интеграл эллиптический 112 интерактивная графика 10 интерполируемая поверхность 173 интерполяция 141 — дугой окружности 120 — линейная 173 искажение 40 К кадрирование 15, 92 каноническое пространство 201 касательный вектор 101, 165 квадратная матрица 132, 179 коды 17 комбинированные операции 40 конические сечения 103 -------- непараметрические 103 --------параметрические ПО конкатенция 15 конструируемая поверхность 171 концевые условия 99, 133 COONSLIN 231 координатный режим 196 координаты абсолютные 197 — графического устройства 16 — однородные 13, 43 — относительные 197 — пользователя 16 — преобразованные 74 кратные вершины 155 кривая Безье 147 — второй степени 99, 103 — граничная 184 — замкнутая 134 — кубическая 100 криволинейные поверхности 170 кубическая кривая 100 --------Безье 149 кубический сплайн 127 курсор 12, 20, 196 кусочно-непрерывная поверхность 170 Л линейная интерполяция 120, 173 линейные преобразования 53 линейчатая поверхность 193 ------- бикубическая 179 луч 12 М математическое описание кривой 97 математический сплайн 125 матрица 203 — граничных условий 179 — преобразования 53 матричная алгебра, некоторые правила 203 машинная графика 9 машинное слово 13 мерцание 10 метод наименьших квадратов 98 — подгонки 147 мини-ЭВМ 10, 13 многоугольная поверхность 187 многоугольник 147 — Безье 149 — характеристический 152 модуль вектора 130, 166 модуляция по интенсивности 30 MULTIOBJECT 187 Н наклон кривой 97, 101, 107 направляющий косинус 62 некоммутативность трехмерного вращения 57 непараметрическая окружность 104 — кривая 98 непараметрические конические сечения 103 непрерывность 129 — второго порядка 125 нетрехдиагональная матрица 135 неявная пространственная кривая 122 нормализация 46, 90 нормализованные параметры 130 нормаль к поверхности 166 ------- единичная 167 NPCIRCLE 219 нулевая матрица 203 О обобщенная поверхность Кунса 188 — скалярная функция 182 обратная матрица 49, 206 обращение матрицы 49, 206, 129 однородные координаты 13, 43 окружность непараметрическая 104 — параметрическая 101
определитель 205 ортографическая проекция 68, 72 относительные координаты 198 отображение изображения 59 отсечение, операция 15 П панель потенциометров 19 парабола 103 PARABOLA 221 PARBLEND 227 параболическая интерполяция 141, 145 параллелограмм, преобразование 37 параллельные линии 36 параметр 100, 123 параметрическая гипербола 116 — кривая 100 -----третьей степени 123 — окружность 111 — парабола 114 — поверхность 165 — пространственная кривая 122 параметрический кубический сплайн 126 — эллипс 114 параметрические конические сечения ПО — линии 111, 114, 116 пассивная графика 26 перенос пространственный 60 пересекающиеся линии 37 перо 17 перспектива угловая 76 перспективная проекция 67 перспективное преобразование 66, 73 печатающая головка 23, 196 планшет аналоговый 19 планшетные графопостроители 23 плоская кривая 99 — поверхность 168 площадь параллелограмма 42 поверхность аналитическая 165 — Безье 182 — бикубическая линейчатая 179 — билинейная 171 — В-сплайн 187 — второго порядка 122 — криволинейная 70 — Кунса 174 ----- билинейная 189 ----- линейная 174 -----обобщенная 184, 188 — линейчатая 173 — плоская 168 поле индикации 16 полином 148 — Бернштейна 148 порядок 148 потенциометр 17 поток данных 196 представление поверхности 165 преобразование аффинное 66 преобразование билинейное 54 — линейное 14 — линий 34 — координат 16 — точек 32 программные средства 195 проектирование с помощью вычислительных машин 163 проекция аксонометрическая 67 — диметрическая 70 — изометрическая 70 — Кабине 72 — Кавалье 72 — ортографическая 68, 72 — перспективная 67 — стереографическая 91 произведение декартрво 186 — матриц 184 — тензорное 192 пространственная кривая 122 ---- неявная 122 ------- параметрическая 123 ------- явная 123 PROJ 214 прямая линия 34 Р разрешающая способность 14 растровое сканирование 22 реальный масштаб времени 11 регенерация изображения 10 режим генерации штриховой линии 196 — графический 196 — местного слежения 196 — стирания 197 С световое перо 17 сглаживание 140 сдвиг 34 символ 12 CIRCLE 220 сложение матриц 204 смешанное векторное произведение 166 смешанные производные 166 смещение 43, 157 SPLINE 224 сплайн 125 —, сегмент 126 — циклический 134 STEREO 94, 218 стереопара 94 стереографическая проекция 91 сфера 163 сферическая поверхность 163
твердая копия 22 текст символьный 12, 17 телетайп 10, 26 точка в бесконечности 50 — перегиба 100, 144 — схода 75 трехдиагональная матрица 131 3PCIRARC 223 трехмерное пространство 44, 67 трехточечная перспектива 79, 84 3DGENROT 213 3DRECON1 216 3DREFLT 212 3DSCALE 209 3DTRANS 95, 212 3DXROT 210 3DY ROT 95, 211 3DZROT 211 угловая перспектива 76 узловой вектор 154 умножение матрицы 204 UN I APT 9 участок поверхности 164, 169 ----- бикубической 176 — — билинейной 173
Ф файл дисплейный 14 фокус 114 функция векторной величины 176 функция весовая 154 — гиперболическая 117 — интерполяционная 148 — обобщенная скалярная 188 f-участок 182 Ц центр проекции 66 цифровое управление 163 Ч частная производная 169 частота регенерации 21 Ш широта 163 Э эксцентриситет 105 электростатический графопостроитель 24, 25 электронно-лучевая трубка (ЭЛТ) 20 эллипс 104 — параметрический 112 эллиптический интеграл 112, 121 ЭЛТ с регенерацией изображения 20 эскиз 145
MATHEMATICAL ELEMENTS FOR COMPUTER GRAPHICS DAVID F. ROGERS Aerospace Engineering Department United States Naval Academy J. ALAN ADAMS Mechanical Engineering Department United States Naval Academy McGraw-Hill Book Company New York St. Louis San Francisco Auckland Dusseldorf Johannesburg Kuala Lumpur London Mexico Montreal New Delhi Panama Paris SSo Paulo Singapore Sydney Tokyo Toronto
МАТЕМАТИЧЕСКИЕ ОСНОВЫ МАШИННОЙ ГРАФИКИ . Д Роджерс,Дж. Адамс Перевод с английского Ю.П.Кулябичева, В.Е Иваненко Под редакцией Д-ра техн.наук Ю.И.Топчеева МОСКВА* МАШИНОСГРОЕНИЕ*19ВО