Показать сообщение отдельно
Старый 17.11.2012, 00:36   #16
radiobutton
Бывалый
 
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений
(для 546 пользователей)
Ответ: Радиус среза круга

Сообщение от impersonalis Посмотреть сообщение
Если не ошибаюсь, в выводе произошло смешение y как координаты и как величины перпендикуляра. А так - упрощение даёт похожий результат (проверь).
Сообщение от dsd Посмотреть сообщение
А вот нет, я в виду имел уравнение окружности и прямой, и дальше искал пересечение.
y*y + x*x - r*r = 0

x = +-sqrt(r*r - y*y)

length = sqrt(r*r - y*y) - ( - sqrt(r*r - y*y)) = 2 * sqrt (r*r - y*y)

Где y это координата на оси Y. С учетом, что центр окружности в (0,0).

И формула работает только если секущая паралельная оси X.
Вообщем ето только частный случай.

Если секущая не паралельна оси X, тогда length будит только длиной проекции секущей на ось X. Чтобы найти длину самой секущей, нужно также найти длину проекции секущей на ось Y.
Также нужно улучшить формулу, чтобы окружность могла быть не только в (0,0).

В итоге получим

lenghtX = 2 * sqrt (r*r - (y-y0)*(y-y0))
lenghtY = 2 * sqrt (r*r - (x-x0)*(x-x0))
lenght = sqrt (lenghtX*lenghtX + lenghtY*lenghtY) =
= sqrt (4* (r*r - (y-y0)*(y-y0)) + 4 * (r*r - (x-x0)*(x-x0)) )
= 2 * sqrt( 2*r*r - (y-y0)*(y-y0) - (x-x0)*(x-x0) )

lenght = 2 * sqrt( 2*r*r - (y-y0)*(y-y0) - (x-x0)*(x-x0) )

Где
r - радиус.
x0, y0 - координаты центра окружности.
x,y - координаты точки пересечения перпендикуляра проведенного из центра окружности к секущей.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
WISHMASTER35 (19.11.2012)