線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1171
推到 Plurk!
推到 Facebook!

Struct的問題 麻煩高手解答一下

 
033614477
一般會員


發表:10
回覆:8
積分:3
註冊:2006-11-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-03-25 22:37:55 IP:140.126.xxx.xxx 訂閱
請問一下 當我編輯一個struct 資料型態如下
struct CircleCenter
//專存取有關圓形或是橢圓中心點(x,y) 半徑(y) 或長短軸(a b)等資訊
{
double x , y , r , a , b ;
double point_X[4] , point_Y[4]; //存放橢圓四端點座標
};


然後有個副函數如下 可是他會出現錯誤訊息Structure required on left side of . or .*
但是我有設定CircleCenter啦 是我哪邊沒設定好 還是我語法有錯
麻煩各位大大幫忙一下 我看錯誤訊息還是不知道哪邊出錯

void TForm2::LeastSquareRegression (int TotalBlobs , struct CircleCenter* OriginCircualCenter ,struct CircleCenter* NewCircualCenter , bool judge)
{
int n = sqrt(TotalBlobs);
int nn = n/2;
double total_N = TotalBlobs/2; //圓形總數的一半
double Sum_X = 0 , Sum_Y = 0 , Sum_XY = 0 , Sum_X_2 = 0;
double temp = 0;
int StartPoint = ceil(total_N) - nn;
int EndPoint = ceil(total_N) nn 1;

if(judge == true)
{
Center_X = 0.0;
Center_Y = 0.0;
Angle_NorLine = 0.0;

for( int i = StartPoint ; i < EndPoint ; i )
{
Sum_X = OriginCircualCenter[i].x;
Sum_Y = OriginCircualCenter[i].y;
Sum_XY = OriginCircualCenter[i].x*OriginCircualCenter[i].y;
Sum_X_2 = mypow(OriginCircualCenter[i].x , 2.0);
}
temp = 1/(n*Sum_X_2 - mypow(Sum_X , 2.0));
~!錯誤範圍
LeastSquareData.m = temp*(n*Sum_XY - Sum_X*Sum_Y);
LeastSquareData.b = temp*(-Sum_X*Sum_XY Sum_X_2*Sum_Y);
LeastSquareData.DirectionAngle = atan(LeastSquareData.m);
//得知單位向量的數據
UnitLine.DirectionAngle = LeastSquareData.DirectionAngle;
UnitLine.m = LeastSquareData.m;
UnitLine.b = sin(UnitLine.DirectionAngle);
//得知法線向量的數據
NormalLine.m = -UnitLine.m;
NormalLine.DirectionAngle = atan(NormalLine.m);
NormalLine.b = NormalLine.m*OriginCircualCenter[StartPoint 1].x
- OriginCircualCenter[StartPoint 1].y;
~錯誤範圍
//求得新的座標系統的中心
Center_X = OriginCircualCenter[StartPoint nn].x;
Center_Y = OriginCircualCenter[StartPoint nn].y;
Angle_NorLine = NormalLine.DirectionAngle;

}//if(judge == false)
//轉換座標
for(int i = 0 ; i < TotalBlobs ; i )
{
double temp_x = OriginCircualCenter[i].x;
double temp_y = OriginCircualCenter[i].y;

//運算出每一個圓形中心相對於圓形格點中心的相對位置
NewCircualCenter[i].x =(temp_x - Center_X)*cos(Angle_NorLine)
- (temp_y - Center_Y)*sin(Angle_NorLine);
NewCircualCenter[i].y =-((temp_x - Center_X)*sin(Angle_NorLine)
(temp_y- Center_Y)*cos(Angle_NorLine));
}
MgraColor(M_DEFAULT , 0L);
int XStart_1 = Center_X,
YStart_1 = Center_Y,
XEnd_1 = Center_X cos(UnitLine.DirectionAngle)*(IMAGE_HEIGHT/2),
YEnd_1 = Center_Y UnitLine.b*(IMAGE_HEIGHT/2),
XStart_2 = Center_X,
YStart_2 = Center_Y,
XEnd_2 = Center_X cos(NormalLine.DirectionAngle)*0.85,
YEnd_2 = Center_Y NormalLine.b*0.85;


MgraLine(M_DEFAULT,MilImage, XStart_1, YStart_1, XEnd_1, YEnd_1);
MgraLine(M_DEFAULT,MilImage, XStart_2, YStart_2, XEnd_2, YEnd_2);
}


Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-03-25 22:56:45 IP:211.22.xxx.xxx 未訂閱
傳進來的是指向 struct CircleCenter * 的指標,而非指標陣列 struct CircleCenter **,所以這裡要改成
Sum_X = OriginCircualCenter->x;
Sum_Y = OriginCircualCenter->y;
Sum_XY = OriginCircualCenter->x * OriginCircualCenter->y;
Sum_X_2 = mypow(OriginCircualCenter->x , 2.0);
OriginCircualCenter[i]的指標陣列我不知道是從哪來的!如果形式參數型態是指標陣列,才有可能是:
Sum_X = OriginCircualCenter[i]->x;
Sum_Y = OriginCircualCenter[i]->y;
Sum_XY = OriginCircualCenter[i]->x*OriginCircualCenter[i]->y;
Sum_X_2 = mypow(OriginCircualCenter[i]->x , 2.0);
其他類似程式碼部分請自行檢查!
系統時間:2024-05-05 21:50:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!