c怎麼判斷點在三角形內,c 怎麼判斷一個點在三角形內

2021-09-01 23:07:33 字數 2653 閱讀 5043

1樓:電燈劍客

一樓說的沒錯,這樣講會把人家嚇跑的。這個問題太簡單了,不需要很高深的演算法。

二樓的做法錯,考察三角形(0,0),(0,3),(3,0)。點(2,2)在三角形外!

三樓的說法基本正確,但是判斷實數相等不是那麼容易的噢,由其是(x,y)非常靠近某一邊的時候很可能會由於舍入誤差造成判斷錯誤。(這個問題有一些辦法來處理,但是需要用到比較高深的知識)

我的做法在下面的連結裡,本質上和三樓的方法一樣,也沒有去處理舍入誤差的影響。但是至少實數和0比大小比一般兩個實數判斷相等要容易一些。

2樓:

該點與任意2頂點分別圍成的3個三角形面積和,等於原三角形面積則在其內,否則在其外。

3樓:

我有個想法,就是先判斷該點是否在三角形上,如過是就不用在判斷了,否則從該點做一條平行於x軸的射線,判斷此射線與三角形的邊有幾個交點,如果是一個,則在三角形內,如果是0個或2個則在三角形外。

4樓:超級奶爸頭子

可以用一個點類,來產生三個點,再求出三點中橫座標最大和最小的兩個點,再和第四點橫座標比較,只要第四點小於最大橫座標,大於最小橫座標,並且縱座標小於最大縱座標和大於最小縱座標,就可以判斷該點在這個三角形裡。否則不在

5樓:火駒

這個問題屬於計算機圖形學的範疇了,

比如多邊形的填充裡面的掃描線演算法,種子填充演算法;線或者多邊形的裁剪問題等等,就是專門研究這類判斷兩個物件之間的位置問題。

c++ 怎麼判斷1個點在一個不規則的四邊形內

6樓:

你好 我認為判斷一個點是不是在一個不規則的多邊形內,可用面積相等法;

設此多邊形的面積為s;

然後將該點與多邊形的個定點連起來;

於是便將這個多邊形分成了許多小三角形;

若這些小三角形的面積之和等於s;則說明該點在多邊形裡。

7樓:匿名使用者

設該四邊形四個點按順時針排列

(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),試一下。

8樓:匿名使用者

設定某個x值,在四邊形內部則y必定會有一個範圍。(需要考慮x值處於中間的兩個點。同時還有直線的方程)

9樓:遲朝郎韻詩

"這個是屬於計算幾何演算法了,判別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;"

怎麼樣用c++編寫一個判斷是不是三角形?

10樓:匿名使用者

#include

using namespace std;

int main()

11樓:匿名使用者

#includeint main()

c語言或者c判斷三角形的形狀

include using namespace std int main int result 2 for int i 0 i 2 i else if a b b c a c else if a a b b c c a a c c b b b b c c a a else else for int ...

要求用C編寫三角形類,要求用C 編寫三角形類

數學沒學好 請列出三角形周長和麵積計算公式 確實很菜的問題 樓主 你多看看課本就好了!這樣的問題也問,真是讓人無語 用c 定義一個三角形類 using system using system.collections.generic using system.linq using system.tex...

用C定義三角形類,用C 定義一個三角形類

using system using system.collections.generic using system.linq using system.text using system.threading.tasks namespace test private double b 返回邊2 pu...