Алгоритм построения точек пересечения нелинейчатых поверхностей с прямыми в среде ObjectARX для AutoCAD

Алгоритм точек пересечения прямых с нелинейчатыми поверхностями и касательных к поверхностям в найденных точках с помощью технологии Object ARX. Разработка программного комплекса с помощью среды программирования Visual C++, его использование в AutoCAD.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 28.05.2017
Размер файла 124,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Алгоритм построения точек пересечения нелинейчатых поверхностей с прямыми в среде ObjectARX для AutoCAD

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

В данной статье рассмотрены алгоритм построения точек пересечения прямых с нелинейчатыми поверхностями и касательных к поверхностям в найденных точках.

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

Приведенные в статье алгоритмы разрабатывались в среде ObjectARX для AutoCAD 2007 [1]. Технология программирования Object ARX позволяет в полной мере использовать алгоритмические возможности среды программирования Visual C++ [2] и графические возможности автоматизированной системы AutoCAD [3].

программирование алгоритм object arx

Пусть поверхность задана сетью, представляющей собой два пересекающихся семейства сплайнов mi и nj (рис. 1). Сплайны, определяющие сеть, являются объектами класса AcDbSpline [1] (здесь и далее указаны классы системы AutoCAD). Определяющие точки сплайнов обоих семейств находятся в узлах сети, на рис. 1 они обозначены через Mij. Количество определяющих точек на сплайнах каждого семейства одинаково. Прямая l, точку пересечения которой с поверхностью надо определить, задана точками L1 и L2.

Первым этапом алгоритма (пункт 1 на рис. 2) является выполнение функции ListSpl, определяющей необходимые для дальнейших расчетов, параметры заданной поверхности. Начальные данные функция извлекает из базы данных чертежа системы AutoCAD. К параметрам, определяемым функцией относятся: координаты узловых точек сети и первые производные в этих точках к сплайнам mi и nj. Координаты узловых точек Mij известны, производные в этих точках находятся с помощью стандартной функции GetFirstDeriv. Параметры поверхности хранятся в списке, каждый элемент которого содержит следующие переменные:

· pts, тип AcGePoint3dArray - динамический массив точек трехмерного пространства, содержит координаты точек Mij, взятые по сплайну mi;

· vsm, тип AcGeVector3dArray - динамический массив векторов трехмерного пространства, содержит производные в точках Mij к сплайну mi;

· vsn, тип AcGeVector3dArray, содержит производные в точках Mij к сплайну nj;

· l, содержит указатель на следующий элемент списка, если данный элемент является последним, то значение этой переменной равно NULL.

Результатом работы функции является указатель на первый элемент созданного списка.

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

Для каждого пространственного четырехугольника поверхности, граничные отрезки сплайнов Mij Mij+1, Mij+1 Mi+1j+1, Mi+1j+1 Mi+1j, Mi+1j Mij заменяем хордами и проводим диагональ Mi+1j Mij+1 (рис. 3). Аппроксимируем четырехугольник поверхности двумя треугольными отсеками плоскости ДMij Mij+1Mi+1j+1 Mi+1j и Д Mij+1 Mi+1+1j Mi+1jMi+1j

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

где

, , ,

,

x1, y1, z1 и x2, y2, z2 координаты точек L1 и L2, определяющих прямую l, x3, y3, z3, x4, y4, z4, x5, y5, z5 координаты точек, определяющих соответствующий треугольный отсек плоскости. При решении этой системы получим координаты точки пересечения прямой с плоскостью, обозначим их через xп, yп, zп.

Определим, попадает ли найденная точка пересечения в пределы треугольного отсека. Приведем плоскость треугольника в положение параллельное одной из координатных плоскостей, например xOz. Найдем направляющие косинусы вектора нормали плоскости:

Угол, составляемый горизонтальной проекцией вектора нормали плоскости с осью Oy равен:

Определим угол, составляемый вектором нормали с плоскостью xOy:

.

Повернем систему координат вокруг оси Oz на угол г. В новой системе координат вектор нормали плоскости будет лежать в плоскости yOz. Матрица этого преобразования имеет вид:

Следующим поворотом системы координат вокруг оси Ox на угол приведем ось Oy в положение, параллельное нормали плоскости. Матрица этого преобразования имеет вид:

Получим матрицу суммарного преобразования , умножив матрицу на

Координаты точки пересечения и точек, определяющих треугольный отсек, в новой системе координат вычислим по следующему соотношению:

.

Проведем прямую и определим точки ее пересечения со сторонами треугольника. Если число точек пересечения с абсциссой меньше , равно 0 или 2, то точка находится вне треугольника, если равно 1, то она попадает в треугольный отсек плоскости.

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

Функции Pr_t_per возвращает динамический массив точек pts (тип AcGePoint3dArray) содержащий точки пересечения и два динамических массива целых чисел is и js (тип AcGeIntArray) содержащие индексы i и j определяющие четырехугольник поверхности, в котором находится точка пересечения.

Следующая функция MSpl (пункт 3 на рис. 2), строит сплайны вокруг четырехугольника поверхности, в который попала точка пересечения (рис. 4). Обозначим их через m'k и n'l. Эти сплайны строятся по начальной и конечной точкам и значениям производных в них. Для большей точности берутся по два сплайна с каждой стороны отсека. Они являются частями исходных сплайнов, определяющих поверхность и применяются для ускорения процесса вычисления, так как исходные сплайны имеют значительное число определяющих точек, следовательно, на работу с ними будет затрачено много времени. В качестве входных параметров функция использует указатель на список, содержащий параметры поверхности, индексы i и j определяющие четырехугольник поверхности, в котором находится точка пересечения. Функция возвращает два указателя на массивы, содержащие m'k и n'l (объекты типа AcDbSpline).

Далее (пункт 4 на рис.2) функция NSpl строит через средние точки m'k и n'l два сплайна m и n (рис. 4) и аналогично функции Pr_t_per определяет в каком, из четырех полученных четырехугольников, находится точка пересечения и рассчитывает расстояние d до ближайшей точки этого четырехугольника.

В пункте 5 алгоритма (рис. 2) производится проверка: если d>e где e заданная точность вычисления, то процесс повторяется для того четырехугольника, в котором находится точка пересечения, если заданная точность достигнута, то по следующей формуле (пункт 6 на рис. 2) вычисляется вектор нормали к поверхности

,

где

и направляющие векторы касательных в точке пересечения, координаты которых равны первым производным к сплайнам mi и nj.

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

Литература

1. Полищук Н.Н. AutoCAD Разработка приложений, настройка и адаптация. БХВ - Петербург. Санкт-Петербург, 2006.

2. Секунов Н.Ю. Visual C++ Визуальная среда программирования. Bhv. Москва, 1999.

3. Полищук Н.Н. AutoCAD 2007. БХВ - Петербург. Санкт-Петербург, 2008.

Размещено на Allbest.ru


Подобные документы

  • Возможности AutoCAD - наиболее популярной среды автоматизированного проектирования. Вводное рабочее 3D-пространство. Поддержка облаков точек. Обозреватель контента Autodesk. Средства выпуска документации. Создание и редактирование мультивыносок.

    контрольная работа [4,6 M], добавлен 06.04.2015

  • Программа построения двумерного и трехмерного изображения детали. Обоснование выбора средства параметрического моделирования. Графическая система Компас-3D, язык программирования AutoLisp в среде AutoCAD. Определение базовых размеров и контрольных точек.

    курсовая работа [1,5 M], добавлен 20.08.2009

  • Построение трубопровода, патрубка всасывания, насоса, соединительной муфты, электродвигателя, патрубка нагнетания в среде Компас-3D. Построение условного обозначения вентиля и приборов с помощью программы AutoCAD. Система противоаварийной защиты на ФСА.

    курсовая работа [5,0 M], добавлен 09.02.2015

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

    курсовая работа [1,4 M], добавлен 27.05.2013

  • Разработка чертежа сборочной единицы в компьютерной системе автоматизированного проектирования AutoCAD. Описание сборочной единицы. Проектирование зубчатого колеса. Построение изображения деталей с помощью AutoLISP. Построение 3D-модели в AutoCAD.

    курсовая работа [443,2 K], добавлен 27.03.2011

  • Проект оболочки моделирования кривошипно-шатунного механизма в среде MS Visual Studio. Разработка его математической модели. Исследование кинематики точек В, С, М. Алгоритм и код программы. Анимация движения механизма и график движения основных точек.

    курсовая работа [422,2 K], добавлен 13.03.2016

  • История распространения системы AutoCAD. Требования к компьютеру, на котором планируется установить современную программу. Возможности системы, черчение и моделирование, создание произвольных форм, 3D моделей тел и поверхностей, рабочей документации.

    статья [157,1 K], добавлен 01.05.2010

  • Разработка чертежа детали в 3D-формате в системе проектирования AutoCAD. Особенности процесса построения сложных пространственных моделей, использования функций и команд, связанных с 3D-графикой в среде AutoCAD. Результаты работы: пример чертежа детали.

    отчет по практике [1,9 M], добавлен 16.06.2015

  • Описание сборочной единицы шарикоподшипника радиального однорядного. Расчет зубчатого колеса. Построение сборочного чертежа. Построение изображения деталей с помощью AutoLISP. Проектирование 3D-модели цилиндра с монтажными отверстиями в AutoCAD.

    курсовая работа [2,8 M], добавлен 27.03.2011

  • Понятие объектно-ориентированного программирования, общая характеристика языков высокого уровня. Разработка программного обеспечения для реализации компьютерной игры "пинбол" с помощью императивного программирования в среде Microsoft Visual Basic.

    курсовая работа [428,9 K], добавлен 19.09.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.