Смекни!
smekni.com

Разработка подсистемы визуализации моделей и их модификации (стр. 4 из 5)

После многих лет работы совместный комитет ANSI-ISO стандартизировал С++ в 1998 г. (ISO/IEC 14882:1998). В течение нескольких лет после официального выхода стандарта комитет обрабатывал сообщения об ошибках и в итоге выпустил исправленную версию стандарта С++ в 2003 году.

C++ - компилируемый строго типизированный язык программирования общего назначения. Поддерживает разные парадигмы программирования: процедурную, обобщённую, функциональную; наибольшее внимание уделено поддержке объектно-ориентированного программирования. В 1990-х годах язык стал одним из наиболее широко применяемых языков программирования общего назначения. При создании С++ стремились сохранить совместимость с языком С. Большинство программ на С будут исправно работать и с компилятором С++. С++ имеет синтаксис, основанный на синтаксисе С [4]. Нововведениями С++ в сравнении с Си являются:

- поддержка объектно-ориентированного программирования через классы;

- поддержка обобщённого программирования через шаблоны;

- дополнения к стандартной библиотеке;

- дополнительные типы данных;

- исключения;

- пространства имён;

- встраиваемые функции;

- перегрузка операторов;

- перегрузка имён функций;

- ссылки и операторы управления свободно распределяемой памятью.

3.2. Язык высокого уровня С#

C# - язык программирования, сочетающий объектно-ориентированные и аспектно-ориентированные концепции. Разработан в 1998—2001 годах группой инженеров под руководством Андерсa Хейлсбергa в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET. Компилятор с C# входит в стандартную установку самой .NET, поэтому программы на нём можно создавать и компилировать даже без инструментальных средств вроде Visual Studio.

C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к С++ и Java. Язык имеет строгую статическую типизацию, поддерживает полиморфизм, перегрузку операторов, указатели на функции-члены классов, атрибуты, события, свойства, исключения, комментарии в формате XML. Переняв многое от своих предшественников — языков С++, Delphi, Модула и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов (в отличие от C++) или вывода типов (реализовано в .NET Framework 3.0). C# разрабатывался как язык программирования прикладного уровня для CLR и, как таковой, зависит, прежде всего, от возможностей самой CLR. Это касается, прежде всего, системы типов C#, которая отражает FCL. Присутствие или отсутствие тех или иных выразительных особенностей языка диктуется тем, может ли конкретная языковая особенность быть транслирована в соответствующие конструкции CLR.

Так, с развитием CLR от версии 1.1 к 2.0 значительно обогатился и сам C#; подобного взаимодействия следует ожидать и в дальнейшем. (Однако эта закономерность будет нарушена с выходом C# 3.0, представляющим собой расширения языка, не опирающиеся на расширения платформы .NET.) CLR предоставляет C#, как и всем другим .NET-ориентированным языкам, многие возможности, которых лишены «классические» языки программирования. Например, сборка мусора не реализована в самом C#, а производится CLR для программ, написанных на C# точно так же, как это делается для программ на VB.NET, J# и др [4].


4 ПОСТРОЕНИЯ КРИВОЛИНЕЙНЫХ ПОВЕРХНОСТЕЙ

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

4.1 Сплайн Безье

Кривы́е Безье́ были разработаны в 60-х годах XX века независимо друг от друга Пьером Безье (Bézier) из автомобилестроительной компании «Рено» и Полем де Кастелье (de Casteljau) из компании «Ситроен», где применялись для проектирования кузовов автомобилей. Впервые кривые были представлены широкой публике в 1962 году французским инженером Пьером Безье, который, разработав их независимо от де Кастелье, использовал их для компьютерного проектирования автомобильных кузовов. Кривые были названы именем Безье, а именем де Кастелье назван разработанный им рекурсивный способ определения кривых (алгоритм де Кастелье). Впоследствии это открытие стало одним из важнейших инструментов систем автоматизированного проектирования и программ компьютерной графики [1].

Кривая Безье — параметрическая кривая, задаваемая выражением

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

где n — степень полинома, i — порядковый номер опорной вершины.

Сплайны Безье бывают:

1) линейные кривые - при n = 1 кривая представляет собой отрезок прямой линии, опорные точки P0 и P1 определяют его начало и конец. Кривая задаётся уравнением:

2) квадратные кривые Безье (n = 2) задаётся 3-я опорными точками: P0, P1 и P2.

3) кубические кривые Безье (n = 3) описывается следующим уравнением:

Четыре опорные точки P0, P1, P2 и P3, заданные в 2-х или 3-мерном пространстве определяют форму кривой [2].

Рисунок 4.1 - Кубическая кривая Безье (n = 3)

Линия, берёт начало из точки P0 направляясь к P1 и заканчивается в точке P3 подходя к ней со стороны P2. То есть кривая не проходит через точки P1 и P2, они используются для указания её направления. Длина отрезка между P0 и P1 определяет, как скоро кривая повернёт к P3.


В матричной форме кубическая кривая Безье записывается следующим образом:

где

называется базисной матрицей Безье:

Построение кривых.

1) Линейные кривые. Параметр t в функции, описывающей линейный случай кривой Безье, определяет, где именно на расстоянии от P0 до P1 находится B(t). Например, при t = 0,25 значение функции B(t) соответствует четверти расстояния между точками P0 и P1. Параметр t изменяется от 0 до 1, а B(t) описывает отрезок прямой между точками P0 и P1.

Рисунок 4.2 - Линейные кривые

2) Квадратные кривые. Для построения квадратных кривых Безье требуется выделение двух промежуточных точек Q0 и Q1 из условия, чтобы параметр t изменялся от 0 до 1:

Точка Q0 изменяется от P0 до P1 и описывает линейную кривую Безье.

Точка Q1 изменяется от P1 до P2 и также описывает линейную кривую Безье.

Точка B0 изменяется от Q0 до Q1 и описывает квадратную кривую Безье.

Рисунок 4.3 - Квадратные кривые

3) Кривые высших степеней. Для построения кривых высших порядков соответственно требуется и больше промежуточных точек. Для кубической кривой это промежуточные точки Q0, Q1 и Q2, описывающие линейные кривые, а также точки R0 и R1, которые описывают квадратные кривые:

Рисунок 4.4 - Кривые высших степеней

Для кривых четвертой степени это будут точки Q0, Q1, Q2 и Q3, описывающие линейные кривые, R0, R1 и R2, которые описывают квадратные кривые, а также точки S0 и S1, описывающие кубические кривые Безье: