![]() |
Радиус среза круга
Вложений: 1
Как определить радиус круга в точке [0;y]?
Пробовал так Код:
private float GetRadius(float y) {Т.е. мне нужно вычислить длину зеленой полоски. Сейчас она как видите не верна т.к. не на весь круг. Похоже это правильно зазывается хорда. |
Ответ: Радиус среза круга
Чё?
Лично я вопроса не понял. Картинка не наглядна, и не объясняет - не помогает понять вопрос. Ты хочешь вычислить радиус между зелёной полоской и центром (красной точкой)? Если да, то просто: abs(yA - yB). Где yA - это y центра окружности, а yB это y зелёной полоски. Учитывай, что то что ты знаешь - другие не знают. Читать чужие мысли мы пока не научились, следственно выражай мысль с достаточными данными для тех кто вообще не в теме, иначе тебе не помогут. |
Ответ: Радиус среза круга
ТС видимо имеет в виду хорду
|
Ответ: Радиус среза круга
У круга радиус всегда одинаков. :)
|
Ответ: Радиус среза круга
x*x+y*y-radius*radus = y
x*x = radius*radius - y*y + y x1=sqrt( radius*radius - y*y + y) x2=-sqrt( radius*radius - y*y + y) length = x1-x2 А так почему нельзя сделать? |
Ответ: Радиус среза круга
radiobutton, ну я писал про срез круга.
Обновил первый пост. Впрочем как сказал Den это хорда. dsd, да, все правильно. Спасибо! private float GetRadius(float y) { return (float) Math.sqrt( radius*radius - y*y + y); } |
Ответ: Радиус среза круга
dsd, что-то у меня твои равенства не сходятся.
Код:
int x = 5, y = 10; |
Ответ: Радиус среза круга
Если y это длина перпендикуляра проведенного к секущей (той твоей линии зеленой) из центра окружности, то длина секущей будит равна
2 * sqrt(r * r - y * y) где r радиус. |
Ответ: Радиус среза круга
Цитата:
И эта sqrt( radius*radius - y*y + y) работает. Хотя они разные. |
Ответ: Радиус среза круга
если от центра
то длина хорды = 2*L где L = катет, в прямоугольном треугольнике с другим катетом, равным Y и гипотенузой R (радиус круга). Отсюда R^2=L^2+Y^2 (т. Пифагора) или L=sqrt(R^2-Y^2) длина хорды = 2*sqrt(R^2-Y^2) (блин, всегда я к шапочному разбору попадаю - хоть прокомменчу решение) в крайних точках решение очевидно верное: 1) в самом низу (и верху) Y=-R (или Y=R) => ans=2*sqrt(R^2-R^2)=0 2) в центре Y=0 => ans=2*sqrt(R^2-0)=2*R=D (диаметр) В обшем - напортачить можно только с вычислением Y, который должен быть равен длине перпендикуляра от центра круга до хорды. Причём модуль брать не обязательно, т.к. величина входит в выражение во второй степени. |
Ответ: Радиус среза круга
А вот нет, я в виду имел уравнение окружности и прямой, и дальше искал пересечение.
|
Ответ: Радиус среза круга
Цитата:
эта формула может работать в частном случае, когда y = 3 * (r*r -y*y) или 3*y*y + y - 3*r*r = 0 D = 1 - 4 * 3 * (-3 * r * r) = 1 + 48 r*r y = (-1 +- sqrt(1+48*r*r)) / 6 При такой ситуации та формула будит работать.:) |
Ответ: Радиус среза круга
Цитата:
Цитата:
|
Ответ: Радиус среза круга
Я теперь запутался.
|
Ответ: Радиус среза круга
Или я тупой или это:
2*(R^2 - y^2) ? Типа прямоугольный треугольник, гипотенуза - радиус имеющегося круга, у - катет. Получаем второй катет и домножаем на два - вот и длина зеленой полоски. АПД: не прочитал коммента radiobutton'a. Но товарищ переключатель дело говорит. И импер дело говорит, мне крысы наиграли. |
| Часовой пояс GMT +4, время: 12:42. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot