전체 글(170)
-
부동소수점 정수 변환
정수는 시프트(부동소수점(float)은 곱셈 연산이 필요 -> 비트 시프트가 의미 없음raw raw가 int일 때raw × 256raw * (1 raw가 float일 때raw × 256결과는 같지만 자료형에 따라 다름 반대로 원상 복구toInt()고정 소수점 → 정수 (정수부만 추출)960 >> 8 = 3toFloat()고정 소수점 → 부동 소수점 (복원)960 / 256 = 3.75
2025.04.30 -
round
cmath.h에 포함반올림 함수가장 가까운 정수로 반올림round()double 타입용 반올림 함수roundf()float 타입에 대해 동작roundl()long double 타입용 반올림 함수floorf()내림 함수 (float)ceilf()올림 함수 (float)truncf()소수점 이하 버림 함수 (float)
2025.04.30 -
부동소수점 숫자
정확도 대 정밀도"정확도"는 측정값이 실제 값에 얼마나 가까운지를 나타내는 반면,"정밀도"는 어떤 양에 대해 얼마나 많은 정보를 가지고 있는지, 그리고 얼마나 고유하게 고정되어 있는지와 관련이 있습니다. 정수는 정확성이라는 특성을 지님. 그러나 정밀도는 낮음.ex) 4/2 = 2, 5/2 = 2 부동소수점 숫자는 정확도와 정밀도 측면에서 정수와 정반대이다.숫자를 나타내는 정보를 의도적으로 버리지 않으므로 정밀도가 좋다. 비트가 충분하다면 모든 FP 계산을 역순으로 처리하여 원래 숫자를 얻을 수 있다.하지만 부동소수점 숫자는 정확도가 낮다. 많은 비트를 써서 최대한 근사하지만, 그 값이 진짜 원래 값은 아니다.ex) 1/3 = 0.33333333333, 0.1 + 0.2 == 0.3 False 표현IEE..
2025.04.29 -
Orthodox Canonical Form
Orthodox Canonical Form (OCF), 또는 "정통 표준 형식", "정통 캐노니컬 폼"C++ 클래스가 복사와 대입, 소멸을 안전하고 예측 가능하게 수행할 수 있도록 하기 위한 기본적인 설계 원칙입니다. 이는 클래스가 복사 가능하고, 대입 가능하며, 자원을 적절히 해제할 수 있게 하는 4개의 핵심 함수를 정의하는 것 1. 기본 생성자(default constructor)ClassName();2. 소멸자(destructor)~ClassName();3. 복사 생성자(copy constructor)ClassName(const ClassName& other);4. 대입 연산자 오버로딩ClassName& operator = (const ClassName& other);
2025.04.29 -
DDA(Digital Differential Analysis)
DDA(Digital Differential Analyzer)는 디지털 컴퓨터에서 사용되는 알고리즘으로, 선분의 그리기 및 경로 추적에 주로 사용된다.DDA는 기하학적 문제를 해결하기 위한 빠르고 효율적인 방법으로, 특히 컴퓨터 그래픽스와 렌더링에서 중요한 역할을 한다.주요 용도는 2D와 3D 공간에서 직선, 선분, 곡선 등을 그리는 데 사용된다.개념DDA는 선분을 그리기 위해 주어진 시작점과 끝점 사이를 일정한 간격으로 나누어, 각 점을 차례로 계산하며 선을 그린다. 이 과정은 주어진 두 점 사이의 기울기와 각 좌표의 변화를 기반으로 한다.작동 원리DDA의 기본 아이디어는 두 점 사이의 x와 y값의 차이를 계산하고 그 차이를 일정한 간격으로 나누어 점을 그려나가는 것시작 점에서 목표지점 까지 기울기를 ..
2025.04.25 -
Ray casting
화면(또는 3D 공간)에서 광선을 쏘아 물체와의 충돌 여부나 위치를 계산하는 방식 주로 3D 렌더링(고전 게임), 충돌 감지, AI 시야 구현, 물리 엔진 등에 사용 1. 카메라나 특정 지점에서 시작점을 설정2. 특정 방향(보통 단위 벡터)을 정함3. 해당 방향으로 광선을 쏴서:어떤 물체와 충돌했는지,충돌 지점이 어디인지,충돌한 물체까지의 거리,등을 계산.원리광선이 처음으로 부딪히는 벽을 찾으려면, 광선을 플레이어의 위치에서부터 출발시켜 광선이 벽에 포함되는지 반복적으로 검사 해야한다.광선이 벽에 포함되는 것으로 확인되면, 벽에 포함되는지 확인하던 loop는 멈추게 되고, 거리를 측정해서 알맞은 높이로 벽을 표현한다.반대로 광선이 벽에 포함되지 않는 것으로 확인되면, 계속해서 추적한다. 광선 방향에 맞..
2025.04.25