Прикреплённый файл «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 из ссылки «[получить]», так как он чисто внутренний и может измениться.- [получить | показать] (2011-09-26 11:35:38, 2.3 KB) [[attachment:bacilly.py]]
- [получить | показать] (2011-09-26 11:35:38, 0.4 KB) [[attachment:draw_circles.py]]
- [получить | показать] (2011-09-26 11:35:38, 1.9 KB) [[attachment:drles.py]]
- [получить | показать] (2011-09-26 11:35:38, 1.2 KB) [[attachment:drlesF.py]]
- [получить | показать] (2011-09-26 11:35:38, 0.3 KB) [[attachment:drlesG.py]]
- [получить | показать] (2011-09-26 11:35:38, 1.8 KB) [[attachment:growing_circles.py]]
Вам нельзя прикреплять файлы к этой странице.