Глава 6. Моделирование поверхностей полигональными сетками ляции (это будет рассмотрено в главе 8). Таким образом, выбор нормального вектора для записи в данные сетки зависит от того, каким разработчик хочет видеть свой объект.

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

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

6.7. Тематические задания Тематическое задание 6.1. Сетки, записанные в файл Уровень сложности И.

Нам нужно, чтобы класс Mesh поддерживал запись объектов класса Mesh в файл и чтение этих каркасных объектов из файла в программу. Выберем для таких файлов простой формат. Пусть в первой строке списка содержится число вершин, число нормалей и число граней сетки. Затем каждая вершина сетки указывается в виде тройки чисел с плавающей запятой: (я\, у., z). В каждой строке располагается несколько вершин. Затем указываются все нормальные векторы, также в виде тройки вещественных чисел. И наконец, перечисляется каждая грань в следующем формате:


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