Esempio n. 1
0
//---------------------------------------------------------------------------

void __fastcall TGLForm2D::Triangulos2Click(TObject *Sender)
{
  //Elegir el grosor de las lineas del triangulo
    if(UFG->pedirGrosor(grosorLinea)){
        GLScene();
    }
Esempio n. 2
0
//---------------------------------------------------------------------------

void __fastcall TGLForm2D::Reiniciar2Click(TObject *Sender)
{
    grosorCentro=4;
    grosorGravedad=4;
    grosorLinea=1.0;
    GLScene();
Esempio n. 3
0
//---------------------------------------------------------------------------

void __fastcall TGLForm2D::Activar1Click(TObject *Sender)
{
    
    oscurecer=true;
    anidamientoTotal = false;
    GLScene();
Esempio n. 4
0
//---------------------------------------------------------------------------
void __fastcall TGLForm3D::FormResize(TObject *Sender) {
  //Se actualiza puerto de vista y ratio
  if ((ClientHeight<=1.0) || (ClientHeight<=1.0)) {
        ClientWidth=400;
        ClientHeight=400;
        RatioViewPort=1.0;
  }
  else RatioViewPort=(GLfloat)ClientWidth/(GLfloat)ClientHeight;

  glViewport(0,0,ClientWidth,ClientHeight);

  //Se actualiza el volumen de vista
  //para que su ratio coincida con RatioViewPort
  GLfloat RatioVolVista=xRight/yTop;

  if (RatioVolVista>=RatioViewPort) {
     //Aumentamos yTop-yBot
     yTop=xRight/RatioViewPort;
     yBot=-yTop;
     }
  else {
     //Aumentamos xRight-xLeft
     xRight=RatioViewPort*yTop;
     xLeft=-xRight;
     }

  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  glOrtho(xLeft, xRight, yBot, yTop, N, F);

  GLScene();
}
Esempio n. 5
0
//---------------------------------------------------------------------------

void __fastcall TGLForm2D::Reiniciar1Click(TObject *Sender)
{
    colorLinea1=1;colorLinea2=1;colorLinea3=1;//Lineas blancas
    colorCentro1=0;colorCentro2=0;colorCentro3=1;//Centro AVE azul
    colorGravedad1=1;colorGravedad2=0;colorGravedad3=0;//Centro Gravedad rojo
    GLScene();
Esempio n. 6
0
//---------------------------------------------------------------------------
void __fastcall TGLForm2D::timerTimer(TObject *Sender)
{
 clock(0);
 step();
 GLScene();
 clock(1);
}
Esempio n. 7
0
void __fastcall TGLForm2D::Anidar1Click(TObject *Sender)
{
    nTriangulos++;
    mEmbaldosado=false;
    glViewport(0,0,ClientWidth,ClientHeight);
    GLScene();
}
Esempio n. 8
0
//---------------------------------------------------------------------------

void __fastcall TGLForm2D::CentroGravedad2Click(TObject *Sender)
{
  //Elegir el grosor del centro Gravedad
    if(UFG->pedirGrosor(grosorGravedad)){
        GLScene();
    }
Esempio n. 9
0
//---------------------------------------------------------------------------

void __fastcall TGLForm2D::CentroAVE2Click(TObject *Sender)
{
  //Elegir el grosor del centro AVE
    if(UFG->pedirGrosor(grosorCentro)){
        GLScene();
    }
Esempio n. 10
0
void __fastcall TGLForm2D::AnyadirClick(TObject *Sender)
{
        if(!sc->getArbol()->empty()){
                sc->getArbol()->anidar(0,0,aleatorio,0);
                GLScene();
        }else
                ShowMessage("Hacer click para primer nivel!");

}
Esempio n. 11
0
//---------------------------------------------------------------------------
void __fastcall TGLForm2D::FormMouseUp(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
     if(Button)return;
     if(!selection)return;
     pelota.push_back(*selection);
     delete selection;
     selection=0;
     GLScene();
}
Esempio n. 12
0
//---------------------------------------------------------------------------

void __fastcall TGLForm2D::Triangulos1Click(TObject *Sender)
{
    if(ColorDialog1->Execute()){
        TColor c = ColorDialog1->Color;
        colorLinea1 = (GLfloat)GetRValue(ColorToRGB(c))/255;
        colorLinea2 = (GLfloat)GetGValue(ColorToRGB(c))/255;
        colorLinea3 = (GLfloat)GetBValue(ColorToRGB(c))/255;
        GLScene();
    }
Esempio n. 13
0
//---------------------------------------------------------------------------

void __fastcall TGLForm2D::CentroGravedad1Click(TObject *Sender)
{
    if(ColorDialog1->Execute()){
        TColor c = ColorDialog1->Color;
        colorGravedad1 = (GLfloat)GetRValue(ColorToRGB(c))/255;
        colorGravedad2 = (GLfloat)GetGValue(ColorToRGB(c))/255;
        colorGravedad3 = (GLfloat)GetBValue(ColorToRGB(c))/255;
        GLScene();
    }
Esempio n. 14
0
//---------------------------------------------------------------------------
void __fastcall TGLForm2D::FormMouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
     if(selection)return;
     if(Button)return;
     Vector centro=Vector(X,Y);
     calcle(centro);
     selection= new Selection(centro);
     GLScene();
}
Esempio n. 15
0
//---------------------------------------------------------------------------
void __fastcall TGLForm2D::FormMouseMove(TObject *Sender,
      TShiftState Shift, int X, int Y)
{
     if(!selection)return;
     if(!Shift.Contains(ssLeft))return;
     Vector curr= Vector(X,Y);
     calcle(curr);
     selection->setV(curr, timer->Interval/100.0);
     //la flecha que se dibija es el movomieto por decima de segundo
     GLScene();        
}
Esempio n. 16
0
//---------------------------------------------------------------------------
void __fastcall TGLForm2D::Tiling1Click(TObject *Sender)
{
    if (mDesplazar){
        mDesplazar = false;
    }

    if(UFT->pedirNumColumnas(nCol)){
        mEmbaldosado = true;
        nFil=((nCol+1)*ClientHeight*(xRight-xLeft))/(ClientWidth*(yTop-yBot));
        GLScene();
    }
}
Esempio n. 17
0
//---------------------------------------------------------------------
void __fastcall TGLForm2D::FormResize(TObject *Sender)
{
 //se actualiza puerto de vista
  glViewport(0,0,ClientWidth,ClientHeight);

  // se actualiza el volumen de vista
  aplyView();

  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
  GLScene();

}
Esempio n. 18
0
void __fastcall TGLForm2D::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
 {
    if (mDesplazar){
 	    switch (Key){
        //Izquierda
            case 37:{
            
                GLfloat xRight_aux = xRight - (xRight-xLeft)*0.05;
                GLfloat xLeft_aux = xLeft - (xRight-xLeft)*0.05;
                xRight = xRight_aux;
                xLeft = xLeft_aux;
                break;
            }
        //Abajo
   		    case 38:{
                GLfloat yBot_aux = yBot - (yBot-yTop)*0.05;
                GLfloat yTop_aux = yTop - (yBot-yTop)*0.05;
                yBot = yBot_aux;
                yTop = yTop_aux;
                break;
            }
        //Derecha
   		    case 39:{
               GLfloat xRight_aux = xRight + (xRight-xLeft)*0.05;
               GLfloat xLeft_aux = xLeft + (xRight-xLeft)*0.05;
               xRight = xRight_aux;
               xLeft = xLeft_aux;
               break;
            }
        //Arriba
   		    case 40:{
                GLfloat yBot_aux = yBot + (yBot-yTop)*0.05;
                GLfloat yTop_aux = yTop + (yBot-yTop)*0.05;
                yBot = yBot_aux;
                yTop = yTop_aux;
                break;
            }
        }

        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        gluOrtho2D(xLeft,xRight,yBot,yTop);
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
        GLScene();
    }
Esempio n. 19
0
//---------------------------------------------------------------------
void __fastcall TGLForm2D::FormResize(TObject *Sender)
{

 //se actualiza puerto de vista y su radio
  if ((ClientWidth<=1)||(ClientHeight<=1)){
     ClientWidth=400;
     ClientHeight=400;
     RatioViewPort=1.0;
     }
  else


  RatioViewPort= (float)ClientWidth/(float)ClientHeight;

  glViewport(0,0,ClientWidth,ClientHeight);

  // se actualiza el volumen de vista
  // para que su radio coincida con ratioViewPort
  GLfloat RatioVolVista=(xRight-xLeft)/(yTop-yBot);

  if (RatioViewPort<=RatioVolVista){//hemos hecho la ventana mas alta que ancha
     //Aumentamos yTop-yBot
     GLdouble altoNew= (xRight-xLeft)/RatioViewPort;
     GLdouble yCentro= (yTop+yBot)/2.0;
     yTop= yCentro + altoNew/2.0;
     yBot= yCentro - altoNew/2.0;

     }
  else{                //hemos hecho la ventana mas ancha que alta
     //Aumentamos xRight-xLeft
     GLdouble anchoNew= RatioViewPort*(yTop-yBot);
     GLdouble xCentro= (xRight+xLeft)/2.0;
     xRight= xCentro + anchoNew/2.0;
     xLeft= xCentro - anchoNew/2.0;
  }
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  gluOrtho2D(xLeft,xRight, yBot,yTop);

  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
  GLScene();

}
Esempio n. 20
0
void __fastcall TGLForm3D::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
        switch(Key){
                case 38://up
                        anguloEjeX += 5;
                        break;
                case 40://down
                        anguloEjeX -= 5;
                        break;
                case 39://right
                        anguloEjeY += 5;
                        break;
                case 37://left
                        anguloEjeY -= 5;
                        break;
                case 65://a
                        anguloEjeZ += 5;
                        break;
                case 90://z
                        anguloEjeZ -= 5;
                        break;
                case 81://q
                        c->run();
                        break;
                case 87://w
                        c->back();
                        break;
                case 71://g
                        debug = false;
                        break;
                case 72://h
                        debug = true;
                        break;
                case 74://j
                        normals = true;
                        break;
                case 75://k
                        normals = false;
                        break;
        }
        GLScene();
}
Esempio n. 21
0
void TGLForm2D::zoom(int porcentaje)
{
    GLfloat f = (GLfloat)porcentaje/100;
    GLfloat xRight_aux = ((xRight+xLeft)/2)+(((xRight-xLeft)/f)/2);
    GLfloat xLeft_aux = ((xRight+xLeft)/2)-(((xRight-xLeft)/f)/2);
    GLfloat yTop_aux= ((yTop+yBot)/2)+(((yTop-yBot)/f)/2);
    GLfloat yBot_aux= ((yTop+yBot)/2)-(((yTop-yBot)/f)/2);
    xRight = xRight_aux;
    xLeft = xLeft_aux;
    yTop = yTop_aux;
    yBot = yBot_aux;

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(xLeft,xRight,yBot,yTop);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    GLScene();
}
Esempio n. 22
0
//---------------------------------------------------------------------------
void __fastcall TGLForm2D::keyPressed(TObject *Sender, char &Key){

 switch(Key){
 
         case ' ' : if(timer->Enabled)return;
                    step();
                    break;
                    
         case '+' : zoom*=1.1;
                    aplyView();
                    break;

         case '-' : zoom/=1.1;
                    aplyView();
                    break;

         case 'w' : y+= 20/zoom;
                    aplyView();
                    break;

         case 's' : y-= 20/zoom;
                    aplyView();
                    break;

         case 'd' : x+= 20/zoom;
                    aplyView();
                    break;

         case 'a' : x-= 20/zoom;
                    aplyView();
                    break;

         case '1' : clock(!timer->Enabled);
                    return;

         case '2' : backward();
                    return;

         default:   return;
 }

 GLScene();
}
Esempio n. 23
0
//---------------------------------------------------------------------
void __fastcall TGLForm2D::FormResize(TObject *Sender)
{

 //se actualiza puerto de vista y su radio
  if ((ClientWidth<=1)||(ClientHeight<=1)){
     ClientWidth=400;
     ClientHeight=400;
     RatioViewPort=1.0;
     }
  else RatioViewPort= (float)ClientWidth/(float)ClientHeight;

  glViewport(0,0,ClientWidth,ClientHeight);

    // se actualiza el volumen de vista
  // para que su radio coincida con ratioViewPort
  GLfloat RatioVolVista=(xRight-xLeft)/(yTop-yBot);

  if (RatioVolVista>=RatioViewPort){
     //Aumentamos yTop-yBot
     nuevoAlto = (xRight-xLeft)*ClientHeight/ClientWidth;
     centroY = (yBot+yTop)/2.0;
     yBot = centroY-(nuevoAlto/2.0);
     yTop = centroY+(nuevoAlto/2.0);
     }
  else{
     //Aumentamos xRight-xLeft
     nuevoAncho = (yTop-yBot)*ClientWidth/ClientHeight;
     centroX = (xLeft+xRight)/2.0;
     xRight=centroX+(nuevoAncho/2.0);
     xLeft=centroX-(nuevoAncho/2.0);
     }

  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  gluOrtho2D(xLeft,xRight, yBot,yTop);


  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
  GLScene();

}
Esempio n. 24
0
void __fastcall TGLForm2D::Centrar1Click(TObject *Sender)
{
    if (mEmbaldosado){
        mEmbaldosado = false;
        glViewport(0,0,ClientWidth,ClientHeight);
    }
    GLfloat xR,yT;
    xR=((xLeft+xRight)/2.0)-((x1+x2+x3)/3.0);
    xRight=xRight-xR;
    xLeft=xLeft-xR;
    yT=((yBot+yTop)/2.0)-((y1+y2+y3)/3.0);
    yTop=yTop-yT;
    yBot=yBot-yT;

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(xLeft,xRight,yBot,yTop);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    GLScene();
}
Esempio n. 25
0
//---------------------------------------------------------------------------
void __fastcall TGLForm2D::FormPaint(TObject *Sender)
{
    GLScene();
}
Esempio n. 26
0
void __fastcall TGLForm2D::SelectClick(TObject *Sender)
{
        seleccionar = !seleccionar;
        sc->getArbol()->desSelec();
        GLScene();        
}
Esempio n. 27
0
void __fastcall TGLForm2D::QuitarClick(TObject *Sender)
{
        sc->getArbol()->desanidar();
        GLScene();        
}
Esempio n. 28
0
void __fastcall TGLForm2D::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{

switch(Key){
        case(TECLA_E):
                cols = 0;
                while(!embaldosa && cols <= 0){
                        TForm* x = new TFormS(this,cols);
                        x->Caption = "Introduce Columnas";
                        x->ShowModal();
                }
                embaldosa = !embaldosa;
                if(!embaldosa)
                        glViewport(0,0,ClientWidth,ClientHeight);
                break;
        case(KEY_LEFT):
                xLeft += 5;
                xRight += 5;
                centroX += 5;
                sc->set(xLeft,xRight,yTop,yBot);
                break;
        case(KEY_RIGHT):
                xLeft -= 5;
                xRight -= 5;
                centroX -= 5;
                sc->set(xLeft,xRight,yTop,yBot);
                break;
        case(KEY_UP):
                yTop -= 5;
                yBot -= 5;
                centroY -= 5;
                sc->set(xLeft,xRight,yTop,yBot);
                break;
        case(KEY_DOWN):
                yTop += 5;
                yBot += 5;
                centroY += 5;
                sc->set(xLeft,xRight,yTop,yBot);
                break;
        case(ZOOM_IN):
                nuevoAncho = (xRight-xLeft)/1.1;
                nuevoAlto = (yTop-yBot)/1.1;
                yBot = centroY-(nuevoAlto/2.0);
                yTop = centroY+(nuevoAlto/2.0);
                xRight = centroX+(nuevoAncho/2.0);
                xLeft = centroX-(nuevoAncho/2.0);
                sc->set(xLeft,xRight,yTop,yBot);
                break;
        case(ZOOM_OUT):
                nuevoAncho = (xRight-xLeft)*1.1;
                nuevoAlto = (yTop-yBot)*1.1;
                yBot = centroY-(nuevoAlto/2.0);
                yTop = centroY+(nuevoAlto/2.0);
                xRight = centroX+(nuevoAncho/2.0);
                xLeft = centroX-(nuevoAncho/2.0);
                sc->set(xLeft,xRight,yTop,yBot);
                break;
}
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(xLeft,xRight, yBot,yTop);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
GLScene();
}