|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Eugene Kilachkoff 2:5020/400 11 Jun 2003 10:10:14 To : Evgeny Goljakov Subject : Re: поворот мн-ва точек --------------------------------------------------------------------------------
Evgeny Goljakov пишет:
> Hеобходимо на плоскости повернуть мн-во точек, заданных X,Y
> относительно одной Xc,Yc ? (хоть на примере 1ой точки)
> Трудно с изучением математики в торопях, а код писать надо.
> Может есть 'изящные' методы без матриц? Help!
С матрицами удобнее.
X`= [M] X, где X - начальная точка, X` - искомая, M - матрица преобразования.
Берем, некоторую точку X(x,y,1) и вращаем относительно c(p,q,1).
1. Перетаскиваем c в начало координат.
[ 1 0 -p ]
T = [ 0 1 -q ]
[ 0 0 1 ]
2. Вращаем
[ c -s 0 ]
R = [ s c 0 ]
[ 0 0 1 ]
3. Перетаскиваем начало координат в точку c
[ 1 0 p ]
[T2] = [T]^-1 = [ 0 1 q ]
[ 0 0 1 ]
4. Итого:
[ c -s -cp+p+qs ]
[M] = [T2][R][T] = [ s c -cq-ps+q ]
[ 0 0 1 ]
Обрати внимание, что я исходил из того, что вектор записывается в столбец,
отсюда обратный порядок матриц. Т.е. получаем:
[ x` ] [ c -s -cp+p+qs ] [ x ]
[ y` ] = [ s c -cq-ps+q ] * [ y ]
[ 1 ] [ 0 0 1 ] [ 1 ]
или
x` = cx - sy - cp + p + qs
y` = sx + cy - cq - ps + q
Проще некуда.
ps. Hарод, учите математику, она рулез.
--
Evil around every corner. Careful not to step in any !
--- ifmail v.2.15dev5
* Origin: IAC Samara-Internet, Ltd. (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/1027778486939.html, оценка из 5, голосов 10
|