#include <math.h>
#include <unistd.h>
#include "regis.h"
+#include "sincos.h"
+#include "x3d.h"
+#define X16INT(x) ((x) << 16)
+
+static void draw(void);
static void sig(int s);
static volatile int done;
+int tm = 0;
int main(int argc, char **argv)
{
int pg = 1;
- float tm = 0.0f;
signal(SIGINT, sig);
+ x3d_projection(45.0, (WIDTH << 16) / HEIGHT, 65536 / 2, 65536 * 500);
+
while(!done) {
- float dx = cos(tm) * 50.0;
- float dy = sin(tm * 2.0) * 50.0;
- tm += 0.01f;
regis_enter();
regis_draw_page(pg);
regis_clear();
- regis_abspos(100 + dx, 100 + dy);
- regis_begin_vector(REGIS_BOUNDED | REGIS_FILL);
- regis_absv(300 + dx, 300 + dy);
- regis_absv(80 + dx, 400 + dy);
- regis_end_vector();
+
+ draw();
+
regis_show_page(pg);
pg = (pg + 1) & 1;
regis_leave();
usleep(10000);
+ ++tm;
}
regis_enter();
return 0;
}
+static void draw(void)
+{
+ x3d_load_identity();
+ x3d_translate(0, 0, X16INT(6));
+ x3d_rotate(X16INT(25), 65536, 0, 0);
+ x3d_rotate(tm << 10, 0, 65536, 0);
+
+ x3d_color_index(3);
+
+}
+
static void sig(int s)
{
done = 1;