|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Alex Astafiev 2:5000/228.16 09 Feb 2002 15:58:19 To : Sergei Shelukhin Subject : таки вpащение -------------------------------------------------------------------------------- SV>> Hо поскольку за микросекунду выполняется 200-1000 тактов, то IMHO SV>> не стоит экономить на синусах. SS> Пpоблема в том, что если для 1 слyчая считается 2 синyса и 2 косинyса, SS> а слyчаев в системе около 50(+-30), а систем 100-150, и надо посчитать SS> все это быстpо ;) First demomaking rule - avoid computations whenever it possible. ==== Begin of raidermtx.txt ==== ------12 умножений на поворорт------- x x' = x*cos(A) + y*sin(A) y' = x*sin(A) - y*cos(A) y x'' = x'*cos(B) + z*sin(B) z' = x'*sin(B) - z*cos(B) z y'' = y'*cos(C) + z'*sin(C) z'' = y'*sin(C) - z'*cos(C) - ---9 умножений на поворот--------- x'' = x * [cos(A)cos(B)] + + y * [sin(A)cos(B)] + + z * [sin(B)] y'' = x * [sin(A)cos(C) + cos(A)sin(B)sin(C)] + + y * [-cos(A)cos(C) + sin(A)sin(B)sin(C)] + + z * [-cos(B)sin(C)] z'' = x * [sin(A)sin(C) - cos(A)sin(B)cos(C)] + + y * [-cos(A)sin(C) - sin(A)sin(B)cos(C)] + + z * [cos(B)cos(C)] xx = [cos(A)cos(B)] xy = [sin(A)cos(B)] xz = [sin(B)] yx = [sin(A)cos(C) + cos(A)sin(B)sin(C)] yy = [-cos(A)cos(C) + sin(A)sin(B)sin(C)] yz = [-cos(B)sin(C)] zx = [sin(A)sin(C) - cos(A)sin(B)cos(C)] zy = [-cos(A)sin(C) - sin(A)sin(B)cos(C)] zz = [cos(B)cos(C)] x'' = x * xx + y * xy + z * xz y'' = x * yx + y * yy + z * yz z'' = x * zx + y * zy + z * zz ----6 умножений на поворот------- (a+y)(b+x) = ab + ax + by + xy = ax + by = (a+y)(b+x) - (ab + xy), ax + by + cz = (a+y)(b+x) + cz - (ab + xy) => x' = (xx + y)(xy + x) + z*zx - (xx*xy + x*y) y' = (yx + y)(yy + x) + z*yx - (yx*yy + x*y) z' = (zx + y)(zy + x) + z*zx - (zx*zy + x*y) но x*y = constant для обьекта. xx_xy = xx*xy yx_yy = yx*yy zx_zy = zx*zy => x' = (xx + y)(xy + x) + z*xz - (xx_xy + x_y) y' = (yx + y)(yy + x) + z*yz - (yx_yy + x_y) z' = (zx + y)(zy + x) + z*zz - (zx_zy + x_y) ------------------------------------ ==== End of raidermtx.txt ==== --- Alex Raider / Flash inc. * Origin: Alex Raider/ Flash inc. 1992-2002 (2:5000/228.16) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/174643c653995.html, оценка из 5, голосов 10
|