Здесь можно найти учебные материалы, которые помогут вам в написании курсовых работ, дипломов, контрольных работ и рефератов. Так же вы мажете самостоятельно повысить уникальность своей работы для прохождения проверки на плагиат всего за несколько минут.

ЛИЧНЫЙ КАБИНЕТ 

 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

Повышение уникальности

Предлагаем нашим посетителям воспользоваться бесплатным программным обеспечением «StudentHelp», которое позволит вам всего за несколько минут, выполнить повышение уникальности любого файла в формате MS Word. После такого повышения уникальности, ваша работа легко пройдете проверку в системах антиплагиат вуз, antiplagiat.ru, etxt.ru или advego.ru. Программа «StudentHelp» работает по уникальной технологии и при повышении уникальности не вставляет в текст скрытых символов, и даже если препод скопирует текст в блокнот – не увидит ни каких отличий от текста в Word файле.

Результат поиска


Наименование:


курсовая работа Билинейные поверхности

Информация:

Тип работы: курсовая работа. Добавлен: 28.05.13. Сдан: 2013. Страниц: 19. Уникальность по antiplagiat.ru: < 30%

Описание (план):


Федеральное агентство  по образованию

ГОУ ВПО Ульяновский  государственный педагогический университет  имени И.Н. Ульянова

Кафедра алгебры  и геометрии

 

 

 

 

БИЛИНЕЙНЫЕ  ПОВЕРХНОСТИ

Курсовая работа

 

 

студентки 3 курса  очного отделения

физико-математического  факультета

Егоровой Н.П.

Руководитель  к. ф.-м н., доцент

О.И. Череватенко.

 

 

 

 

Ульяновск 2010.

Оглавление

Введение…………………………………………………………………….….….…3

1. Определение билинейной поверхности……………………………….……......4

2. Построение  билинейной поверхности………………………………….…….…6

   2. 1. Билинейная  интерполяция. Единичный квадрат…………………..……....6

   2. 2. Билинейная  поверхность в объектном пространстве…………….….…….8

3. Поверхность  Кунса……………………………………………………………....11

4. Машинное моделирование  поверхности……………………………………....14

   4. 1. Историческая справка…………………………………………………........14

   4. 2. Построение билинейной поверхности на компьютере…………………...16

          4. 2. 1. Алгоритмы построения участка билинейной поверхности и

                      поверхности Кунса…………………………………………………..23

Заключение………………………………………………………………………….25

Список использованной литературы………………………………………...……26

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Введение

Область прикладной математики, называемая геометрическим моделированием (компьютерная геометрия, Computer Aided Geometrie Design, CAGD), активно развивается с середины 20-го века, В этой области изучаются способы построения кривых, поверхностей и тел, а также компьютерная реализация различных операций, производимых с ними. Геометрическому моделированию посвящены несколько книг и монографий. Поверхность в геометрическом моделировании определяется вектор-функцией от двух параметров, заданных на прямоугольной или треугольной области. 

В ряде приложений (например, в моделировании и проектировании корпусов и крыльев самолетов  и кораблей) требуется строить гладкие поверхности, затягивающие заданные остовы из кривых - криволинейные сетки, криволинейные направляющие (например, несущий остов корпуса корабля), различные граничные контуры. Во многих случаях важное значение имеет также и вычислительная сторона вопроса - сложность вычисления радиус-вектора поверхности и ее дифференциально-геометрических характеристик не должна быть слишком высокой.

В инженерной практике,  до сих пор применяется способ задания поверхности, называемый плазовым. Плазовые поверхности получают методом линейной интерполяции граничных кривых. Важным частным случаем плазовой поверхности является билинейная поверхность.

 

 

 

 

 

 

 

 

 

 

 

 

 

1. Определение  билинейной поверхности.

Билинейная  поверхность является одной из самых простых поверхностей. Это двулинейчатая гладкая, не замкнутая поверхность, которая конструируется по 4 угловым точкам единичного квадрата. Подробнее об этой поверхности.

Линейчатая  поверхность представляет собой геометрическое место отрезков прямых, соединяющих соответствующие точки заданных двух линий. Ее можно получить путем движения прямой линии по двум направляющим кривым линиям, при этом каждой точке одной кривой должна соответствовать вполне определенная точка другой кривой. Пусть заданы две направляющие кривые а(t) и d(w), где параметры кривых t и w изменяются в пределах tmin < t < tmax и wmin < w < wmax. Радиус-вектор линейчатой поверхности определяется формулой

r(u, v) = (1 - v)a(t) + vd(w),

t = tmin(1 - u) + tmaxu, w = wmin(l - u) + wmaxu,

0 ? u ? 1, 0 ? v ? 1.

Для направляющих кривых неявно производится репараметризация — приведение области изменения  параметров к отрезку от 0 до 1. Можно  было бы репараметризовать только одну кривую — привести область изменения  одной из них к другой. Если параметризация кривых а(u) и d(u) совпадает, то радиус-вектор линейчатой поверхности может быть описан функцией

r(u, v) = (1 - v)a(u) + vd{u), umin ? u ? umax, 0 ? v ? 1.

На рис. 1. приведен пример линейчатой поверхности. Если обе направляющие замкнуты, то линейчатая поверхность замкнута по параметру u. По другому параметру линейчатая поверхность всегда не замкнута.

Рис. 1. Линейчатая поверхность.

Если направляющими  линиями являются отрезки прямых линий, то поверхность является линейчатой по обоим параметрам и для ее построения достаточно знать радиус-векторы концевых точек отрезков. Пусть один направляющий отрезок проведен из точки p1 в точку p2, а другой направляющий отрезок проведен из точки р3 в точку р4. Тогда линейчатая по двум параметрам поверхность определится векторной функцией

r(u, v) = (1 - v)(p1(1 - u) + p2u) + v(p3(1-u) + p4u) =

= (1 - u)(1 - v)p1 + u(1 - v)p2 + (1-u)vp3 + uvp4,

0 ?u ? 1, 0 ? v ? 1.

Такая поверхность  называется билинейной.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. Построение билинейной поверхности.

2.1. Билинейная интерполяция. Единичный квадрат.

В параметрическом  пространстве билинейная поверхность, можно сказать,  представляет собой  билинейный интерполяционный четырехугольник - единичный квадрат.

Интерполяция, интерполирование  - способ нахождения промежуточных значений величины по имеющемуся дискретному набору известных значений.

Линейная интерполяция - интерполяция алгебраическим двучленом P1(x) = ax + b функции f, заданной в двух точках x0 и x1 отрезка [a, b].

Билинейная  интерполяция - расширение линейной интерполяции для функций двух переменных. Ключевая идея заключается в том, чтобы провести обычную линейную интерполяцию сначала в одном направлении, затем в другом.

Билинейная  поверхность конструируется из четырех  угловых точек единичного квадрата в параметрическом пространстве. Любая точка на поверхности определяется линейной интерполяцией между противоположными границами единичного квадрата, как это показано на рис.2.Способ задания поверхности методом линейной интерполяции граничных кривых называется плазовым.

Рис. 2. Билинейная интерполяция в параметрическом пространстве. Четыре точки Q11, Q12, Q21, Q22 представляют собой известные значения функции. Значение в точке P должно быть интерполировано.

Допустим, что  необходимо интерполировать значение функции f в точке P = (x, y). Для этого необходимо знать значения функций в (окружающих P) точках Q11 = (x1, y1), Q12 = (x1, y2), Q21 = (x2, y1), и Q22 = (x2, y2).

Первым шагом  интерполируется (линейно) значение вспомогательных  точек  и вдоль оси абсцисс, где

Теперь проводится линейная интерполяция между вспомогательными точками и .

Это и есть приблизительное  значение функции в точке P, то есть f(x, y).

В особом случае, когда известные точки находятся  на вершинах единичного квадрата, то есть имеют координаты (0, 0), (0, 1), (1, 0), и (1, 1), формула билинейной интерполяции упрощается до

или же с помощью умножения векторов с матрицей:

 

сам интерполянт нелинеен:

так как является произведением двух линейных функций. Альтернативное написание:

где

 

.

Результат билинейной интерполяции не зависит от порядка  шагов. Возможно сначала интерполировать между известными точками вдоль оси ординат и затем, получив два вспомогательных значения, интерполировать между ними вдоль оси абсцисс. Результат будет тот же.

 

2. 2. Билинейная  поверхность в объектном пространстве.

Если координатные векторы четырех точек, определяющих билинейную поверхность, заданы в трехмерном объектном пространстве, то будет трехмерна и билинейная поверхность, получаемая в результате отображения параметрического пространства в объектное.

Если все  четыре точки лежат в одной плоскости, то поверхность представляет собой часть плоскости, см. рис. 3. В некоторых случаях удобно описывать плоскость по четырем точкам, лежащим в углах квадрата, в виде зависимости

r(u, v) = (1 - v)(p1(1 - u) + p2u) + v(p3(1-u) + p4u) =

= (1 - u)(1 - v)p1 + u(1 - v)p2 + (1-u)vp3 + uvp4,

0 ? u ? 1, 0 ? v ? 1.

 

Описанная таким  образом плоскость отличается тем, что ее параметрические размеры  не зависят от размеров самой плоскости. При выполнении пересечений и  других операций над поверхностями  желательно, чтобы у поверхностей области определения параметров не зависели от размеров поверхностей. Если точки p1 и р3 или р2 и р4 совпадают, то получится треугольная поверхность, которая всегда плоская.

Рис. 3. Плоская билинейная поверхность.

 

Если четыре определяющие точки не лежат в одной плоскости, то и билинейная поверхность также не лежит ни в какой плоскости. Действительно, в общем случае она очень изогнута, пример этого показан на рис. 4. Определяющие точки являются концами противоположных диагоналей на противоположных гранях единичного куба. В результате получаем гиперболический параболоид. В качестве иллюстрации рассмотрим следующий пример.

Рис. 4. Билинейная поверхность. (а) Определяющие угловые точки; (b) поверхность.

Найти точку  на билинейной поверхности, заданной точками  , , , , т.е. концами противоположных диагоналей, лежащих на противоположных гранях единичного куба в объектном пространстве. Искомая точка имеет координаты  в параметрическом пространстве.

Поверхность в объектном пространстве является векторной функцией:

тогда из уравнения

имеем

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. Поверхность Кунса.

На основе векторной  функции билинейной поверхности  и векторной функции линейчатой поверхности можно получить вектор-функцию поверхности Кунса. Возьмем векторную функцию линейчатой поверхности

r(u, v) = (1 - v)a(t) + vd(w),

t = tmin(1 - u) + tmaxu, w = wmin(l - u) + wmaxu,

0 ? u ? 1, 0 ? v ? 1,

прибавим к ней и вычтем из нее векторную функцию билинейной поверхности

r(u, v) = (1 - v)(p1(1 - u) + p2u) + v(p3(1-u) + p4u) =

= (1 - u)(1 - v)p1 + u(1 - v)p2 + (1-u)vp3 + uvp4,

0 ? u ? 1, 0 ? v ? 1,

где p1 и р2 — концевые точки направляющей кривой а(t), а р3 и p4 — концевые точки направляющей кривой d(w). В результате этих действий векторная функция не изменится, но будет иметь вид

r(u, v) = (1 - v)a(u) + vd(u) + (1 - u)(p1(l - v) + p3v + u(p2(1-v) +

+ p4v – (1 - u)(1 - v)p1- u(1 - v)p2 –(1 - u)vp3 – uvp4 = (1 - v)a(u) + vd(u) +

+ (1 - u)b(v) + uc(v) – (1 - u)(1 - v)p1 – u(1 - v)p2 – (1 - u)vp3 – uvp4,

0 ? u ? 1, 0 ? v ?1.

В обозначениях функций а(u) и d(u) использовали их реальный аргумент u, а также ввели обозначения для отрезков прямых b(v) = p1(l — v) +p3v,

c(v) = р2(1 - v) + p4v, соединяющих концы кривых а(u) и d(u). Если допустить, что в качестве b(v) и c(v) могут использоваться произвольные кривые, начинающиеся и оканчивающиеся в тех же точках, то получим вариант поверхности Кунса. Поверхность Кунса строится по четырем равноправным кривым.

Рис. 5. Поверхность Кунса.

Рассмотрим  четыре кривые a(ta), d(td), b(tb), c(tc), попарно пересекающиеся в точках p1, р3, p2, p4, как показано на рис. 5.Построим поверхность внутри «четырехугольника», образованного кривыми. Пусть точкам p1 и р2 на кривой а(tа) соответствуют параметры ta min и ta max, точкам p1 и р3 на кривой b(tb) соответствуют параметры tb min и tb max, точкам p3 и р4 на кривой d(td) соответствуют параметры td min и td max, точкам р2 и р4 на кривой c(tc) соответствуют параметры tc min и tc max. Поверхность, построенную по данным четырем кривым, можно описать радиус-вектором

Легко проверить, что вектор r(u, 0) описывает участок кривой а(tа), вектор r(u, 1) описывает участок кривой d(td), вектор r(0, v) описывает участок кри- вой b(tb), вектор г(1, v) описывает участок кривой c(tc). Совсем не обязательно, чтобы tk min было меньше tk max, k = a, b, с, d. Для того чтобы предыдущая формула легче воспринималась, переобозначим кривые и точки, входящие в структуру данных описываемой ею поверхности: кривую а(tа) обозначим через r(u, 0), кривую d(td) обозначим через r(u, 1), кривую b(tb) обозначим через r(0, v), кривую c(tc) обозначим через г(1, v), точку p1обозначим через г(0, 0), точку р2 обозначим через г(1, 0), точку р3 обозначим через г(0, 1), точку р4 обозначим через г(1, 1), и будем считать, что для кривых выполнен переход к параметрам u и v соответствии с предыдущей формулой. Для коэффициентов, с которыми граничные кривые входят эту формулу, введем обозначение

 

В результате векторная функция

r(u, v) = (1 - v)a(u) + vd(u) + (1 - u)(p1(l - v) + p3v + u(p2(1-v) +

+ p4v – (1 - u)(1 - v)p1- u(1 - v)p2 –(1 - u)vp3 – uvp4 = (1 - v)a(u) + vd(u) +

+ (1 - u)b(v) + uc(v) –  (1 - u)(1 - v)p1 – u(1 - v)p2 – (1 - u)vp3 – uvp4,

0 ? u ? 1, 0 ? v ? 1.

примет вид

Поверхность построена  на четырех граничных кривых, коэффициенты при которых являются линейными  функциями параметров u и v. Такое линейное объединение четырех кривых называется линейной поверхностью Кунса. Функции ai(u) и aj(v) называются функциями смещения. Если граничные линии являются, отрезками прямых линий, то формула выше даст билинейную поверхность.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4. Машинное моделирование поверхности.

4. 1. Историческая  справка.

Хорошо известно, что научные исследования в области трехмерного геометрического моделирования начались вовсе не в рамках CAD(проектирования с помощью компьютера), а со стороны CAM (производства с помощью компьютера). Изобретение в начале 1950-х гг. станка с ЧПУ (числовым программным управлением) в MIT (Массачусетском технологическом институте, США) породило потребность в цифровой модели детали, необходимой для создания управляющей программы для станка. Изучением принципов моделирования трехмерных объектов занялись различные исследовательские группы, а основными заказчиками этих исследований стали крупнейшие предприятия аэрокосмической и автомобильной отраслей промышленности.

Фото1.  Citroёn DS

Можно посмотреть на фотографию модели Citroёn DS (годы выпуска 1955-1975), ставшей автомобильной иконой на все времена. Точное изготовление таких сложных «скульптурных» поверхностей требует использования продвинутого математического аппарата, и совершенно не случайно одно из первых исследований в этой области было проведено французским математиком Полем де Кастельжо (Paul de Casteljau), работавшим на Citroёn. Он предложил способ построения гладкой поверхности по набору контрольных точек, задающих ее геометрические свойства.

Результаты  его работы были опубликованы только в 1974 г., но само исследование было проведено  еще в 1959 г., что дает основания  именно его считать автором кривых и поверхностей, получивших имя совсем другого француза – Пьера Безье (Pierre Bezier).

Как можно конструктивно (не в виде абстрактного алгебраического  уравнения, а путем геометрических построений) задать гладкую поверхность, обладающую требуемой эстетической формой? Простейшим способом задания  является указание четырех точек в трехмерном пространстве, которые формируют так называемый билинейный лоскут (bilinear patch). (Рис. 1.)

Рис. 1. Билинейный лоскут.

Билинейный  лоскут является разновидностью линейчатой поверхности (ruled surface), которая целиком  состоит из отрезков, соединяющих две кривые. (Рис. 2.)

Рис. 2. Линейчатая поверхность.

 

Стивен Кунс (Steven Coons), профессор MIT, обобщил такой  способ задания на поверхности с  двойной кривизной, получившие его  имя (Coons patch)(Рис. 3.)

Рис. 3. Лоскут Кунса.

Опубликованный им в 1967 г. препринт “Surfaces for Computer-Aided Design in Space Form” [Coons 1967] получил широкую известность как «Малая красная книга». Предложенный им аппарат граничных кривых и функций сопряжения дал основу для всех дальнейших исследований в этой области. Именно Кунс первым из исследователей предложил использовать рациональные полиномы для моделирования конических сечений.

 

4. 2. Построение билинейной поверхности на компьютере.

Порядок построения билинейной поверхности, используя вспомогательные элементы управления, предназначенные для выполнения практических работ при изучении математических основ машинной графики.

Функция, которая  вычисляет произвольную точку поверхности, определяется по формулам линейной интерполяции: 
 
(1) Q(U,V) = P(0,0)(1-U)(1-V) + P(0,1)(1-U)V + P(1,0)U(1-V) + P(1,1)UV 
 
Для для углов единичного квадрата получаемые значения совпадают с исходными точками 
 
Q(0,0) = P(0,0) 
Q(0,1) = P(0,1) 
Q(1,0) = P(1,0) 
Q(1,1) = P(1,1), 
а точка в центре квадрата (U=0.5,V=0.5) вычисляется равновзвешиванием угловых точек 
 
(2) Q(0.5,0.5) = [P(0,0) + P(0,1) + P(1,0) + P(1,1)] / 4. 
 
Точки поверхности с фиксированным параметром U или V лежат на одной прямой, поэтому участок билинейной поверхности можно построить отрезками прямых (рис. 1). 
 
 
Рис. 1. Билинейный лоскут. 

Для выполнения работы требуется,  к примеру, интерфейс GREEN,  шаблон задания GRA206.( вспомогательные элементы управления, предназначенные для выполнения практических работ при изучении математических основ машинной графики). 

 
Работа выполняется в два этапа. На первом этапе строится участок  поверхности, заданной в виде функции  двух переменных Z = F(X,Y), вычислением Z в  узлах сетки, заданной на плоскости XY, и соединении полученных точек поверхности отрезками прямых. Для функции 
 
(3) Z = cos(x2 + y2) / (x2 + y2 + 1) 
 
на участке (-2,-2)..(2,2) и числе ячеек вдоль осей X и Y, равном 12, поверхность имеет вид, приведенный на рис. 1. 
 

 

Рис. 2. 
 
В шаблоне функция поверхности - Surf(X,Y). Построение поверхности заключается в вычислении всех точек сетки и добавлении векторов положения этих точек в матрицу M1. Далее производится вычисление ребер, видовое преобразование матрицы M1 в матрицу M2, и вывод ребер на устройство вывода GRAD. 
 
На втором этапе каждая из ячеек полученной сетки интерполируется с получением дополнительных внутренних точек (и линий). 
 
Все действия выполняются в процедуре Draw. В начале этой процедуры считываются параметры поверхности (координаты двух угловых точек X1, X2, Y1, Y2, задающих область построения поверхности, число ячеек поверхности N, число ячеек интерполяции M, углы точки наблюдения (ZAngle, XYAngle) и масштаб изображения Zoom) и выясняется, строится поверхность с интерполированием ячеек или без него, в зависимости от значения флажка "Интерполяция". Значение этого флажка считывается в логическую переменную S.

Построение  сетки поверхности

Выполняется при  значении флага S, равном False. Прежде всего  определяется число точек сетки  и значение присваивается переменной L: 
 
L = N + 1 
Далее строится матрица M1 размером L * L при помощи метода Rebuild: 
 
M1.Rebuild L * L 
 
Далее нужно понять, как соотносятся точки в линейной матрице с точками квадратной сетки. Предположим, что точке сетки сопоставлены два номера I и J. Номер I задает положение точки сетки вдоль оси Y, а номер J - вдоль оси X. Значения номеров I и J лежат в диапазоне от 0 до N. Если принять нумерацию точек сетки в матрице в соответствии с рисунком: 
 

Рис. 3. 
 
то номер K узла сетки в матрице можно вычислить по формуле 
 
(4) K = 1 + J + I * L, 
 
а значения X и Y узла сетки определяются по формулам линейной интерполяции: 
 
(5) Y = Y1 * (1 - Ty) + Y2 * Ty 
(8) X = X1 * (1 - Tx) + X2 * Tx; 
 
Здесь Tx и Ty - параметры интерполяции по осям X и Y: 
 
(6) Tx = J / N 
(7) Ty = I / N 
 
В целом алгоритм вычисления точек представляет собой двухкратный цикл:

 

Изменяя I от 0 до N

Вычислить Y

Изменяя J от 0 до N

Вычислить X

Вычислить K

Записать X, Y, Z точки K в матрицу M1

Следующее J

Следующее I

 
Для записи точки в ячейку следует использовать метод SetValues вектора: 
 
M1(K).SetValues X, Y, Surf(X, Y)

Вычисление  ребер

Эта работа с  полным правом может называться работой  о вычислении индексов. Обратимся  к рис. 4. На нем показана сетка  из 16 ячеек, параметр L = 5, по горизонтали обозначены значения J, по вертикали I: 
 

Рис. 4. 
 
Предположим, что I = 1 и J изменяется от 0 до L - 1 = 4. Можно вычислить точки 6-7-8-9-10: 
 
(9) K = 1 + J + I * L, 
 
и добавить L вертикальных ребер (1-6), (2-7), (3-8), (4-9), (5-10), то есть ребро задается номерами вершин (K-L, K). 
 
С другой стороны, можно вычислить точки 2-7-12-17-22 по формуле 
 
(10) K = 1 + I + J * L, 
 
и добавить L горизонтальных ребер (1-2), (6-7), (11-12), (16-17), (21-22), то есть задать ребра номерами вершин (K-1, K). 
 
Изменяя теперь I от 1 до L - 1, мы получим все ребра поверхности. В целом алгоритм вычисления ребер представляет собой двухкратный цикл:

 

Положить N = L - 1

Изменяя I от 1 до N

Изменяя J от 0 до N

Вычислить K по формуле (9)

Добавить ребро (K - L, K)

Вычислить K по формуле (10)

Добавить ребро (K - 1, K)

Следующее J

Следующее I

 
Для лобавления ребра следует использовать методы Add и SetDirect, например: 
 
E.Add.SetDirect K - L, K 

Интерполяция  в ячейке сетки

Заключительная  часть работы состоит в определении  функции Bilinear, которая вычисляет точку поверхности по формуле (1) 
 
Q(U,V) = P(0,0)(1-U)(1-V) + P(0,1)(1-U)V + P(1,0)U(1-V) + P(1,1)UV, 
 
и использовании этой функции для интерполяции внутри ячейки сетки. 
 
Функция Bilinear имеет три аргумента: параметры точки U и V и матрицу из четырех угловых точек ячейки сетки. Для вычисления вектора положения точки разложим формулу (1) на 4 слагаемых и для каждого из них вычислим вектор. Далее просуммируем эти векторы и получим требуетмый результат. 
 
Объявим в функции Bilinear 4 переменных типа GREENVector и вычислим их, например, так: 
 
Set D1 = M(1).Copy.MulBy(1 - U).MulBy(1 - V) 
 
Результат возвращается как значение функции: 
 
Set Bilinear = D1.Summ(D2.Summ(D3.Summ(D4))) 
 
При интерполяции число точек поверхности больше за счет дополнительных внутренних точек ячейки. Вычисления точек производятся при значение флага S, равном True. 
 
На каждой итерации определяется ячейка поверхности, которая интерполируется по формуле (1) M интервалами по U и V координатным осям.  
 
Координаты углов ячейки вычисляются в переменные XA, YA, XB, YB и заносятся в дополнительную матрицу MP с вычислением координаты Z при помощи функции поверхности Surf. Координаты вычисляются по формулам: 
 
(12) YA = Y1 * (1 - Ty) + Y2 * Ty, при Ty = (I - 1) / N 
(13) YB = Y1 * (1 - Ty) + Y2 * Ty, при Ty = I / N 
(14) XA = X1 * (1 - Tx) + X2 * Tx, при Tx = (J - 1) / N 
(15) XB = X1 * (1 - Tx) + X2 * Tx, при Tx = J / N 
 
Здесь учитывается тот факт, что индексы I и J изменяются от 1 до N с тем, чтобы получить правильное число ячеек. 
 
Далее для вычисления интерполяционных точек (которые и являются точками поверхности) используются два дополнительных цикла по переменным A и B, представляющих собой индексы параметров U и V. С их помощью вычисляются текущие значения параметров Tu и Tv: 
 
(16) Tv = A / M 
(17) Tu = B / M 
 
Вычисление точек в значительной мере повторяет код, который был разработан на первом этапе, поэтому его можно скопировать и изменить в соответствии с алгоритмом:

Положить L = N * M + 1

Перестроить матрицу M1 размерностью L * L

Изменяя I от 1 до N

Вычислить YA по формуле (12)

Вычислить YB по формуле (13)

Изменяя J от 1 до N

Вычислить XA по формуле (14)

Вычислить XB по формуле (15)

Записать вектор MP(1) с координатами XA, YA, Surf(XA,YA)

Записать вектор MP(2) с координатами XA, YB, Surf(XA,YB)

Записать вектор MP(3) с координатами XB, YA, Surf(XB,YA)

Записать вектор MP(4) с координатами XB, YB, Surf(XB,YB)

Изменяя A от 0 до M

Вычислить Tv по формуле (16)

Изменяя B от 0 до M

Вычислить Tu по формуле (17)

Вычислить индекс точки K по формуле (18)

Вычислить точку P при помощи функции Bilinear

Записать вектор M1(K) с координатами P.X, P.Y, P.Z

Следующее B

Следующее A

Следующее J

Следующее I

 
Вычисление индекса K точки здесь  несколько сложнее и производится в соответствии с нумерацией точек, показанной на рис. 5. 1, 2 в 3-4 четвертях- J, 1 напротив B, 2 в 1 и 4 четвертях - индекс I, по горизонтали - A и по вертикали - B. 
 

Рис. 5.

(N = 2, M = 2, L = 5) 
 
Несложно установить, что вычислить черный номер точки K можно по формуле 
 
(18) K = 1 + (J - 1) * M + B + L * ((I - 1) * M + A). 
 
Замечение: некоторые граничные точки ячеек вычисляются дважды. 

 

4. 2. 1. Алгоритмы построения участка билинейной поверхности и поверхности Кунса.

 

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

приведен в виде подпрограммы на языке бейсик

Рис.1. Алгоритм построения участка билинейной поверхности.

Также алгоритм, используемый для построения линейной поверхности Кунса, описываемой  уравнением

При этом предполагается, что граничная кривая может быть описана равномерно расположенными (по значению параметра) точками.

Рис. 2. Алгоритм построения поверхности Кунса.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Заключение.

Описание и  построение поверхностей имеют большое  значение в процессах производства и проектирования самых разнообразных  изделий. Примерами могут служить  производство автомобилей, самолетостроение, кораблестроение, изделий из стекла или шитье одежды. Традиционно поверхности описывают при помощи ортогональных проекций. Однако с внедрением вычислительной техники в производство лучшие результаты можно получить при помощи методов интерактивной компьютерной графики, основой которой являются математические методы проектирования и описания поверхностей.

 С одной  стороны, применение компьютеров  позволяет наглядно проектировать  поверхности. С другой стороны,  конечной целью автоматизированных  методов проектирования является получение такого описания поверхности, при помощи которого можно получить либо чертежи, либо непосредственные данные для станков с числовым программным управлением.  В данной работе была рассмотрена одна из простейших поверхностей - билинейная, которую нетрудно построить при помощи методов компьютерной графики.

 


и т.д.................


Перейти к полному тексту работы


Скачать работу с онлайн повышением уникальности до 90% по antiplagiat.ru, etxt.ru или advego.ru


Смотреть полный текст работы бесплатно


Смотреть похожие работы


* Примечание. Уникальность работы указана на дату публикации, текущее значение может отличаться от указанного.