-
Notifications
You must be signed in to change notification settings - Fork 1
Vector Operations
Dickson Law edited this page Jul 28, 2025
·
4 revisions
| Operation | r2 | r3 | r4 | rn |
|---|---|---|---|---|
| Create a vector | r2(x0, x1) |
r3(x0, x1, x2) |
r4(x0, x1, x2, x3) |
rn(...) |
| Create a zero vector | r2_zero() |
r3_zero() |
r4_zero() |
rn_zero(n) |
| Clone/copy a vector | r2_clone(v, [vout]) |
r3_clone(v, [vout]) |
r4_clone(v, [vout]) |
rn_clone(v, [vout]) |
| Operation | r2 | r3 | r4 | rn |
|---|---|---|---|---|
| Vector addition | r2_add(v1, v2, [vout]) |
r3_add(v1, v2, [vout]) |
r4_add(v1, v2, [vout]) |
rn_add(v1, v2, [vout]) |
| Vector subtraction | r2_subtract(v1, v2, [vout]) |
r3_subtract(v1, v2, [vout]) |
r4_subtract(v1, v2, [vout]) |
rn_subtract(v1, v2, [vout]) |
| Scalar multiplication | r2_scale(v, r, [vout]) |
r3_scale(v, r, [vout]) |
r4_scale(v, r, [vout]) |
rn_scale(v, r, [vout]) |
| Dot product | r2_dot(v1, v2) |
r3_dot(v1, v2) |
r4_dot(v1, v2) |
rn_dot(v1, v2) |
| Cross product | N/A | r3_cross(v1, v2, [vout]) |
N/A | N/A |
| Operation | r2 | r3 | r4 | rn |
|---|---|---|---|---|
| Unit vector | r2_unit(v, [vout]) |
r3_unit(v, [vout]) |
r4_unit(v, [vout]) |
rn_unit(v, [vout]) |
| Linear Interpolation | r2_lerp(v1, v2, amount, [vout]) |
r3_lerp(v1, v2, amount, [vout]) |
r4_lerp(v1, v2, amount, [vout]) |
rn_lerp(v1, v2, amount, [vout]) |
| Vector Projection | r2_proj(v1, v2, [vout]) |
r3_proj(v1, v2, [vout]) |
r4_proj(v1, v2, [vout]) |
rn_proj(v1, v2, [vout]) |
| Vector Rejection | r2_rej(v1, v2, [vout]) |
r3_rej(v1, v2, [vout]) |
r4_rej(v1, v2, [vout]) |
rn_rej(v1, v2, [vout]) |
| Operation | r2 | r3 | r4 | rn |
|---|---|---|---|---|
| Euclidean norm | r2_norm(v) |
r3_norm(v) |
r4_norm(v) |
rn_norm(v) |
| Manhattan norm | r2_1norm(v) |
r3_1norm(v) |
r4_1norm(v) |
rn_1norm(v) |
| Maximum norm | r2_maxnorm(v) |
r3_maxnorm(v) |
r4_maxnorm(v) |
rn_maxnorm(v) |
| Euclidean distance | r2_dist(v1, v2) |
r3_dist(v1, v2) |
r4_dist(v1, v2) |
rn_dist(v1, v2) |
| Manhattan distance | r2_1dist(v1, v2) |
r3_1dist(v1, v2) |
r4_1dist(v1, v2) |
rn_1dist(v1, v2) |
- String format: Each entry is written with 14 decimal digits, separated by commas.
- Base64 format: Each entry is written as a 64-bit float to the buffer, then encoded as base64.
| Operation | r2 | r3 | r4 | rn |
|---|---|---|---|---|
| Encode to string | r2_encode_string(v) |
r3_encode_string(v) |
r4_encode_string(v) |
rn_encode_string(v) |
| Decode from string | r2_decode_string(str, [vout]) |
r3_decode_string(str, [vout]) |
r4_decode_string(str, [vout]) |
rn_decode_string(str, [vout]) |
| Encode to base64 | r2_encode_base64(v) |
r3_encode_base64(v) |
r4_encode_base64(v) |
rn_encode_base64(v) |
| Decode from base64 | r2_decode_base64(enc, [vout]) |
r3_decode_base64(enc, [vout]) |
r4_decode_base64(enc, [vout]) |
rn_decode_base64(enc, n, [vout]) |
These functions take the form r2_IN_OUT(v, [vout]).
| Name | Name Code (IN/OUT) | Component 0 | Component 1 |
|---|---|---|---|
| Rectangular | rec |
x (pixels) |
y (pixels) |
| GameMaker Polar | gmp |
len (pixels) |
dir (degrees, counter-clockwise from right with downward y axis) |
| Polar | pol |
r (pixels) |
theta (radians, counter-clockwise from right with upward y axis) |
| From Rectangular | From GameMaker Polar | From Polar | |
|---|---|---|---|
| To Rectangular | N/A | r2_gmp_rec(vi_ld, [vo_xy]) |
r2_pol_rec(vi_rt, [vo_xy]) |
| To GameMaker Polar | r2_rec_gmp(vi_xy, [vo_ld]) |
N/A | r2_pol_gmp(vi_rt, [vo_ld]) |
| To Polar | r2_rec_pol(vi_xy, [vo_rt]) |
r2_gmp_pol(vi_ld, [vo_rt]) |
N/A |
These functions take the form r3_IN_OUT(v, [vout]).
| Name | Name Code (IN/OUT) | Component 0 | Component 1 | Component 2 |
|---|---|---|---|---|
| Rectangular | rec |
x (pixels) |
y (pixels) |
z (pixels) |
| Cylindrical | cyl |
rho (pixels) |
phi (radians) |
z (pixels) |
| Spherical | sph |
rho (pixels) |
phi (radians, azimuth) |
theta (radians, declination) |
| From Rectangular | From Cylindrical | From Spherical | |
|---|---|---|---|
| To Rectangular | N/A | r3_cyl_rec(vi_rpz, [vo_xyz]) |
r3_sph_rec(vi_rpt, [vo_xyz]) |
| To Cylindrical | r3_rec_cyl(vi_xyz, [vo_rpz]) |
N/A | r3_sph_cyl(vi_rpt, [vo_rpz]) |
| To Spherical | r3_rec_sph(vi_xyz, [vo_rpt]) |
r3_cyl_sph(vi_rpz, [vo_rpt]) |
N/A |
These constants allow you to semantically access vector entries.
| Name | Value |
|---|---|
COMP_X |
0 |
COMP_Y |
1 |
COMP_Z |
2 |
COMP_T |
2 |
COMP_W |
3 |
COMP_RED |
0 |
COMP_GREEN |
1 |
COMP_BLUE |
2 |
COMP_ALPHA |
3 |