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();
}
//-------------------------
circulo y linea dda
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PaintBox1MouseUp(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
Edit2->Text = x2 = X;
Edit4->Text = y2 = Y;
if(RadioButton1->Checked)
{
PaintBox1->Repaint();
g->Linea_DDA(x1, y1, x2, y2);
}
if(RadioButton2->Checked)
{
PaintBox1->Repaint();
g->Circulo_X_Segmento(xc, yc, x2 - x1);
}
if(RadioButton3->Checked)
{
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PaintBox1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
Edit1->Text = x1 = X;
Edit3->Text = y1 = Y;
Edit5->Text = xc = X;
Edit6->Text = yc = Y;
Edit7->Text = xc - x1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
g = new Graficos(PaintBox1->Canvas);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton1Click(TObject *Sender)
{
if(RadioButton1->Checked)
{
Edit1->Enabled = true;
Edit2->Enabled = true;
Edit3->Enabled = true;
Edit4->Enabled = true;
Edit5->Enabled= false;
Edit6->Enabled = false;
Edit7->Enabled = false;
Button1->Enabled = false;
//Button2->Enabled = false;
Button3->Enabled = false;
Button4->Enabled = false;
Button5->Enabled = false;
Button6->Enabled = false;
//Edit8->Enabled = false;
//Edit9->Enabled = false;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton2Click(TObject *Sender)
{
if(RadioButton2->Checked)
{
Edit1->Enabled = false;
Edit2->Enabled = false;
Edit3->Enabled = false;
Edit4->Enabled = false;
Edit5->Enabled= true;
Edit6->Enabled = true;
Edit7->Enabled = true;
Button1->Enabled = false;
//Button2->Enabled = false;
Button3->Enabled = false;
Button4->Enabled = false;
Button5->Enabled = false;
Button6->Enabled = false;
//Edit8->Enabled = false;
//Edit9->Enabled = false;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioButton3Click(TObject *Sender)
{
if(RadioButton3->Checked)
{
Edit1->Enabled = false;
Edit2->Enabled = false;
Edit3->Enabled = false;
Edit4->Enabled = false;
Edit5->Enabled= false;
Edit6->Enabled = false;
Edit7->Enabled = false;
Button1->Enabled = true;
//Button2->Enabled = true;
Button3->Enabled = true;
Button4->Enabled = true;
Button5->Enabled = true;
Button6->Enabled = true;
//Edit8->Enabled = true;
//Edit9->Enabled = true;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
PaintBox1->Repaint();
xcW = PaintBox1->ClientWidth/2;
ycH = PaintBox1->ClientHeight/2;
g->Espiral_1(xcW, ycH);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
PaintBox1->Repaint();
xcW = PaintBox1->ClientWidth/2;
ycH = PaintBox1->ClientHeight/2;
g->Espiral_2(xcW, ycH);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
PaintBox1->Repaint();
xcW = PaintBox1->ClientWidth/2;
ycH = PaintBox1->ClientHeight/2;
val = ComboBox1->Text.ToInt();
g->Efecto_Espiral_1(xcW, ycH, val);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
PaintBox1->Repaint();
xcW = PaintBox1->ClientWidth/2;
ycH = PaintBox1->ClientHeight/2;
rad = ComboBox3->Text.ToDouble();
th = ComboBox2->Text.ToDouble();
g->Efecto_Espiral_2(xcW, ycH, th, rad);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
PaintBox1->Repaint();
xcW = PaintBox1->ClientWidth/2;
ycH = PaintBox1->ClientHeight/2;
val2 = ComboBox4->Text.ToInt();
radi = ComboBox5->Text.ToDouble();
g->Efecto_1(xcW, ycH, val2, radi);
}
//---------------------------------------------------------------------------
fractales
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
//Esta funcion dibujara solo 1 triangulo y entonces empezara la funcion de recursividad a si mismo
void TForm1::drawSierpinski(float x1, float y1, float x2, float y2, float x3, float y3)
{
//Aqui dibujamos las 3 lineas del triangulo, uniendo los 3 puntos para generar lineas
this->Canvas->Pen->Color=(TColor)random(65000);
this->Canvas->MoveTo(x1,y1);
this->Canvas->LineTo(x2,y2);
this->Canvas->MoveTo(x2,y2);
this->Canvas->LineTo(x3,y3);
this->Canvas->MoveTo(x3,y3);
this->Canvas->LineTo(x1,y1);
//Llamamos a la funcion de recursividad y pintara el resto de los tringulos, las 3 esquinas de triangulo son simempre el centro de su posicion
subTriangle
(
1, //Esto representa la primer recursicion
(x1 + x2) / 2, //coordenada x de la primera esquina
(y1 + y2) / 2, //coordenada y de la primera esquina
(x1 + x3) / 2, //coordenada x de la segunda esquina
(y1 + y3) / 2, //coordenada y de la segunda esquina
(x2 + x3) / 2, //coordenada x de la tercera esquina
(y2 + y3) / 2 //coordenada y de la tercera esquina
);
}
//La funcion de recursividad subtriangulo pintara todo lo que esta dentro del tringulo mayor a este
void TForm1::subTriangle(int n, float x1, float y1, float x2, float y2, float x3, float y3)
{
Sleep(10);
//Dibujamos los 3 lados del subtriangulo
this->Canvas->MoveTo(x1,y1);
this->Canvas->LineTo(x2,y2);
this->Canvas->MoveTo(x2,y2);
this->Canvas->LineTo(x3,y3);
this->Canvas->MoveTo(x3,y3);
this->Canvas->LineTo(x1,y1);
//Llamadas a si mismo 3 veces con nuevas esquinas,pero solo si el actual numero de recurrencias es menor que la profundidad maxima
if(n < depth)
{
//Triangulo mas pequeño #1
subTriangle
(
n+1, //numero de recurrencias para la siguiente llamada con aumento de 1
(x1 + x2) / 2 + (x2 - x3) / 2, //coordenada x de la primera esquina
(y1 + y2) / 2 + (y2 - y3) / 2, //coordenada y de la primera esquina
(x1 + x2) / 2 + (x1 - x3) / 2, //coordenada x de la segunda esquina
(y1 + y2) / 2 + (y1 - y3) / 2, //coordenada y de la segunda esquina
(x1 + x2) / 2, //coordendaa x de la tercera esquina
(y1 + y2) / 2 //coordenada y de la tercera esquina
);
//Triangulo mas pequeño #2
subTriangle
(
n+1, //numero de recurrencias para la siguiente llamada con aumento de 1
(x3 + x2) / 2 + (x2 - x1) / 2,
(y3 + y2) / 2 + (y2 - y1) / 2,
(x3 + x2) / 2 + (x3 - x1) / 2,
(y3 + y2) / 2 + (y3 - y1) / 2,
(x3 + x2) / 2,
(y3 + y2) / 2
);
//Triangulo mas pequeño #3
subTriangle
(
n+1, //numero de recurrencias para la siguiente llamada con aumento de 1
(x1 + x3) / 2 + (x3 - x2) / 2,
(y1 + y3) / 2 + (y3 - y2) / 2,
(x1 + x3) / 2 + (x1 - x2) / 2,
(y1 + y3) / 2 + (y1 - y2) / 2,
(x1 + x3) / 2,
(y1 + y3) / 2
);
}
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
this->Repaint();
Sleep(1);
Button1->Enabled=false;
//Llamamos a la función de Sierpinski (funciona con cualquier esquina dentro de la pantalla)
//Asignamos las coordenadas del tringulo principal "el mas grande"
drawSierpinski(10, h - 10, w - 10, h - 10, w / 2, 10);
Button1->Enabled=true;
Button1->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
depth=7;
this->ClientWidth=640;
this->ClientHeight=480;
w=this->ClientWidth;
h=this->ClientHeight;
}
//---------------------------------------------------------------------------
Manipulacion de colores y pixeles
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TColor color,r;
for(int i=0;i<Image1->Width;i++)
{
for(int j=0;j<Image1->Height;j++)
{
color= Image1->Canvas->Pixels[i][j];
r=color & 255;
Image2->Canvas->Pixels[i][j]=r;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TColor color,r;
for(int i=0;i<Image1->Width;i++)
{
for(int j=0;j<Image1->Height;j++)
{
color= Image1->Canvas->Pixels[i][j];
r=color & 0xff0000;
Image2->Canvas->Pixels[i][j]=r;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
TColor color,r;
for(int i=0;i<Image1->Width;i++)
{
for(int j=0;j<Image1->Height;j++)
{
color= Image1->Canvas->Pixels[i][j];
r=color & 0x000ff00;
Image2->Canvas->Pixels[i][j]=r;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
Image2->CleanupInstance();
for(int i=0;i<Image1->Width;i++)
{
for(int j=0;j<Image1->Height;j++)
{
Image2->Canvas->Pixels[Image2->Width -i][Image2->Height -j]=Image1->Canvas->Pixels[i][j];
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
Label2->Caption=X ;
Label4->Caption= Y;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
Label2->Caption= X;
Label4->Caption=Y;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image2MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
//Label2->Caption=X ;
//Label4->Caption= Y;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{ Image2->CleanupInstance();
Image2->Height=Image1->Width -3;
Image2->Width=Image1->Height-3;
for(int i=0;i<Image1->Width;i++)
{
for(int j=0;j<Image1->Height;j++)
{
Image2->Canvas->Pixels[j][i]=Image1->Canvas->Pixels[i][j];
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
Image2->CleanupInstance();
/*Image2->Height=Image1->Width -3;
Image2->Width=Image1->Height-3;
for(int i=0;i<Image1->Width;i++)
{
for(int j=0;j<Image1->Height;j++)
{
Image2->Canvas->Pixels[i][j]=Image1->Canvas->Pixels[Image1->Height-j][Image1->Width -i];
} */ for(int x = 0; x < Image1->Width; x++)
{
for(int y =0; y < Image1->Height; y++)
{
int w= -1*(x-Image1->Width);
Image2->Canvas->Pixels[w][y] = Image1->Canvas->Pixels[x][y];
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button7Click(TObject *Sender)
{
TColor pixelColor, Verde;
for(int y=0; y<Image1->Height; y++)
for(int x=0; x<Image1->Width; x++)
{
pixelColor= Image1->Canvas->Pixels[x][y];
//Verde = pixelColor & 0x0000FF00;
Verde = pixelColor | 0x0000FF00;
Image2->Canvas->Pixels[x][y] ^= Verde;
}
}
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TColor color,r;
for(int i=0;i<Image1->Width;i++)
{
for(int j=0;j<Image1->Height;j++)
{
color= Image1->Canvas->Pixels[i][j];
r=color & 255;
Image2->Canvas->Pixels[i][j]=r;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TColor color,r;
for(int i=0;i<Image1->Width;i++)
{
for(int j=0;j<Image1->Height;j++)
{
color= Image1->Canvas->Pixels[i][j];
r=color & 0xff0000;
Image2->Canvas->Pixels[i][j]=r;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
TColor color,r;
for(int i=0;i<Image1->Width;i++)
{
for(int j=0;j<Image1->Height;j++)
{
color= Image1->Canvas->Pixels[i][j];
r=color & 0x000ff00;
Image2->Canvas->Pixels[i][j]=r;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
Image2->CleanupInstance();
for(int i=0;i<Image1->Width;i++)
{
for(int j=0;j<Image1->Height;j++)
{
Image2->Canvas->Pixels[Image2->Width -i][Image2->Height -j]=Image1->Canvas->Pixels[i][j];
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
Label2->Caption=X ;
Label4->Caption= Y;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
Label2->Caption= X;
Label4->Caption=Y;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image2MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
//Label2->Caption=X ;
//Label4->Caption= Y;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{ Image2->CleanupInstance();
Image2->Height=Image1->Width -3;
Image2->Width=Image1->Height-3;
for(int i=0;i<Image1->Width;i++)
{
for(int j=0;j<Image1->Height;j++)
{
Image2->Canvas->Pixels[j][i]=Image1->Canvas->Pixels[i][j];
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
Image2->CleanupInstance();
/*Image2->Height=Image1->Width -3;
Image2->Width=Image1->Height-3;
for(int i=0;i<Image1->Width;i++)
{
for(int j=0;j<Image1->Height;j++)
{
Image2->Canvas->Pixels[i][j]=Image1->Canvas->Pixels[Image1->Height-j][Image1->Width -i];
} */ for(int x = 0; x < Image1->Width; x++)
{
for(int y =0; y < Image1->Height; y++)
{
int w= -1*(x-Image1->Width);
Image2->Canvas->Pixels[w][y] = Image1->Canvas->Pixels[x][y];
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button7Click(TObject *Sender)
{
TColor pixelColor, Verde;
for(int y=0; y<Image1->Height; y++)
for(int x=0; x<Image1->Width; x++)
{
pixelColor= Image1->Canvas->Pixels[x][y];
//Verde = pixelColor & 0x0000FF00;
Verde = pixelColor | 0x0000FF00;
Image2->Canvas->Pixels[x][y] ^= Verde;
}
}
Suscribirse a:
Entradas (Atom)



