|
|
|
@ -1,20 +1,30 @@ |
|
|
|
from sympy import * |
|
|
|
|
|
|
|
class semicircle: |
|
|
|
def __init__(self,x,y,r,upper=False): |
|
|
|
if upper: |
|
|
|
self.coef = 1 |
|
|
|
else: |
|
|
|
self.coef = -1 |
|
|
|
|
|
|
|
self.x = x |
|
|
|
self.y = y |
|
|
|
self.r = r |
|
|
|
self.expr = simplify(self.y + self.coef * sqrt(r**2 - |
|
|
|
|
|
|
|
_x = symbols('x') |
|
|
|
_y = symbols('y') |
|
|
|
class circle: |
|
|
|
def __init__(self,x,y,r): |
|
|
|
self.x = x |
|
|
|
self.y = y |
|
|
|
self.r = r |
|
|
|
|
|
|
|
|
|
|
|
def get_expr(self): |
|
|
|
return self.r**2 - (pow(_x-self.x,2) + pow(_y-self.y,2)) |
|
|
|
|
|
|
|
def get_x(self,y): |
|
|
|
expr = self.get_expr() |
|
|
|
expr = expr.subs(_y,y) |
|
|
|
return solve(expr,_x) |
|
|
|
|
|
|
|
def get_y(self,x): |
|
|
|
expr = self.get_expr() |
|
|
|
expr = expr.subs(_x,x) |
|
|
|
return solve(expr,_y) |
|
|
|
|
|
|
|
def get_diff(self,dydx=True): |
|
|
|
expr = self.get_expr() |
|
|
|
if dydx: |
|
|
|
return expr.diff(_x) |
|
|
|
else: |
|
|
|
return expr.diff(_y) |
|
|
|
if __name__ == "__main__": |
|
|
|
unit_circle = circle(0,0,1) |