我有一個直角三角形,我想檢查給定的點是否在三角形的斜角處。所有點都是純整數,而不是浮點變量。 如何檢查一個點(int - 座標)是否在三角形的斜邊內
編輯: 所有的綠色方塊將是對斜邊,白色方塊不會。我知道x,y,角的座標和我想測試的點的座標。 所有的座標都是整數(y在圖中有點偏離,對不起)。
我有一個直角三角形,我想檢查給定的點是否在三角形的斜角處。所有點都是純整數,而不是浮點變量。 如何檢查一個點(int - 座標)是否在三角形的斜邊內
編輯: 所有的綠色方塊將是對斜邊,白色方塊不會。我知道x,y,角的座標和我想測試的點的座標。 所有的座標都是整數(y在圖中有點偏離,對不起)。
這可能工作:
你知道三角形,所以只需要創建一個功能爲hypothenuse,在你的例子這將是y = 5x/12
。如果你現在得到一個點,說x = 6, y = 3
,你可以使用這些變量來看看它是否正確:3 = roundup(5*6/12)
。如果確實如此,則該點在三角形上,否則 - 則不是。
完美運作。 – raphaelr 2010-02-03 19:32:29
我就開始這樣做:
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)
}
}
然後你有斜邊的所有點。有更好的繪製線的算法,但這可能是一個開始。
有兩種情況需要處理:一種是斜邊是垂直的,另一種是不垂直的。
對於垂直情況,您只需檢查問題點在斜邊範圍內是否有y值。
對於非垂直情況,使用其端點推導出斜邊的方程。線的方程是y = mx + b,其中m是dx/dy的斜率。那麼b = y - mx。
既然你有m和b,看看候選點的x和y是否滿足方程(點的y是否等於m * x + b?)。
但是,實際上,您應該檢查nearness而不是精確的相等,以便檢查點的y是否在(m * x + b)的某個小的三角洲內。
你是什麼意思「在斜邊」?從這個例子中,我會說在三角形描述的框內的任何東西都有資格。你可以添加一些不是「在斜邊上」的點。 – meagar 2010-02-03 16:45:25
@raphaelr:您的圖片404'd。 – kennytm 2010-02-03 17:20:42
好的,固定的。 – raphaelr 2010-02-03 18:06:18