用MFC做出c 判斷點在不規則的四邊形內

2021-05-05 23:28:29 字數 4743 閱讀 6746

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 輸入的字元是小寫字母或...