Quod Erat Demonstrandum

2009/11/03

不能秒殺的提問之在三角形內

Filed under: Additional / Applied Mathematics,HKCEE — johnmayhk @ 12:43 下午
Tags:

剛下課,中五生 Woody 問:如何判別一點是否在三角形內?

即已知 A(a,b), B(c,d), C(e,f),如何知道 D(x,y) 是否在三角形 ABC 內?

畫一個準確的圖當然可以,但這不是數學人的答案。

我只想出一個方法:計算三角形 DAB, DBC, DCA 的面積(只接受正數面積)總和,看看是否等於三角形 ABC 的面積?若相等,則 D 在三角形 ABC 內;若否,則 D 在三角形 ABC 外。

例子:A(0,3), B(5,0), C(4,6),問 D(3,2) 在三角形 ABC 內嗎?

設 [XYZ] = 2 * 三角形 XYZ 的面積

[DAB]
=
|0 3|
|5 0|
|3 2|
|0 3|
= 4

[DBC]
=
|5 0|
|4 6|
|3 2|
|5 0|
= 10

[DCA]
=
|0 3|
|3 2|
|4 6|
|0 3|
= 13

[ABC]
=
|0 3|
|5 0|
|4 6|
|0 3|
= 27

故 [ABC] = [DAB] + [DBC] + [DCA]

即 D 在三角形 ABC 內。

[SBA 時間]

1. 這個方法肯定不是好方法(太煩),同學,你又可否探究出別的方法,判別某點是否在三角形內?
2. 已知 A(a,b), B(c,d), C(e,f),及 D(x,y) 在三角形 ABC 內,寫出 x 和 y 值的範圍。
3. 如果考慮的是多邊形,甚至是三維中的多面體,又如何判別?

P.S. 向量的線性組合或可幫幫忙的,可惜這已在中學課程外了…

13 則迴響 »

  1. 剛想到一個類似的方法,但未有嘗試證明。(也不肯定會否有counter-example)
    Let A,B,C be points which form a triangle, D to be an arbitary point.
    If D is a point inside triangle ABC, then DA,DB,DC max{AB,BC,CA}

    迴響 由 Justin — 2009/11/03 @ 4:28 下午 | 回覆

  2. If D is a point inside triangle ABC, then DA,DB,DC max{AB,BC,CA}

    迴響 由 Justin — 2009/11/03 @ 4:29 下午 | 回覆

  3. 為什麼打不到符號…??
    我想如果一個點是在三角形內,該點和三角形三點的距離會少於或等於該三角形最長的一條邊
    如果一個點在三角形外,該點和三角形三點的距離至少會有一個大於該三角形最長的一條邊

    迴響 由 Justin — 2009/11/03 @ 4:32 下午 | 回覆

    • Justin:

      感謝回應!剛剛才開完教職員會以外的特別教職員會,不一會又六時許了,手上工作完全停頓。

      這裡留言如果用"小於"這個不等號,可能出現不到,因它當作 script 來看待。

      關於你的建議,我舉一反例,參考下圖:

      其中三角形 ABC 全等於三角形 ABD,D 在三角形 ABC 外,但 DA, DB, DC 也較 AB 短。

      迴響 由 johnmayhk — 2009/11/03 @ 6:20 下午 | 回覆

  4. 可以用一個 cert math syllebus 的方法︰
    1. 先計算直線 AD 與 BC 的 equation
    2. 再計算 AD 與 BC 的相交點 E
    3. 若 E 在 B 與 C 之間,並且 D 在 A 與 E 之間,那麼 D 在三角形 ABC 之內
    (注︰若三點在一直線上,我們只需比較 X 座標或 Y 座標,便可以得之那一點在中間。)

    迴響 由 hotcooljoe — 2009/11/04 @ 4:32 上午 | 回覆

    • hotcooljoe,早安。

      謝謝回應!

      在你的方法上加多一些資料:

      已知 P(x,y) 在直線 AB 上,要判別 P(x,y) 是否在線段 AB 上(設 A(a,b), B(c,d)),程序如下:

      若 a =/= c,則計算 (x – a) 和 (x – c) 兩值,

      如兩值異號,則 P 在線段 AB 上;
      如兩值同號,則 P 不在線段 AB 上。

      若 a = c,則計算 (y – b) 和 (y – d) 兩值,

      如兩值異號,則 P 在線段 AB 上;
      如兩值同號,則 P 不在線段 AB 上。

      迴響 由 johnmayhk — 2009/11/04 @ 12:44 下午 | 回覆

  5. 我也說一個方法。設AB的方程是 Ex + Fy + G = 0。將C和D代入左方,若得出數值同為正或同為負,則表示C和D在AB的同一面。再用同一方法考慮BC和CA。若C和D在AB的同一面、B和D在AC的同一面、A和D在BC的同一面,則D在三角形ABC內。

    計算過程似乎也繁複,但若然將點D平移到原點(ABC三點也跟著平移),計算會略為簡化一點。

    迴響 由 marcodick — 2009/11/04 @ 10:12 上午 | 回覆

    • Thank you marcodick!! 係 wor,平移 D 點到 O 會簡化很多。立時想到 general math 的 linear programming 判別 regions 的做法。

      迴響 由 johnmayhk — 2009/11/04 @ 12:48 下午 | 回覆

  6. [DAB]
    =
    |0 3|
    |5 0|
    |3 2|
    |0 3|
    = 4
    [DBC]
    =
    |5 0|
    |4 6|
    |3 2|
    |5 0|
    = 10
    [DCA]
    =
    |0 3|
    |3 2|
    |4 6|
    |0 3|
    = 13
    在算式中,D的位置固定,其它的點必須按照順序:AB,BC,CA。
    計算這三個,結果同號即可。
    可以擴大到所有凸多邊形。

    迴響 由 yee3816547290 — 2009/11/05 @ 9:03 上午 | 回覆

    • 這是簡單的方法,謝謝分享!

      n > 3,要判別點 A_1, A_2, \dots ,A_n 是否"順序"似乎較難。

      迴響 由 johnmayhk — 2009/11/05 @ 12:10 下午 | 回覆

  7. “D 點在三角形 ABC 內" “ABDC 是一個 concave polygon" 。這個方向可行嗎?

    迴響 由 hotcooljoe — 2009/11/05 @ 10:33 下午 | 回覆

  8. x,y的範圍:
    min(a,c,e)<=x<=max(a,c,e)
    min(b,d,f)<=y<=max(b,d,f)
    不過這是必要條件,不是充要條件。

    迴響 由 yee3816547290 — 2009/11/06 @ 3:50 下午 | 回覆

  9. 哈….我第一時間已經諗到linear programming o既做法~..
    應該唔錯~

    迴響 由 Tricktrick — 2010/04/22 @ 10:21 上午 | 回覆


RSS feed for comments on this post. TrackBack URI

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

在WordPress.com寫網誌.

%d 位部落客按了讚: