68 lines
2.2 KiB
Plaintext
68 lines
2.2 KiB
Plaintext
use std.dylib;
|
|
use std.os;
|
|
|
|
var _dl = dylib.dlopen("libmat");
|
|
|
|
var _vec2 = _dl.nas_vec2;
|
|
|
|
var _vec3 = _dl.nas_vec3;
|
|
|
|
var (_vec2add, _vec2sub, _vec2mul, _vec2div, _vec2neg, _vec2norm, _vec2len, _vec2dot)=(
|
|
_dl.nas_vec2_add,
|
|
_dl.nas_vec2_sub,
|
|
_dl.nas_vec2_mult,
|
|
_dl.nas_vec2_div,
|
|
_dl.nas_vec2_neg,
|
|
_dl.nas_vec2_norm,
|
|
_dl.nas_vec2_len,
|
|
_dl.nas_vec2_dot
|
|
);
|
|
var (_vec3add, _vec3sub, _vec3mul, _vec3div, _vec3neg, _vec3norm, _vec3len, _vec3dot)=(
|
|
_dl.nas_vec3_add,
|
|
_dl.nas_vec3_sub,
|
|
_dl.nas_vec3_mult,
|
|
_dl.nas_vec3_div,
|
|
_dl.nas_vec3_neg,
|
|
_dl.nas_vec3_norm,
|
|
_dl.nas_vec3_len,
|
|
_dl.nas_vec3_dot
|
|
);
|
|
var (_rotate_x, _rotate_y, _rotate_z)=(
|
|
_dl.nas_rotate_x,
|
|
_dl.nas_rotate_y,
|
|
_dl.nas_rotate_z
|
|
);
|
|
var (_invoke_i, _invoke_ii, _invoke_iii)=(
|
|
dylib.limitcall(1),
|
|
dylib.limitcall(2),
|
|
dylib.limitcall(3)
|
|
);
|
|
|
|
var vec2 = {
|
|
new: func(x, y) {return _invoke_ii(_vec2, x, y);},
|
|
add: func(v0, v1) {return _invoke_ii(_vec2add, v0, v1);},
|
|
sub: func(v0, v1) {return _invoke_ii(_vec2sub, v0, v1);},
|
|
mul: func(v0, v1) {return _invoke_ii(_vec2mul, v0, v1);},
|
|
div: func(v0, v1) {return _invoke_ii(_vec2div, v0, v1);},
|
|
neg: func(v0) {return _invoke_i(_vec2neg, v0);},
|
|
norm: func(v0) {return _invoke_i(_vec2norm, v0);},
|
|
len: func(v0) {return _invoke_i(_vec2len, v0);},
|
|
dot: func(v0, v1) {return _invoke_ii(_vec2dot, v0, v1);}
|
|
};
|
|
|
|
var vec3 = {
|
|
new: func(x, y, z) {return _invoke_iii(_vec3, x, y, z);},
|
|
add: func(v0, v1) {return _invoke_ii(_vec3add, v0, v1);},
|
|
sub: func(v0, v1) {return _invoke_ii(_vec3sub, v0, v1);},
|
|
mul: func(v0, v1) {return _invoke_ii(_vec3mul, v0, v1);},
|
|
div: func(v0, v1) {return _invoke_ii(_vec3div, v0, v1);},
|
|
neg: func(v0) {return _invoke_i(_vec3neg, v0);},
|
|
norm: func(v0) {return _invoke_i(_vec3norm, v0);},
|
|
len: func(v0) {return _invoke_i(_vec3len, v0);},
|
|
rx: func(v0, angle) {return _invoke_ii(_rotate_x, v0, angle);},
|
|
ry: func(v0, angle) {return _invoke_ii(_rotate_y, v0, angle);},
|
|
rz: func(v0, angle) {return _invoke_ii(_rotate_z, v0, angle);},
|
|
dot: func(v0, v1) {return _invoke_ii(_vec3dot, v0, v1);}
|
|
};
|
|
|