Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как построить дугу, ... зня только две точки и длину дуги 
V
    Опции темы
BOB4uK
  Дата 21.7.2008, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 28.2.2004

Репутация: нет
Всего: нет



Хелп!
Есть задачка над которой ломаю голову целый месяц!
Надо построить дугу любой степени вогнутости!
Дается две точки(начало и конец дуги) и длина дуги, большая длины отрезка(кот образуют две точки)!

Если длина дуги большая то может получиться пости круг.
Если возможно то как сделать дугу не через окружность а через эллипс?
PM MAIL ICQ   Вверх
xamloru
Дата 21.7.2008, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 2.8.2007

Репутация: нет
Всего: нет



Методом деления пополам, точно можно найти наибольшее соответствие, чтобы точное соответствие, пока не знаю
PM MAIL   Вверх
BOB4uK
Дата 21.7.2008, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 28.2.2004

Репутация: нет
Всего: нет



смутно представляю себе этот метод если честно!
PM MAIL ICQ   Вверх
xamloru
Дата 21.7.2008, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 2.8.2007

Репутация: нет
Всего: нет



значит так, нужно чтобы была написана функция, которая через две точки проводит дугу определенного радиуса, и считает ее длину. задача вполне решимая. далее мы меняем радиус, не очень большой(дуга получиться большая), и большой(дуга будет маленькая). далее делим к примеру большой радиус пополам, и сравниваем длину дуги с заданной, если она меньше, то радиус увеличиваем, если больше то уменьшаем(опять же делением пополам).
таким образом мы можем найти приближение с заданной точностью.

Это сообщение отредактировал(а) xamloru - 21.7.2008, 14:30
PM MAIL   Вверх
BOB4uK
Дата 21.7.2008, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 28.2.2004

Репутация: нет
Всего: нет



вот пример того что должно получиться если длина дуги большая
user posted image
PM MAIL ICQ   Вверх
xamloru
Дата 21.7.2008, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 2.8.2007

Репутация: нет
Всего: нет



не опубликовалась твоя картинка
PM MAIL   Вверх
BOB4uK
Дата 22.7.2008, 06:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 28.2.2004

Репутация: нет
Всего: нет



это сервер ipicture вчера тупил... картинка есть!
PM MAIL ICQ   Вверх
Dobermann
Дата 22.7.2008, 06:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: нет
Всего: 0



Цитата(BOB4uK @  21.7.2008,  16:51 Найти цитируемый пост)
вот пример того что должно получиться если длина дуги большая

Представь тогда, что получится из элипса...
PM   Вверх
BOB4uK
Дата 22.7.2008, 07:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 28.2.2004

Репутация: нет
Всего: нет



вот что с элипсом должно получиться...
user posted image
PM MAIL ICQ   Вверх
de_Nis
Дата 22.7.2008, 10:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старательный
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 19.10.2006
Где: Молдова

Репутация: нет
Всего: 6



Дано: координаты двух точек, длина дуги.
Обозначим точки буквами А и Б, длину дуги ДД.
Представим, что АБ - диаметр искомой окружности. Тогда дуга, ограниченная этими точками, должна быть равна половине длины окружности диаметром АВ. Вычисляем и сравниваем с заданным размером дуги. Если вычисленное значение БОЛЬШЕ заданного - это не наш случай. А вот если МЕНЬШЕ заданного значения длины дуги ДД - продолжаем расчет.
Обозначим центральный угол (меньший из углов, образованных радиусами, проведенными из точек А и Б) буквой а (в градусах), радиус искомой окружности R.
Длина отрезка АВ известна (так как известны координаты точек А и Б). С другой стороны,
это хорда, стягивающая угол а в нашей окружности. Длина хорды равна 2*R*Sin(а/2)=АВ
Длина дуги, равная ДД, равна Pi*R*(360-a)/180 = ДД.
Получается система двух уравнений с двумя неизвестными (радиус R и центральный угол а):

2*R*Sin(а/2)=АВ
Pi*R*(360-a)/180 = ДД

после решения которой можно определить радиус искомой окружности.   

Это сообщение отредактировал(а) de_Nis - 22.7.2008, 10:37
--------------------
Несчастлив не тот, у кого ничего нет, а тот, кто ничего не хочет…
PM   Вверх
Dobermann
Дата 22.7.2008, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: нет
Всего: 0



Цитата(BOB4uK @  22.7.2008,  07:52 Найти цитируемый пост)
вот что с элипсом должно получиться...

Да, но ты хорошо выбрал часть!!! А если по нижней хорде?!?!?! 
PM   Вверх
de_Nis
Дата 22.7.2008, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старательный
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 19.10.2006
Где: Молдова

Репутация: нет
Всего: 6



Когда я написал "... Если вычисленное значение БОЛЬШЕ заданного - это не наш случай...", я имел в виду, что в этом случае вид дуги не соответствует рисунку BOB4uKа
--------------------
Несчастлив не тот, у кого ничего нет, а тот, кто ничего не хочет…
PM   Вверх
BOB4uK
Дата 22.7.2008, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 28.2.2004

Репутация: нет
Всего: нет



Да уж! я скланяюсь к тому что в случае с эллипсом дугу не построить, знаний маловато!
А вот с окружностью можно покумекать!

Добавлено через 8 минут и 30 секунд
мне щас интересно как можно узнать высоту зная только длину дуги и отрезок?
user posted image


и как можно узнать длину дуги зная только высоту и длину отрезка?
user posted image
PM MAIL ICQ   Вверх
BOB4uK
Дата 22.7.2008, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 28.2.2004

Репутация: нет
Всего: нет



Вроди методом тыка нашел формулы как найти одно из другого! Прошу оценки и вероятности сбоя!
h=(sqrt((L2/2)*(L2/2)-(L1/2)*(L1/2)))/1.11, где 1,11 это 11% разницы между половиной дуги и высотой!
L2=sqrt(h*h+(L1/2)*(L1/2)); L2=L2+L2*0.11; L2=L2*2;
PM MAIL ICQ   Вверх
Dobermann
Дата 22.7.2008, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: нет
Всего: 0



Цитата(BOB4uK @  22.7.2008,  15:08 Найти цитируемый пост)
 где 1,11 это 11% разницы между половиной дуги и высотой!

А вот здесь не понятно...
PM   Вверх
BOB4uK
Дата 22.7.2008, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 28.2.2004

Репутация: нет
Всего: нет



вот смотри дуга 314, пол дуги 157, а высота в нашем примере извесна 100! следовательно а=100(L1/2=100? L1=200), b=100 - высота -> c=141
141*0,11+141=157, чтобы найти 141 мы 157/1,11!
PM MAIL ICQ   Вверх
4d5a
Дата 22.7.2008, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 10.6.2007

Репутация: 1
Всего: 1



de_Nis,
Цитата

Получается система двух уравнений с двумя неизвестными


только вот эта система не имеет аналитического решения (по крайней мере я его не знаю)

А в радианах там проще считать :
 
 | AB=2*R*sin(a/2)
{
 | LL=R*a

(где LL есть ДД
  a-угол [рад]
  AB-хорда )

после подстановки

 AB=2*R*sin( LL/(2*R) )

А это вид a/x=Sin b/x, только численно!

конечно его можно решить методом хорд или деления пополам, но думаю вначале эту функцию нужно проинтерполировать какой нибудь более простой для вычислений, например полиномом, а затем уже искать корни. (возможно это уменьшит вычислительные затраты ?)

ЗЫ кстати вот здесь формулы по элементарной геометрии, кому надо )
http://www.bymath.net/studyguide/geo/sec/geo10.htm
http://calc.ru/105.html

PM MAIL   Вверх
BOB4uK
Дата 23.7.2008, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 28.2.2004

Репутация: нет
Всего: нет



Я нашел формулу для нахождения длины дуги зная высоту и радиус! одну часть задачи решил спасибо 4d5a за ссылку!
Вот осталось найти высоту по длине дуги и хорде! то что я писал с 0,11 не катит! при малой дуге не срабатывает!
У кого каке мысли по этому поводу?
PM MAIL ICQ   Вверх
BOB4uK
Дата 23.7.2008, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 28.2.2004

Репутация: нет
Всего: нет



Я нашел формулу для нахождения длины дуги зная высоту и радиус! одну часть задачи решил спасибо 4d5a за ссылку!
Вот осталось найти высоту по длине дуги и хорде! то что я писал с 0,11 не катит! при малой дуге не срабатывает!
У кого каке мысли по этому поводу?
PM MAIL ICQ   Вверх
de_Nis
Дата 23.7.2008, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Старательный
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 19.10.2006
Где: Молдова

Репутация: нет
Всего: 6



Длина дуги (приблизительно) = квадратный корень из (хорда в квадрате +5,3333... *высота в квадрате), отсюда можно найти высоту
( Анурьев, Справочник конструктора - машиностроителя, т.1)

Это сообщение отредактировал(а) de_Nis - 23.7.2008, 12:26
--------------------
Несчастлив не тот, у кого ничего нет, а тот, кто ничего не хочет…
PM   Вверх
BOB4uK
Дата 23.7.2008, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 28.2.2004

Репутация: нет
Всего: нет



Цитата(de_Nis @ 23.7.2008,  12:26)
Длина дуги (приблизительно) = квадратный корень из (хорда в квадрате +5,3333... *высота в квадрате), отсюда можно найти высоту
( Анурьев, Справочник конструктора - машиностроителя, т.1)

Спасибо большое! Точность на много больше чем у меня  smile 
Я думаю тему можно считать закрытой!

Всем спасибо за помощь!
PM MAIL ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0869 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.