В Maple имеется два специализированных
геометрических пакета: планиметрический - geometry;
стереометрический - geom3d. Работа с этими
пакетами имеет свою специфику. Мы кратко
рассмотрим возможности пакета geometry (принципы
работы с пакетом geom3d во многом
аналогичны планиметрическому случаю).
При работе с пакетом предполагается,
что в плоскости задана некоторая
прямоугольная декартова система координат.
Как обычно, загрузим пакет с помощью команды with (предварительно мы очищаем оперативную память командой restart ):
> restart:
> with(geometry);
[Appolonius, AreCollinear, AreConcurrent,
AreConcyclic, AreConjugate, AreHarmonic, AreOrthogonal, AreParallel,
ArePerpendicular, AreSimilar, AreTangent, CircleOfSimilitude, CrossProduct,
CrossRatio, DefinedAs, Equation, EulerCircle, EulerLine, ExternalBisector,
FindAngle, GergonnePoint, GlideReflection, HorizontalCoord, HorizontalName,
IsEquilateral, IsOnCircle, IsOnLine, IsRightTriangle, MajorAxis, MakeSquare,
MinorAxis, NagelPoint, OnSegment, ParallelLine, PedalTriangle, PerpenBisector,
PerpendicularLine, Polar, Pole, RadicalAxis, RadicalCenter, SensedMagnitude,
SimsonLine, SpiralRotation, StretchReflection, StretchRotation, TangentLine,
VerticalCoord, VerticalName, altitude, area, asymptotes, bisector, center,
centroid, circle, circumcircle, conic, convexhull, coordinates, detail,
diagonal, diameter, dilatation, directrix, distance, draw, dsegment, ellipse,
excircle, expansion, foci, focus, form, homology, homothety, hyperbola,
incircle, intersection, inversion, line, medial, median, method, midpoint,
orthocenter, parabola, point, powerpc, projection, radius, randpoint,
reciprocation, reflection, rotation, segment, sides, similitude, slope, square,
stretch, tangentpc, translation, triangle, vertex, vertices]
Чтобы разобраться в многообразии функций,
входящих в состав пакета. разобьем их на
несколько условных групп.
К первой отнесем функции, с помощью
которых можно создавать новые
геометрические объекты: точки (point),
прямые (line), отрезки (segment),
направленные отрезки (dsegment), окружности
(circle), эллипсы (ellipse), треугольники (triangle)
и т.д. Кроме самостоятельных объектов, к
этой категории можно отнести
геометрические фигуры, являющиеся, по
существу, одними из вышеперечисленных (например,
отрезками или окружностями), но
определяемые по отношению к другим. К таким
объектам можно отнести высоты (altitude),
медианы (median) и биссектрисы (bisector)
треугольника, окружность, вписанную в
треугольник (incircle ) и описанную около
треугольника (circumcircle ), прямую Эйлера (EulerLine),
касательные к окружности (TangentLine), точки
Жергонна (GergonnePoint ), Нагеля (NagelPoint) и
многое другое.
Отличительной чертой этих функций является
то, что возвращаемые ими значения в
принципе не нужно (хотя и возможно)
присваивать какимлибо переменным. Дело в
том, что все они имеют имя создаваемого
объекта в качестве обязательного первого
параметра. (Тем самым по существу мы имеем
дело с процедурами.)
Другая особенность рассматриваемой
категории функций заключается в том, что
многие из них (в особенности те, с помощью
которых создаются самостоятельные объекты)
допускают много различных вариантов.
Например, эллипс можно задать: его
уравнением ; указав пять точек,
принадлежащих эллипсу; задав директрису,
соответствующий ей фокус и эксцентриситет
эллипса; указав фокусы и большую полуось;
указав фокусы и малую полуось; двумя
полуосями. Аналогично задать треугольник
можно координатами его вершин; уравнениями
сторон; длинами сторон. В последнем случае
треугольник задается безотносительно его
расположения на координатной плоскости.
Вторую группу составляют функции, возвращающие различные характеристики геометрических объектов: координаты (coordinates ), площадь (area), угол между прямыми (FindAngle ), двойное отношение четырех точек прямой (CrossRatio ), тип объекта (form), способ задания треугольника (method), уравнение (Equation ) и т.д. Наиболее полную информацию о том или ином геометрическом объекте можно получить, используя функцию detail.
К третьей группе отнесем те функции
геометрического пакета, которые
осуществляют проверку инцидентности и
взаимного расположения геометрических
объектов. Имена этих функций состоят из
двух (или более) английских слов (каждое
начинается с заглавной буквы), первым из
которых обязательно идет слово Are (Is),
придавая имени функции характер вопроса. С
помощью функций этой группы можно
проверить принадлежность трех точек одной
прямой
(AreCollinear), четырех точек одной окружности (AreConcyclic), ориентацию треугольника
(I sRightTriangle) и т.д.
Четвертая группа функций
планиметрического пакета относится к
геометрическим преобразованиям. Сюда
входят параллельный перенос (translation),
вращение (rotation), центральная и осевая
симметрии (reflection), гомотетия (dilatation ),
инверсия (inversion) и некоторые другие
преобразования. К этой же группе можно
отнести и ортогональное проектирование (projection
).
Наконец, особняком стоит еще одна важная команда пакета - draw, позволяющая изображать геометрические объекты. Единственным обязательным параметром команды draw является список изображаемых объктов. Кроме того имеется много опциональных параметров. Задаваемые ими опции могут действовать как глобально (на все элементы списка вывода), так и локально. В последнем случае соответстветствующие опции указываются в круглых скобках непосредственно после элементов списка изображаемых объктов.
Проиллюстрируем вышесказанное на
примерах.
Сначала мы зададим три точки:
> point(A,2,3), point(B,3,1), point(C,5,4);
A, B, C
Зададим прямую AB и найдем ее уравнение:
> line(AB,[A,B]);
AB
> Equation(AB);
enter name of the horizontal axis > x;
enter name of the vertical axis > y;
-7 + 2 x + y = 0
Обратите внимание, что прежде чем вывести
уравнение прямой, Maple попросил нас ввести
названия координатных осей.
Мы могли бы избежать этой процедуры, если бы
заранее задали имена корординатных осей,
присвоив зарезервированным переменным _EnvHorizontalName
и _EnvVerticalName соответствующие значения.
Другая возможность - использовать список
имен координатных осей в качестве третьего
(опционального) параметра процедуры line.
Зададим треугольник ABC и найдем его площадь:
> triangle(ABC,[A,B,C]); area(ABC);
ABC
Зададим высоты ha, hb и hc треугольника ABC и
обозначим их основания через A1, B1 и C1
соответственно:
> altitude(ha,A,ABC,A1);altitude(hb,B,ABC,B1);altitude(hc,C,ABC,C1);
ha
hb
hc
Проведем окружность c через
основания высот (она называется
окружностью Эйлера) и обозначим ее центр
через O:
> circle(c,[A1,B1,C1],'centername'='O');
c
Проведем медиану ma из вершины A и
убедимся, что ее основание лежит на одной
окружности с основаниями высот:
> median(ma,A,ABC,A2); AreConcyclic(A1,B1,C1,A2);
ma
true
Построим треугольник abc, гомотетичный
треугольнику ABC с центром гомотетии в точке
M(5;2) и коэффициентом, и выведем на экран
информацию об этом треугольнике:
> dilatation(abc,ABC,-1/2,point(M,5,2));detail(abc);
abc
name of the object: abc
form of the object: triangle2d
method to define the triangle: points
the three vertices: [[13/2, 3/2], [6, 5/2], [5, 1]]
Изобразим на одном чертеже все построенные объекты:
> draw([ABC,abc,c,ha,hb,hc,ma,M(color=black)],color=blue,printtext=true, axes=NONE);
С помощью локальной опции (color=black) мы задали черный цвет для имен изображемых точек. Кроме того мы использовали глобальные опции для задания цвета изображемых геометричских объектов, отображения имен точек и подавления вывода координатных осей.
Волгоградский
государственный педагогический
университет
Кафедра алгебры, геометрии и информатики