Выпуклость (bulge) в зависимости от длины

Автор Тема: Выпуклость (bulge) в зависимости от длины  (Прочитано 8082 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Всем привет. Стыдно конечно такое спрашивать, но что поделать =)
Задача: имеется сегмент полилинии между двумя точками. Нужно установить выпуклость для этого сегмента равную 1/10 длины между точками:



Справка гласит, что
Цитировать
Выпуклость - это касательная 1/4 включенного угла для дуги между выбранной вершиной и следующей вершиной в списке вершин полилинии. Отрицательное значение пульса указывает, что дуга идет по часовой стрелке от выбранной вершины к следующей вершине. Выступ 0 указывает на прямой сегмент, а выпуклость 1 - полукруг.
Но у меня что-то никак не получается высчитать нужное значение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
bulge = (length/10)/(length/2) = 1/5. Если обход против часовой стрелки - с плюсом, если по часовой - с минусом.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Справка гласит, что
Цитировать

    Выпуклость - это касательная 1/4 включенного угла для дуги между выбранной вершиной и следующей вершиной в списке вершин полилинии. Отрицательное значение пульса указывает, что дуга идет по часовой стрелке от выбранной вершины к следующей вершине. Выступ 0 указывает на прямой сегмент, а выпуклость 1 - полукруг.
Это кто же так переводил с английского???
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
bulge = (length/10)/(length/2) = 1/5. Если обход против часовой стрелки - с плюсом, если по часовой - с минусом.
Неа. Не оно. Но методом тыка я получил нужный результат: bulge = ((lenght / 5) / lenght) * 4
Все равно спасибо за ответ. Я вчера слишком запарился и не подумал, что это отношение - это и есть тангенс ))

Это кто же так переводил с английского???
Google это переводил) Я просто не стал корректировать

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
« Последнее редактирование: 02-06-2017, 11:56:46 от Дмитрий Загорулькин »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Google это переводил) Я просто не стал корректировать
Ты из двух вариантов перевода, которые он предложил, выбрал самый бредовый.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
bulge = ((lenght / 5) / lenght) * 4
= 4/5.
Это практически полукруг должен получиться.

Оффлайн Алексей Терно

  • ADN Club
  • ****
  • Сообщений: 381
  • Карма: 33
    • C3D Extensions
  • Skype: alexeyterno
Неа. Не оно. Но методом тыка я получил нужный результат: bulge = ((lenght / 5) / lenght) * 4
Дима прав - формула Bulge = 2*H/D. Подставляя значения со скрина получается 1/5.

Оффлайн Алексей (IdeaSoft)

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
А у меня похожий вопрос на эту тему
Даны:
1) Полилиния из одного сегмента радиусом R = 1,
2) Длина дуги против центрального угла в 45 градусов соотв. L = 0.785
3) Длину хорды тоже знаю X = 0.765

Функция GetBulgeAt() мне вернула значение 0,198..

Как самому рассчитать это значение выпуклости?

Угол считать не хочу.
Хватит ли мне тех данных, которые известны (мне известны R, X, L)
 

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Хватит ли мне тех данных, которые известны (мне известны R, X, L)
Да. Должно хватить.
Если я ничего не перепутал, то в твоем случае:
Код - C# [Выбрать]
  1. double R = 1.0; // Радиус
  2. double L = 0.76536686; // Длина хорды
  3. double bulge = 2.0 * (R - Math.Sqrt((R*R - L*L/4.0)/L)); // Получилось 0.1989123660
Длина дуги даже лишняя.
« Последнее редактирование: 15-11-2018, 17:53:03 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение