Math
1. Math VS C# math
μνμ 곡μμ C#μμ κ·Έλλ‘ νννμ λ, κ°νΉ μλͺ»λ κ²°κ³Όλ₯Ό μ°μΆνλ κ²½μ°κ° μλ€.
μλ₯Ό λ€μ΄ μμ¨λ₯Ό νμ¨λ‘ λ³ννλ μνμ 곡μμ λ€μκ³Ό κ°λ€.
°F = °C × 9/5 + 32
μ΄λ₯Ό μ½λλ‘ μμ±νλ©΄ μλμ κ°μ΄ ννν μ μλ€. μνμ μΌλ‘ F1μ F2λ λμΌν μμ΄μ§λ§, C#μμλ F2λ μλͺ»λ κ²°κ³Όλ₯Ό μ°μΆνλ€.
double C = 25.50;
double F1 = C * 9 / 5 + 32;
double F2 = C * (9 / 5) + 32;
Console.WriteLine(F1); // 77.9F
Console.WriteLine(F2); // 57.5F
μ΄λ μ¬μ©λ ν€μλκ° varμ΄λ€. varλ C# λ°μ΄ν° νμ μ μ»΄νμΌλ¬κ° μΆλ‘ ν΄μ μμμ μ νκ² νλλ°, λ°λΌμ κ°λ°μκ° νΉμ νμ μΌλ‘ μ§μ ν΄μ μ묡μ μΌλ‘ νμ λ³νμ΄ μΌμ΄λλ κ²μ λ°©μ§νλ ν¨κ³Όκ° μλ€. μ F2 μμ λ€μκ³Ό κ°μ λ°©μμΌλ‘ μμ°¨μ μΌλ‘ νμ΄μ ννν μ μλ€.
var a = 9 / 5; // (9 / 5)
var b = C * a; // C * (9 / 5)
var F2 = b + 32; // C * (9 / 5) + 32
μ¬κΈ°μ ν κ°μ§ μ£Όλͺ©ν κ²μ λ³μ aκ° μ μν νμ μ΄ λλ€λ κ²μ΄λ€. μ¦, μ μ truncationμ΄ μΌμ΄λμ 1.8 λμ 1μ΄ λλ κ²μ΄λ€. μ¬λ°λ₯΄κ² κ³ μΉλ λ°©λ²μ λΉκ΅μ κ°λ¨νλ€. μ¦, (9 / 5)κ° μ μνμΌλ‘ μΈμλμ§ μκ² νκΈ° μν΄ (9.0 / 5) νΉμ (9.0 / 5.0) λ±μΌλ‘ νννλ©΄, μ μ΄λ νλμ νΌμ°μ°μκ° doubleμ΄ λλ―λ‘ μ°μ°κ²°κ³Όλ doubleλ‘ λλ€.
https://www.csharpstudy.com/Mistake/Article/23
2. Unity Mathf
1) Abs(float λ°μ΄ν°)
- λ°μ΄ν°μ μ λκ°μ λ°ννλ€.
Debug.Log(Mathf.Abs(-100)); // 100
2) Clamp(float λ°μ΄ν°, float μ΅μκ°, float μ΅λκ°)
- μ΅μκ°κ³Ό μ΅λκ° λ²μ λ΄μ λ°μ΄ν°λ₯Ό λ°ννλ€.
- λ°μ΄ν°κ° 1μ΄κ³ μ΅μκ°μ΄ 0, μ΅λκ°μ΄ 10μΈ κ²½μ° 1μ λ°ννλ€.
- μ§μ λ λ²μ λ΄μμ κ°μ΄ μ¦κ°ν΄μΌ ν κ²½μ° μ¬μ©νλ€.
for (int i = 0; i < 5; i++)
Debug.Log(Mathf.Clamp(i, 1.0f, 3.0f)); // 1, 1, 2, 3, 3
λ§μ½ μ μΈν λλΆν° μ΄λ―Έ μ΅μκ°κ³Ό μ΅λκ°μ΄ μ ν΄μ Έ μλ κ²½μ° [Range]λ₯Ό μ¬μ©νλ©΄ λλ€. λ§μ½ λ ν¬κ±°λ μμ κ°μ΄ ν λΉλλ©΄ min, maxλ‘ μλ λ체λλ€.
[Range(.0f, 10f)]
public float speed = 5f;
3) PingPong(float μ¦κ°κ°, float μ΅λ거리)
- μ¦κ°κ°μ΄ μ΅λ거리μ λλ¬νλ©΄ κ·Έ λ€λΆν°λ λ§μ΄λμ€(-) μ²λ¦¬κ° λκ³ μ΄ κ³Όμ μ λ°λ³΅νλ€.
- νΉμ μ§μ μ λ°λ³΅ν΄μ μλ€ κ°λ€ νλ κ²½μ° μ¬μ©νλ€.
void Update()
{
transform.position = new Vector3(Mathf.PingPong(Time.time, 3), transform.position.y, transform.position.z);
}
// xμΆ κ°μ΄ 3μ΄ λλ©΄ λ€μ 0μΌλ‘ μ΄λ
4) Lerp(float μμμ , float μ’ λ£μ , float 거리λΉμ¨)
- μμμ κ³Ό μ’ λ£μ μ¬μ΄μ 거리λΉμ¨μ ν΄λΉνλ κ°μ λ°ννλ€.
- 거리λΉμ¨μ 0~1 μ¬μ΄μ κ°μΌλ‘ κ³ μ λλλ°, %(Percent)λ₯Ό μλ―Ένλ€
void Update()
{
transform.position = new Vector3(transform.position.x, Mathf.Lerp(0f, 5f, Time.time), 0);
}
// 0μμ 5λ‘ μμν μ΄λ
5) SmoothStep(float μμμ , float μ’ λ£μ , float 거리λΉμ¨)
- Lerpμ μ μ¬νλ€.
- μ°¨μ΄μ μ μκ°μ΄ νλ₯Όμλ‘ μλκ° λμμ§κ³ μ’ λ£ μ μ λ€λ€λ₯΄λ©΄ μλκ° μ€μ΄λλ ν¨κ³Όλ₯Ό λνλΈλ€.