ObjectARX, AutoCAD. Среда программирования библиотеки C++

       

Использование классов линии и плоскостей


Следующие примеры показывают некоторых из обычно используемых функций в классах плана и линии. Эти примеры показывают, как использовать линию и классы плана для основных линейных операций алгебры. Хотя примеры используют классы 3D, большинство функций, которые не вовлекают класс плана - также могут использоваться в классах 2D. Эти примеры также используют бесконечную линию и классы плана, но они одинаково имеют силу для долей линии, лучей, и ограниченных планов.

Заданный по умолчанию конструктор линии создает линию по X оси. Заданный по умолчанию конструктор плана создает план XY:

AcGePoint3d p1 (2.0,5.0, -7.5), p2;

AcGeLine3d line1 (p1, v1), line2;

AcGePlane plane1 (p1, v1), plane2;

Вышеупомянутый конструктор для line1 создает линию через p1 в направлении v1. Конструктор для plane1 создает план через p1 и нормаль к v1. Таким образом, line1 перпендикулярен к plane1.

Следующие функции возвращают определение плана или линию:

p1 = line1.pointOnLine (); // Произвольная точка на линии.

v1 = line1.direction (); // вектор Руководства{*направления*} линии.

p1 = plane1.pointOnPlane (); // Произвольная точка на плане.

v1 = plane1.normal (); // Нормальный вектор плана.

direction() и normal() функции всегда возвращает единичные векторы.

Следующие функции возвращают самую близкую точку на линии или плане к сути p1:

p2 = line1.closestPointTo (p1);

p2 = plane1.closestPointTo (p1);

Следующие функции возвращают расстояние между точкой и линией, или план (эти расстояния будет тот же самый как расстояния между p1 и p2 выше):

double len = line1.distanceTo (p1);

len = plane1.distanceTo (p1);

Следующие функции возвращают Булево значение (TRUE или FALSE) и могут использоваться внутри условного оператора. Первый два испытательный, если точка p1 находится на line1 или plane1, и третьих испытаниях если line1 находится на plane1:

if (line1.isOn (p1))

if (plane1.isOn (p1))

if (line1.isOn (plane1))

Следующие функции проверяют, если линии или планы параллельны, перпендикулярны, или совпадающие:

if (line1.isParallelTo (line2))

if (line1.isParallelTo (plane1))

if (line1.isPerpendicularTo (line2))

if (line1.isPerpendicularTo (plane1))

if (line1.isColinearTo (line2))

if (plane1.isParallelTo (plane2))

if (plane1.isPerpendicularTo (plane2))

if (plane1.isCoplanarTo (plane2))

Следующие функции возвращают пересечения линий и планов:

if (line1.intersectWith (line2, p1))

if (line1.intersectWith (plane1, p1))

if (plane1.intersectWith (plane2, line1))



Содержание раздела