The geometry module in SymPy allows creation of two dimensional entities such as line, circle, etc. We can then obtain information about them such as checking colinearity or finding intersection.
Point
Point class represents a point in Euclidean space. Following example checks for collinearity of points −
>>> from sympy.geometry import Point >>> from sympy import * >>> x=Point(0,0) >>> y=Point(2,2) >>> z=Point(4,4) >>> Point.is_collinear(x,y,z)
Output
True
>>> a=Point(2,3) >>> Point.is_collinear(x,y,a)
Output
False
The distance() method of Point class calculates distance between two points
>>> x.distance(y)
Output
2√2
The distance may also be represented in terms of symbols.
Line
Line entity is obtained from two Point objects. The intersection() method returns point of intersection if two lines intersect each other.
>>> from sympy.geometry import Point, Line >>> p1, p2=Point(0,5), Point(5,0) >>> l1=Line(p1,p2) >>> l2=Line(Point(0,0), Point(5,5)) >>> l1.intersection(l2)
Output
[Point2D(5/2, 5/2)]
>>> l1.intersection(Line(Point(0,0), Point(2,2)))
Output
[Point2D(5/2, 5/2)]
>>> x,y=symbols('x y') >>> p=Point(x,y) >>> p.distance(Point(0,0))
Output
√x2+y2
Triangle
This function builds a triangle entity from three point objects.
Triangle(a,b,c)
>>> t=Triangle(Point(0,0),Point(0,5), Point(5,0)) >>> t.area
Output
−25/2
Ellipse
An elliptical geometry entity is constructed by passing a Point object corresponding to center and two numbers each for horizontal and vertical radius.
ellipse(center, hradius, vradius)
>>> from sympy.geometry import Ellipse, Line >>> e=Ellipse(Point(0,0),8,3) >>> e.area
Output
24π
The vradius can be indirectly provided by using eccentricity parameter.
>>> e1=Ellipse(Point(2,2), hradius=5, eccentricity=Rational(3,4)) >>> e1.vradius
Output
5√7/4
The apoapsis of the ellipse is the greatest distance between the focus and the contour.
>>> e1.apoapsis
Output
35/4
Following statement calculates circumference of ellipse −
>>> e1.circumference
Output
20E(9/16)
The equation method of ellipse returns equation of ellipse.
>>> e1.equation(x,y)
Output
(x/5−2/5)2+(16(y−2)2 /175)−1