1樓:匿名使用者
給你推薦一本書《visual c++6.0範例入門與提高》
清華出版社的。主要講了mfc部分類的使用。
可以看看,希望對你有所幫助。
2樓:匿名使用者
你都已經實現了,其實思想是一樣的。
3樓:金毛獅王
說具體點啊,你要判斷**的點在哪個多邊形裡面
c++ 怎麼判斷1個點在一個不規則的四邊形內
4樓:
你好 我認為判斷一個點是不是在一個不規則的多邊形內,可用面積相等法;
設此多邊形的面積為s;
然後將該點與多邊形的個定點連起來;
於是便將這個多邊形分成了許多小三角形;
若這些小三角形的面積之和等於s;則說明該點在多邊形裡。
5樓:匿名使用者
設該四邊形四個點按順時針排列
(x1,y1),(x2,y2),(x3,y3),(x4,y4)平面上某點(x,y)
(atan2()計算的弧度在-pi ~ pi之間)#include
#include
#include
int main( )
;a[0] = atan2((y-y1),(x-x1));
a[1] = atan2((y2-y1),(x2-x1));
a[2] = atan2((y-y2),(x-x2));
a[3] = atan2((y3-y2),(x3-x2));
a[4] = atan2((y-y3),(x-x3));
a[5] = atan2((y4-y3),(x4-x3));
a[6] = atan2((y-y4),(x-x4));
a[7] = atan2((y1-y4),(x1-x4));
int i = 0;
for(i = 0; i < 8; i++)if(a[0]>a[1]&&a[2]>a[3]&&a[4]>a[5]&&a[6]>a[7])
printf("在內部\n");
else
printf("在外部\n");
return 0;
}你隨便用windows畫板畫一個突四邊形,把四個點座標按順時針記下來,再在平面上隨便選一點(x,y),試一下。
6樓:匿名使用者
設定某個x值,在四邊形內部則y必定會有一個範圍。(需要考慮x值處於中間的兩個點。同時還有直線的方程)
7樓:遲朝郎韻詩
"這個是屬於計算幾何演算法了,判別1個點是不是屬於任意多邊形,就要以這個點為橫座標,畫一條橫向射線,假如和多邊形的交點個數為奇數則在多邊形內,否則就在外,特殊情形:
1、當射線與其中一條邊重合,那麼邊忽略不計;
2、當射線與其中一頂點相交(外凸),交點只可以計算1個;
3、當射線與其中一頂點相交(內凹),交點不應被計算;
下邊為偽**:
count←0;
以(x,y)為端點,作從右向左的射線l;
for多邊形的每條邊s
doif
(x,y)在邊s上
then
return
true;
ifs不是水平的
then
ifs的1個端點在l上
if該端點是s兩端點中縱座標較大的端點
then
count
←count+1
else
ifs和l相交
then
count
←count+1;
ifcount
mod2=1
then
return
true;
else
return
false;"
mfc:判斷點是否在某一區域
8樓:小逸紗布
1.判斷一點是否在矩形區域內的方法:
crect rc (point_1,point_2);//構造矩形區域
呼叫crect::ptinrect
bool flag = rc.ptinrect(point_key);if (flag)else點point_key不在構造的矩形區域內;
2.判斷一點是否在否個多邊形區域內的方法:
用crgn::createpolygonrgn
這個函式,構造一個區域
crgn rgna ;
cpoint ptvertex[3];
ptvertex[0] = point_1;
ptvertex[1] = point_2;
ptvertex[2] = point_3;
//這裡只說明三角形的情況,其他類比即可!
rgna.createpolygonrgn(ptvertex , 3 , alternate);
然後再呼叫ptinregion去判斷
bool flag= rgna.ptinregion(point_key);if (flag)else點point_key不在構造的多邊形區域內;
3.判斷一點是否在橢圓形區域內crgn rgnb;rgnb.createellipticrgn(point_1.
x,point_1.y,point_2.x,point_2.
y);bool flag = rgnb.ptinregion(point_key);if (flag)else點point_key不在rgnb區域內;
怎麼判斷1個點在一個不規則的四邊形內
9樓:註冊名字難呀
連線4各點與(x,y)得到4個線段,按照4個線段的斜率,排出相鄰關係,如果4個線段形成夾角和為360,則在四邊形內
最好用向量計算,弄清楚位置關係
10樓:匿名使用者
設x1<x2<x3<x4 那麼x1<x<x4
設y1<y2<y3<y4 那麼y1<y<y4
c++判斷一點在不在四個點組成的四邊形內部演算法
11樓:匿名使用者
struct point //點
;inline int min(int x, int y)inline int max(int x, int y)// 判斷點是否在四邊形內部
// point pcur 指定的當前點
// point plefttop(左上), point pleftbelow(左下), point prightbelow(右下), point prighttop(右上), 四邊形的四個點
bool init(point pcur, point plefttop, point pleftbelow, point prightbelow, point prighttop)
;int ncross = 0;
for (int i = 0; i < ncount; i++)// 單方向交點為奇數,點在多邊形之內
// 單方向交點為偶數,點在多邊形之外
return (ncross % 2 == 1);
}參考網上方法,只是把註釋寫了寫
求...判斷一個點是否在(不規則)四邊形當中
12樓:毛毛
從點所在位置做一個水平或者垂直的射線
計算它和多邊形的交點,奇數在內,偶數在外
所以要先編一個被調程式實現求四邊形四邊的方程(線段,規定x的範圍);然後求射線方程(若作水平射線則限定x範圍,垂直則限定y的範圍)與四邊的交點數;再求射線與四邊的交戰。再判斷奇偶性即可。
建議你看看凸包演算法,也可以用這個來判斷。
13樓:
依題意應該是平面四點
平面四點組成的任意四邊形,就是四點的連線組成的四邊形僅且僅有這一種情況
再判斷目標點是否再四邊形內,都很容易了
14樓:匿名使用者
由四個點判斷任意四邊形的四條邊所在直線
然後以(0,0)為標準判斷目標點(a,b)與四條直線的位置關係
綜合四個關係判斷目標點是否在這四條直線所圍成的四邊形裡
判斷一個點是否在一個不規則多邊形內?
15樓:匿名使用者
**,嘿嘿,太簡單,比你可以自己寫,為啥? 因為我的原理簡單啊(不過只適用於凸多邊形)。 第一步,劃出多邊形,顏色不同於背景色。
第二步,從該點像一個任意方向探索,直到窗體邊界為止。 如果遇到多邊形邊界顏色,向相反方向探索,如果也判斷一個點是否在一個不規則多邊形內?
用c語言判斷某點是否存在於一個四邊形內
16樓:
第二個函式沒有必要。
下面談如何判斷點在四邊形內部:
假設四邊形的四個點分別為a,b,c,d
假設第五個點為o,
你只要求出四邊形的面積以及三角形aob,boc,cod,doa的面積如果四邊形的面積與後面四個三角形的面積的和相等,且後面四個三角形的面積皆不為零,則o點在四邊形內部。
提示一下:
四邊形的面積=三角形abc的面積+三角形cda的面積三角形面積求法:設a,b,c為三角形三條邊長,令s=(a+b+c)/2,則面積為:根下(s(s-a)(s-b)(s-c))
四個點能否圍成四邊形,也可以通過面積法來求得,如果三角形abc的面積和三角形cda的面積任意一個為零,則不能圍成四邊形
c語言判斷點在圓外還是圓內,我用面積算得,,可是怎麼排除在圓上那個點
面積算的?pi 距離的平方 與園的面積比較?不是有方程的麼?直接判斷點到圓心的距離 半徑,就是在圓上唄.你具體怎麼寫的?可以用點到圓心距離來算。double cx,cy,r double x,y,d d sqrt x cx x cx y cy y cy if d r else if d r else...
用c語言寫的函式想用mfc做介面能直接用mfc呼叫
可以用vc的,你在vc裡新建一個mfc的project,把你的c語言寫的.c檔案加入到mfc工程裡編譯執行就可以了。完全可以,使用標準c的dll生產方式 export,就可以在mfc中使用了 部分函式可以呼叫,但是絕大部分都是c 函式!用mfc做的介面能呼叫純c語言寫的程式麼 純c語言指的是什麼呢?...
用c語言輸入字元判斷大小寫,用C語言輸入字元判斷大小寫
c語言輸入字元判斷大小寫的源 如下 include int main char c printf 輸入一個字元 scanf c c if c a c z c a c z printf c 是大寫 c else printf c 不是小寫 c return 0 擴充套件資料 1 輸入的字元是小寫字母或...