Guest User

Circle tangent to ellipse

a guest
Aug 3rd, 2023
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.09 KB | Source Code | 0 0
  1. from sympy import *
  2. from sympy.abc import *
  3.  
  4.  
  5. def main():
  6.     # inputs
  7.     ai = 539.2645225464834
  8.     bi = 5255.824762975057
  9.     ri = 3
  10.     hi = 20
  11.     # ---
  12.  
  13.     qi = hi - ri
  14.  
  15.     a4 = b ** 2 - a ** 2
  16.     a3 = 2 * (b + q) * (a ** 2 - b ** 2)
  17.     a2 = a ** 2 * (r ** 2 - q ** 2 - b ** 2 - 4 * b * q) - b ** 2 * (-q ** 2 - 4 * b * q)
  18.     a1 = a ** 2 * (2 * b * (q ** 2 - r ** 2) + 2 * q * b ** 2) - 2 * b ** 3 * q ** 2
  19.     a0 = a ** 2 * b ** 2 * (r ** 2 - q ** 2)
  20.     fy = a4 * y ** 4 + a3 * y ** 3 + a2 * y ** 2 + a1 * y + a0
  21.     solutions = solve(fy, y, dict=True)
  22.     # the third (index 2) element of the solutions is apparently always the one we're looking for
  23.     ye = solutions[2][y]
  24.     # Strip away complex part (very small)
  25.     y1 = ye.evalf(subs={a: ai, b: bi, r: ri, q: qi}).args[0]
  26.     xe = a * (1 - (ye - b) ** 2 / b ** 2) ** (1 / 2)
  27.     x1 = xe.evalf(subs={a: ai, b: bi, r: ri, q: qi}).args[0]
  28.     pe = xe + (r ** 2 - (ye - q) ** 2) ** (1 / 2)
  29.     p1 = pe.evalf(subs={a: ai, b: bi, r: ri, q: qi}).args[0]
  30.     print(y1, x1, p1)
  31.  
  32.  
  33. if __name__ == '__main__':
  34.     main()
Advertisement
Add Comment
Please, Sign In to add comment