📄 display.c
字号:
//#include <GL/glut.h>#include "main.h"static int f=0, l=0;static float flerp=0.0;static int fps=0, ifps=0;static int fram=0;float crap=0.0;int bang=0;void dyn_displayfunc(void) { float ff, tx, ty, tz; int nf; int low=8, high=19; static int init=0; int i, j, k, a=1; trixd *viewp=NULL, *tem=NULL; float gx, gy, gz; vec3d cov, p0, p1, poff, tbill; vec3d tp0, tp1, tp2; int las; float billfac=8.0, pickfac=2.0; float texcolor[] = { 0.0, 1.0, 0.0, 0.0}; int c; int p[3] = {0, 0, 0}; float ts[3] = {0.0, 0.0, 0.0}; int tt; float b[3] = {0.0, 0.0, 0.0}; if (!viewp) { viewp = makedyntrixd(4, 4); tem = makedyntrixd(4, 4); } for (i=0; i<4; i++) { for (j=0; j<4; j++) { viewp->d[i][j] = ((i==j)?1.0:0.0); } } for (i=0; i<4; i++) { viewp->d[3][i]=1.0; } ff = (float)l/20000.0; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); /* our camera rotation */ glTranslatef(0.0, 0.0, worl.zoom); glRotatef(worl.curwang, 0.0, 1.0, 0.0); glRotatef(worl.curzang, 1.0, 0.0, 0.0); glTranslatef(-worl.com.x, -worl.com.y, 0.0); //printf("com(%f %f) %f\n", worl.com.x, worl.com.y, worl.zoom); /* get our center of vision */ /* rotating objects equivalent to inverse rotating camera */ trixtransd(viewp, tem, 0.0, 0.0, -worl.zoom); trixrottd(tem, viewp, -worl.curwang, 0.0, 1.0, 0.0); trixrottd(viewp, tem, -worl.curzang, 1.0, 0.0, 0.0); trixtransd(tem, viewp, worl.com.x, worl.com.y, 0.0); cov.x = viewp->d[0][3]; cov.y = viewp->d[1][3]; cov.z = viewp->d[2][3]; /* glTranslatef(0.0, 0.0, -10.0); */ c = g_ca->cur; //printf("\nwb: "); for (i=0; i<(g_ca->dim + 1); i++) { ts[i] = g_ca->wb[i]; //printf("%f ", ts[i]); } //printf("\n"); //printf("wl: %i\n", g_ca->wlen); /* slow as fuck, but general, and functional */ //k = (g_ca->cur + g_ca->wlen - 1) % (g_ca->wlen); k = g_ca->cur; //printf("cur-1:%i\n", k); for (tt=0; tt<g_ca->slen; tt++) { glPushMatrix(); glTranslatef(((float)tt)*ts[0], ((float)tt)*ts[1], ((float)tt)*ts[2]); for (i=0; i<(g_ca->fd); i++) { ca_vec(g_ca, p, i); if (g_ca->ca[k][ca_point(g_ca, p)]) { glPushMatrix(); for (j=0; j<(g_ca->dim); j++) { glTranslatef(((float)p[j])*(g_ca->b[j][0]), ((float)p[j])*(g_ca->b[j][1]), ((float)p[j])*(g_ca->b[j][2])); } glColor3f(1.0, 0.0, 0.0); glutWireCube(0.25); glPopMatrix(); } else { //glColor3f(0.0, 1.0, 0.0); //glutWireCube(1.0); } } glPopMatrix(); k+=g_ca->wlen-1; k%=g_ca->wlen; } glLoadIdentity(); cas_display(g_cas); glXSwapBuffers(gwin.g_dpy, gwin.g_win); }void dyn_displayfunc_diff(void) { float ff, tx, ty, tz; int nf; int low=8, high=19; static int init=0; int i, j, k, a=1; trixd *viewp=NULL, *tem=NULL; float gx, gy, gz; vec3d cov, p0, p1, poff, tbill; vec3d tp0, tp1, tp2; int las; float billfac=8.0, pickfac=2.0; float texcolor[] = { 0.0, 1.0, 0.0, 0.0}; int c; int p[3] = {0, 0, 0}; float ts[3] = {0.0, 0.0, 0.0}; int tt, dk; if (!viewp) { viewp = makedyntrixd(4, 4); tem = makedyntrixd(4, 4); } for (i=0; i<4; i++) { for (j=0; j<4; j++) { viewp->d[i][j] = ((i==j)?1.0:0.0); } } for (i=0; i<4; i++) { viewp->d[3][i]=1.0; } ff = (float)l/20000.0; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); /* our camera rotation */ glTranslatef(0.0, 0.0, worl.zoom); glRotatef(worl.curwang, 0.0, 1.0, 0.0); glRotatef(worl.curzang, 1.0, 0.0, 0.0); glTranslatef(-worl.com.x, -worl.com.y, 0.0); //printf("com(%f %f) %f\n", worl.com.x, worl.com.y, worl.zoom); /* get our center of vision */ /* rotating objects equivalent to inverse rotating camera */ trixtransd(viewp, tem, 0.0, 0.0, -worl.zoom); trixrottd(tem, viewp, -worl.curwang, 0.0, 1.0, 0.0); trixrottd(viewp, tem, -worl.curzang, 1.0, 0.0, 0.0); trixtransd(tem, viewp, worl.com.x, worl.com.y, 0.0); cov.x = viewp->d[0][3]; cov.y = viewp->d[1][3]; cov.z = viewp->d[2][3]; /* glTranslatef(0.0, 0.0, -10.0); */ c = g_ca->cur; //printf("\nwb: "); for (i=0; i<(g_ca->dim + 1); i++) { ts[i] = g_ca->wb[i]; //printf("%f ", ts[i]); } //printf("\n"); //printf("wl: %i\n", g_ca->wlen); /* slow as fuck, but general, and functional */ //k = (g_ca->cur + g_ca->wlen - 1) % (g_ca->wlen); k = g_ca->cur; //printf("cur-1:%i\n", k); for (tt=0; tt<g_ca->slen; tt++) { /* translate by time series */ glPushMatrix(); glTranslatef(((float)tt)*ts[0], ((float)tt)*ts[1], ((float)tt)*ts[2]); //printf("\n"); dk = (k - g_ca->diff + g_ca->wlen)%g_ca->wlen; for (i=0; i<(g_ca->fd); i++) { ca_vec(g_ca, p, i); //if (abs(g_ca->ca[k][ca_point(g_ca, p)]-g_ca->ca[dk][ca_point(g_ca, p)])>1) { //printf("%i", abs(g_ca->ca[k][ca_point(g_ca, p)]-g_ca->ca[dk][ca_point(g_ca, p)])); //} //printf("%i", abs(g_ca->ca[k][ca_point(g_ca, p)]-g_ca->ca[dk][ca_point(g_ca, p)])); if ((g_ca->ca[k][ca_point(g_ca, p)]-g_ca->ca[dk][ca_point(g_ca, p)])!=0) { glPushMatrix(); for (j=0; j<(g_ca->dim); j++) { glTranslatef(((float)p[j])*(g_ca->b[j][0]), ((float)p[j])*(g_ca->b[j][1]), ((float)p[j])*(g_ca->b[j][2])); } glColor3f(1.0, 0.0, 0.0); glutWireCube(0.25); glPopMatrix(); } else { //glColor3f(0.0, 1.0, 0.0); //glutWireCube(1.0); } } glPopMatrix(); k+=g_ca->wlen-1; k%=g_ca->wlen; } //printf("\n\n"); glLoadIdentity(); cas_display(g_cas); glXSwapBuffers(gwin.g_dpy, gwin.g_win); }void updateworld(void) { int i, j, k; double axis[3]; float beflen, aftlen, tim; static trixd *temx=NULL; vec3d tv0, tv1, tp0, tp1, rax; static trixd *txp0, *txp1, *temx2, *trans0, *trans1, *finx, *rotloc; int a=1; static int ffac=1; static int count=0; //count++; //if (count>60) { //printf("bang\n"); //gridupdate(globgrid, 200, 0.01); //count = 0; //} if (g_ca->go) { (*ca_update_func)(g_ca, 0, g_ca->fd-1); }}void idleworld(struct timeval *tv, struct timeval *tvnow, int delay) { int i, j; float f; f = (float)(tvnow->tv_usec - tv->tv_usec) / (float)delay; //gridupdate(globgrid, 200, 0.01);}void dyn_idlefunc(void) { int delay = 33333; int i, j; static struct timeval tv, tvnow; static int fi=0; if (!fi) { fi = 1; gettimeofday(&tv, NULL); printf("idle init\n"); } gettimeofday(&tvnow, NULL); if (tvnow.tv_sec==tv.tv_sec) { if ( (tvnow.tv_usec > (tv.tv_usec + delay)) ) { updateworld(); gettimeofday(&tv, NULL); } else { idleworld(&tv, &tvnow, delay); } } else { tvnow.tv_usec+=1000000; if ( (tvnow.tv_usec /*+ 1000000*/) > (tv.tv_usec + delay) ) { updateworld(); gettimeofday(&tv, NULL); } else { idleworld(&tv, &tvnow, delay); } } wlpostredisplay(); }void dyn_displayfunc_dfa(void) { float ff, tx, ty, tz; int nf; int low=8, high=19; static int init=0; int i, j, k, a=1; trixd *viewp=NULL, *tem=NULL; float gx, gy, gz; vec3d cov, p0, p1, poff, tbill; vec3d tp0, tp1, tp2; int las; float billfac=8.0, pickfac=2.0; float texcolor[] = { 0.0, 1.0, 0.0, 0.0}; int c; int p[3] = {0, 0, 0}; float ts[3] = {0.0, 0.0, 0.0}; int tt; float b[3] = {0.0, 0.0, 0.0}; if (!viewp) { viewp = makedyntrixd(4, 4); tem = makedyntrixd(4, 4); } for (i=0; i<4; i++) { for (j=0; j<4; j++) { viewp->d[i][j] = ((i==j)?1.0:0.0); } } for (i=0; i<4; i++) { viewp->d[3][i]=1.0; } ff = (float)l/20000.0; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); /* our camera rotation */ glTranslatef(0.0, 0.0, worl.zoom); glRotatef(worl.curwang, 0.0, 1.0, 0.0); glRotatef(worl.curzang, 1.0, 0.0, 0.0); glTranslatef(-worl.com.x, -worl.com.y, 0.0); //printf("com(%f %f) %f\n", worl.com.x, worl.com.y, worl.zoom); /* get our center of vision */ /* rotating objects equivalent to inverse rotating camera */ trixtransd(viewp, tem, 0.0, 0.0, -worl.zoom); trixrottd(tem, viewp, -worl.curwang, 0.0, 1.0, 0.0); trixrottd(viewp, tem, -worl.curzang, 1.0, 0.0, 0.0); trixtransd(tem, viewp, worl.com.x, worl.com.y, 0.0); cov.x = viewp->d[0][3]; cov.y = viewp->d[1][3]; cov.z = viewp->d[2][3]; /* glTranslatef(0.0, 0.0, -10.0); */ c = g_ca->cur; //printf("\nwb: "); for (i=0; i<(g_ca->dim + 1); i++) { ts[i] = g_ca->wb[i]; //printf("%f ", ts[i]); } //printf("\n"); //printf("wl: %i\n", g_ca->wlen); /* slow as fuck, but general, and functional */ //k = (g_ca->cur + g_ca->wlen - 1) % (g_ca->wlen); k = g_ca->cur; //printf("cur-1:%i\n", k); for (tt=0; tt<g_ca->slen; tt++) { glPushMatrix(); glTranslatef(((float)tt)*ts[0], ((float)tt)*ts[1], ((float)tt)*ts[2]); for (i=0; i<(g_ca->fd); i++) { ca_vec(g_ca, p, i); //if (g_ca->ca[k][ca_point(g_ca, p)]) { if (g_dc->g[ca_point(g_ca, p)+(k*(g_ca->fd))]>0) { glPushMatrix(); for (j=0; j<(g_ca->dim); j++) { glTranslatef(((float)p[j])*(g_ca->b[j][0]), ((float)p[j])*(g_ca->b[j][1]), ((float)p[j])*(g_ca->b[j][2])); } glColor3f(1.0, 0.0, 0.0); glutWireCube(0.25); glPopMatrix(); } else { //glColor3f(0.0, 1.0, 0.0); //glutWireCube(1.0); } } glPopMatrix(); k+=g_ca->wlen-1; k%=g_ca->wlen; } glLoadIdentity(); cas_display(g_cas); glXSwapBuffers(gwin.g_dpy, gwin.g_win); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -