본문 바로가기

분류 전체보기

(68)
temp->right->left = top vs temp = top `temp->right->left = top`과 `temp = top`은 매우 다른 연산입니다. 이 코드의 목적과 동작을 자세히 설명하겠습니다.## 코드의 목적이 `pop_top` 함수는 스택의 최상위 요소를 제거하고 반환하는 역할을 합니다. 이 과정에서 스택의 구조를 올바르게 유지해야 합니다.## 코드 분석1. `top = stack->top`: 스택의 최상위 노드를 가리킵니다.2. `temp = top->right`: 실제로 제거할 노드(top 바로 다음 노드)를 temp에 저장합니다.3. `temp->right->left = top`: 제거할 노드의 다음 노드의 왼쪽 링크를 top으로 연결합니다.4. `top->right = temp->right`: top의 오른쪽 링크를 제거할 노드의 다음 노드로..
스택 사이즈 변수 메모 max_size와 list_size의 차이max_size:max_size는 스택이나 배열이 저장할 수 있는 최대 요소 수를 나타냅니다5.이는 메모리 할당 시 사용되는 상한선으로, 실제 저장된 요소 수와는 다를 수 있습니다.list_size:list_size는 list 배열에 실제로 저장된 요소의 수를 나타냅니다5.현재 사용 중인 배열의 실제 크기를 반영합니다.주요 차이점:max_size는 이론적인 최대 용량을, list_size는 현재 사용 중인 실제 크기를 나타냅니다.max_size는 일반적으로 고정된 값이지만, list_size는 요소가 추가되거나 제거됨에 따라 변할 수 있습니다.pivot_arr의 역할pivot_arr은 퀵 정렬 알고리즘에서 사용되는 피벗 값들을 저장하는 배열로 추정됩니다34. 퀵 ..
CodeLLDB 설치후 launch.json 파일 launch.json 파일의 "configurations" 섹션에서 "program"과 "args" 필드는 디버깅할 프로그램과 그 프로그램에 전달할 인자를 지정하는 데 사용됩니다.## program 필드"program" 필드는 디버깅할 실행 파일의 경로를 지정합니다. 예시:```json"program": "${workspaceFolder}/myapp"```- `${workspaceFolder}`는 VSCode의 사전 정의된 변수로, 현재 작업 폴더의 경로를 나타냅니다[1].- 위 예시에서는 작업 폴더 내의 "myapp"이라는 실행 파일을 디버깅합니다.## args 필드"args" 필드는 프로그램에 전달할 명령줄 인자를 배열 형태로 지정합니다.예시:```json"args": ["-f", "config.tx..
초기 각도를 변경 방법 초기 각도를 변경하는 방법은 t_cam 구조체의 alpha, beta, gamma 값을 조정하는 것입니다. 이 세 값은 각각 x축, y축, z축을 중심으로 한 회전 각도를 나타냅니다. 구체적인 변경 방법은 다음과 같습니다: t_cam 구조체 초기화: 프로그램의 초기화 단계에서 t_cam 구조체를 생성하고 초기 각도를 설정합니다. c fdf->cam->alpha = 0.0;  // x축 회전 fdf->cam->beta = 0.0;   // y축 회전 fdf->cam->gamma = 0.0;  // z축 회전 각도 변경: 사용자 입력이나 프로그램 로직에 따라 이 값들을 동적으로 변경할 수 있습니다. c fdf->cam->alpha += 0.1;  // x축 회전 증가 fdf->cam->beta -= 0.05..
리눅스에서 마스크 0 의 의미 리눅스에서 마스크가 0이라는 것은 일반적으로 "아무것도 선택되지 않음" 또는 "모든 것이 허용됨"을 의미합니다. 이는 컨텍스트에 따라 다양한 의미를 가질 수 있습니다. 몇 가지 예시를 통해 자세히 설명하겠습니다:파일 권한 마스크파일 시스템에서 umask 값이 0일 경우:새로 생성되는 파일이나 디렉토리에 대해 어떠한 권한 제한도 없음을 의미합니다.예를 들어, umask 0으로 설정하고 파일을 생성하면, 해당 파일은 최대 권한(666 또는 777)으로 생성됩니다.이벤트 마스크이벤트 처리 시스템(예: inotify)에서 마스크가 0인 경우:어떤 이벤트도 감시하지 않음을 의미합니다.하지만 일부 시스템에서는 마스크가 0이어도 특정 이벤트(예: EPOLLHUP, EPOLLERR)가 여전히 트리거될 수 있습니다.네트..
isometric vs perspective 등축(isometric) 투영법과 원근법(perspective) 은 3차원 물체를 2차원 평면에 표현하는 두 가지 다른 방식입니다. 이 두 방법의 주요 차이점을 구체적인 예시와 함께 살펴보겠습니다. 기본 원리 아이소메트릭 투영법: 모든 축이 120도 각도로 배치됩니다1. 평행선은 항상 평행하게 유지됩니다4. 물체의 크기는 거리에 관계없이 일정하게 유지됩니다5. 원근법: 소실점을 사용하여 깊이감을 표현합니다6 . 멀리 있는 물체는 더 작게 그려집니다11. 평행선은 소실점에서 만나는 것처럼 보입니다6 . 구체적인 예시 건물 그리기 아이소메트릭: 건물의 모든 모서리가 평행하게 유지되며, 멀리 있는 부분도 가까운 부분과 같은 크기로 그려집니다. 원근법: 건물의 모서리가 소실점을 향해 모이며, 멀리 있는 부분이 ..
Bresenham 알고리즘의 기본 원리 Bresenham의 알고리즘은 컴퓨터 그래픽스에서 선을 그리는 데 사용되는 효율적인 방법입니다. 이 알고리즘은 정수 연산만을 사용하여 빠르고 정확하게 선을 그릴 수 있습니다. Bresenham 알고리즘의 작동 방식을 예시를 통해 상세히 설명해 드리겠습니다.Bresenham 알고리즘의 기본 원리Bresenham 알고리즘은 두 점 사이의 선을 그릴 때, 각 x 좌표에 대해 가장 가까운 y 좌표를 선택하는 방식으로 작동합니다. 이 과정에서 결정 변수(decision variable)를 사용하여 다음 픽셀의 위치를 결정합니다.예시: (1,1)에서 (8,5)까지 선 그리기이 예시를 통해 Bresenham 알고리즘의 단계별 과정을 살펴보겠습니다.초기 설정시작점: (x1, y1) = (1, 1)끝점: (x2, y2)..
3D draw 함수 설명 1. 이중 루프 구조:    ```c    while (fdf->dots.y height)    {        while (fdf->dots.x width)        {            // 그리기 로직        }    }    ```    - 이 이중 루프는 맵의 모든 점을 순회합니다.    - `fdf->height`와 `fdf->width`는 맵의 세로와 가로 크기를 나타냅니다. 2. 수평선 그리기:    ```c    if (fdf->dots.x width - 1)        bresenham(fdf, fdf->dots.x + 1, fdf->dots.y);    ```    - 현재 점에서 오른쪽 점으로 선을 그립니다.    - 맵의 오른쪽 끝에 도달하면 그리지 않습니다. 3. 수..