![]() |
Ответ: Радиус среза круга
Цитата:
Цитата:
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 - координаты точки пересечения перпендикуляра проведенного из центра окружности к секущей. |
Ответ: Радиус среза круга
Вложений: 1
Цитата:
А вот если из центра эллипса ведет вектор, то как определить расстояние от центра до края эллипса в этом направлении? Пытался так: Код:
dir.setLength(radX); |
Ответ: Радиус среза круга
Цитата:
Но если известна длина красной линии, то все проще. По той формуле, что в самом начале написал. Цитата:
private static float distance(Vector2f point, float a, float b) { float c = point.y / point.x; float x = (a*b) / Mathf.sqrt(b*b + c*c*a*a); float y = c*x; return x*x + y*y; } |
Ответ: Радиус среза круга
И еще в конце корень надо было вычислить)
private static float distance(Vector2f dir, float a, float b) { float c = dir.y / dir.x; float x = (float) ((a * b) / Math.sqrt(b * b + c * c * a * a)); float y = c * x; return (float)Math.sqrt( x * x + y * y ); } только надо как-то когда dir.y == 0 учесть. |
Ответ: Радиус среза круга
Цитата:
Цитата:
|
| Часовой пояс GMT +4, время: 14:21. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot