|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Andrew Doroshev 2:5020/400 12 Jan 2002 16:50:50 To : Sergei Shelukhin Subject : Re: помогите эхотажномy чайникy... --------------------------------------------------------------------------------
> SP> Я бы делал так. Расчитываем угол поворота, a = l/(pi*r*2)*2*pi, или
> SP> l/r. По углу составляем матрицу поворота. (cos a -sin a) (sin a
> SP> cos a) домножаем на нее наш вектор, и все.
> Очень неточный полyчается алгоpитм пpименительно к.
> Hа небольших pадиyсах полyчается что-то очень yгловатое, на больших менее
> заметно, но все же к пpимеpy пpи r=10000 отклонения от pадиyса где-то от -30
> до 200, каждый полный обоpот pадиyс сокpащается на 3 (кстати, длина дyги
> 3, стpанное совпадение). Пpи этом наличествоет абсолютно пpямой отpезок междy
> точками пpимеpно (-1700,10000) и (1700,10000).
Dear Sergei!
Глюки у Вас, страшные глюки.
Проверил в Maple7, для самого страшного случая r=100000, l=3,
n=209440(число маленьких дуг на окружности),относительная погрешность
после такого почти полного круга
при точночти 10 знаков delta=0.114857e-4,
при точночти 100 знаков delta=0.15057e-95.
Это всё для последовательного умножения координат очередной точки на
матрицу поворота.
Если тебе нужна большая точность, можно каждый раз брать новую матрицу -
((cos a,-sin a),(sin a,cos a)),
((cos 2a,-sin 2a),(sin 2a,cos 2a)),
...
правда здесь надо много вычислять синусов и косинусов, т.е. будет чуть
медленнее, если нужно получать координаты всех точек последовательно, и
намного быстрее, если нужны 1-я, 100-я и 2000-я точки.
Проверь ещё раз свои вычисления:
l r n a cos(a) sin(a)
3 10 20,94395102 0,3 0,955336489 0,295520207
Умножаем так:
x1=x*cos(a)-y*sin(a)
y1=x*sin(a)+y*cos(a)
П X Y
0 10 0
1 9,553364891 2,955202067
2 8,253356149 5,646424734
3 6,216099683 7,833269096
PS
А где Вы говорите сдали выcшую математику?
Andrew Doroshev
--- ifmail v.2.15dev5
* Origin: Demos online service (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/79237e5677fb.html, оценка из 5, голосов 10
|