Прикреплённый файл «drlesF.py»

Загрузка

   1 #!/usr/bin/python
   2 # coding: UTF8
   3 from math import *
   4 
   5 def kasat_okr(O,M,R):
   6     '''Точки пересечения касательных из точки O 
   7        к окружности с центром M и радиусом R с этой окружностью'''
   8     # (X0-X1)**2+(Y0-Y1)**2=(X0-X)**2+(Y0-Y)**2+R**2
   9     # (X-X1)**2+(Y-Y1)**2=R**2
  10     X0,Y0,X1,Y1=[float(z) for z in O+M]
  11 
  12     for sign0 in (-1,1):
  13         sign1 = (X0-X1)*(Y0-Y1)>0 and sign0 or -sign0
  14         X = X1 + (((((((R*(Y0 - Y1))**2)*(Y0**2 - (2*((Y0*Y1) + (X1*X0))) + X0**2 + X1**2 + Y1**2 - R**2))**(1./2))*sign0) + (R**2*(X0 - X1)))/(X0**2 - (2*((X0*X1) + (Y0*Y1))) + X1**2 + Y0**2 + Y1**2))
  15         Y = Y1 + (((((((R*(X0 - X1))**2)*(X0**2 - (2*((X0*X1) + (Y1*Y0))) + X1**2 + Y0**2 + Y1**2 - R**2))**(1./2))*sign1) + (R**2*(Y1 - Y0)))/((2*((X0*X1) + (Y1*Y0))) - X0**2 - X1**2 - Y1**2 - Y0**2))
  16         yield X,Y
  17 
  18 def kasat_les(O,Les):
  19     for M,R in Les:
  20         for X,Y in kasat_okr(O,M,R):
  21             yield (X,Y),M,R
  22 
  23 def rasst_do_pr(M,M0,M1):
  24     '''Расстояние от точки M до прямой M₀M₁'''
  25     A,B,C=[float(z) for z in (M0[1]-M1[1],M1[0]-M0[0],M0[0]*M1[1]-M1[0]*M0[1])]
  26     return fabs(A*M[0]+B*M[1]+C)/sqrt(A**2+B**2)

Прикреплённые файлы

Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.

Вам нельзя прикреплять файлы к этой странице.