Добавил:
Kolobok
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:C++ ЕНФ (3семестр) / LABA_2 / 2.1.1 / classTVector
.cpp#ifndef _Vector
#define _Vector
#include <vcl.h>
#include "fstream.h"
#include "iostream.h"
#include "math.h"
class TVector
{
friend class TPictureForm;
//friend class TInputForm3;
private:
bool Edited;
float Getax() {return ax;}
float Getay() {return ay;}
float Getaz() {return az;}
float Getbx() {return bx;}
float Getby() {return by;}
float Getbz() {return bz;}
void Setax(float a){ax=a;Edited=true;}
void Setay(float a){ay=a;Edited=true;}
void Setaz(float a){az=a;Edited=true;}
void Setbx(float a){bx=a;Edited=true;}
void Setby(float a){by=a;Edited=true;}
void Setbz(float a){bz=a;Edited=true;}
bool GetEdited(){return Edited;}
public:
void SetAllZero(){ax=0;ay=0;az=0;bx=0;by=0;bz=0;}
float Scalar();
void Draw(TImage *T);
void Zanos(TEdit *T1,TEdit *T2,TEdit *T3,TEdit *T4,TEdit *T5,TEdit *T6);
void Schit(TEdit *T1,TEdit *T2,TEdit *T3,TEdit *T4,TEdit *T5,TEdit *T6);
float ax,ay,az,bx,by,bz;
TVector();
bool Write(char *file);
bool Read(char *file);
bool Zero();
};
bool TVector::Zero()
{
if(ax==0 && ay==0 && az==0 && bx==0 && by==0 && bz==0 )
return true;
else return false;
}
TVector::TVector()
{
ax=0;ay=0;az=0;
bx=0;by=0;bz=0;
Edited=false;
}
void TVector::Schit(TEdit *T1,TEdit *T2,TEdit *T3,TEdit *T4,TEdit *T5,TEdit *T6)
{
ax=StrToFloat(T1->Text);
ay=StrToFloat(T2->Text);
az=StrToFloat(T3->Text);
bx=StrToFloat(T4->Text);
by=StrToFloat(T5->Text);
bz=StrToFloat(T6->Text);
}
void TVector::Zanos(TEdit *T1,TEdit *T2,TEdit *T3,TEdit *T4,TEdit *T5,TEdit *T6)
{
T1->Text=FloatToStr(ax);
T2->Text=FloatToStr(ay);
T3->Text=FloatToStr(az);
T4->Text=FloatToStr(bx);
T5->Text=FloatToStr(by);
T6->Text=FloatToStr(bz);
}
//----------------------------------------------------------------
float TVector::Scalar()
{
return ax*bx+ay*by+az*bz;
}
//----------------------------------------------------------------
void TVector::Draw(TImage *T)
{
T->Canvas->Brush->Style=bsSolid;
T->Canvas->Brush->Color=clWhite ; //???? ????
T->Canvas->Rectangle(0,0,800,800);
//T->Canvas->Chord()
int i ;
float pax=ax,pay=ay,pbx=bx,pby=by;//,paz=az,pbz=bz;
while(abs(pax)>=30 || abs(pbx)>=30)
{pax=pax/2;pbx=pbx/2;}
while(abs(pay)>=30 || abs(pby)>=30)
{pay=pay/2;pby=pby/2;}
// настройка пера
T->Canvas->Pen->Style=psSolid;
T->Canvas->Pen->Color=clBlack;
T->Canvas->Pen->Width=2;
//Ось Ох
T->Canvas->MoveTo(0,350);
T->Canvas->LineTo(700,350);
//Ось Оу
T->Canvas->MoveTo(350,5);
T->Canvas->LineTo(350,700);
//Стрелка для Х
T->Canvas->MoveTo(700,350);
T->Canvas->LineTo(690,345);
T->Canvas->MoveTo(700,350);
T->Canvas->LineTo(690,355);
//Стрелка для У
T->Canvas->MoveTo(350,5);
T->Canvas->LineTo(345,10);
T->Canvas->MoveTo(350,5);
T->Canvas->LineTo(355,10);
T->Canvas->TextOutA(700,330,"X");
T->Canvas->TextOutA(330,10,"Y");
T->Canvas->TextOutA(340,360,"0");
//vectors
T->Canvas->Pen->Style=psSolid;
T->Canvas->Pen->Width=3;
//a
T->Canvas->Pen->Color=clRed;
T->Canvas->MoveTo(350,350);
T->Canvas->LineTo(350+10*pax,350-10*pay);
if (ax!=0) T->Canvas->TextOutA(350+10*pax,350,ax);
if (ay!=0) T->Canvas->TextOutA(350,350-10*pay,ay);
//b
T->Canvas->Pen->Color=clBlue;
T->Canvas->MoveTo(350,350);
T->Canvas->LineTo(350+10*pbx,350-10*pby);
if (bx!=0) T->Canvas->TextOutA(350+10*pbx,350,bx);
if (by!=0) T->Canvas->TextOutA(350,350-10*pby,by);
}
//-----------------------------------------------
bool TVector::Read(char *filename)
{
ifstream file(filename);
if (!file.good())
{
file.close();
return false;
}
float a1,a2,a3,a4,a5,a6;
file>>a1;
if (!file.good())
{
file.close();
return false;
}
file>>a2;
if (!file.good())
{
file.close();
return false;
}
file>>a3;
if (!file.good())
{
file.close();
return false;
}
file>>a4;
if (!file.good())
{
file.close();
return false;
}
file>>a5;
if (!file.good())
{
file.close();
return false;
}
file>>a6;
if (!file.good())
{
file.close();
return false;
}
ax=a1; ay=a2; az=a3; bx=a4; by=a5;bz=a6;
Edited=false;
file.close();
return true;
}
//---------------------------------------------------------------------------
bool TVector::Write(char *filename)
{
ofstream file(filename);
if (!file.good())
{
file.close();
return false;
}
file<<ax<<" "<<ay<<" "<<az<<" "<<bx<<" "<<by<<" "<<bz<<endl;
Edited=false;
file.close();
return true;
}
#endif