我要在平面上作任意兩點的中垂線,我程式寫出來但電腦總是會自動把我的商數算到整數位而已,要如何才可以算到小數位ㄋ??我用ImageMouseDown這個物件來感應滑鼠所點的座標,但X,Y都是int,要如何做ㄋ??
我的程式如下:
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
Image1->Canvas->Pen->Width=5;
Image1->Canvas->Pen->Style=psDashDot;
Image1->Canvas->Pen->Color=clRed;
Image1->Canvas->MoveTo(X,Y);
Image1->Canvas->LineTo(X,Y);
if(i<3&&Shift.Contains(ssLeft))
{
a[i].x=X;
a[i].y=Y;
Label1->Caption="x=" IntToStr(a[i].x) " y=" IntToStr(a[i].y);
C =i;
i ; }
for(int t=0;ta[t 1].x)
{
temp=a[t].x;
a[t].x=a[t 1].x;
a[t 1].x=a[t].x;
}
}
}
VD(a,b,C);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Exit1Click(TObject *Sender)
{
Close();
}
//--------------------------------------------------------------------------- void __fastcall TForm1::Reset1Click(TObject *Sender)
{
Image1->Canvas->FillRect(Rect(0,0,Image1->Width,Image1->Height));
i=0;
C=1;
}
//---------------------------------------------------------------------------
void VD(ip c[10],ip1 d[10],int n)
{
int k=0,X1,Y1,X2,Y2;
ip e[10],f[10];
ip1 eb[10],fb[10];
if(n==1)
{
Form1->Image1->Canvas->Pen->Width=5;
Form1->Image1->Canvas->Pen->Style=psDashDot;
Form1->Image1->Canvas->Pen->Color=clRed;
Form1->Image1->Canvas->MoveTo(c[0].x,c[0].y);
Form1->Image1->Canvas->LineTo(c[0].x,c[0].y);
}
else if(n==2)
{
if((c[1].x-c[0].x)==0)
{
Form1->Image1->Canvas->Pen->Width=2;
Form1->Image1->Canvas->Pen->Style=psSolid;
Form1->Image1->Canvas->Pen->Color=clBlue;
Form1->Image1->Canvas->MoveTo(d[0].x,d[0].y);
Form1->Image1->Canvas->LineTo(Form1->Image1->Width,d[0].y);
Form1->Image1->Canvas->LineTo(0,d[0].y);
}
else
{
M=(c[1].y-c[0].y)/(c[1].x-c[0].x);
if(M==0)
{
Y1=0;
X1=b[0].x;
Form1->Image1->Canvas->Pen->Width=2;
Form1->Image1->Canvas->Pen->Style=psSolid;
Form1->Image1->Canvas->Pen->Color=clBlue;
Form1->Image1->Canvas->MoveTo(d[0].x,d[0].y);
Form1->Image1->Canvas->LineTo(X1,Y1);
Form1->Image1->Canvas->MoveTo(X1,Y1);
Form1->Image1->Canvas->LineTo(X1,999);
}
else if(M>0)
{
Y1=0;
X1=(Y1-d[0].y)*(-M) d[0].x;
Form1->Image1->Canvas->Pen->Width=2;
Form1->Image1->Canvas->Pen->Style=psSolid;
Form1->Image1->Canvas->Pen->Color=clBlue;
Form1->Image1->Canvas->MoveTo(d[0].x,d[0].y);
Form1->Image1->Canvas->LineTo(X1,Y1);
Form1->Image1->Canvas->MoveTo(X1,Y1);
X2=0;
Y2=(X2-X1)*(-1/M) Y1;
Form1->Image1->Canvas->LineTo(X2,Y2);
}
else
{
X1=0;
Y1=(X1-d[0].x)*(-1/M) d[0].y;
Form1->Image1->Canvas->Pen->Width=2;
Form1->Image1->Canvas->Pen->Style=psSolid;
Form1->Image1->Canvas->Pen->Color=clBlue;
Form1->Image1->Canvas->MoveTo(d[0].x,d[0].y);
Form1->Image1->Canvas->LineTo(X1,Y1);
Form1->Image1->Canvas->MoveTo(X1,Y1);
Y2=999;
X2=(Y2-d[0].y)*(-M) d[0].x;
Form1->Image1->Canvas->LineTo(X2,Y2);
}
}
}
else
{
n=n/2;
for(int t=0;t