Gered
62af8575c6
- rename standard integer types to a more familiar (u)int(8/16/32) - many function/struct renames. i don't _really_ know if what i've done for this is better, but it "feels" better to me. many draw/blit function names are shorter which is nice, at least. kinda important to me because i develop this on a real DOS machine in 80x50 text mode. - add 'extern "C"' blocks to headers for C++ compiler usage - draw/pixel color value arguments for functions should all have been changed to be uint8 instead of a full 32-bit int. feels right, but maybe should've left alone... - small fix to keyboard handler. noticed a problem on one thinkpad laptop. was a result of what i think was a typo in a constant value used during the part of the interrupt handler that tells the keyboard controller the key event was processed - fix uncommon potential crash function return in draw_filled_rect - renamed low-level "direct" assembly functions to "lowlevel_xxx" to be a little bit more explicit about what they are - add some convenience event helper functions for determining event types - add fixed point atan2 - fixed some tabs/spaces inconsistences (should all be spaces now?) - maybe some other minor things i've forgotten
135 lines
3.2 KiB
C
Executable file
135 lines
3.2 KiB
C
Executable file
#include "vector2.h"
|
|
#include "dglvec2.h"
|
|
#include "helpers.h"
|
|
|
|
void test_vec2i(void) {
|
|
VEC2I a, b, c;
|
|
int i;
|
|
|
|
c = vec2i(3, 7);
|
|
ASSERT(c.x == 3 && c.y == 7);
|
|
|
|
vec2i_set(&c, 1, 2);
|
|
ASSERT(c.x == 1 && c.y == 2);
|
|
|
|
a = vec2i(1, 2);
|
|
b = vec2i(1, 2);
|
|
ASSERT(vec2i_equals(a, b));
|
|
|
|
a = vec2i(3, 4);
|
|
b = vec2i(1, 2);
|
|
|
|
c = vec2i_add(a, b);
|
|
ASSERT(c.x == 4 && c.y == 6);
|
|
|
|
c = vec2i_sub(a, b);
|
|
ASSERT(c.x == 2 && c.y == 2);
|
|
|
|
c = vec2i_mul(a, b);
|
|
ASSERT(c.x == 3 && c.y == 8);
|
|
|
|
c = vec2i_muls(a, 2);
|
|
ASSERT(c.x == 6 && c.y == 8);
|
|
|
|
c = vec2i_div(a, b);
|
|
ASSERT(c.x == 3 && c.y == 2);
|
|
|
|
c = vec2i_divs(a, 2);
|
|
ASSERT(c.x == 1 && c.y == 2);
|
|
|
|
a = vec2i(1, 1);
|
|
b = vec2i(1, 3);
|
|
i = vec2i_distance(a, b);
|
|
ASSERT(i == 2);
|
|
|
|
i = vec2i_distancesq(a, b);
|
|
ASSERT(i == 4);
|
|
|
|
a = vec2i(-12, 16);
|
|
b = vec2i(12, 9);
|
|
i = vec2i_dot(a, b);
|
|
ASSERT(i == 0);
|
|
|
|
a = vec2i(-3, 0);
|
|
i = vec2i_length(a);
|
|
ASSERT(i == 3);
|
|
|
|
i = vec2i_lengthsq(a);
|
|
ASSERT(i == 9);
|
|
|
|
a = vec2i(5, 0);
|
|
b = vec2i(10, 0);
|
|
c = vec2i_lerp(a, b, 0.5f);
|
|
ASSERT(c.x == 7 && c.y == 0);
|
|
}
|
|
|
|
void test_vec2(void) {
|
|
VEC2 a, b, c;
|
|
fixed f;
|
|
|
|
c = vec2(FTOFIX(3.0f), FTOFIX(7.0f));
|
|
ASSERT(c.x == FTOFIX(3.0f) && c.y == FTOFIX(7.0f));
|
|
|
|
vec2_set(&c, FTOFIX(1.0f), FTOFIX(2.0f));
|
|
ASSERT(c.x == FTOFIX(1.0f) && c.y == FTOFIX(2.0f));
|
|
|
|
a = vec2(FTOFIX(1.0f), FTOFIX(2.0f));
|
|
b = vec2(FTOFIX(1.0f), FTOFIX(2.0f));
|
|
ASSERT(vec2_equals(a, b));
|
|
|
|
a = vec2(FTOFIX(3.0f), FTOFIX(4.0f));
|
|
b = vec2(FTOFIX(1.0f), FTOFIX(2.0f));
|
|
|
|
c = vec2_add(a, b);
|
|
ASSERT(c.x == FTOFIX(4.0f) && c.y == FTOFIX(6.0f));
|
|
|
|
c = vec2_sub(a, b);
|
|
ASSERT(c.x == FTOFIX(2.0f) && c.y == FTOFIX(2.0f));
|
|
|
|
c = vec2_mul(a, b);
|
|
ASSERT(c.x == FTOFIX(3.0f) && c.y == FTOFIX(8.0f));
|
|
|
|
c = vec2_muls(a, FTOFIX(0.5f));
|
|
ASSERT(c.x == FTOFIX(1.5f) && c.y == FTOFIX(2.0f));
|
|
|
|
c = vec2_div(a, b);
|
|
ASSERT(c.x == FTOFIX(3.0f) && c.y == FTOFIX(2.0f));
|
|
|
|
c = vec2_divs(a, FTOFIX(0.5f));
|
|
ASSERT(c.x == FTOFIX(6.0f) && c.y == FTOFIX(8.0f));
|
|
|
|
a = vec2(FTOFIX(1.0f), FTOFIX(1.0f));
|
|
b = vec2(FTOFIX(1.0f), FTOFIX(3.0f));
|
|
f = vec2_distance(a, b);
|
|
ASSERT(f == FTOFIX(2.0f));
|
|
|
|
f = vec2_distancesq(a, b);
|
|
ASSERT(f == FTOFIX(4.0f));
|
|
|
|
a = vec2(FTOFIX(-12.0f), FTOFIX(16.0f));
|
|
b = vec2(FTOFIX(12.0f), FTOFIX(9.0f));
|
|
f = vec2_dot(a, b);
|
|
ASSERT(f == 0);
|
|
|
|
a = vec2(FTOFIX(-3.0f), FTOFIX(0.0f));
|
|
f = vec2_length(a);
|
|
ASSERT(f == FTOFIX(3.0f));
|
|
|
|
f = vec2_lengthsq(a);
|
|
ASSERT(f == FTOFIX(9.0f));
|
|
|
|
a = vec2(FTOFIX(7.0f), FTOFIX(7.0f));
|
|
c = vec2_normalize(a);
|
|
ASSERT(c.x == FTOFIX(0.70710f) && c.y == FTOFIX(0.70710f));
|
|
|
|
a = vec2(FTOFIX(10.0f), FTOFIX(0.0f));
|
|
c = vec2_set_length(a, FTOFIX(2.0f));
|
|
ASSERT(c.x == FTOFIX(2.0f) && c.y == FTOFIX(0.0f));
|
|
|
|
a = vec2(FTOFIX(5.0f), FTOFIX(0.0f));
|
|
b = vec2(FTOFIX(10.0f), FTOFIX(0.0f));
|
|
c = vec2_lerp(a, b, FTOFIX(0.5f));
|
|
ASSERT(c.x == FTOFIX(7.5f) && c.y == FTOFIX(0.0f));
|
|
}
|
|
|