Предоставьте пользователю возможность изменять натяжение, смещенность и непрерывность каждой из внутренних контрольных точек посредством нажатия клавиш. Например, пользователь может отметить мышью требуемую контрольную точку и нажать клавишу «v» для уменьшения значения натяжения в этой точке на некоторую небольшую фиксированную величину, а клавишу «V» - для соответствующего увеличения натяжения. Пользователь может нажать клавиши <<Ь» или «В» для изменения смещенности и «с» или «С» - для изменения непрерывности.

Тематическое задание 11.8. Многоуважаемый чайник Уровень сложности II.

Напишите программу, рисующую средствами OpenGL классический чайник с различных точек зрения. Не используйте GLUT-версию чайника; сформируйте свой собственный чайник из фрагментов поверхностей.

Таблица 11.2. Данные для профиля крышки чайника

i X z
0,8
2,7
0,2 2,55
0,4 2,4
1,3 2,4
1,3 2,25

Чайник состоит из четырех основных частей. Корпус (body) является поверхностью вращения, профиль которой состоит из трех кривых Безье в плоскости xz, как описано в разделе «Поверхности враще-

Создание кривых и поверхностей

ния на базе В-сплайнов». Ручка (handle) состоит из четырех лоскутов Безье, как описано в разделе «Лоскуты Безье». Крышка (lid) - это поверхность вращения, профиль которой описывается двумя кривыми Безье (рис. 11.67), а данные для нее приведены в табл 11.2. Носик (spout), подобно ручке, состоит из четырех лоскутов Безье. На рис. 11.68, а показан носик в разрезе, а также сечение контрольного полиэдра для лоскутов. Как и ручка, поверхность носика симметрична относительно плоскости xz. Весь верхний «/-положительный лоскут содержит следующие 16 контрольных точек: на базе С9 D0: (1,7,0,0,0,45), (1,7,0,66,0,45), (1,7,0,66,1,275), (1,7,0,0,1,275); на базе С,, D-. (3,1,0,0,0,675), (3,1,0,66,0,675), (2,6,0,66,1,275), (2,6,0,0,1,275); на базе Сг, D2: (2,4,0,0,1,875), (2,4,0,25,1,875), (2,3,0,25,1,95), (2,3,0,0,1,95);


⇐ Предыдущая| |Следующая ⇒