게임수학) 삼각함수 - 2
·
Programming/기타
단위원앞선 포스트에서 삼각함수는 매개변수 θ를 입력받아 출력되는 결과값이 변화하는 함수라고 설명했었다.지금까지는 직각삼각형만을 염두에 두고 개념을 살펴보았지만 실제 삼각형은 θ값이 0~90도 사이에만 있는것은 아니다. 따라서 직각삼각형 뿐만 아니라 직각삼각형을 포함하는 원을 통해 삼각함수를 표현하는 방법에 대해 알아보자.  이 그림은 점 A를 중심으로 하는 반지름의 길이가 1인 단위원 위에 삼각형 ABC를 올려놓은 그림이다.점 A를 중심으로 원 위의 점 B를 이어 선분 AB를 그린다면 당연히 선분 AB는 길이가 1이 될 것이다.그리고 점 B에서 x축 방향에 수직으로 선을 그어 겹치는 부분을 점 C라고 하면 선분 AB와 선분 AC사이의 각, 다시말해 θ를 사인의 정의를 이용하여 구할수 있게 된다. 선분 B..
게임수학) 삼각함수 - 1
·
Programming/기타
삼각형은 컴퓨터 그래픽스의 가장 기본적인 도형중 하나이다.3D그래픽의 가장 작은 단위인 폴리곤만 해도 삼각형으로 이루어져 있다는 것을 알 수 있다. 삼각형은 세 개의 정점으로 이루어진다. 이 세 개의 정점 중 두 개의 정점을 잇는 선분을 변이라고 한다.이 삼각형의 세 변중 두 개의 변이 이루는 각을 내각이라고 한다.또한 삼각형의 세 내각의 합은 항상 180도 이다. 삼각형은 그 모양에 따라 다양한 이름을 가지고 있지만, 우리가 삼각함수에서 다루고자 하는 삼각형은 직각삼각형이다.직각삼각형은 세 개의 정점 부분의 내각 중 하나가 직각을 이루는 삼각형을 말한다. 정점 C부분의 내각이 바로 직각이다.또한 맞은편의 비스듬한 변 h를 빗변이라 하고, 바닥 b를 밑변, 마지막 a변을 높이라고 한다. 삼각함수란 직각삼..
1.1 + 0.1 == 1.2가 false인 이유
·
Programming/C C# C++
요약 : 10->2진법 변환 한계로 소수 표현이 제대로 안되어서 연산 후 결과를 비트연산하게되면 다른값이 나올 수 있다. 가끔 소수점 단위 연산을 해야하는 경우가 있다. 예를 들어 0.1초마다 주위를 스캔한다던지, 무게를 0.25초마다 측정한다던지 하는 경우 말이다. 이런 경우 특별한 조치를 취해주지 않는다면 오류가 발생할 가능성이 있다. 예를 들어 이 사진의 경우 1.1 + 0.1이 1.2와 동일한지를 계산하는 코드이다. 상식대로라면 동일하다는 결과가 나와야 하지만 결과는 보다시피 거짓이 나오게 된다.어디가 문제일까?컴퓨터는 숫자를 저장할 때 바이트 단위로 수를 집어넣는다. 실수를 저장할때는 주로 float, double을 사용하는데, float는 4바이트, double은 8바이트라는 차이점이 있을 뿐..
C#) 문자열 입력 시 변수를 추가하는 방법
·
Programming/C C# C++
C#에서 작업을 할 때 String 함수를 사용하는 경우가 있다. 이때 문자열에 변수를 같이 사용하는 경우 입력하는 방식은 크게 세 가지 정도로 나뉜다. string name = "Alice";string greeting = "안녕하세요, " + name + "님!";Console.WriteLine(greeting);  이런 식으로 + 기호를 사용하여 문자열에 변수를 직접적으로 붙이는 방법이 있고, string name = "Alice";string greeting = $"안녕하세요, {name}님!";Console.WriteLine(greeting); $의 문자열 보간을 이용하여 문자열을 만드는 방식이 있고, string name = "Alice";string greeting = string.Forma..
C#과 C++에서의 for, foreach, for루프 사용법
·
Programming/C C# C++
우리가 흔히 사용하는 for문은 다음과 같은 형태로 구성되어 있다.for(초기식; 조건식; 증감식){ 구현부} 가장 기본적인 형태의 for문인데, 시작점에서 값을 증감시키면서 조건식이 성립하는 한 구현부를 반복하는 것이다. while문과도 유사한 형태를 가지고 있고, 실제로 다음과 같이 대체도 가능하다.초기식;while (조건식){ 구현부; 증감식;} C#과 C++에서는 이러한 for문을 조금 변형시켜서 컨테이너 내부를 순회하는 함수를 사용할 수 있다.바로 foreach문과 범위 기반 for문이다. foreach문은 C#에서 사용하는 특수한 형태의 반복문으로, 다음과 같은 형태로 사용된다.List fibNumbers = new() { 0, 1, 1, 2, 3, 5, 8, 13 };foreach..
메모리 계층구조
·
Programming/기타
폰 노이만은 CPU, 메모리, 프로그램을 핵심 구성요소로 삼는 폰 노이만 구조를 발표했다.이론상 튜링-완전한 구조이고, 컴퓨터에서 작업을 하고 다른 작업을 시킬 때 프로그램만 교체하면 된다는 장점으로 인해 대부분의 컴퓨터는 이 구조를 따르고 있지만, CPU와 메모리 간의 데이터 전송 속도 차이로 인해 병목 현상이 발생한다는 문제가 발생하게 되었다.이러한 병목 현상을 해결하기 위해 탄생한 것이 바로 메모리 계층 구조이다. 메모리 계층 구조메모리 계층 구조는 컴퓨터 시스템에서 데이터 접근 속도와 저장 용량의 균형을 맞추기 위해 설계된 구조이다.이 구조는 필요에 따라 여러 종류의 메모리를 계층적으로 배치하여 효율적인 데이터 관리를 가능하게 하는데, 레지스터 - 캐시 - 메모리 - 스토리지의 4단계로 구성하는 ..