Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
8
Добавлен:
25.05.2014
Размер:
4.76 Кб
Скачать
#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
Соседние файлы в папке 2.1.1