← λͺ©λ‘μœΌλ‘œ
Cubic-bezier

Cubic-bezier ν•¨μˆ˜λŠ” CSS μ• λ‹ˆλ©”μ΄μ…˜μ—μ„œ 자주 μ‚¬μš©λ˜λŠ” 곑선 ν•¨μˆ˜λ‘œ, μ• λ‹ˆλ©”μ΄μ…˜μ˜ 속도λ₯Ό μ œμ–΄ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. 이 ν•¨μˆ˜λŠ” λ„€ 개의 μ œμ–΄μ μ„ μ‚¬μš©ν•˜μ—¬ 곑선을 μ •μ˜ν•˜λ©°, cubic-bezier(p1x, p1y, p2x, p2y)와 같은 ν˜•μ‹μ„ κ°€μ§‘λ‹ˆλ‹€. μ—¬κΈ°μ„œ $p1$κ³Ό $p2$λŠ” μ œμ–΄μ μœΌλ‘œ, 각각의 $x$, $y$ μ’Œν‘œκ°€ μ• λ‹ˆλ©”μ΄μ…˜μ˜ μ‹œμž‘κ³Ό 끝 지점 μ‚¬μ΄μ˜ 속도λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€.

Cubic-bezier ν•¨μˆ˜λŠ” 0 ≀ x ≀ 1 λ²”μœ„μ—μ„œμ˜ 값을 μž…λ ₯λ°›μ•„, 0 ≀ y ≀ 1 λ²”μœ„μ—μ„œμ˜ 값을 좜λ ₯ν•˜λŠ” 곑선을 μƒμ„±ν•©λ‹ˆλ‹€. μ΄λ•Œ, $x$ 값은 μ• λ‹ˆλ©”μ΄μ…˜μ˜ μ§„ν–‰ 정도(μ‹œκ°„)이며, $y$ 값은 μ• λ‹ˆλ©”μ΄μ…˜μ΄ μ‹€μ œλ‘œ λ³€ν™”ν•œ 정도λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

Cubic-bezier와 μ„ ν˜• 보간 (Linear Interpolation)

Cubic-bezier 곑선은 λ„€ 개의 μ œμ–΄μ μ„ 기반으둜 ν•˜λŠ”λ°, 이 μ œμ–΄μ λ“€μ€ λ‹€μŒκ³Ό 같이 ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

  • P0: $(0, 0)$ β€” μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘μ 
  • P1: $(P1x, P1y)$ β€” 첫 번째 μ œμ–΄μ 
  • P2: $(P2x, P2y)$ β€” 두 번째 μ œμ–΄μ 
  • P3: $(1, 1)$ β€” μ• λ‹ˆλ©”μ΄μ…˜ 끝점

Cubic-bezier 곑선은 각 점 μ‚¬μ΄μ˜ μ„ ν˜• 보간을 μ—¬λŸ¬ 번 λ°˜λ³΅ν•˜μ—¬ μ΅œμ’…μ μΈ 곑선을 μƒμ„±ν•©λ‹ˆλ‹€. 이 과정은 λ‹€μŒκ³Ό 같이 μ„€λͺ…될 수 μžˆμŠ΅λ‹ˆλ‹€:

  1. 1μ°¨ 보간 (Linear Interpolation):

- tλŠ” μ‹œκ°„μ— 따라 0μ—μ„œ 1 μ‚¬μ΄μ˜ 값을 κ°€μ§‘λ‹ˆλ‹€.
- 첫 번째 μ œμ–΄μ  κ°„μ˜ 보간:
- $Q0 = (1-t) P0 + t P1$
- $Q1 = (1-t) P1 + t P2$
- $Q2 = (1-t) P2 + t P3$

  1. 2μ°¨ 보간 (Linear Interpolation of Q):

- Q0, Q1, Q2 κ°„μ˜ 보간:
- $R0 = (1-t) Q0 + t Q1$
- $R1 = (1-t) Q1 + t Q2$

  1. 3μ°¨ 보간 (Final Linear Interpolation):

- R0와 R1 κ°„μ˜ 보간을 톡해 μ΅œμ’…μ μœΌλ‘œ 곑선 μƒμ˜ 점을 계산:
- $B(t) = (1-t) R0 + t R1$

μœ„μ˜ 과정을 톡해, 각 μ‹œκ°„ $t$에 λŒ€ν•΄ κ³‘μ„ μƒμ˜ 점 $B(t)$λ₯Ό 계산할 수 μžˆμŠ΅λ‹ˆλ‹€. 이 곑선은 λ„€ 개의 μ œμ–΄μ  $P0, P1, P2, P3$에 μ˜ν•΄ μ •μ˜λœ cubic-bezier 곑선을 λ”°λ¦…λ‹ˆλ‹€.

결과적으둜, Cubic-bezier 곑선은 μ œμ–΄μ λ“€μ„ 기반으둜 μ—¬λŸ¬ λ‹¨κ³„μ˜ μ„ ν˜• 보간을 톡해 μƒμ„±λ˜λ©°, 이 곑선은 μ• λ‹ˆλ©”μ΄μ…˜μ˜ μ‹œκ°„μ— λ”°λ₯Έ λ³€ν™” λΉ„μœ¨μ„ μ •μ˜ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, cubic-bezier(0.25, 0.1, 0.25, 1.0)은 천천히 μ‹œμž‘ν•˜μ—¬ 쀑간에 λŠλ €μ§„ν›„ λ‹€μ‹œ λΉ¨λΌμ§€λŠ” ν˜•νƒœλ‘œ λ™μž‘ν•©λ‹ˆλ‹€.