PDA

Просмотр полной версии : Зачекайте методы для класса Vector


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];
}

nuran
08.12.2003, 07:23
/* 14 ------------------------------------------------------------------------- */
function vector2d_get_multiplication(__vector2d, __sx, __sy) {
/* */
return [arguments[0][0]*arguments[1], arguments[0][1]*arguments[2]];
}
function vector3d_get_multiplication(__vector3d, __sx, __sy, __sz) {
/* */
return [arguments[0][0]*arguments[1], arguments[0][1]*arguments[2], arguments[0][2]*arguments[3]];
}
function vector4d_get_multiplication(__vector4d, __sx, __sy, __sz, __sw) {
/* */
return [arguments[0][0]*arguments[1], arguments[0][1]*arguments[2], arguments[0][2]*arguments[3], arguments[0][3]*arguments[4]];
}
/* 15 ------------------------------------------------------------------------- */
function vector2d_scale(__vector2d, __scalar) {
/* */
arguments[0][0] *= arguments[1];
arguments[0][1] *= arguments[1];
}
function vector3d_scale(__vector3d, __scalar) {
/* */
arguments[0][0] *= arguments[1];
arguments[0][1] *= arguments[1];
arguments[0][2] *= arguments[1];
}
function vector4d_scale(__vector4d, __scalar) {
/* */
arguments[0][0] *= arguments[1];
arguments[0][1] *= arguments[1];
arguments[0][2] *= arguments[1];
arguments[0][3] *= arguments[1];
}
/* 16 ------------------------------------------------------------------------- */
function vector2d_get_scale(__vector2d, __scalar) {
/* */
return [arguments[0][0]*arguments[1], arguments[0][1]*arguments[1]];
}
function vector3d_get_scale(__vector3d, __scalar) {
/* */
return [arguments[0][0]*arguments[1], arguments[0][1]*arguments[1], arguments[0][2]*arguments[1]];
}
function vector4d_get_scale(__vector4d, __scalar) {
/* */
return [arguments[0][0]*arguments[1], arguments[0][1]*arguments[1], arguments[0][2]*arguments[1], arguments[0][3]*arguments[1]];
}
/* 17 ------------------------------------------------------------------------- */
function vector2d_vector_multiplication(__vector2d, __0__vector2d) {
/* */
arguments[0][0] *= arguments[1][0];
arguments[0][1] *= arguments[1][1];
}
function vector3d_vector_multiplication(__vector3d, __0__vector3d) {
/* */
arguments[0][0] *= arguments[1][0];
arguments[0][1] *= arguments[1][1];
arguments[0][2] *= arguments[1][2];
}
function vector4d_vector_multiplication(__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];
}
/* 18 ------------------------------------------------------------------------- */
function vector2d_get_vector_multiplication(__vector2d, __0__vector2d) {
/* */
return [arguments[0][0]*arguments[1][0], arguments[0][1]*arguments[1][1]];
}
function vector3d_get_vector_multiplication(__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_multiplication(__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]];
}
/* 19 ------------------------------------------------------------------------- */
function vector2d_dot_product(__vector2d, __0__vector2d) {
/* */
return arguments[0][0]*arguments[1][0]+arguments[0][1]*arguments[1][1];
}
function vector3d_dot_product(__vector3d, __0__vector3d) {
/* */
return arguments[0][0]*arguments[1][0]+arguments[0][1]*arguments[1][1]+arguments[0][2]*arguments[1][2];
}
function vector4d_dot_product(__vector3d, __0__vector3d) {
/* */
return arguments[0][0]*arguments[1][0]+arguments[0][1]*arguments[1][1]+arguments[0][2]*arguments[1][2];
}
/* 20 ------------------------------------------------------------------------- */
function vector3d_cross_product(__vector3d, __0__vector3d) {
/* */
return [arguments[0][1]*arguments[1][2]-arguments[0][2]*arguments[1][1], arguments[0][2]*arguments[1][0]-arguments[0][0]*arguments[1][2], arguments[0][0]*arguments[1][1]-arguments[0][1]*arguments[1][0]];
}
function vector4d_cross_product(__vector3d, __0__vector3d) {
/* */
return [arguments[0][1]*arguments[1][2]-arguments[0][2]*arguments[1][1], arguments[0][2]*arguments[1][0]-arguments[0][0]*arguments[1][2], arguments[0][0]*arguments[1][1]-arguments[0][1]*arguments[1][0], 1.0];
}
/* 21 ------------------------------------------------------------------------- */
function vector2d_projection(__vector2d, __0__vector2d) {
/* */
var tmp = vector2d_dot_product(arguments[1])/Math.pow(vector2d_length(arguments[0]), 2);
arguments[0][0] = arguments[1][0]*tmp;
arguments[0][1] = arguments[1][1]*tmp;
}
function vector3d_projection(__vector3d, __0__vector3d) {
/* */
var tmp = vector3d_dot_product(arguments[1])/Math.pow(vector3d_length(arguments[0]), 2);
arguments[0][0] = arguments[1][0]*tmp;
arguments[0][1] = arguments[1][1]*tmp;
arguments[0][2] = arguments[1][2]*tmp;
}
function vector4d_projection(__vector3d, __0__vector3d) {
/* */
var tmp = vector3d_dot_product(arguments[1])/Math.pow(vector3d_length(arguments[0]), 2);
arguments[0][0] = arguments[1][0]*tmp;
arguments[0][1] = arguments[1][1]*tmp;
arguments[0][2] = arguments[1][2]*tmp;
arguments[0][3] = 1.0;
}
/* 22 ------------------------------------------------------------------------- */
function vector2d_length(__vector2d) {
/* */
return Math.sqrt(vector2d_norm(arguments[0]));
}
function vector3d_length(__vector3d) {
/* */
return Math.sqrt(vector3d_norm(arguments[0]));
}
function vector4d_length(__vector4d) {
/* */
return Math.sqrt(vector4d_norm(arguments[0]));
}
/* 23 ------------------------------------------------------------------------- */
function vector2d_angle(__vector2d) {
/* */
var cosine = vector2d_dot_product(vector2d_normal(arguments[0]), vector2d_normal(arguments[1]));
return cosine>=1.0 ? 0.0 : cosine<=-1.0 ? Math.PI : Math.acos(cosine);
}
function vector3d_angle(__vector3d) {
/* */
var cosine = vector3d_dot_product(vector3d_normal(arguments[0]), vector3d_normal(arguments[1]));
return cosine>=1.0 ? 0.0 : cosine<=-1.0 ? Math.PI : Math.acos(cosine);
}
function vector4d_angle(__vector4d) {
/* */
var cosine = vector4d_dot_product(vector4d_normal(arguments[0]), vector4d_normal(arguments[1]));
return cosine>=1.0 ? 0.0 : cosine<=-1.0 ? Math.PI : Math.acos(cosine);
}
/* 24 ------------------------------------------------------------------------- */
function vector2d_negate(__vector2d) {
/* */
arguments[0][0] = -arguments[0][0];
arguments[0][1] = -arguments[0][1];
}
function vector3d_negate(__vector3d) {
/* */
arguments[0][0] = -arguments[0][0];
arguments[0][1] = -arguments[0][1];
arguments[0][2] = -arguments[0][2];
}
function vector4d_negate(__vector4d) {
/* */
arguments[0][0] = -arguments[0][0];
arguments[0][1] = -arguments[0][1];
arguments[0][2] = -arguments[0][2];
arguments[0][3] = -arguments[0][3];
}
/* 25 ------------------------------------------------------------------------- */
function vector2d_norm(__vector2d) {
/* */
return arguments[0][0]*arguments[0][0]+arguments[0][1]*arguments[0][1];
}
function vector3d_norm(__vector3d) {
/* */
return arguments[0][0]*arguments[0][0]+arguments[0][1]*arguments[0][1]+arguments[0][2]*arguments[0][2];
}
function vector4d_norm(__vector4d) {
/* */
return arguments[0][0]*arguments[0][0]+arguments[0][1]*arguments[0][1]+arguments[0][2]*arguments[0][2];
}
/* 26 ------------------------------------------------------------------------- */
function vector2d_normalize(__vector2d) {
/* */
var tmp = 1.0/vector2d_length(arguments[0]);
return [arguments[0][0] *= tmp, arguments[0][1] *= tmp];
}
function vector3d_normalize(__vector3d) {
/* */
var tmp = 1.0/vector3d_length(arguments[0]);
return [arguments[0][0] *= tmp, arguments[0][1] *= tmp, arguments[0][2] *= tmp];
}
function vector4d_normalize(__vector4d) {
/* */
var tmp = 1.0/vector4d_length(arguments[0]);
return [arguments[0][0] *= tmp, arguments[0][1] *= tmp, arguments[0][2] *= tmp, arguments[0][3]];
}
/* 27 ------------------------------------------------------------------------- */
function vector2d_normal(__vector2d) {
/* */
var tmp = [arguments[0][0], arguments[0][1], arguments[0][2], arguments[0][3]];
return vector2d_normalize(tmp);
}
function vector3d_normal(__vector3d) {
/* */
var tmp = [arguments[0][0], arguments[0][1], arguments[0][2], arguments[0][3]];
return vector3d_normalize(tmp);
}
function vector4d_normal(__vector4d) {
/* */
var tmp = [arguments[0][0], arguments[0][1], arguments[0][2], arguments[0][3]];
return vector4d_normalize(tmp);
}
/* 28 ------------------------------------------------------------------------- */
function vector2d_normal_from_two_points(__vector2d, __0__vector2d) {
/* */
return vector2d_normal(vector2d_get_vector_subtraction(arguments[0], arguments[1]));
}
function vector3d_normal_from_two_points(__vector3d, __0__vector3d) {
/* */
return vector3d_normal(vector3d_get_vector_subtraction(arguments[0], arguments[1]));
}
function vector4d_normal_from_two_points(__vector4d, __0__vector4d) {
/* */
return vector4d_normal(vector4d_get_vector_subtraction(arguments[0], arguments[1]));
}