#pragma package(smart_init)
float ks=cos(45*3.14/180);
float ksin=sin(40*3.14/3.14), kcos=cos(40*3.14/180);
int midx, midy,l=500,r=60;
__fastcall TForm1::TForm1(TComponent* Owner)
void __fastcall TForm1::FormCreate(TObject *Sender)
Image1->Canvas->Brush->Color=clBlack;
Image1->Canvas->FillRect(Rect(0,0,midx*2,midy*2));
Image1->Canvas->Pen->Color=clBlue;
Image1->Canvas->Pen->Width=10;
void __fastcall TForm1::RexDraw(bool fl)
Image1->Canvas->FillRect(Rect(0,0,midx*2,midy*2));
Image1->Canvas->MoveTo(matr2d[3].x, matr2d[3].y);
Image1->Canvas->LineTo(matr2d[i].x, matr2d[i].y);
Image1->Canvas->LineTo(matr2d[4].x, matr2d[4].y);
Image1->Canvas->MoveTo(matr2d[0].x, matr2d[0].y);
Image1->Canvas->LineTo(matr2d[5].x, matr2d[5].y);
Image1->Canvas->MoveTo(matr2d[1].x, matr2d[1].y);
Image1->Canvas->LineTo(matr2d[6].x, matr2d[6].y);
Image1->Canvas->MoveTo(matr2d[2].x, matr2d[2].y);
Image1->Canvas->LineTo(matr2d[7].x, matr2d[7].y);
if(Form2->RadioButton1->Checked)
Image1->Canvas->FillRect(Rect(0,0,midx*2,midy*2));
Image1->Canvas->MoveTo(matr2d[3].x, matr2d[3].y);
Image1->Canvas->LineTo(matr2d[i].x, matr2d[i].y);
Image1->Canvas->LineTo(matr2d[4].x, matr2d[4].y);
Image1->Canvas->MoveTo(matr2d[0].x, matr2d[0].y);
Image1->Canvas->LineTo(matr2d[5].x, matr2d[5].y);
Image1->Canvas->MoveTo(matr2d[1].x, matr2d[1].y);
Image1->Canvas->LineTo(matr2d[6].x, matr2d[6].y);
Image1->Canvas->MoveTo(matr2d[2].x, matr2d[2].y);
Image1->Canvas->LineTo(matr2d[7].x, matr2d[7].y);
if(Form2->RadioButton2->Checked)
Image1->Canvas->FillRect(Rect(0,0,midx*2,midy*2));
Image1->Canvas->MoveTo(matr2d[3].x, matr2d[3].y);
Image1->Canvas->LineTo(matr2d[i].x, matr2d[i].y);
Image1->Canvas->LineTo(matr2d[4].x, matr2d[4].y);
Image1->Canvas->MoveTo(matr2d[0].x, matr2d[0].y);
Image1->Canvas->LineTo(matr2d[4].x, matr2d[4].y);
Image1->Canvas->MoveTo(matr2d[1].x, matr2d[1].y);
Image1->Canvas->LineTo(matr2d[4].x, matr2d[4].y);
Image1->Canvas->MoveTo(matr2d[2].x, matr2d[2].y);
Image1->Canvas->LineTo(matr2d[4].x, matr2d[4].y);
if(Form2->RadioButton3->Checked)
Image1->Canvas->FillRect(Rect(0,0,midx*2,midy*2));
Image1->Canvas->MoveTo(matr2d[3].x, matr2d[3].y);
Image1->Canvas->LineTo(matr2d[i].x, matr2d[i].y);
Image1->Canvas->LineTo(matr2d[4].x, matr2d[4].y);
Image1->Canvas->MoveTo(matr2d[0].x, matr2d[0].y);
Image1->Canvas->LineTo(matr2d[4].x, matr2d[4].y);
Image1->Canvas->MoveTo(matr2d[1].x, matr2d[1].y);
Image1->Canvas->LineTo(matr2d[4].x, matr2d[4].y);
Image1->Canvas->MoveTo(matr2d[2].x, matr2d[2].y);
Image1->Canvas->LineTo(matr2d[4].x, matr2d[4].y);
Image1->Canvas->MoveTo(matr2d[3].x, matr2d[3].y);
Image1->Canvas->LineTo(matr2d[5].x, matr2d[5].y);
Image1->Canvas->MoveTo(matr2d[0].x, matr2d[0].y);
Image1->Canvas->LineTo(matr2d[5].x, matr2d[5].y);
Image1->Canvas->MoveTo(matr2d[1].x, matr2d[1].y);
Image1->Canvas->LineTo(matr2d[5].x, matr2d[5].y);
Image1->Canvas->MoveTo(matr2d[2].x, matr2d[2].y);
Image1->Canvas->LineTo(matr2d[5].x, matr2d[5].y);
void __fastcall TForm1::RexRotOX(bool fl)
matr3d[i].y=y*cos(krot*f*3.14/180)-z*sin(krot*f*3.14/180);
matr3d[i].z=y*sin(krot*f*3.14/180)+z*cos(krot*f*3.14/180);
void __fastcall TForm1::RexRotOY(bool fl)
matr3d[i].x=x*cos(krot*f*3.14/180)+z*sin(krot*f*3.14/180);
matr3d[i].z=-x*sin(krot*f*3.14/180)+z*cos(krot*f*3.14/180);
void __fastcall TForm1::RexRotOZ(bool fl)
matr3d[i].x=x*cos(krot*f*3.14/180)-y*sin(krot*f*3.14/180);
matr3d[i].y=x*sin(krot*f*3.14/180)+y*cos(krot*f*3.14/180);
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
void __fastcall TForm1::RexProection(bool fl)
matr2d[i].x=matr3d[i].x*kcos-matr3d[i].y*kcos+midx;
matr2d[i].y=matr3d[i].z-matr3d[i].y*ksin-matr3d[i].x*ksin+midy;
if(Form2->RadioButton4->Checked)
matr2d[i].x=x*kcos-y*kcos+midx;
matr2d[i].y=z-y*ksin-x*ksin+midy;
if(Form2->RadioButton5->Checked)
void __fastcall TForm1::SpeedButton3Click(TObject *Sender)
void __fastcall TForm1::SpeedButton4Click(TObject *Sender)
void __fastcall TForm1::SpeedButton5Click(TObject *Sender)
void __fastcall TForm1::SpeedButton6Click(TObject *Sender)
void __fastcall TForm1::SpeedButton7Click(TObject *Sender)
if(Form2->RadioButton1->Checked) DefCube();
if(Form2->RadioButton2->Checked) DefTetr();
if(Form2->RadioButton3->Checked) DefOct();
Image1->Canvas->Pen->Color=Form2->Panel6->Color;
Image1->Canvas->Brush->Color=Form2->Panel7->Color;
krot=Form2->TrackBar1->Position;
l=Form2->TrackBar3->Position;
void __fastcall TForm1::SpeedButton9Click(TObject *Sender)
void __fastcall TForm1::SpeedButton8Click(TObject *Sender)
void __fastcall TForm1::Timer1Timer(TObject *Sender)
void __fastcall TForm1::DefCube(void)
matr3d[0].x=40; matr3d[0].y=40; matr3d[0].z=40;
matr3d[1].x=-40;matr3d[1].y=40; matr3d[1].z=40;
matr3d[2].x=-40;matr3d[2].y=-40;matr3d[2].z=40;
matr3d[3].x=40; matr3d[3].y=-40;matr3d[3].z=40;
matr3d[4].x=40; matr3d[4].y=-40;matr3d[4].z=-40;
matr3d[5].x=40; matr3d[5].y=40; matr3d[5].z=-40;
matr3d[6].x=-40;matr3d[6].y=40; matr3d[6].z=-40;
matr3d[7].x=-40;matr3d[7].y=-40;matr3d[7].z=-40;
void __fastcall TForm1::DefTetr(void)
matr3d[0].x=40; matr3d[0].y=40; matr3d[0].z=40;
matr3d[1].x=-40;matr3d[1].y=40; matr3d[1].z=40;
matr3d[2].x=-40;matr3d[2].y=-40;matr3d[2].z=40;
matr3d[3].x=40; matr3d[3].y=-40;matr3d[3].z=40;
matr3d[4].x=0; matr3d[4].y=0;matr3d[4].z=-40;
void __fastcall TForm1::DefOct(void)
matr3d[0].x=40; matr3d[0].y=40; matr3d[0].z=0;
matr3d[1].x=-40;matr3d[1].y=40; matr3d[1].z=0;
matr3d[2].x=-40;matr3d[2].y=-40;matr3d[2].z=0;
matr3d[3].x=40; matr3d[3].y=-40;matr3d[3].z=0;
matr3d[4].x=0; matr3d[4].y=0;matr3d[4].z=-90;
matr3d[5].x=0; matr3d[5].y=0;matr3d[5].z=90;
/---------------------------------------------------------------------------
#pragma package(smart_init)
__fastcall TForm2::TForm2(TComponent* Owner)
void __fastcall TForm2::FormCreate(TObject *Sender)
{ Panel6->Color=Form1->Image1->Canvas->Pen->Color;
Panel7->Color=Form1->Image1->Canvas->Brush->Color;
void __fastcall TForm2::Panel6Click(TObject *Sender)
{ if(ColorDialog1->Execute()) Panel6->Color=ColorDialog1->Color;
void __fastcall TForm2::Panel7Click(TObject *Sender)
if(ColorDialog1->Execute()) Panel7->Color=ColorDialog1->Color;
void __fastcall TForm2::TrackBar1Change(TObject *Sender)
{ Label1->Caption="Ротация на "+IntToStr(TrackBar1->Position)+" градус.";
void __fastcall TForm2::TrackBar2Change(TObject *Sender)
{ Form1->Image1->Canvas->Pen->Width=TrackBar2->Position;