카테고리 없음
[FDF] ft_make_layer_dot
Or71nH
2022. 6. 27. 09:35
https://github.com/liebespaar93/FDF/tree/layer_dot
GitHub - liebespaar93/FDF
Contribute to liebespaar93/FDF development by creating an account on GitHub.
github.com
예제 코드를 만들었다
#include <ft_dot.h>
t_dot *makedot(char *file_name)
{
t_dot *head_dot;
t_oneline *head_oneline;
t_xyz position;
int *layer_1D;
int x_len;
ft_memset(&position, 0, sizeof(position));
head_oneline = readfile(file_name);
if (!head_oneline)
return (NULL);
head_dot = NULL;
while (head_oneline)
{
layer_1D = ft_make_layer_1D(head_oneline, &x_len);
head_dot = ft_dot_make_line(head_dot, position, layer_1D, x_len);
head_oneline = head_oneline->next;
position.y++;
}
while (--position.y)
head_dot = head_dot->y_p;
return (head_dot);
}
#include <ft_dot.h>
t_dot *ft_make_dot_while(t_oneline *head_oneline, t_xyz *position)
{
t_dot *head_dot;
int *layer_1D;
int x_len;
int y_len;
head_dot = NULL;
y_len = 0;
x_len = 0;
while (head_oneline)
{
layer_1D = ft_make_layer_1D(head_oneline, &x_len);
head_dot = ft_dot_make_line(head_dot, *position, layer_1D, x_len);
free(layer_1D);
head_oneline = head_oneline->next;
position->y++;
y_len++;
}
while (--y_len && head_dot)
head_dot = head_dot->y_p;
return (head_dot);
}
t_dot *makedot(char *file_name)
{
t_dot *head_dot;
t_oneline *head_oneline;
t_xyz position;
int *layer_1D;
ft_memset(&position, 0, sizeof(position));
head_oneline = readfile(file_name);
head_dot = NULL;
if (!head_oneline)
return (NULL);
head_dot = ft_make_dot_while(head_oneline, &position);
ft_free_oneline(&head_oneline);
return (head_dot);
}
새거 만들어 주는거
#include <ft_dot.h>
t_dot *ft_dot_make_line(t_dot *dot_ptr, t_xyz position, int *layer_1D, int x_len)
{
t_dot *new_dot_ptr;
int index;
index = 0;
new_dot_ptr = NULL;
while (index++ < x_len)
{
new_dot_ptr = ft_dot_add_x(&new_dot_ptr, ft_new_dot(*layer_1D++, &position), 1);
if (dot_ptr)
{
ft_dot_add_y(&dot_ptr, new_dot_ptr, -1);
dot_ptr = dot_ptr->x_p;
}
}
while (--index && new_dot_ptr->x_m)
new_dot_ptr = new_dot_ptr->x_m;
return (new_dot_ptr);
}
여기가 좀 중요하다 일단 한줄을 만들고 이으면 느리다 그래서 뜨게질 처럼 이어주는거다
위에꺼 있으면 이어가면서 만들기
#include <ft_dot.h>
t_dot *ft_dot_add_x(t_dot **dot_ptr, t_dot *new_dot, int sign)
{
if (!*dot_ptr)
{
*dot_ptr = new_dot;
return (*dot_ptr);
}
if (sign > 0)
{
(*dot_ptr)->x_p = new_dot;
new_dot->x_m = *dot_ptr;
}
else if (sign < 0)
{
(*dot_ptr)->x_m = new_dot;
new_dot->x_p = *dot_ptr;
}
else
return (*dot_ptr);
return (new_dot);
}
t_dot *ft_dot_add_y(t_dot **dot_ptr, t_dot *new_dot, int sign)
{
if (!*dot_ptr)
{
*dot_ptr = new_dot;
return (*dot_ptr);
}
if (sign > 0)
{
(*dot_ptr)->y_p = new_dot;
new_dot->y_m = *dot_ptr;
}
else if (sign < 0)
{
(*dot_ptr)->y_m = new_dot;
new_dot->y_p = *dot_ptr;
}
else
return (*dot_ptr);
return (new_dot);
}
t_dot *ft_dot_add_z(t_dot **dot_ptr, t_dot *new_dot, int sign)
{
if (!*dot_ptr)
{
*dot_ptr = new_dot;
return (*dot_ptr);
}
if (sign > 0)
{
(*dot_ptr)->z_p = new_dot;
new_dot->z_m = *dot_ptr;
}
else if (sign < 0)
{
(*dot_ptr)->z_m = new_dot;
new_dot->z_p = *dot_ptr;
}
else
return (*dot_ptr);
return (new_dot);
}
점끼리 양쪽으로 이어주는 거
이렇게 dot 으로 잘이어 실행해 보았다
역시 점이 좀더 자유롭다 예를들어 가로 세로가 맞지 않아도 서로 이을수 있다
kyoulee@kyouleeui-MacBookAir FDF % ./a.out
1 2 3 4 5 6 7 8 9 10 11
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30 31
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100