-
Notifications
You must be signed in to change notification settings - Fork 0
/
draw.c
114 lines (107 loc) · 3.25 KB
/
draw.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* draw.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: vlee <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2018/09/11 15:07:10 by vlee #+# #+# */
/* Updated: 2018/09/12 19:53:06 by vlee ### ########.fr */
/* */
/* ************************************************************************** */
#include "fdf.h"
void ft_setpointsdown(t_env **fdf, int i, int j, t_hooks *hooks)
{
if (i + 1 < (*fdf)->h)
{
(*fdf)->x1 = round((*fdf)->cart[i][j].x) + hooks->xt;
(*fdf)->y1 = round((*fdf)->cart[i][j].y) + hooks->yt;
(*fdf)->x2 = round((*fdf)->cart[i + 1][j].x) + hooks->xt;
(*fdf)->y2 = round((*fdf)->cart[i + 1][j].y) + hooks->yt;
(*fdf)->curr_z = (*fdf)->cart[i][j].rawz;
(*fdf)->next_z = (*fdf)->cart[i + 1][j].rawz;
(*fdf)->rise = (*fdf)->y2 - (*fdf)->y1;
(*fdf)->run = (*fdf)->x2 - (*fdf)->x1;
}
}
void ft_drawdown(t_env *fdf, t_bresen **breezy, t_hooks *hooks)
{
fdf->i = 0;
while (fdf->i < fdf->h)
{
fdf->j = 0;
while (fdf->j < fdf->w)
{
ft_setpointsdown(&fdf, fdf->i, fdf->j, hooks);
if (fdf->run == 0 && fdf->i + 1 < fdf->h)
ft_slopestraight(fdf);
else
{
fdf->m = fdf->rise / fdf->run;
(*breezy)->adjust = fdf->m >= 0 ? 1 : -1;
(*breezy)->offset = 0;
(*breezy)->threshold = 0.5;
if (fdf->m <= 1 && fdf->m >= -1)
ft_slopegradual(fdf, *breezy);
else
ft_slopesharp(fdf, *breezy);
}
fdf->j++;
}
fdf->i++;
}
}
void ft_setpointsright(t_env **fdf, int i, int j, t_hooks *hooks)
{
if (j + 1 < (*fdf)->w)
{
(*fdf)->x1 = round((*fdf)->cart[i][j].x) + hooks->xt;
(*fdf)->y1 = round((*fdf)->cart[i][j].y) + hooks->yt;
(*fdf)->x2 = round((*fdf)->cart[i][j + 1].x) + hooks->xt;
(*fdf)->y2 = round((*fdf)->cart[i][j + 1].y) + hooks->yt;
(*fdf)->curr_z = (*fdf)->cart[i][j].rawz;
(*fdf)->next_z = (*fdf)->cart[i][j + 1].rawz;
(*fdf)->rise = (*fdf)->y2 - (*fdf)->y1;
(*fdf)->run = (*fdf)->x2 - (*fdf)->x1;
}
}
void ft_drawright(t_env *fdf, t_bresen **b, t_hooks *hooks)
{
fdf->i = 0;
while (fdf->i < fdf->h)
{
fdf->j = 0;
while (fdf->j < fdf->w)
{
ft_setpointsright(&fdf, fdf->i, fdf->j, hooks);
if (fdf->run == 0 && fdf->j + 1 < fdf->h)
ft_slopestraight(fdf);
else
{
fdf->m = fdf->rise / fdf->run;
(*b)->adjust = fdf->m >= 0 ? 1 : -1;
(*b)->offset = 0;
(*b)->threshold = 0.5;
if (fdf->m <= 1 && fdf->m >= -1)
ft_slopegradual(fdf, *b);
else
ft_slopesharp(fdf, *b);
}
fdf->j++;
}
fdf->i++;
}
}
void ft_draw(t_env *fdf, t_hooks *hooks)
{
int x;
int y;
t_bresen *breezy;
x = 0;
y = 0;
breezy = (t_bresen *)malloc(sizeof(t_bresen));
ft_rotate(fdf, hooks);
ft_translate(&fdf, hooks);
ft_drawright(fdf, &breezy, hooks);
ft_drawdown(fdf, &breezy, hooks);
}