`t_line *init_line(t_point start, t_point end, t_fdf *fdf)` 함수는 두 점 사이의 선을 나타내는 `t_line` 구조체를 초기화하는 역할을 합니다. 이 함수는 메모리에 새로운 `t_line` 구조체를 할당하고, 시작점과 끝점의 좌표 및 색상 정보를 설정합니다.
### 함수 설명
1. **메모리 할당**:
```c
line = malloc(sizeof(t_line));
```
- `t_line` 구조체를 위한 메모리를 할당합니다. 만약 메모리 할당에 실패하면 `NULL`을 반환합니다.
2. **시작점 및 끝점 설정**:
```c
line->start.x = start.x;
line->start.y = start.y;
line->start.z = start.z;
line->start.color = start.color;
line->end.x = end.x;
line->end.y = end.y;
line->end.z = end.z;
line->end.color = end.color;
```
- 시작점과 끝점의 x, y, z 좌표 및 색상 정보를 설정합니다.
3. **transform_z 설정**:
```c
line->transform_z = max((fdf->map->max_z - fdf->map->min_z), \
max(fdf->map->max_x, fdf->map->max_y));
```
- `transform_z`는 3D 맵의 z 좌표 범위와 x, y 좌표의 최대 크기 중 더 큰 값을 저장합니다. 이는 이후의 변환 및 프로젝션에서 사용될 수 있습니다.
### transform_z의 의미
`transform_z`는 3D 맵의 크기와 깊이를 고려하여 선의 변환 및 프로젝션에 사용되는 값입니다. 예를 들어, 3D 맵의 z 좌표 범위가 크면, 이는 깊이감을 더 강조할 수 있습니다. 반면, x, y 좌표의 최대 크기가 더 크다면, 이는 2D 평면에서의 확대/축소를 더 강조할 수 있습니다.
**예시:**
- 맵의 z 좌표 범위가 `-10`에서 `10`까지이고, x, y 좌표의 최대 크기가 각각 `20`이라면:
- `max_z - min_z = 20`
- `max(fdf->map->max_x, fdf->map->max_y) = 20`
- `transform_z = max(20, 20) = 20`
이 경우, `transform_z`는 `20`으로 설정되어, z 좌표의 변화와 x, y 좌표의 크기가 비슷한 중요성을 가집니다.
- 만약 z 좌표 범위가 `-100`에서 `100`까지이고, x, y 좌표의 최대 크기가 각각 `20`이라면:
- `max_z - min_z = 200`
- `max(fdf->map->max_x, fdf->map->max_y) = 20`
- `transform_z = max(200, 20) = 200`
이 경우, `transform_z`는 `200`으로 설정되어, z 좌표의 변화가 더 강조됩니다.
### 결론
- `init_line` 함수는 두 점 사이의 선을 나타내는 `t_line` 구조체를 초기화합니다.
- `transform_z`는 3D 맵의 크기와 깊이를 고려하여 선의 변환 및 프로젝션에 사용되는 값입니다. 이는 이후의 렌더링에서 깊이감이나 확대/축소 효과를 조절하는 데 사용될 수 있습니다.
Citations:
[1] https://cppmagister.tistory.com/21
[2] https://sejong-kr.libguides.com/c.php?g=942235&p=6822369
[3] https://wn42.tistory.com/94
[4] https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/builtin-types/struct
[5] https://boycoding.tistory.com/183
[6] https://dream-and-develop.tistory.com/10
[7] https://blog.naver.com/kwy1052aa/221751583039
[8] https://blog.naver.com/sweetie_rex/220290056184?viewType=pc
'C Language' 카테고리의 다른 글
printf 함수 간단 구현 (0) | 2025.02.21 |
---|---|
mlx_get_data_addr 펑션의 사용법 (0) | 2025.02.17 |
3D 축 기준 회전 공식 (0) | 2025.02.07 |
2차원 배열을 사용한 3차원 표현방법 (0) | 2025.02.06 |
pivoting 상세설명 (0) | 2025.02.06 |