DDA - KimTaebin-ai/study_posts GitHub Wiki

DDA μ•Œκ³ λ¦¬μ¦˜μ˜ κΈ°λ³Έ κ°œλ…

DDA μ•Œκ³ λ¦¬μ¦˜μ€ 직선 방정식을 μ΄μš©ν•΄ x와 y 값을 κ³„μ‚°ν•˜κ³ , 이 값듀을 따라 점을 찍어 선을 κ·Έλ¦½λ‹ˆλ‹€. μ§μ„ μ˜ 기울기 mmmλ₯Ό μ΄μš©ν•΄ xκ°€ 1μ”© 증가할 λ•Œ y 값이 μ–Όλ§ˆλ‚˜ λ³€ν•˜λŠ”μ§€ κ³„μ‚°ν•˜κ³ , λ°˜λŒ€λ‘œ yκ°€ 1μ”© 증가할 λ•Œ xκ°€ μ–Όλ§ˆλ‚˜ λ³€ν•˜λŠ”μ§€λ₯Ό κ³„μ‚°ν•˜μ—¬ 점을 μ°μŠ΅λ‹ˆλ‹€.

직선 방정식 볡슡

직선 방정식은 λ‹€μŒκ³Ό 같이 ν‘œν˜„λ©λ‹ˆλ‹€:

y=mx+by = mx + by=mx+b

μ—¬κΈ°μ„œ mmm은 κΈ°μšΈκΈ°μž…λ‹ˆλ‹€. DDA μ•Œκ³ λ¦¬μ¦˜μ—μ„œλŠ” 이 기울기 mmm을 μ‚¬μš©ν•΄ x와 yκ°€ 증가할 λ•Œμ˜ λ³€ν™”λ₯Ό κ³„μ‚°ν•©λ‹ˆλ‹€.

DDA μ•Œκ³ λ¦¬μ¦˜μ˜ λ™μž‘ 방식

  1. 기울기 계산:

    • μ‹œμž‘μ  (x0, y0)κ³Ό 끝점 (x1, y1) μ‚¬μ΄μ˜ 기울기 mmm을 κ³„μ‚°ν•©λ‹ˆλ‹€.
    • 기울기 mmm은 λ‹€μŒκ³Ό 같이 κ΅¬ν•©λ‹ˆλ‹€: m=Ξ”yΞ”x=y1βˆ’y0x1βˆ’x0m = \frac{\Delta y}{\Delta x} = \frac{y1 - y0}{x1 - x0}m=Ξ”xΞ”y​=x1βˆ’x0y1βˆ’y0​
  2. 증가값 κ²°μ •:

    • x와 y의 μ¦κ°€λŸ‰μ„ κ²°μ •ν•©λ‹ˆλ‹€.
    • λ§Œμ•½ dxκ°€ dy보닀 크면 xλ₯Ό κΈ°μ€€μœΌλ‘œ μ›€μ§μ΄λ©΄μ„œ y 값을 κ³„μ‚°ν•˜κ³ , 그렇지 μ•ŠμœΌλ©΄ yλ₯Ό κΈ°μ€€μœΌλ‘œ μ›€μ§μ΄λ©΄μ„œ x 값을 κ³„μ‚°ν•©λ‹ˆλ‹€.
    • μ¦κ°€λŸ‰μ„ λ‹€μŒκ³Ό 같이 μ„€μ •ν•©λ‹ˆλ‹€:
      • dxκ°€ 크면 xκ°€ 1μ”© 증가할 λ•Œ yλŠ” mmm만큼 μ¦κ°€ν•©λ‹ˆλ‹€.
      • dyκ°€ 크면 yκ°€ 1μ”© 증가할 λ•Œ xλŠ” 1m\frac{1}{m}m1β€‹λ§ŒνΌ μ¦κ°€ν•©λ‹ˆλ‹€.
  3. ν•œ ν”½μ…€μ”© 점 찍기:

    • μ‹œμž‘μ μ—μ„œ λμ κΉŒμ§€ x와 y 값을 κ³„μ‚°ν•˜λ©΄μ„œ 점을 찍어 λ‚˜κ°‘λ‹ˆλ‹€.
    • 각각의 κ³„μ‚°λœ x와 y κ°’μ—μ„œ λ°˜μ˜¬λ¦Όν•˜μ—¬ ν•΄λ‹Ή 픽셀을 μ±„μ›λ‹ˆλ‹€.

DDA μ•Œκ³ λ¦¬μ¦˜ 예제

예λ₯Ό λ“€μ–΄, (0, 0)μ—μ„œ (5, 3)κΉŒμ§€ 선을 κ·Έλ €λ³΄κ² μŠ΅λ‹ˆλ‹€.

  1. κΈ°λ³Έ κ°’ 계산:

    • μ‹œμž‘μ : (0,0)(0, 0)(0,0)
    • 끝점: (5,3)(5, 3)(5,3)
    • dx=x1βˆ’x0=5βˆ’0=5dx = x1 - x0 = 5 - 0 = 5dx=x1βˆ’x0=5βˆ’0=5
    • dy=y1βˆ’y0=3βˆ’0=3dy = y1 - y0 = 3 - 0 = 3dy=y1βˆ’y0=3βˆ’0=3
    • steps: max⁑(∣dx∣,∣dy∣)=5\max(|dx|, |dy|) = 5max(∣dx∣,∣dy∣)=5 (이동 횟수)
  2. μ¦κ°€λŸ‰ 계산:

    • x μ¦κ°€λŸ‰ xinc=dxsteps=55=1x_{\text{inc}} = \frac{dx}{\text{steps}} = \frac{5}{5} = 1xinc​=stepsdx​=55​=1
    • y μ¦κ°€λŸ‰ yinc=dysteps=35=0.6y_{\text{inc}} = \frac{dy}{\text{steps}} = \frac{3}{5} = 0.6yinc​=stepsdy​=53​=0.6
  3. 점 찍기:

    • μ‹œμž‘μ μ—μ„œ xλŠ” 1μ”© μ¦κ°€ν•˜κ³ , yλŠ” 0.6μ”© μ¦κ°€ν•˜λ©° 점을 μ°μŠ΅λ‹ˆλ‹€.

image

μ΄λ ‡κ²Œ ν•˜λ©΄ DDA μ•Œκ³ λ¦¬μ¦˜μ— 따라 각 μ’Œν‘œλ₯Ό 따라 점듀이 찍히며, (0,0)μ—μ„œ (5,3)으둜 μ΄μ–΄μ§€λŠ” 선을 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

⚠️ **GitHub.com Fallback** ⚠️