κ³ λ±νκ΅ μνμ μ΅μ’ λ³κΈ°λΌκ³ νλ©΄ λͺκ°μ§κ° λ μ€λ¦ λλ€. λ‘νΌν μ 리, μ¬λ¬κ°μ§ κ·Όμ¬... κ·Έλ¦¬κ³ μ λ°λ 곡μ.
μ΄λ€μ λͺ¨λ κ³ λ±νκ΅μμ μ μμ μΌλ‘ λ°°μ°μ§λ μμ§λ§, μ κΈ°νκ²λ λ§μ νμλ€μ΄ μκ³ μλ ν ν¬λμ λλ€. νΉν μ λ°λ 곡μμ λ€μν λ°©λ²μΌλ‘ μμ©λμ΄ μ¬μ©λ μ μμΌλ―λ‘, κ·Έκ²μ κ΄ν΄ μ½κ°μ κ³ μ°°μ ν΄λ³΄λ μκ°μ κ°κ² μ΅λλ€.
μ λ°λ 곡μμ΄λ?

μμ κ°μ μΌκ°νμ΄ μ£Όμ΄μ‘μλ, μ΄ μΌκ°νμ λμ΄λ μ΄λ»κ² ꡬν κΉμ? λ°λ³κ³Ό λμ΄μ κΈΈμ΄λ₯Ό νλνλ ꡬνκΈ°μλ λ무λ νλ€μ΄ 보μ λλ€. μ΄ λ μΈ μ μλ 곡μμ΄ λ°λ‘ μ λ°λ 곡μ (Shoelace Formula) μ λλ€.
λ°μκ³ λ°©ν₯μΌλ‘ μ P1, P2, P3κ° μ£Όμ΄μ‘μ λ, μΌκ°νμ λμ΄ Aλ λ€μκ³Ό κ°μ΅λλ€.
A=12|x1x2x3x1y1y2y3y1|
μ¬κΈ°μ |β―| λΆλΆμ μ΄λ κ² κ³μ°ν©λλ€.

λΆμ νμ΄νλ‘ μ΄μ΄μ§ κ²λΌλ¦¬ κ³±ν λ€ λͺ¨λ λνκ³ , νΈλ₯Έ νμ΄νλ‘ μ΄μ΄μ§ κ²λΌλ¦¬ κ³±ν λ€ λΉΌλ©΄ λ©λλ€. μ¦, μΌκ°νμ λμ΄λ λ€μ μ΄λ κ² μΈ μ μκ² μ΅λλ€.
A=12|(x1y2+x2y3+x3y1)β(x2y1+x3y2+x1y3)|
μ°λ¦¬μ λͺ©μ μ λμ΄λ₯Ό ꡬνλ κ²μ΄λ―λ‘, μ λκ°μ μ·¨ν΄μ μμλ‘ λ§λ€μ΄ μ€μΌκ² μ£ .
κ·ΈλΌ, μ΄κ²μ κ°λ¨ν μ¦λͺ ν΄λ³΄κ² μ΅λλ€.
μΌκ°ν μ λ°λ 곡μμ μ¦λͺ
μ λ°λ 곡μμ 벑ν°μ μΈμ μΌλ‘ μ¦λͺ ν μ μμ΅λλ€.
μΈμ μΌλ‘ μ¦λͺ νκΈ° μν΄μ, μμ μλ μΌκ°ν(κ·Έλ¦Ό 1)μ΄ z=0νλ©΄ μμ μλ€κ³ κ°μ ν΄λ μΌλ°μ±μ μμ§ μμ΅λλ€. λ²‘ν° v1=βP1P2, v2=βP1P3 λΌκ³ μ μν©λλ€.
벑ν°μ μΈμ μ ν¬κΈ°λ, λ 벑ν°κ° λ§λλ ννμ¬λ³νμ λμ΄μ κ°μΌλ―λ‘, μΌκ°νμ λμ΄λ κ·Έκ²μ μ λ°μμ μ μ μμ΅λλ€.
μ¦, μΌκ°νμ λμ΄λ λ€μκ³Ό κ°μ΅λλ€.
A=12β
μ¬κΈ°μ \mathbf{v}_1 = (x_2 - x_1, y_2 - y_1 , 0), \mathbf{v}_2 = (x_3 - x_1, y_3 - y_1, 0) μ΄λ―λ‘ μΈμ μ ν¬κΈ°λ₯Ό κ³μ°νλ©΄ λ€μμ΄ λμ΅λλ€.
A = \frac{1}{2} | (x_1 y_2 + x_2 y_3 + x_3 y_1) - (x_2 y_1 + x_3 y_2 + x_1 y_3)|
β
μ μ¦λͺ μμ μΌκ°νμ λμ΄λ₯Ό ꡬνκΈ° μν΄, μΈμ μ ν¬κΈ°(>0)λ₯Ό ꡬνμ§λ§, μ€μ λ‘ μΈμ μ zλ°©ν₯(\mathbf{e}_3) κ°μ λΆνΈκ° μμ΅λλ€. μ°λ¦¬λ μ€λ₯Έμ μ’νκ³λ₯Ό μ°λ―λ‘, μμ κ°μ μ»κΈ° μν΄μλ λ°μκ³ λ°©ν₯μΌλ‘ μΈμ μ κ³μ°νκ³ , κ·Έλ κΈ° λλ¬Έμ μ λ°λ 곡μμ μ¬μ©νκΈ° μν΄ μΌκ°νμ μ μ μ€μ ν λ λ°μκ³ λ°©ν₯μΌλ‘ μ μ μ€μ νκ² λμ£ .
λ€λ₯Έ νν
μ λ°λ 곡μμ μκΈ΄κ²μ΄ λ§μΉ νλ ¬μ κ°μ΅λλ€. μ κΈ°νκ²λ νλ ¬μμΌλ‘λ ννν μ μκ³ , κ·Έκ²μ΄ ν¨μ¬ κΉλν©λλ€.
곡μμ μ μ¬ν 보면 λ€μκ³Ό κ°λ€λ κ²μ μ μ μμ κ²μ λλ€.
A = \frac{1}{2} \left | \sum_{i = 1} ^ 3 (x_{i+1} + x_i) (y_{i+1} - y_i) \right |
μ¬κΈ°μ μ½κ°μ λμμ μΈ κ³μ°μ νλ©΄ λ€μμ μ»μ μ μμ£ .
A = \frac{1}{2} \left | \sum_{i = 1} ^ 3 \det \begin{pmatrix}x_i & x_{i+1} \\ y_i & y_{i+1} \end{pmatrix} \right |
λ κΉλνμ§ μλμ? λ¨, μ¬κΈ°μ x_4 = x_1, y_4 = y_1 μ λλ€.
μ΄λ κ² μΌμ λ μ’μ μ μ, νμ₯μ΄ νΈνλ€λ κ²μ λλ€. μ§λ©΄λ λλΉνμ§ μκ³ , μκ·Έλ§ μμ 첨μλ§ λ°κΏμ£Όλ©΄ λλκΉμ.
κ·ΈλΌ νμ₯μ ν΄λ΄ μλ€.
μ λ°λ 곡μμ νμ₯

μμ κ°μ λ¨μ nκ°νμ΄ μμ΅λλ€. (λ¨μ λ€κ°νμ, μ½κ² λ§ν΄ λͺ¨λ λ³μ΄ κΌμ§μ μμλ§ λ§λλ(self-intersect νμ§ μλ) λ€κ°νμ λ§ν©λλ€) μ΄ λ€κ°νμ λμ΄λ μ΄λ»κ² ꡬν μ μμκΉμ? λ°λ‘, μ¬λ¬κ°μ μΌκ°νμΌλ‘ λΆν νλ©΄ λ©λλ€. μΌκ°νμ λμ΄λ₯Ό ꡬνλ λ²μ μ΄λ―Έ μκΈ° λλ¬Έμ΄μ£ .
\mathrm{P}_1μ κΈ°μ€μΌλ‘ κ° μ μ μλ μ ν₯μ λΆ(벑ν°)μ \mathbf{v}_i = \overrightarrow{\mathrm{P}_1 \mathrm{P}_{i+1}}λ‘ μ μνλ©΄,(λ¨, i = 1,\cdots, n-1) κ·Έλ¦Ό 2μμλ λ³Ό μ μλ―μ΄ λ€μμ μΌκ°ν T_i μ μκ°ν μ μμ΅λλ€.
T_i = \{ m \mathbf{v}_i + n \mathbf{v}_{i+1} : m+n \le 1, m \ge 0, n \ge 0 \}
μ΄λ¬ν T_iλ μ¬μ€μ λ€κ°νμ λΆν μ λλ€. λ€λ§, κ·Έλ¦Ό 2μ κ°μ΄ λ€κ°νκ³Ό κ²ΉμΉλ λΆλΆλ μκ³ , κ·Έλ μ§ μμ λΆλΆλ μκΈ°μ λ€κ°νμ λμ΄λ₯Ό ꡬν λ, λ¨μν μΌκ°νμ λμ΄μ ν©μ΄ μλ, λΆνΈκ° ν¬ν¨λ λμ΄μ ν©μΌλ‘ ꡬν΄μΌ ν©λλ€. (μμ°μ μΈ μκ±°λ₯Ό μν΄μ)
λ°λΌμ, λΆνΈκ° ν¬ν¨λ T_iμ λμ΄ A_iλ λ€μκ³Ό κ°μ΅λλ€.
A_i = \frac{1}{2} (\mathbf{v}_i \times \mathbf{v}_{i+1}) \cdot \mathbf{e} _3
μ΄λ‘μ¨ λ€κ°νμ λμ΄λ₯Ό ꡬν μ€λΉλ₯Ό λͺ¨λ λ§μ³€μ΅λλ€. κ·ΈλΌ, λ¨μ건 κ³μ°λΏμ λλ€.
κ³μ°...
λ€κ°νμ λμ΄ Aλ λ€μκ³Ό κ°μ΅λλ€.
A = \sum_{i = 1} ^{n-2} A_i = \frac{1}{2} \sum_{i = 1} ^{n-2} (\mathbf{v}_i \times \mathbf{v}_{i+1}) \cdot \mathbf{e} _3
μ iκ° n-2κΉμ§ μΈκ° νλ©΄, nκ°νμ μ΄ n-2κ°μ μΌκ°νμΌλ‘ λΆν λκΈ° λλ¬Έμ΄μ£ .
μ¬κΈ°μ \mathbf{v}_i = (x_{i+1} - x_1 , y_{i+1} - y_1, 0), \mathbf{v}_{i+1} = (x_{i+2} - x_1 , y_{i+2} - y_1, 0) μ΄λ―λ‘, μ΄ λμ μΈμ νλ©΄,
\begin{array}{rcl} \mathbf{v}_i \times \mathbf{v}_{i+1} & = & \{ (x_{i+1} - x_1)(y_{i+2} - y_1) - (x_{i+2} - x_1)(y_{i+1}-y_1) \} \mathbf{e}_3 \\ & = & \{ (x_{i+1} y_{i+2} - x_{i+2} y_{i+1}) + x_1 (y_{i+1} - y_{i+2}) + y_1 (x_{i+2} - x_{i+1}) \} \mathbf{e}_3 \end{array}
κ³μ κ³μ°μ ν΄μ£Όλ©΄,
\begin{array}{rcl} A & = & \dfrac{1}{2} \sum\limits_{i = 1} ^{n-2} (\mathbf{v}_i \times \mathbf{v}_{i+1}) \cdot \mathbf{e} _3 \\ &=& \dfrac{1}{2} \left \{ \sum\limits_{i = 1} ^{n-2} (x_{i+1} y_{i+2} - x_{i+2} y_{i+1} ) + \sum\limits_{i = 1} ^{n-2} x_1 (y_{i+1} - y_{i+2}) + \sum\limits_{i = 1} ^{n-2} y_1 (x_{i+2} - x_{i+1}) \right \} \\ &=& \dfrac{1}{2} \left \{ \sum\limits_{i = 1} ^{n-2} (x_{i+1} y_{i+2} - x_{i+2} y_{i+1} ) + x_1 y_2 - x_2 y_1 + x_n y_1 - x_1 y_n \right \} \\ &=& \dfrac{1}{2} \left \{ \sum\limits_{i = 1} ^{n-1} (x_{i} y_{i+1} - x_{i+1} y_{i} ) + x_n y_1 - x_1 y_n \right \} \end{array}
μ¬κΈ°μ x_1 = x_{n+1}, y_1 = y_{n+1}μ΄λΌ νλ©΄,
A = \frac{1}{2} \sum_{i = 1} ^ {n} (x_i y_{i+1} - x_{i+1} y_i) = \frac{1}{2} \sum_{i = 1} ^ {n} \det \begin{pmatrix}x_i & x_{i+1} \\ y_i & y_{i+1} \end{pmatrix}
μ΄ λ©λλ€. λμ΄λ₯Ό μ»κ³ μΆμΌλ©΄ μ λκ°μ μ·¨ν΄μ£Όλ©΄ λκ² λ€μ. (μ΄μ°¨νΌ λ°μκ³ λ°©ν₯μΌλ‘ μ μ μ€μ νλ©΄ μμ°μ€λ½κ² μμμ λ΅μ΄ λμ΅λλ€)
β
μ΄λ κ² μ λ°λ 곡μμ μΌκ°ν λΏλ§ μλλΌ, λ¨μ λ€κ°νμ λμ΄λ₯Ό ꡬνλ λ° μ©μ΄νκ² μΈ μ μμ΅λλ€. μ΄λ κ²μ.

κ·ΈλΌ μ λ°λ 곡μμ μ€μ§ λμ΄ κ΅¬ν λλ§ μ¬μ©λ κΉμ? μ°λ¦° μ λ°λ 곡μμμ λμ΄(>0)μλ§ μΉμ€ν λλ¨Έμ§, νλ λμΉκ³ μ§λκ° κ²μ΄ μμ΅λλ€. λ°λ‘, λΆνΈμ£ .
μΈμ μΌλ‘λΆν°μ μ¦λͺ μμλ μ μ μλ―μ΄, μ€λ₯Έμ μ’νκ³ (λ°μκ³ λ°©ν₯)μΌλ‘ κ³μ°νλ©΄ μμκ° λμ€κ³ , μκ³λ°©ν₯μΌλ‘ κ³μ°νλ©΄ μμκ° λμ΄μ μ μ μμ΅λλ€. λ 벑ν°κ° νννλ©΄ 0μ΄ λμ¨λ€λ μ¬μ€λ μ μ μκ² μ£ .
κ·ΈλΌ, λ°λλ‘, μΈ μ μ΄ μμλλ‘ μ£Όμ΄μ‘μ λ, κ·Έ μ λ€μ΄ μκ³ λ°©ν₯μΌλ‘ μ λ ¬λμ΄ μλμ§, λ°μκ³ λ°©ν₯μΌλ‘ μ λ ¬λμ΄ μλμ§, μλλ©΄ νννμ§ μ μ μμ§ μμκΉμ?
μΈμ κ° μ΄μ΄μ...!
References
https://artofproblemsolving.com/wiki/index.php/Shoelace_Theorem
Antti Laaksonen, Competitive Programmerβs Handbook
'μνπ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μμ°μ κ±°λμ κ³±μ ν© μΌλ°ν (μ‘°ν©λ‘ μ μ¦λͺ ) (1) | 2022.02.28 |
---|---|
μΌκ°ν¨μμ ν©μ±μ μλ€λ₯Έ κ΄μ (0) | 2020.08.04 |
νλ³Έ(+νλ³Ένκ· , νλ³ΈλΆμ°)μ κ΄νμ¬ (0) | 2020.07.27 |
#2 (1) | 2020.04.20 |
κ°μ μ΄λ±λΆμ μ λ°©μ μ (1) | 2020.04.20 |