changeset 5:02aee7371541

Nice-looking rotating triangle
author jsipek@huey.fsl.cs.sunysb.edu
date Thu, 24 Nov 2005 01:20:30 -0400
parents 8d0ee5ea10ac
children b06a7e9cda60
files Makefile render.c rotate.c rottest run.sh transform.c
diffstat 6 files changed, 58 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- 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
--- 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");
--- /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 <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+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;
+}
+
--- /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
--- /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
--- 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;