請教一個數學的問題… |
尚未結案
|
superlarry
一般會員 發表:10 回覆:22 積分:6 註冊:2002-10-04 發送簡訊給我 |
|
turboted
版主 發表:95 回覆:754 積分:452 註冊:2002-07-23 發送簡訊給我 |
提供一個很直覺的方法如下
int __fastcall TForm1::FindRange(int x1, int x2, int x3, int x4 ,bool Max) { int iMaxTemp,iMinTemp; if (Max) { iMaxTemp = max(x1,x2); iMaxTemp = max(iMaxTemp,x3); iMaxTemp = max(iMaxTemp,x4); return iMaxTemp; } else { iMinTemp = min(x1,x2); iMinTemp = min(iMinTemp,x3); iMinTemp = min(iMinTemp,x4); return iMinTemp; } } void __fastcall TForm1::Button1Click(TObject *Sender) { int x1=1,x2=2,x3=3,x4=4,A=2; int y1=1,y2=2,y3=3,y4=4,B=2; int iXMax,iXMin,iYMax,iYMin; iXMax = FindRange(x1,x2,x3,x4,true); iXMin = FindRange(x1,x2,x3,x4,false); iYMax = FindRange(y1,y2,y3,y4,true); iYMin = FindRange(y1,y2,y3,y4,false); if( A<=iXMax && A>=iXMin && B<=iYMax && B>=iYmin) 找到了 }發表人 - turboted 於 2003/05/28 12:13:17 |
superlarry
一般會員 發表:10 回覆:22 積分:6 註冊:2002-10-04 發送簡訊給我 |
|
turboted
版主 發表:95 回覆:754 積分:452 註冊:2002-07-23 發送簡訊給我 |
|
superlarry
一般會員 發表:10 回覆:22 積分:6 註冊:2002-10-04 發送簡訊給我 |
|
JerryKuo
版主 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
|
turboted
版主 發表:95 回覆:754 積分:452 註冊:2002-07-23 發送簡訊給我 |
|
KCHong
一般會員 發表:1 回覆:2 積分:0 註冊:2003-05-14 發送簡訊給我 |
|
turboted
版主 發表:95 回覆:754 積分:452 註冊:2002-07-23 發送簡訊給我 |
|
superlarry
一般會員 發表:10 回覆:22 積分:6 註冊:2002-10-04 發送簡訊給我 |
|
turboted
版主 發表:95 回覆:754 積分:452 註冊:2002-07-23 發送簡訊給我 |
|
Royce520
高階會員 發表:18 回覆:157 積分:100 註冊:2002-09-13 發送簡訊給我 |
superlarry 你好,
這個問題 其實在電腦圖學裏是滿重要的問題, 有滿多方法可以解決的
建議你參考 Morgan Kaufmann Publishers 出版的一本書 書名是
"Geometric Tools for Computer Graphics", 裡面有滿多東西的...
最後, 如過你的問題 沒有很在乎效率... 你可以使用三角形判斷方法
因為你的問題只是四邊形 ... 如果是更多邊形... 就更麻煩了...
因為超過三個邊 就有所謂凸邊 或凹邊的問題... 而書上通常也是建議
將多邊形切成很多相連的三角形來判斷... 因此, 我給你的建議也是
如此... 然後用點是否在相連三角形內判斷的方法 來決定是否在你
指定的多邊形中... 發表人 -
------
不要忘記呼吸,不要忘記編程! ∩__∩ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |