mirror of
https://github.com/Ttanasart-pt/Pixel-Composer.git
synced 2024-11-14 14:33:53 +01:00
44 lines
736 B
Plaintext
44 lines
736 B
Plaintext
|
function line_bresenham(arr, x1, y1, x2, y2, oc, nc) {
|
||
|
var dx = abs(x2 - x1);
|
||
|
var dy = abs(y2 - y1);
|
||
|
var ng = 0;
|
||
|
|
||
|
if(dx < dy) {
|
||
|
var x1t = x1;
|
||
|
var x2t = x2;
|
||
|
var dt = dx;
|
||
|
|
||
|
x1 = y1;
|
||
|
y1 = x1t;
|
||
|
x2 = y2;
|
||
|
y2 = x2t;
|
||
|
|
||
|
ng = 1;
|
||
|
|
||
|
dx = dy;
|
||
|
dy = dt;
|
||
|
}
|
||
|
|
||
|
var pk = 2 * dy - dx;
|
||
|
|
||
|
for( var i = 0; i < dx; i++ ) {
|
||
|
if(x1 < x2) x1++;
|
||
|
else x1--;
|
||
|
var cc = merge_color(oc, nc, i / dx);
|
||
|
|
||
|
if (pk < 0) {
|
||
|
if (ng == 0) array_push(arr, [x1, y1, cc]);
|
||
|
else array_push(arr, [y1, x1, cc]);
|
||
|
pk = pk + 2 * dy;
|
||
|
} else {
|
||
|
if(y1 < y2) y1++;
|
||
|
else y1--;
|
||
|
|
||
|
if (ng == 0) array_push(arr, [x1, y1, cc]);
|
||
|
else array_push(arr, [y1, x1, cc]);
|
||
|
|
||
|
pk = pk + 2 * dy - 2 * dx;
|
||
|
}
|
||
|
}
|
||
|
}
|