# coordinate_geometry

## Features

- Helps to perform various operations on points like calculate distance between them, write equation formed by them
- Perform various tasks in equation of lines like calculate distance between point and line , find image of point in a line etc
- find area of triangle formed by three points , incentre , circumcentre, orthocentre etc

## Important things to know about equations

- equation_type1(slope , y_intercept) --> Creates a line object with slope and y_intercept
- equation_type2(a, b, c) --> Creates a line object in form ax + by + c = 0
- equation_type3(x_intercept , y_intercept) --> Creates a line object with x_intercept and y_intercept
- equation_type4(pt:point , slope) --> Creates a line object with pt ( a point object ) and slope
- equation_type5(pt:point , pt2:point) --> Creates a line object with given two point objects , throws error if both points are same

- These types can not be used to make lines parallel to y-axis

## Examples

## Point

#### Distance Formula

p1=point(3,0)
p2=point(0,4)
print(p1.distance(p2)) # --> 5.0

#### Section Formula

Internal division

p1=point(4,4)
p2=point(8,8)
print(p1.section(p2,m=1,n=3)) # --> ( 5.0 , 5.0 )

External division

p1=point(4,4)
p2=point(8,8)
print(p1.section(p2,m=1,n=3,external=True)) # --> ( 2.0 , 2.0 )

#### Slope
p1=point(1,1)
p2=point(3,3)
print(p1.slope(p2)) # --> 1.0


## Triangles

A=point(0,0)
B=point(5,0)
C=point(5*math.cos(math.pi/3),5*math.sin(math.pi/3))
t1=Triangle(A,B,C) # NOTE : THIS IS A EQUILATERAL TRIANGLE , SO IT MUST HAVE SAME INCENTRE, ORHTOCENTRE , CENTROID and CIRCUMCENTRE
print(t1.area()) # --> 10.82532
print(t1.incenter()) --> ( 2.5 , 1.4433757 )
print(t1.centroid()) --> ( 2.5 , 1.4433757 )
print(t1.circumcenter()) --> ( 2.5 , 1.4433757 )
print(t1.orthocenter()) --> ( 2.5 , 1.4433757 )


## Line


#### Solving Two Lines
l1=equation_type2(a=3,b=4,c=-5)
l2=equation_type2(a=3,b=-4,c=-7)
print(l1.solve(l2)) # --> ( 2.0 , -0.25 )

#### Angle Between two lines

l1=equation_type5(point(1,1),point(2,2))
l2=equation_type5(point(-1,1),point(-3,3))
print(l1.slope) # --> 1.0
print(l2.slope) # --> -1.0
print(l1.angle(l2)) # --> 1.5707963267948966 (PI/2)
print(l1.is_perpendicular(l2)) # --> True
print(l1.is_parallel(l2)) # --> False


#### Distance Between point and line

l1=equation_type4(point(0,0),0) # X axis
pt=point(3,0)
pt1=point(0,3)
print(l1.distance(pt)) # --> 0.0
print(l1.distance(pt1)) # --> 3.0

#### Image of a point and foot of perpendicular in a line

l1=equation_type4(point(0,0),1)
pt=point(1,2)
print(l1.foot_of_perpendicular(pt)) # --> ( 1.5 , 1.5 )
print(l1.image_of_point(pt)) # --> ( 2.0 , 1.0 )

## LICENSE

© 2021 Deepak Kumar Dash













