C언어(8)
-
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 -
포인터 연산
*tmp++ = *s++; tmp가 가리키는 값을 가져와 s가 가리키는 값으로 설정한 후에, tmp와 s를 모두 1씩 증가시킨다. tmp++ = s++; tmp를 1만큼 증가시킨 후, s가 가리키는 값을 tmp가 가리키는 위치에 할당한 후에, s를 1씩 증가시킨다. *--tmp = *--s; --tmp: tmp를 1만큼 감소시킨 후에, 그 위치의 값을 가리킨다. --s: s를 1만큼 감소시킨 후에, 그 위치의 값을 가리킨다. 이후에 tmp가 가리키는 위치에 s가 가리키는 값을 할당한다. --*tmp = --*s; --*tmp: tmp가 가리키는 값을 가져온 후에 1을 감소시킨다. --*s: s가 가리키는 값을 가져온 후에 1을 감소시킨다. 그 후에 tmp가 가리키는 위치에 s가 가리키는 값을 할당한다.
2024.03.08 -
unsigned char
unsigned char 는 byte 단위의 데이터를 나타내는 데에 적합한 데이터 형식이다. 또한 부호 없는 데이터 형식이기 때문에 메모리 영역에 설정할 값을 나타내기에 적합하다. 그래서 size_t 를 받아서 사용하는 memset 함수에 void *형태를 unsigned char *로 변환하여 포인터 산술을 보다 편하고 효율적으로 수행할 수 있다.
2024.03.08 -
size_t
size_t 는 주로 메모리 할당 및 배열 인덱싱과 관련된 작업에서 반환되는데 데이터의 크기를 나타내는데 사용된다. 플랫폼 독립성 32bit 시스템에서는 4byte / 64bit 시스템에서는 8byte이다. 이는 메모리 할당과 같은 작업에서 특정 플랫폼의 메모리 구조에 영향을 받지 않고 일관된 크기를 보장하는데 도움이 된다. 부호 없는 값 size_t 는 부호 없는 정수 데이터 형식이다. 이는 음수 값을 나타내지 않는다는 것을 의미한다. 메모리 크기 또는 배열 길이와 같은 양의 값에 사용된다. 메모리 할당 메모리 할당 함수(ex / malloc)는 size_t 형식을 사용하여 할당할 메모리의 크기를 지정한다. 표준 라이브러리와의 호환성 표준 라이브러리 함수(ex / strlen / sizeof)는 siz..
2024.03.08 -
문자열 포인터 길이 확인 시 주의사항
while (str[str_len]) str_len++; while (str && str[str_len]) str_len++; 아래처럼 while에 str을 넣어주게 되면 str이 NULL인 경우에도 str[str_len]을 안전하게 참조할 수 있다.
2024.02.29