В векторной компьютерной графике , системах автоматизированного проектирования и географических информационных системах геометрический примитив (или прим ) — это простейшая (т. е. «атомарная» или неприводимая) геометрическая форма , которую система может обрабатывать (рисовать, хранить). Иногда подпрограммы , которые рисуют соответствующие объекты, также называют «геометрическими примитивами». Наиболее «примитивными» примитивами являются точка и отрезок прямой линии , которые были всем, что было в ранних системах векторной графики.
В конструктивной стереометрии примитивами являются простые геометрические фигуры, такие как куб , цилиндр , сфера , конус , пирамида , тор .
Современные системы двухмерной компьютерной графики могут работать с примитивами, представляющими собой кривые (отрезки прямых линий, окружности и более сложные кривые), а также фигуры (прямоугольники, произвольные многоугольники, окружности).
Обычный набор двумерных примитивов включает линии, точки и многоугольники , хотя некоторые люди предпочитают считать треугольники примитивами, потому что каждый многоугольник может быть построен из треугольников. Все остальные графические элементы построены из этих примитивов. В трех измерениях треугольники или многоугольники, расположенные в трехмерном пространстве, могут использоваться в качестве примитивов для моделирования более сложных трехмерных форм. В некоторых случаях примитивами могут считаться кривые (такие как кривые Безье , окружности и т. д.); в других случаях кривые представляют собой сложные формы, созданные из множества прямых примитивных форм.
Набор геометрических примитивов основан на размерности представляемой области: [1]
В ГИС поверхность рельефа часто в разговорной речи называют «2 1/2-мерной», поскольку необходимо представить только верхнюю поверхность. Таким образом, высоту можно концептуализировать как свойство скалярного поля или функцию двумерного пространства, что дает ей ряд эффективностей моделирования данных по сравнению с настоящими трехмерными объектами. Форма любого из этих измерений, больших нуля, состоит из бесконечного числа отдельных точек. Поскольку цифровые системы конечны, можно сохранить только выборочный набор точек в форме. Таким образом, векторные структуры данных обычно представляют геометрические примитивы с использованием стратегической выборки, организованной в структуры, которые облегчают программному обеспечению интерполяцию оставшейся части формы во время анализа или отображения с использованием алгоритмов вычислительной геометрии . [2]
За время существования географических информационных систем было разработано множество векторных структур и форматов данных , но они разделяют фундаментальную основу хранения основного набора геометрических примитивов для представления местоположения и масштабов географических явлений. Местоположение точек почти всегда измеряется в стандартной системе координат на основе Земли, будь то сферическая географическая система координат (широта/долгота) или плоская система координат, такая как универсальная поперечная проекция Меркатора . Они также разделяют необходимость хранить набор атрибутов каждого географического объекта вместе с его формой; традиционно это достигалось с помощью моделей данных, форматов данных и даже программного обеспечения реляционных баз данных .
Ранние векторные форматы, такие как POLYVRT , ARC/INFO Coverage и шейп-файл Esri , поддерживают базовый набор геометрических примитивов: точки, полилинии и полигоны, только в двумерном пространстве, а последние два — только с интерполяцией прямых линий. Также были добавлены структуры данных TIN для представления поверхностей рельефа в виде треугольных сеток. С середины 1990-х годов были разработаны новые форматы, расширяющие диапазон доступных примитивов, в целом стандартизированных спецификацией Simple Features Открытого геопространственного консорциума . [ 3] Распространенные расширения геометрических примитивов включают: трехмерные координаты для точек, линий и полигонов; четвертое «измерение» для представления измеренного атрибута или времени; изогнутые сегменты в линиях и полигонах; текстовая аннотация как форма геометрии; и полигональные сетки для трехмерных объектов.
Часто представление формы явления реального мира может иметь иное (обычно меньшее) измерение, чем представляемое явление. Например, город (двумерный регион) может быть представлен в виде точки, а дорога (трехмерный объем материала) может быть представлена в виде линии. Это размерное обобщение коррелирует с тенденциями в пространственном познании. Например, вопрос о расстоянии между двумя городами предполагает концептуальную модель городов как точек, в то время как указание направлений, включающих движение «вверх», «вниз» или «вдоль» дороги, подразумевает одномерную концептуальную модель. Это часто делается в целях эффективности данных, визуальной простоты или когнитивной эффективности и приемлемо, если различие между представлением и представляемым понятно, но может вызвать путаницу, если пользователи информации предполагают, что цифровая форма является идеальным представлением реальности (т. е. верят, что дороги на самом деле являются линиями).
В программном обеспечении САПР или 3D-моделировании интерфейс может предоставлять пользователю возможность создавать примитивы, которые могут быть дополнительно изменены путем редактирования. [4] Например, в практике моделирования коробок пользователь начнет с кубоида, затем использует выдавливание и другие операции для создания модели. В этом использовании примитив является просто удобной отправной точкой, а не фундаментальной единицей моделирования.
Пакет 3D может также включать список расширенных примитивов, которые являются более сложными формами, входящими в пакет. Например, чайник указан как примитив в 3D Studio Max .
Существуют различные графические ускорители с аппаратным ускорением для рендеринга определенных примитивов, таких как линии или треугольники, часто с текстурным отображением и шейдерами . Современные 3D-ускорители обычно принимают последовательности треугольников как полосы треугольников .