各位大大好:
以下是我的程式,我要將我的數據值(XYZ的座標值),把(下一部減上一部)x10倍以X3(有正有負)呈現出來並印在Memo上,但我遇見了一個問題:當X3由正變負或負變正(正轉變反轉,反轉變正轉)時,我必須使其做加速或減速的動作,但我目前只能知道X3值是大於0或小於0而做動作,卻無法在X3有正負號變換時做動作,請各位大大提供我方向,因為我要在正轉變負轉時做減速動作,而在負轉變正轉時做加速動作!!
謝謝各位大大^^
我執行Button前的數據值(XYZ的座標值):
X:0 Y:0 Z:0
X:10 Y:0 Z:0
X:10 Y:0 Z:10
X:10 Y:0 Z:0
X:0 Y:0 Z:0
X:0 Y:10 Z:0
X:0 Y:10 Z:10
X:0 Y:10 Z:0
X:0 Y:0 Z:0
執行Button後的數據值(XYZ的座標值):
X:50 Y:0 Z:0
X:50 Y:0 Z:0
X:0 Y:0 Z:50
X:0 Y:0 Z:50
X:0 Y:0 Z:-50
X:0 Y:0 Z:-50
X:-50 Y:0 Z:0
X:-50 Y:0 Z:0
X:0 Y:50 Z:0
X:0 Y:50 Z:0
X:0 Y:0 Z:50
X:0 Y:0 Z:50
X:0 Y:0 Z:-50
X:0 Y:0 Z:-50
X:0 Y:-50 Z:0
X:0 Y:-50 Z:0
- void __fastcall TForm1::Button8Click(TObject *Sender)
- {
- int count,count1;
- float X1,Y1,Z1;
- float X2,Y2,Z2;
- float X3,Y3,Z3;
- count2=Memo3->Lines->Count;
- Memo3->Clear();
-
- for(count=0,count1=0;count<count2;count1++,count++)
- {
- X1=*(X_point+a++); X2=*(X_point+d++); X3=10*(X2-X1);
- Y1=*(Y_point+b++); Y2=*(Y_point+e++); Y3=10*(Y2-Y1);
- Z1=*(Z_point+c++); Z2=*(Z_point+f++); Z3=10*(Z2-Z1);
-
- if ((X3<(-50))||(Y3<(-50))||(Z3<(-50)))
- {
- AnsiString str="Usb:"+IntToStr(0)+"\t"
- +"X:"+IntToStr(int (X3/2))+"\t"
- +"Y:"+IntToStr(int (Y3/2))+"\t"
- +"Z:"+IntToStr(int (Z3/2))+"\t";
- Application->ProcessMessages();
- Memo3->Lines->Insert(count1,str);
- count1=count1+1;
- str="Usb:"+IntToStr(0)+"\t"
- +"X:"+IntToStr(int (X3/2))+"\t"
- +"Y:"+IntToStr(int (Y3/2))+"\t"
- +"Z:"+IntToStr(int (Z3/2))+"\t";
- Application->ProcessMessages();
- Memo3->Lines->Insert(count1,str);
- }
- else
- {
- AnsiString str="Usb:"+IntToStr(0)+"\t"
- +"X:"+IntToStr(int (X3))+"\t"
- +"Y:"+IntToStr(int (Y3))+"\t"
- +"Z:"+IntToStr(int (Z3))+"\t";
- Application->ProcessMessages();
- Memo3->Lines->Insert(count1,str);
- }
-
- if((X3>50)||(Y3>50)||(Z3>50))
- {
- AnsiString str="Usb:"+IntToStr(0)+"\t"
- +"X:"+IntToStr(int (X3/2))+"\t"
- +"Y:"+IntToStr(int (Y3/2))+"\t"
- +"Z:"+IntToStr(int (Z3/2))+"\t";
- Application->ProcessMessages();
- Memo3->Lines->Insert(count1,str);
- count1=count1+1;
- str="Usb:"+IntToStr(0)+"\t"
- +"X:"+IntToStr(int (X3/2))+"\t"
- +"Y:"+IntToStr(int (Y3/2))+"\t"
- +"Z:"+IntToStr(int (Z3/2))+"\t";
- Application->ProcessMessages();
- Memo3->Lines->Insert(count1,str);
- }
|
|