2017-01-22 26 views
0

Расчет для игр, поэтому аппроксимация лучше, чем вычислительный интенсивный правильный расчет. То, что мне нужно найти, - это радиус данной дуги.Вычислить радиус кривой/дуги, образованный отрезками (приблизительный)

В этом случае «кривая» может рассматриваться как дуга, так как это приближение достаточно хорошо. Таким образом, ситуация выглядит следующим образом:

enter image description here

Я знаю:

  1. длиной зеленые линии (которые равны)
  2. длина синих дуг
  3. в значение α в градусах

Что мне нужно знать:

  • радиус г

фона - На самом деле мне нужно радиус для двух вещей:

  1. Чтобы вычислить длину дуги B со смещением x от центральной дуги. Так что г о B будет r + x
  2. Для расчета центробежной силы в движение транспортного средства на этой кривой

Что я пробовал:

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

ответ

0

Если вы считаете треугольник с прямым углом в середине зеленой линии и другой точкой в ​​центре круга, то угол на пересечении зеленых сегментов в этом треугольнике α/2 и отношение косинуса для этого угла

cos(α/2)*r = g/2 

г длина зеленого сегмента.


Угол при вершине ломтиком пирога π-α так, что для длины b синих сегментов кривой вы должны получить

b = (π-α)*r 

Значения радиуса вы получаете от обеих формул не должны отличаться более чем ошибки измерения позволяют ожидать.

+0

Я пытаюсь следовать в данный момент. Итак, следуя вашей первой точке, я прав, что радиус должен быть «r = (g * 0,5)/cos (α/2)»? – Alex

+0

Да. Существует также метод регрессии, который преобразует уравнение окружности '(x [k] -cx)^2 + (y [k] -cy)^2 = r^2' в линейное уравнение' cx * x [k] + cy * y [k] + 0,5 * (r^2-cx^2-cy^2) = 0,5 * (x [k]^2 + y [k]^2) ', т. е.' a * x [k ] + b * y [k] + c = z [k] ', что может дать лучшие результаты, если даны несколько точек на круге или около него. – LutzL

+0

Это интересно. На самом деле моя дуга не дуга, но, как я сказал, кривая. В моем случае α было бы средним для разных углов, потому что это упрощение будет, как я считаю, достаточно хорошим, поскольку отдельные шаги будут малы по сравнению с общей кривизной. Меня может контролировать «разрешение» или длина зеленого сегмента. – Alex

0

В качестве альтернативы можно использовать Catmull-Rom (https://en.wikipedia.org/wiki/Centripetal_Catmull%E2%80%93Rom_spline), Эрмита (https://en.wikipedia.org/wiki/Cubic_Hermite_spline), или естественное (https://en.wikipedia.org/wiki/Spline_interpolation) кубический сплайн-интерполяции для вычисления пути между точками.

Это даст вам кубические полиномы для координат (x, y), и легко получить их 2-е производные, чтобы получить направление и величину ускорения.

+0

На самом деле я использую нереальные версии Spline в качестве основного строительного блока. Я определенно посмотрю, как и если я могу включить ваши подсказки. Моя цель состоит в том, чтобы рассчитать, насколько больше/меньше расстояние, если это смещение 'x' от сплайна. Расчет центробежной силы - это то, что я думаю, что получу «бесплатно», если я знаю угол. – Alex