[C#] Math

2023. 4. 23. 16:40Β·πŸ“ Language/✏ C#

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

 

Math vs. C# Math - C# ν”„λ‘œκ·Έλž˜λ° 배우기 (Learn C# Programming)

Math vs. C# Math [제λͺ©] Math vs. C# Math μˆ˜ν•™μ  곡식을 C#μ—μ„œ κ·ΈλŒ€λ‘œ ν‘œν˜„ν–ˆμ„ λ•Œ, κ°„ν˜Ή 잘λͺ»λœ κ²°κ³Όλ₯Ό μ‚°μΆœν•˜λŠ” κ²½μš°κ°€ μžˆλ‹€. 이 μ•„ν‹°ν΄μ—μ„œλŠ” κ°„λ‹¨ν•œ 예제λ₯Ό 톡해 μ΄λŸ¬ν•œ 경우λ₯Ό μ‚΄νŽ΄λ³΄κ³ , μ–΄λ–€ 방식

www.csharpstudy.com

 

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와 μœ μ‚¬ν•˜λ‹€.
  • 차이점은 μ‹œκ°„μ΄ 흐λ₯Όμˆ˜λ‘ 속도가 λ†’μ•„μ§€κ³  μ’…λ£Œ 점에 λ‹€λ‹€λ₯΄λ©΄ 속도가 μ€„μ–΄λ“œλŠ” 효과λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

 

https://m.blog.naver.com/PostView.nhn?blogId=yoohee2018&logNo=220692802850&proxyReferer=https:%2F%2Fwww.google.co.kr%2F 

 

였브젝트 이동 μ‹œ μœ μš©ν•œ Mathf ν•¨μˆ˜

였브젝트 이동 μ‹œ μœ μš©ν–ˆλ˜ Mathf 클래슀 ν•¨μˆ˜λ₯Ό 정리해본닀. Mathf.Abs (float 데이터) λ°μ΄ν„°μ˜ μ ˆλŒ€...

blog.naver.com

 

μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)
'πŸ“ Language/✏ C#' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [C#] abstract, interface, virtual (feat. override, new)
  • [C#] DateTime, TimeSpan, Stopwatch
  • [C#] struct λŒ€μ‹  classλ₯Ό 써야 ν•  λ•Œ
  • [C#] string 객체 μ‚¬μš©μ—μ„œ ν”νžˆ ν•˜λŠ” μ‹€μˆ˜
Blxxming
Blxxming
CS 지식과 κ³΅λΆ€ν•˜λ‹€ 배운 것, κ²½ν—˜ν•œ 것 등을 κΈ°λ‘ν•˜λŠ” λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
  • Blxxming
    πŸ’‘λ²ˆλœ©πŸ’‘
    Blxxming
  • 전체
    였늘
    μ–΄μ œ
  • 곡지사항

    • Tech Interview
    • πŸ“š Tech (246)
      • πŸ“ Computer Science (96)
        • ✏ OS (12)
        • ✏ Network & Web (10)
        • ✏ Database (11)
        • ✏ Data Structure (6)
        • ✏ Algorithm (40)
        • ✏ Design Pattern (9)
        • ✏ Cloud Computing (3)
        • ✏ (5)
      • πŸ“ Language (73)
        • ✏ Language (6)
        • ✏ C & C++ (11)
        • ✏ C# (19)
        • ✏ JAVA (37)
      • πŸ“ Game (43)
        • ✏ Computer Graphics (2)
        • ✏ Unity (14)
        • ✏ Unreal (26)
        • ✏ (1)
      • πŸ“ Book (34)
        • ✏ Effective (3)
        • ✏ Game Server (16)
        • ✏ Clean Code (14)
        • ✏ (1)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.0
Blxxming
[C#] Math
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”