# HG changeset patch # User jsipek@huey.fsl.cs.sunysb.edu # Date 1132809630 14400 # Node ID 02aee737154105471ea2387d67af37b603593fe3 # Parent 8d0ee5ea10ac3adf95d2090618ad13a1620d9232 Nice-looking rotating triangle diff -r 8d0ee5ea10ac -r 02aee7371541 Makefile --- a/Makefile Thu Nov 24 00:34:19 2005 -0400 +++ b/Makefile Thu Nov 24 01:20:30 2005 -0400 @@ -6,5 +6,8 @@ transform: transform.c gcc -o transform transform.c -Wall -g +rotate: rotate.c + gcc -o rotate rotate.c -Wall -g -lm + clean: rm -f render transform *~ *.o a.out diff -r 8d0ee5ea10ac -r 02aee7371541 render.c --- a/render.c Thu Nov 24 00:34:19 2005 -0400 +++ b/render.c Thu Nov 24 01:20:30 2005 -0400 @@ -104,6 +104,7 @@ glClear(GL_COLOR_BUFFER_BIT); } else if (!strncmp(buf, "FLUSH", 5)) { glFlush(); + glutSwapBuffers(); } else if (!strncmp(buf, "POLY", 4)) draw_poly(buf); else { @@ -173,7 +174,7 @@ die(); glutInit(&argc,argv); - glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); + glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize(800,600); glutInitWindowPosition(0,0); glutCreateWindow("3D Engine"); diff -r 8d0ee5ea10ac -r 02aee7371541 rotate.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rotate.c Thu Nov 24 01:20:30 2005 -0400 @@ -0,0 +1,29 @@ +#include +#include +#include +#include + +void rotate_header(float omega, float phi, float rho) +{ + printf("%f %f %f\n" + "%f %f %f\n" + "%f %f %f", cos(omega), -sin(omega), 0.0, + sin(omega), cos(omega), 0.0, + 0.0, 0.0, 1.0); +} + +int main(int argc, char** argv) +{ + float omega, phi, rho; + char c; + + scanf("%f %f %f", &omega, &phi, &rho); + rotate_header(omega, phi, rho); + + while((c = getc(stdin)) != EOF) + putc(c, stdout); + + + return 0; +} + diff -r 8d0ee5ea10ac -r 02aee7371541 rottest --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rottest Thu Nov 24 01:20:30 2005 -0400 @@ -0,0 +1,3 @@ +0.5236 0 0 +1 0 0 5 2 4 +0.5 0.5 0.5 1 0 0 diff -r 8d0ee5ea10ac -r 02aee7371541 run.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run.sh Thu Nov 24 01:20:30 2005 -0400 @@ -0,0 +1,19 @@ +#./render& +sleep 1 + +PIPE="/tmp/3de.in" + +PT1="1 0 0 -0.5 -0.5 0.5" +PT2="0 1 0 -0.5 0.5 0.5" +PT3="0 0 1 0.5 0.5 0.5" + +INC="0.01745" +OMEGA="0" + +for x in `seq 3600`; do + echo "CLEAR" > $PIPE + echo "POLY " `echo -e "$OMEGA 0 0\n$PT1\n$PT2\n$PT3" | ./rotate | ./transform` > $PIPE + echo "FLUSH" > $PIPE + OMEGA=`echo "$OMEGA+$INC" | bc` + sleep 0.01 +done diff -r 8d0ee5ea10ac -r 02aee7371541 transform.c --- a/transform.c Thu Nov 24 00:34:19 2005 -0400 +++ b/transform.c Thu Nov 24 01:20:30 2005 -0400 @@ -20,9 +20,8 @@ scanf("%f %f %f", &trans[1][0], &trans[1][1], &trans[1][2]); scanf("%f %f %f", &trans[2][0], &trans[2][1], &trans[2][2]); - scanf("%f %f %f", &c[0], &c[1], &c[2]); - scanf("%f %f %f", &pt[0], &pt[1], &pt[2]); - transform(trans, pt, c); + while(scanf("%f %f %f %f %f %f", &c[0], &c[1], &c[2], &pt[0], &pt[1], &pt[2]) == 6) + transform(trans, pt, c); return 0;