Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [геометрия]Как построить Дугу на прямой


Автор: BOB4uK 11.7.2008, 17:58
Как построить Дугу на прямой из двух точек зная длину дуги,  количество точек (который формируют отрезки) и длину прямой на которой она строится?

Автор: polosatij 12.7.2008, 04:11


ни черта не понятнА..  smile 
ты бы не мог объяснить по понятливее?  smile 

Автор: BOB4uK 12.7.2008, 06:35
Вот смотри, моя прога позволяет строить схему помещения! Вот у меня на стене есть полу эллипс, который мне нужно занести в прогу! Для этого я замеряю длину от начала дуги и до конца дуги - получаю длинну дуги, так же я знаю что длина основания дуги равна какойто переменной! зная эти данные можно построить дугу указав количество точек - для плавной дуги или угловатой (если мало точек)!
Такие проги есть и такой алгоритм уже сделан, но мне его ни кто не скажет, поэтому сам до ганяю...

Автор: polosatij 12.7.2008, 13:42
ты не объяснил ещё как именно должна проходить дуга и какая она именна.. у неё могут быть разные степени вогнутости.. но.. и может быть, например, такой вариант:

user posted image

 smile

Добавлено через 1 минуту и 6 секунд


можно также взятъ не круг, а элипс  smile 

Автор: BOB4uK 12.7.2008, 15:05
Именно так и может быть! это определяется наверное от длины дуги, может поличиться вообще окружность с небольшой дыркой...

Автор: polosatij 12.7.2008, 15:25


ню, тогда всё просто  smile  теорема Пифагора, третий класс  smile  smile 

Автор: BOB4uK 13.7.2008, 07:00
Смутно помню третий класс! может ссылку дашь?
Почитал теоремку, но ничего такого чтобы подсказало решение не встретил!
Наведи на мысль...

Автор: polosatij 13.7.2008, 13:29


госпади.. длинна красным помечена - тебе известна.. делишь её пополам.. углубление тебе тоже известно.. составляешь уравнение.. 

х - это длинна. (известная величина)
w1 - высота верхнего треугольника (известная величина)
w2 - высота нижнего треугольника
r - радиус

r² = (х/2)² + w2²
r² = w1 + w2 => w2 = w1 - r²

подставляем в первое уравнение:

r² = (х/2)² + (w1 - r²)² // w1, x - известны, находишь радиус.. 

как только найдёшь радиус.. узнаешь где у круга находится центр.. а потом, считаешь точки удаления и рисуешь между ними линии.. чем больше точек возьмёшь, тем больше точность..  smile 

+1  smile 
 


Автор: SoWa 15.7.2008, 07:10
Не каждая дуга- часть окружности. А тут видимо случай, где дуга задается длинной основания и высотой. Если длинна основания маленькая, а высота большая(больше основания раз в 5), то точно это не часть окружности, а часть эллипса(ооочень приближеная к половине эллиппса)

Автор: BOB4uK 15.7.2008, 17:13
Я так и не понял как построить если известно только основание, длина дуги и кол-во точек для построения многоугольника...

Автор: polosatij 16.7.2008, 01:03


млин, вот ты буратинА  smile 
ладна.. не обижайся.. вот тебе ещё один рисунок:

user posted image

терь посмотри на мои формулы.. если не поймёшь, денег за код попрошу  smile 

Автор: SoWa 16.7.2008, 07:34
Та-да. А если такая все-же ситуация - учитываем коэффициенты эллипса.


Автор: polosatij 16.7.2008, 12:20
Цитата(SoWa @  16.7.2008,  07:34 Найти цитируемый пост)
Та-да. А если такая все-же ситуация - учитываем коэффициенты эллипса.


погодите его грузить, пусть он сначала с кругом разберётся  smile  smile 

Автор: BOB4uK 16.7.2008, 15:42
Я не понимаю как я могу узнать w1 и w2 если мне только известно L1 - длина дуги и L2 - длина основания?
http://ipicture.ru/

Автор: maxim1000 16.7.2008, 16:06
длина дуги L1=r*alpha (alpha - угол в радианах между радиусами, проведёнными к концам дуги)
L2=2*r*sin(alpha/2)

для удобства beta=alpha/2

тогда sin(beta)/beta=L2/L1
если я не ошибаюсь (хотя не уверен), аналитически такое не решается, можно использовать численные методы

Автор: BOB4uK 16.7.2008, 16:42
Может быть и такой вариант:
http://ipicture.ru/

Автор: BOB4uK 20.7.2008, 19:56
А что там упоминали про коэф-ты для эллипса?
Радиус нашел, центр окружности тоже (наверное)!
А по подробнее можно про "а потом, считаешь точки удаления"?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)