domingo, 27 de noviembre de 2011

examen de la unidad 2


//---------------------------------------------------------------------------
#define ROUND(x) ((int)(x+0.5))

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Math.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void TForm1::Inicia()
{
   int grados, cont = 24;
   int Figura[5][2];

   Figura[0][0]= 5;  Figura[0][1]= -5;
   Figura[1][0]= 5;  Figura[1][1]= 20;
   Figura[2][0]= 1;  Figura[2][1]= 1;
   Figura[3][0]= 10; Figura[3][1]= 1;
   Figura[4][0]= 5;  Figura[4][1]= 20;

   Dibujar(Figura);
   grados = 45;
   for(int i = 0;  i < cont; i++)
   {
     Figura[0][0]+= 10; //5;
     Figura[1][0]+= 10; //5;
     Figura[2][0]+= 10; //5;
     Figura[3][0]+= 10; //5;
     Figura[4][0]+= 10; //5;
     Sleep(30);
     Rotar(Figura,grados);
     grados+=25;
   }
   Canvas->Font->Color = clRed;
   Canvas->TextOutA(240,0,"CRASH");
}

//---------------------------------------------------------------------------
void TForm1::Dibujar(int Fig[][2])
{
//SUPONGA: ClientWidth = ClientHeight = 500
   int centroX = ClientWidth/2;
   int centroY = ClientHeight/2;
   int x1,y1,x2,y2;
   x1 = Fig[2][0];
   y1 = Fig[2][1];
   Canvas->Pen->Color = RGB(0,100,130);
   Canvas->MoveTo(x1+centroX, y1+centroY);
   for(int i = 0; i < 5; i++)
   {
      x2 = Fig[i][0];
      y2 = Fig[i][1];
      //Line_DDA(x1+centroX, y1+centroY, x2+centroX, //y2+centroY);

      Canvas->LineTo(x2+centroX, y2+centroY);
      x1 = x2;
      y1 = y2;
   }
}

//---------------------------------------------------------------------------
void TForm1::Rotar(int fig[][2],int grados)
{
   float angulo = grados * M_PI /180.0;
   int FiguraT[5][2];
   float MatT[2][2];

   MatT[0][0]= cos(angulo);         MatT[0][1] = sin(angulo);
   MatT[1][0]= -sin(angulo);        MatT[1][1] = cos(angulo);
   for(int i = 0;i < 5; i++)
   {
      for(int j = 0; j < 2; j++)
      {
          FiguraT[i][j]= 0;
          for(int k = 0; k < 2; k++)
            FiguraT[i][j]+= ROUND(fig[i][k]*MatT[k][j]);
      }
   }
   Dibujar(FiguraT);
}

//---------------------------------------------------------------------------
void __fastcall TForm1::FormClick(TObject *Sender)
{
   Repaint();
   Inicia();

}
//-------------------------

No hay comentarios:

Publicar un comentario