2010-02-03 125 views
1

我有一個直角三角形,我想檢查給定的點是否在三角形的斜角處。所有點都是純整數,而不是浮點變量。 https://tape.bplaced.net/dl/example2.png如何檢查一個點(int - 座標)是否在三角形的斜邊內

編輯: 所有的綠色方塊將是對斜邊,白色方塊不會。我知道x,y,角的座標和我想測試的點的座標。 所有的座標都是整數(y在圖中有點偏離,對不起)。

+1

你是什麼意思「在斜邊」?從這個例子中,我會說在三角形描述的框內的任何東西都有資格。你可以添加一些不是「在斜邊上」的點。 – meagar 2010-02-03 16:45:25

+0

@raphaelr:您的圖片404'd。 – kennytm 2010-02-03 17:20:42

+0

好的,固定的。 – raphaelr 2010-02-03 18:06:18

回答

1

這可能工作:

你知道三角形,所以只需要創建一個功能爲hypothenuse,在你的例子這將是y = 5x/12。如果你現在得到一個點,說x = 6, y = 3,你可以使用這些變量來看看它是否正確:3 = roundup(5*6/12)。如果確實如此,則該點在三角形上,否則 - 則不是。

+1

完美運作。 – raphaelr 2010-02-03 19:32:29

0

我就開始這樣做:

points = an array; 
delta=y/x 
acc = 0 
j = 0 
for (i=0;i<x;i++){ 
    points.push(i, j) 
    acc+=delta 
    while (acc > 1){ 
    acc-=1 
    j++ 
    points.push(i,j) 
    } 
} 

然後你有斜邊的所有點。有更好的繪製線的算法,但這可能是一個開始。

1

有兩種情況需要處理:一種是斜邊是垂直的,另一種是不垂直的。

對於垂直情況,您只需檢查問題點在斜邊範圍內是否有y值。

對於非垂直情況,使用其端點推導出斜邊的方程。線的方程是y = mx + b,其中m是dx/dy的斜率。那麼b = y - mx。

既然你有m和b,看看候選點的x和y是否滿足方程(點的y是否等於m * x + b?)。

但是,實際上,您應該檢查nearness而不是精確的相等,以便檢查點的y是否在(m * x + b)的某個小的三角洲內。

相關問題