nuran
08.12.2003, 07:20
В принципи, ничего сверхестественного...
/*
#################################################################################
-- © 08.12.2003 Grigory A. Ryabov | nuramedia@mail.ru | http://www.flash.plux.ru
-- Vector 2D, 3D, 4D methods.
#################################################################################
00. vector
01. copy
02. set
03. addition
04. get_addition
05. subtraction
06. get_subtraction
07. vector_addition
08. get_vector_addition
09. vector_subtraction
10. get_vector_subtraction
11. multiply
12. get_multiply
13. multiplication
14. get_multiplication
15. scale
16. get_scale
17. vector_multiplication
18. get_vector_multiplication
19. dot_product
20. cross_product
21. projection
22. length
23. angle
24. negate
25. norm
26. normalize
27. normal
28. normal_from_two_points
*/
/* 00 ------------------------------------------------------------------------- */
function vector2d(__x, __y) {
/* */
return [arguments[0], arguments[1]];
}
function vector3d(__x, __y, __z) {
/* */
return [arguments[0], arguments[1], arguments[2]];
}
function vector4d(__x, __y, __z, __w) {
/* */
return [arguments[0], arguments[1], arguments[2], arguments[3]];
}
/* 01 ------------------------------------------------------------------------- */
function vector2d_copy(__vector2d, __0__vector2d) {
/* */
arguments[0][0] = arguments[1][0];
arguments[0][1] = arguments[1][1];
}
function vector3d_copy(__vector3d, __0__vector3d) {
/* */
arguments[0][0] = arguments[1][0];
arguments[0][1] = arguments[1][1];
arguments[0][2] = arguments[1][2];
}
function vector4d_copy(__vector4d, __0__vector4d) {
/* */
arguments[0][0] = arguments[1][0];
arguments[0][1] = arguments[1][1];
arguments[0][2] = arguments[1][2];
arguments[0][3] = arguments[1][3];
}
/* 02 ------------------------------------------------------------------------- */
function vector2d_set(__vector2d, __x, __y) {
/* */
arguments[0][0] = arguments[1];
arguments[0][1] = arguments[2];
}
function vector3d_set(__vector3d, __x, __y, __z) {
/* */
arguments[0][0] = arguments[1];
arguments[0][1] = arguments[2];
arguments[0][2] = arguments[3];
}
function vector4d_set(__vector4d, __x, __y, __z, __w) {
/* */
arguments[0][0] = arguments[1];
arguments[0][1] = arguments[2];
arguments[0][2] = arguments[3];
arguments[0][3] = arguments[4];
}
/* 03 ------------------------------------------------------------------------- */
function vector2d_addition(__vector2d, __tx, __ty) {
/* */
arguments[0][0] += arguments[1];
arguments[0][1] += arguments[2];
}
function vector3d_addition(__vector3d, __tx, __ty, __tz) {
/* */
arguments[0][0] += arguments[1];
arguments[0][1] += arguments[2];
arguments[0][2] += arguments[3];
}
function vector4d_addition(__vector4d, __tx, __ty, __tz, __tw) {
/* */
arguments[0][0] += arguments[1];
arguments[0][1] += arguments[2];
arguments[0][2] += arguments[3];
arguments[0][3] += arguments[4];
}
/* 04 ------------------------------------------------------------------------- */
function vector2d_get_addition(__vector2d, __tx, __ty) {
/* */
return [arguments[0][0]+arguments[1], arguments[0][1]+arguments[2]];
}
function vector3d_get_addition(__vector3d, __tx, __ty, __tz) {
/* */
return [arguments[0][0]+arguments[1], arguments[0][1]+arguments[2], arguments[0][2]+arguments[3]];
}
function vector4d_get_addition(__vector4d, __tx, __ty, __tz, __tw) {
/* */
return [arguments[0][0]+arguments[1], arguments[0][1]+arguments[2], arguments[0][2]+arguments[3], arguments[0][3]+arguments[4]];
}
/* 05 ------------------------------------------------------------------------- */
function vector2d_subtraction(__vector2d, __tx, __ty) {
/* */
arguments[0][0] -= arguments[1];
arguments[0][1] -= arguments[2];
}
function vector3d_subtraction(__vector3d, __tx, __ty, __tz) {
/* */
arguments[0][0] -= arguments[1];
arguments[0][1] -= arguments[2];
arguments[0][2] -= arguments[3];
}
function vector4d_subtraction(__vector4d, __tx, __ty, __tz, __tw) {
/* */
arguments[0][0] -= arguments[1];
arguments[0][1] -= arguments[2];
arguments[0][2] -= arguments[3];
arguments[0][3] -= arguments[4];
}
/* 06 ------------------------------------------------------------------------- */
function vector2d_get_subtraction(__vector2d, __tx, __ty) {
/* */
return [arguments[0][0]-arguments[1], arguments[0][1]-arguments[2]];
}
function vector3d_get_subtraction(__vector3d, __tx, __ty, __tz) {
/* */
return [arguments[0][0]-arguments[1], arguments[0][1]-arguments[2], arguments[0][2]-arguments[3]];
}
function vector4d_get_subtraction(__vector4d, __tx, __ty, __tz, __tw) {
/* */
return [arguments[0][0]-arguments[1], arguments[0][1]-arguments[2], arguments[0][2]-arguments[3], arguments[0][3]-arguments[4]];
}
/* 07 ------------------------------------------------------------------------- */
function vector2d_vector_addition(__vector2d, __0__vector2d) {
/* */
arguments[0][0] += arguments[1][0];
arguments[0][1] += arguments[1][1];
}
function vector3d_vector_addition(__vector3d, __0__vector3d) {
/* */
arguments[0][0] += arguments[1][0];
arguments[0][1] += arguments[1][1];
arguments[0][2] += arguments[1][2];
}
function vector4d_vector_addition(__vector4d, __0__vector4d) {
/* */
arguments[0][0] += arguments[1][0];
arguments[0][1] += arguments[1][1];
arguments[0][2] += arguments[1][2];
arguments[0][3] += arguments[1][3];
}
/* 08 ------------------------------------------------------------------------- */
function vector2d_vector_get_addition(__vector2d, __0__vector2d) {
/* */
return [arguments[0][0]+arguments[1][0], arguments[0][1]+arguments[1][1]];
}
function vector3d_vector_get_addition(__vector3d, __0__vector3d) {
/* */
return [arguments[0][0]+arguments[1][0], arguments[0][1]+arguments[1][1], arguments[0][2]+arguments[1][2]];
}
function vector4d_vector_get_addition(__vector4d, __0__vector4d) {
/* */
return [arguments[0][0]+arguments[1][0], arguments[0][1]+arguments[1][1], arguments[0][2]+arguments[1][2], arguments[0][3]+arguments[1][3]];
}
/* 09 ------------------------------------------------------------------------- */
function vector2d_vector_subtraction(__vector2d, __0__vector2d) {
/* */
arguments[0][0] -= arguments[1][0];
arguments[0][1] -= arguments[1][1];
}
function vector3d_vector_subtraction(__vector3d, __0__vector3d) {
/* */
arguments[0][0] -= arguments[1][0];
arguments[0][1] -= arguments[1][1];
arguments[0][2] -= arguments[1][2];
}
function vector4d_vector_subtraction(__vector4d, __0__vector4d) {
/* */
arguments[0][0] -= arguments[1][0];
arguments[0][1] -= arguments[1][1];
arguments[0][2] -= arguments[1][2];
arguments[0][3] -= arguments[1][3];
}
/* 10 ------------------------------------------------------------------------- */
function vector2d_get_vector_subtraction(__vector2d, __0__vector2d) {
/* */
return [arguments[0][0]-arguments[1][0], arguments[0][1]-arguments[1][1]];
}
function vector3d_get_vector_subtraction(__vector3d, __0__vector3d) {
/* */
return [arguments[0][0]-arguments[1][0], arguments[0][1]-arguments[1][1], arguments[0][2]-arguments[1][2]];
}
function vector4d_get_vector_subtraction(__vector4d, __0__vector4d) {
/* */
return [arguments[0][0]-arguments[1][0], arguments[0][1]-arguments[1][1], arguments[0][2]-arguments[1][2], arguments[0][3]-arguments[1][3]];
}
/* 11 ------------------------------------------------------------------------- */
function vector2d_multiply(__vector2d, __0__vector2d, __1__vector2d) {
/* */
arguments[0][0] = arguments[1][0]*arguments[2][0];
arguments[0][1] = arguments[1][1]*arguments[2][1];
}
function vector3d_multiply(__vector3d, __0__vector3d, __1__vector3d) {
/* */
arguments[0][0] = arguments[1][0]*arguments[2][0];
arguments[0][1] = arguments[1][1]*arguments[2][1];
arguments[0][2] = arguments[1][2]*arguments[2][2];
}
function vector4d_multiply(__vector4d, __0__vector4d, __1__vector4d) {
/* */
arguments[0][0] = arguments[1][0]*arguments[2][0];
arguments[0][1] = arguments[1][1]*arguments[2][1];
arguments[0][2] = arguments[1][2]*arguments[2][2];
arguments[0][3] = arguments[1][3]*arguments[2][3];
}
/* 12 ------------------------------------------------------------------------- */
function vector2d_get_multiply(__vector2d, __0__vector2d) {
/* */
return [arguments[0][0]*arguments[1][0], arguments[0][1]*arguments[1][1]];
}
function vector3d_get_multiply(__vector3d, __0__vector3d) {
/* */
return [arguments[0][0]*arguments[1][0], arguments[0][1]*arguments[1][1], arguments[0][2]*arguments[1][2]];
}
function vector4d_get_multiply(__vector4d, __0__vector4d) {
/* */
return [arguments[0][0]*arguments[1][0], arguments[0][1]*arguments[1][1], arguments[0][2]*arguments[1][2], arguments[0][3]*arguments[1][3]];
}
/* 13 ------------------------------------------------------------------------- */
function vector2d_multiplication(__vector2d, __sx, __sy) {
/* */
arguments[0][0] *= arguments[1];
arguments[0][1] *= arguments[2];
}
function vector3d_multiplication(__vector3d, __sx, __sy, __sz) {
/* */
arguments[0][0] *= arguments[1];
arguments[0][1] *= arguments[2];
arguments[0][2] *= arguments[3];
}
function vector4d_multiplication(__vector4d, __sx, __sy, __sz, __sw) {
/* */
arguments[0][0] *= arguments[1];
arguments[0][1] *= arguments[2];
arguments[0][2] *= arguments[3];
arguments[0][3] *= arguments[4];
}
/*
#################################################################################
-- © 08.12.2003 Grigory A. Ryabov | nuramedia@mail.ru | http://www.flash.plux.ru
-- Vector 2D, 3D, 4D methods.
#################################################################################
00. vector
01. copy
02. set
03. addition
04. get_addition
05. subtraction
06. get_subtraction
07. vector_addition
08. get_vector_addition
09. vector_subtraction
10. get_vector_subtraction
11. multiply
12. get_multiply
13. multiplication
14. get_multiplication
15. scale
16. get_scale
17. vector_multiplication
18. get_vector_multiplication
19. dot_product
20. cross_product
21. projection
22. length
23. angle
24. negate
25. norm
26. normalize
27. normal
28. normal_from_two_points
*/
/* 00 ------------------------------------------------------------------------- */
function vector2d(__x, __y) {
/* */
return [arguments[0], arguments[1]];
}
function vector3d(__x, __y, __z) {
/* */
return [arguments[0], arguments[1], arguments[2]];
}
function vector4d(__x, __y, __z, __w) {
/* */
return [arguments[0], arguments[1], arguments[2], arguments[3]];
}
/* 01 ------------------------------------------------------------------------- */
function vector2d_copy(__vector2d, __0__vector2d) {
/* */
arguments[0][0] = arguments[1][0];
arguments[0][1] = arguments[1][1];
}
function vector3d_copy(__vector3d, __0__vector3d) {
/* */
arguments[0][0] = arguments[1][0];
arguments[0][1] = arguments[1][1];
arguments[0][2] = arguments[1][2];
}
function vector4d_copy(__vector4d, __0__vector4d) {
/* */
arguments[0][0] = arguments[1][0];
arguments[0][1] = arguments[1][1];
arguments[0][2] = arguments[1][2];
arguments[0][3] = arguments[1][3];
}
/* 02 ------------------------------------------------------------------------- */
function vector2d_set(__vector2d, __x, __y) {
/* */
arguments[0][0] = arguments[1];
arguments[0][1] = arguments[2];
}
function vector3d_set(__vector3d, __x, __y, __z) {
/* */
arguments[0][0] = arguments[1];
arguments[0][1] = arguments[2];
arguments[0][2] = arguments[3];
}
function vector4d_set(__vector4d, __x, __y, __z, __w) {
/* */
arguments[0][0] = arguments[1];
arguments[0][1] = arguments[2];
arguments[0][2] = arguments[3];
arguments[0][3] = arguments[4];
}
/* 03 ------------------------------------------------------------------------- */
function vector2d_addition(__vector2d, __tx, __ty) {
/* */
arguments[0][0] += arguments[1];
arguments[0][1] += arguments[2];
}
function vector3d_addition(__vector3d, __tx, __ty, __tz) {
/* */
arguments[0][0] += arguments[1];
arguments[0][1] += arguments[2];
arguments[0][2] += arguments[3];
}
function vector4d_addition(__vector4d, __tx, __ty, __tz, __tw) {
/* */
arguments[0][0] += arguments[1];
arguments[0][1] += arguments[2];
arguments[0][2] += arguments[3];
arguments[0][3] += arguments[4];
}
/* 04 ------------------------------------------------------------------------- */
function vector2d_get_addition(__vector2d, __tx, __ty) {
/* */
return [arguments[0][0]+arguments[1], arguments[0][1]+arguments[2]];
}
function vector3d_get_addition(__vector3d, __tx, __ty, __tz) {
/* */
return [arguments[0][0]+arguments[1], arguments[0][1]+arguments[2], arguments[0][2]+arguments[3]];
}
function vector4d_get_addition(__vector4d, __tx, __ty, __tz, __tw) {
/* */
return [arguments[0][0]+arguments[1], arguments[0][1]+arguments[2], arguments[0][2]+arguments[3], arguments[0][3]+arguments[4]];
}
/* 05 ------------------------------------------------------------------------- */
function vector2d_subtraction(__vector2d, __tx, __ty) {
/* */
arguments[0][0] -= arguments[1];
arguments[0][1] -= arguments[2];
}
function vector3d_subtraction(__vector3d, __tx, __ty, __tz) {
/* */
arguments[0][0] -= arguments[1];
arguments[0][1] -= arguments[2];
arguments[0][2] -= arguments[3];
}
function vector4d_subtraction(__vector4d, __tx, __ty, __tz, __tw) {
/* */
arguments[0][0] -= arguments[1];
arguments[0][1] -= arguments[2];
arguments[0][2] -= arguments[3];
arguments[0][3] -= arguments[4];
}
/* 06 ------------------------------------------------------------------------- */
function vector2d_get_subtraction(__vector2d, __tx, __ty) {
/* */
return [arguments[0][0]-arguments[1], arguments[0][1]-arguments[2]];
}
function vector3d_get_subtraction(__vector3d, __tx, __ty, __tz) {
/* */
return [arguments[0][0]-arguments[1], arguments[0][1]-arguments[2], arguments[0][2]-arguments[3]];
}
function vector4d_get_subtraction(__vector4d, __tx, __ty, __tz, __tw) {
/* */
return [arguments[0][0]-arguments[1], arguments[0][1]-arguments[2], arguments[0][2]-arguments[3], arguments[0][3]-arguments[4]];
}
/* 07 ------------------------------------------------------------------------- */
function vector2d_vector_addition(__vector2d, __0__vector2d) {
/* */
arguments[0][0] += arguments[1][0];
arguments[0][1] += arguments[1][1];
}
function vector3d_vector_addition(__vector3d, __0__vector3d) {
/* */
arguments[0][0] += arguments[1][0];
arguments[0][1] += arguments[1][1];
arguments[0][2] += arguments[1][2];
}
function vector4d_vector_addition(__vector4d, __0__vector4d) {
/* */
arguments[0][0] += arguments[1][0];
arguments[0][1] += arguments[1][1];
arguments[0][2] += arguments[1][2];
arguments[0][3] += arguments[1][3];
}
/* 08 ------------------------------------------------------------------------- */
function vector2d_vector_get_addition(__vector2d, __0__vector2d) {
/* */
return [arguments[0][0]+arguments[1][0], arguments[0][1]+arguments[1][1]];
}
function vector3d_vector_get_addition(__vector3d, __0__vector3d) {
/* */
return [arguments[0][0]+arguments[1][0], arguments[0][1]+arguments[1][1], arguments[0][2]+arguments[1][2]];
}
function vector4d_vector_get_addition(__vector4d, __0__vector4d) {
/* */
return [arguments[0][0]+arguments[1][0], arguments[0][1]+arguments[1][1], arguments[0][2]+arguments[1][2], arguments[0][3]+arguments[1][3]];
}
/* 09 ------------------------------------------------------------------------- */
function vector2d_vector_subtraction(__vector2d, __0__vector2d) {
/* */
arguments[0][0] -= arguments[1][0];
arguments[0][1] -= arguments[1][1];
}
function vector3d_vector_subtraction(__vector3d, __0__vector3d) {
/* */
arguments[0][0] -= arguments[1][0];
arguments[0][1] -= arguments[1][1];
arguments[0][2] -= arguments[1][2];
}
function vector4d_vector_subtraction(__vector4d, __0__vector4d) {
/* */
arguments[0][0] -= arguments[1][0];
arguments[0][1] -= arguments[1][1];
arguments[0][2] -= arguments[1][2];
arguments[0][3] -= arguments[1][3];
}
/* 10 ------------------------------------------------------------------------- */
function vector2d_get_vector_subtraction(__vector2d, __0__vector2d) {
/* */
return [arguments[0][0]-arguments[1][0], arguments[0][1]-arguments[1][1]];
}
function vector3d_get_vector_subtraction(__vector3d, __0__vector3d) {
/* */
return [arguments[0][0]-arguments[1][0], arguments[0][1]-arguments[1][1], arguments[0][2]-arguments[1][2]];
}
function vector4d_get_vector_subtraction(__vector4d, __0__vector4d) {
/* */
return [arguments[0][0]-arguments[1][0], arguments[0][1]-arguments[1][1], arguments[0][2]-arguments[1][2], arguments[0][3]-arguments[1][3]];
}
/* 11 ------------------------------------------------------------------------- */
function vector2d_multiply(__vector2d, __0__vector2d, __1__vector2d) {
/* */
arguments[0][0] = arguments[1][0]*arguments[2][0];
arguments[0][1] = arguments[1][1]*arguments[2][1];
}
function vector3d_multiply(__vector3d, __0__vector3d, __1__vector3d) {
/* */
arguments[0][0] = arguments[1][0]*arguments[2][0];
arguments[0][1] = arguments[1][1]*arguments[2][1];
arguments[0][2] = arguments[1][2]*arguments[2][2];
}
function vector4d_multiply(__vector4d, __0__vector4d, __1__vector4d) {
/* */
arguments[0][0] = arguments[1][0]*arguments[2][0];
arguments[0][1] = arguments[1][1]*arguments[2][1];
arguments[0][2] = arguments[1][2]*arguments[2][2];
arguments[0][3] = arguments[1][3]*arguments[2][3];
}
/* 12 ------------------------------------------------------------------------- */
function vector2d_get_multiply(__vector2d, __0__vector2d) {
/* */
return [arguments[0][0]*arguments[1][0], arguments[0][1]*arguments[1][1]];
}
function vector3d_get_multiply(__vector3d, __0__vector3d) {
/* */
return [arguments[0][0]*arguments[1][0], arguments[0][1]*arguments[1][1], arguments[0][2]*arguments[1][2]];
}
function vector4d_get_multiply(__vector4d, __0__vector4d) {
/* */
return [arguments[0][0]*arguments[1][0], arguments[0][1]*arguments[1][1], arguments[0][2]*arguments[1][2], arguments[0][3]*arguments[1][3]];
}
/* 13 ------------------------------------------------------------------------- */
function vector2d_multiplication(__vector2d, __sx, __sy) {
/* */
arguments[0][0] *= arguments[1];
arguments[0][1] *= arguments[2];
}
function vector3d_multiplication(__vector3d, __sx, __sy, __sz) {
/* */
arguments[0][0] *= arguments[1];
arguments[0][1] *= arguments[2];
arguments[0][2] *= arguments[3];
}
function vector4d_multiplication(__vector4d, __sx, __sy, __sz, __sw) {
/* */
arguments[0][0] *= arguments[1];
arguments[0][1] *= arguments[2];
arguments[0][2] *= arguments[3];
arguments[0][3] *= arguments[4];
}