Показать сообщение отдельно
Старый 11.02.2007, 15:21   #2
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Пересечение лини и окружности.

и вариант для 3д.
Function Insect3D(r#,x#,y#,z#,x1#,y1#,z1#,x2#,y2#,z2#)
	
Local u#
mx#=(x2+x1)/2
my#=(y2+y1)/2
mz#=(z2+z1)/2
d#=Sqr((x1-mx)*(x1-mx)+(y1-my)*(y1-my)+(z1-mz)*(z1-mz))
u#=Sqr((mx-x)*(mx-x)+(my-y)*(my-y)+(mz-z)*(mz-z))
If(u<(d+r))
c#=Sqr((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2))
If(c=0) Return 1
a#=Sqr((x-x2)*(x-x2)+(y-y2)*(y-y2)+(z-z2)*(z-z2))
b#=Sqr((x1-x)*(x1-x)+(y1-y)*(y1-y)+(z1-z)*(z1-z))
p#=(a+b+c)/2
s#=Sqr(p*(p-a)*(p-b)*(p-c))
h#=s*2/c
If (h<r) Return 1
EndIf
Return 0
End Function
(Offline)
 
Ответить с цитированием