平面度計算

2021-10-09 13:32:02 字數 2391 閱讀 9037

1.求基準面(在基準面上找三點通過公式計算出ax+by+cz+d=0這一平面)

2.在需要計算的面上找三點,通過公式計算出與面的距離d1,d2,d3,對這三個點進行計算以求的最終平面度

1.求基準面

test中呼叫情況(模擬資料輸入)

void

test()

,,};

//定義陣列指標指向第乙個元素(int)

double

(*p)[3

]= array1;

double

* pabcd=

getabcd

(p);

cout<<

"基準平面方程為:"

<

<<

"x+"

<

<<

"y+"

<

<<

"z+"

<

<<

"=0"

<

}

三點求平面度公式

/*

計算基礎面平面公式係數

parms:指向二維陣列的指標,其中陣列中裝著3個點的三維座標

ret:abcd係數的double陣列

*/double

*getabcd

(double

(*parms)[3

]){//定義裝載係數abcd的陣列

double result[4]

; result[0]

= parms[0]

[1]*parms[1]

[2]- parms[0]

[1]*parms[2]

[2]- parms[1]

[1]*parms[0]

[2]+ parms[1]

[1]* parms[2]

[2]+ parms[2]

[1]*parms[0]

[2]- parms[2]

[1]*parms[1]

[2];

result[1]

=-parms[0]

[0]*parms[1]

[2]+ parms[0]

[0]*parms[2]

[2]+ parms[1]

[0]*parms[0]

[2]- parms[1]

[0]* parms[2]

[2]- parms[2]

[0]* parms[0]

[2]+ parms[2]

[0]* parms[1]

[2];

result[2]

= parms[0]

[0]*parms[1]

[1]- parms[0]

[0]*parms[2]

[1]- parms[1]

[0]*parms[0]

[1]+ parms[1]

[0]*parms[2]

[1]+ parms[2]

[0]*parms[0]

[1]- parms[2]

[0]*parms[1]

[1];

result[3]

= parms[0]

[0]*parms[1]

[1]*parms[2]

[2]- parms[0]

[0]*parms[2]

[1]*parms[1]

[2]- parms[1]

[0]*parms[0]

[1]*parms[2]

[2]+ parms[2]

[0]*parms[0]

[1]*parms[1]

[2]+ parms[1]

[0]*parms[2]

[1]*parms[0]

[2]- parms[2]

[0]*parms[1]

[1]*parms[0]

[2];

//返回

double

*p = result;

return p

3.執行結果

但在沒有已知基準面的情況下,基準面計算需根據所有模擬輸入的點來計算,但目前只隨機取三點,結果偶然性極大,下一步會讓所有資料參加運算。

當前思路是首先去除無效值,即z(高度值)為極限值的資料,因為這些資料位置可能處於掃瞄底版。然後對剩餘資料進行分組處理,三個資料點一組,共計(n/3)組。這些資料分別計算基準平面的係數abcd,最後對abcd,取平均值。最後即為真正的基準平面。

平面計算幾何模版集合

這幾天學計算幾何,感覺自己很適合做這種型別的題目。畢竟數學還算學的不錯。尤其是幾何。模版是照著白書上敲的,會用就好,原理也都很簡單,能寫成函式並且運用就是好的。模版如下,方便以後自己用 include include include include include include using nam...

計算幾何 半平面交

la 4992 hdu 3761 jungle outpost 杭電的有點坑啊。一直爆記憶體,後來發現大白的半平面交模板那裡 point p new point n line q new line n 這裡出了問題,應該是在函式裡面申請不了比較大的陣列,所以爆記憶體。我在全域性定義了兩個陣列就不會爆...

計算幾何 半平面交

step1.將所有半平面按極角排序,對於極角相同的,選擇性的保留乙個。o nlogn step2.使用乙個雙端佇列 deque 加入最開始2個半平面。step3.每次考慮乙個新的半平面 a.while deque頂端的兩個半平面的交點在當前半平面外 刪除deque頂端的半平面 b.while deq...