new file lone.c
This commit is contained in:
parent
983a4f232c
commit
50d70eb260
4 changed files with 73 additions and 73 deletions
|
@ -7,7 +7,7 @@ include_directories(inc libft/includes minilibx) # headers
|
|||
link_directories(libft minilibx) # libraries
|
||||
|
||||
set(SOURCE_FILES
|
||||
src/main.c) # sources
|
||||
src/main.c src/line.c) # sources
|
||||
|
||||
add_executable(fdf ${SOURCE_FILES}) # compilation
|
||||
|
||||
|
|
3
Makefile
3
Makefile
|
@ -18,7 +18,8 @@ SRCDIR = ./src/
|
|||
OBJDIR = ./obj/
|
||||
|
||||
|
||||
SRC_FILES = main.c
|
||||
SRC_FILES = main.c \
|
||||
line.c
|
||||
|
||||
OBJ_FILES = $(SRC_FILES:.c=.o)
|
||||
|
||||
|
|
68
src/line.c
Normal file
68
src/line.c
Normal file
|
@ -0,0 +1,68 @@
|
|||
|
||||
#include "fdf.h"
|
||||
|
||||
static void swap_x_y(t_point *p1, t_point *p2)
|
||||
{
|
||||
int temp;
|
||||
|
||||
temp = p1->x;
|
||||
p1->x = p1->y;
|
||||
p1->y = temp;
|
||||
temp = p2->x;
|
||||
p2->x = p2->y;
|
||||
p2->y = temp;
|
||||
}
|
||||
|
||||
static void swap_points(t_point *p1, t_point *p2)
|
||||
{
|
||||
t_point temp;
|
||||
|
||||
temp = *p1;
|
||||
*p1 = *p2;
|
||||
*p2 = temp;
|
||||
|
||||
}
|
||||
|
||||
static void draw_line(t_point *p1, t_point *p2, t_mlx *m, t_swap *s)
|
||||
{
|
||||
int dx = abs(p2->x - p1->x);
|
||||
int dy = abs(p2->y - p1->y);
|
||||
int derr = 2 * dy - dx;
|
||||
while (p1->x < p2->x)
|
||||
{
|
||||
if (s->swap_coord)
|
||||
mlx_pixel_put(m->mlx, m->win, p1->y, p1->x, p1->color);
|
||||
else
|
||||
mlx_pixel_put(m->mlx, m->win, p1->x, p1->y, p1->color);
|
||||
if (derr > 0)
|
||||
{
|
||||
p1->y += s->swap_x;
|
||||
derr -= dx;
|
||||
}
|
||||
(p1->x)++;
|
||||
derr += dy;
|
||||
}
|
||||
}
|
||||
|
||||
void line(t_point *p1, t_point *p2, t_mlx *m)
|
||||
{
|
||||
int dx;
|
||||
int dy;
|
||||
t_swap swap;
|
||||
|
||||
dx = abs(p2->x - p1->x);
|
||||
dy = abs(p2->y - p1->y);
|
||||
swap.swap_coord = 0;
|
||||
swap.swap_x = 1;
|
||||
if (dy > dx)
|
||||
{
|
||||
swap_x_y(p1, p2);
|
||||
swap.swap_coord= 1;
|
||||
}
|
||||
if (p1->x > p2->x)
|
||||
swap_points(p1, p2);
|
||||
if (p1->y > p2->y)
|
||||
swap.swap_x = -1;
|
||||
draw_line(p1, p2, m, &swap);
|
||||
}
|
||||
|
73
src/main.c
73
src/main.c
|
@ -7,75 +7,6 @@
|
|||
|
||||
#include "fdf.h"
|
||||
|
||||
void swap_x_y(t_point *p1, t_point *p2)
|
||||
{
|
||||
int temp;
|
||||
|
||||
temp = p1->x;
|
||||
p1->x = p1->y;
|
||||
p1->y = temp;
|
||||
temp = p2->x;
|
||||
p2->x = p2->y;
|
||||
p2->y = temp;
|
||||
}
|
||||
|
||||
void swap_points(t_point *p1, t_point *p2)
|
||||
{
|
||||
t_point temp;
|
||||
|
||||
temp = *p1;
|
||||
*p1 = *p2;
|
||||
*p2 = temp;
|
||||
|
||||
}
|
||||
|
||||
void draw_line(t_point *p1, t_point *p2, t_mlx *m, t_swap *s)
|
||||
{
|
||||
int dx = abs(p2->x - p1->x);
|
||||
int dy = abs(p2->y - p1->y);
|
||||
int derr = 2 * dy - dx;
|
||||
while (p1->x < p2->x)
|
||||
{
|
||||
if (s->swap_coord)
|
||||
mlx_pixel_put(m->mlx, m->win, p1->y, p1->x, p1->color);
|
||||
else
|
||||
mlx_pixel_put(m->mlx, m->win, p1->x, p1->y, p1->color);
|
||||
if (derr > 0)
|
||||
{
|
||||
p1->y += s->swap_x;
|
||||
derr -= dx;
|
||||
}
|
||||
(p1->x)++;
|
||||
derr += dy;
|
||||
}
|
||||
}
|
||||
|
||||
void line(t_point *p1, t_point *p2, t_mlx *m)
|
||||
{
|
||||
int dx;
|
||||
int dy;
|
||||
t_swap swap;
|
||||
|
||||
dx = abs(p2->x - p1->x);
|
||||
dy = abs(p2->y - p1->y);
|
||||
swap.swap_coord = 0;
|
||||
swap.swap_x = 1;
|
||||
if (dy > dx)
|
||||
{
|
||||
swap_x_y(p1, p2);
|
||||
swap.swap_coord= 1;
|
||||
}
|
||||
if (p1->x > p2->x)
|
||||
{
|
||||
swap_points(p1, p2);
|
||||
}
|
||||
if (p1->y > p2->y)
|
||||
{
|
||||
swap.swap_x = -1;
|
||||
}
|
||||
draw_line(p1, p2, m, &swap);
|
||||
}
|
||||
|
||||
void test_line(t_mlx mlx)
|
||||
{
|
||||
t_point p1;
|
||||
|
@ -142,7 +73,6 @@ void circle(t_mlx m)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
t_mlx m;
|
||||
|
@ -158,9 +88,10 @@ int main(int argc, char **argv)
|
|||
ft_putstr(line);
|
||||
ft_putstr("\n");
|
||||
}
|
||||
|
||||
|
||||
m.mlx = mlx_init();
|
||||
m.win = mlx_new_window(m.mlx, 500, 500, "fdf");
|
||||
//line(&p1, &p2, &m);
|
||||
test_line(m);
|
||||
circle(m);
|
||||
mlx_loop(m.mlx);
|
||||
|
|
Loading…
Add table
Reference in a new issue