int main(int argc, char** argv) { img.load("img/4.pgm"); //img.filterSobel(); initLines(&linesq); showLines(&linesq); calcRectangles(&linesq, &recsq); calcTriangles(&linesq, &triangles); showRectangles(&recsq); showTriangles(&triangles); glutInit( &argc, argv ); glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB); glutInitWindowSize(1000, 700); glutInitWindowPosition(100, 100); glutCreateWindow( "Cam" ); glutDisplayFunc(display); //glutMouseFunc(mouseButton); glutKeyboardFunc(keyboard); //glutReshapeFunc(resize); initialize(); //init OpenGL state glutMainLoop(); return 0; }
void recalc() { for(int i = 0; i < recsq.length(); i++) ((TRectangle*)(recsq.get(i)))->rotate(0,0,PI/30); for(int i = 0; i < triangles.length(); i++) ((Triangle*)(triangles.get(i)))->rotate(0,0,PI/30); linesq.deleteall(); getLinesFromFigures(&linesq, &recsq,4); getLinesFromFigures(&linesq, &triangles,3); linesq.mix(); figures.deleteall(); figures2.deleteall(); calcRectangles(&linesq, &figures); calcTriangles(&linesq, &figures2); for(int i = 0; i < figures.length(); i++) ((TLine*)figures.get(i))->shift(2,2); for(int i = 0; i < figures2.length(); i++) ((TLine*)figures2.get(i))->shift(2,2); }
void GmlModel::calcModelData() { myData.clear(); for( int i = 0; i < myStrokes.size(); i++) { modelData m; myData.push_back(m); } calcMaxLen(); // calculate min and max values for rendering nicely calcVectors(); // calculate normal vectors from one point to next calcRadius(); // calculate radius at each point calcRPoints(); // calculate points defining a circle at each point, rotate in direction of next to create extrusion calcEndPoints(); calcTriangles(); }
void display( void ) { glClear( GL_COLOR_BUFFER_BIT ); // Очистка экрана float col1[3] = {0, 0.7, 1}; // голубой float col2[3] = {1, 1, 1}; // белый float col3[3] = {1, 0.8, 0.2}; // оранжевый float col4[3] = {1, 0.1, 0.3}; /* for(int i = 0; i < recsq.length(); i++) drawQuad((TRectangle*)(recsq.get(i)), col1); for(int i = 0; i < triangles.length(); i++) drawTriangle((Triangle*)(triangles.get(i)), col3); for(int i = 0; i < figures.length(); i++) drawQuad((TRectangle*)(figures.get(i)), col2); for(int i = 0; i < figures2.length(); i++) drawTriangle((Triangle*)(figures2.get(i)), col2); */ double * image; double * out; int x,y,i,j,n; int X = img.getw(); /* x image size */ int Y = img.geth(); /* y image size */ image = (double *) malloc( X * Y * sizeof(double) ); if( image == NULL ) { fprintf(stderr,"error: not enough memory\n"); exit(EXIT_FAILURE); } for(x=0;x<X;x++) for(y=0;y<Y;y++) image[x+y*X] = img.getpoint(x+1,y+1); /* image(x,y) */ /* LSD call */ out = lsd(&n,image,X,Y); TSafeVector lns; //linesq.deleteall(); int k = 0; for(i=0;i<n;i++) { //for(j=0;j<7;j++) //printf("%4.0f ",out[7*i+j]); lns.setat(new TLine(out[7*i+0],img.geth()-out[7*i+1],out[7*i+2],img.geth()-out[7*i+3]),k); ((TLine*)(lns.get(k)))->shift(-img.getw()/2,-img.geth()/2); k++; } img.show(); for(int i = 0; i < lns.length(); i++) drawLine((TLine*)(lns.get(i)), col1); calcRectangles(&lns, &figures); calcTriangles(&lns, &figures2); for(int i = 0; i < figures.length(); i++) drawQuad((TRectangle*)(figures.get(i)), col3); for(int i = 0; i < figures2.length(); i++) drawTriangle((Triangle*)(figures2.get(i)), col4); glutSwapBuffers(); free( (void *) image ); free( (void *) out ); /* Sleep(40); recalc(); glutPostRedisplay(); */ }