Páginas

domingo, 27 de noviembre de 2011

Examen Unidad2Avion





/---------------------------------------------------------------------------
#define ROUND(x) ((int)(x+0.5))
#include
#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 __fastcall TForm1::FormClick(TObject *Sender)
{
Repaint();
Inicia();
}
//---------------------------------------------------------------------------
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(255,95,193);
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);
}

No hay comentarios:

Publicar un comentario