Использование классов линии и плоскостей
Следующие примеры показывают некоторых из обычно используемых функций в классах плана и линии. Эти примеры показывают, как использовать линию и классы плана для основных линейных операций алгебры. Хотя примеры используют классы 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))