Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Dawid Mocek
- */
- void my_line(View& view, const unsigned short& x1, const unsigned short& y1,
- const unsigned short& x2, const unsigned short& y2)
- {
- double y, x, xi, yi, antialias;
- int i, down_color, up_color;
- //iteracja po y'ach
- if (std::abs(y1 - y2) > std::abs(x1 - x2))
- {
- xi = (x2 - x1) / (double)(y2 - y1);//o ile przesuwac sie po osi x
- if (y2 > y1)
- {
- x = x1;
- for (i = y1; i <= y2; i++)
- {
- x += xi;
- //antyaliasing
- antialias = x - (int)(x);
- if (antialias < 0.25)
- {
- view(unsigned(x), i) = Pixel(0, 0, 255);
- }
- else if (antialias > 0.75)
- {
- view(unsigned(x) + 1, i) = Pixel(0, 0, 255);
- }
- else
- {
- down_color = (unsigned char)(antialias * 255);
- up_color = 255 - down_color;
- view(unsigned(x), i) = Pixel(down_color, down_color, 255);
- view(unsigned(x) + 1, i) = Pixel(up_color, up_color, 255);
- }
- }
- }
- else
- {
- x = x2;
- for (i = y2; i <= y1; i++)
- {
- x += xi;
- //antyaliasing
- antialias = x - (int)(x);
- if (antialias < 0.25)
- {
- view(unsigned(x), i) = Pixel(0, 0, 255);
- }
- else if (antialias > 0.75)
- {
- view(unsigned(x) + 1, i) = Pixel(0, 0, 255);
- }
- else
- {
- down_color = (unsigned char)(antialias * 255);
- up_color = 255 - down_color;
- view(unsigned(x), i) = Pixel(down_color, down_color, 255);
- view(unsigned(x) + 1, i) = Pixel(up_color, up_color, 255);
- }
- }
- }
- }
- else//iteracja po x'ach
- {
- yi = (y2 - y1) / (double)(x2 - x1);
- if (x2 > x1)
- {
- y = y1;
- for (i = x1; i <= x2; i++)
- {
- y += yi;
- //antyaliasing
- antialias = y - (int)(y);
- if (antialias < 0.25)
- {
- view(i, unsigned(y)) = Pixel(0, 0, 255);
- }
- else if (antialias > 0.75)
- {
- view(i, unsigned(y)+1) = Pixel(0, 0, 255);
- }
- else
- {
- down_color = (unsigned char)(antialias * 255);
- up_color = 255 - down_color;
- view(i, unsigned(y)) = Pixel(down_color, down_color, 255);
- view(i, unsigned(y)+1) = Pixel(up_color, up_color, 255);
- }
- }
- }
- else
- {
- y = y2;
- for (i = x2; i <= x1; i++)
- {
- y += yi;
- //antyaliasing
- antialias = y - (int)(y);
- if (antialias < 0.25)
- {
- view(i, unsigned(y)) = Pixel(0, 0, 255);
- }
- else if (antialias > 0.75)
- {
- view(i, unsigned(y) + 1) = Pixel(0, 0, 255);
- }
- else
- {
- down_color = (unsigned char)(antialias * 255);
- up_color = 255 - down_color;
- view(i, unsigned(y)) = Pixel(down_color, down_color, 255);
- view(i, unsigned(y) + 1) = Pixel(up_color, up_color, 255);
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement