Téléverser Bresenham.js. Fonctionne avec le SpriteGenerator
This commit is contained in:
parent
fc494ce42c
commit
354f1d57e0
|
@ -0,0 +1,79 @@
|
|||
function plot(X, Y, cc) {
|
||||
cc.fillRect(X,Y,1,1);
|
||||
}
|
||||
|
||||
function plotLineLow(firstX, firstY, secondX, secondY, cc) {
|
||||
//Dessine la ligne dans le cas où l'écart entre les abscisses est plus grand que l'écart entre les ordonnées.
|
||||
var dx = secondX - firstX;
|
||||
var dy = secondY - firstY;
|
||||
var yi = 1;
|
||||
if (dy < 0) { yi = -1; dy = -dy; }
|
||||
if (dx < 0) { dx = -dx; }
|
||||
var D = 2*dy - dx;
|
||||
/*console.log ("dx = " + dx + " | dy = " + dy + " | D = " + D);*/
|
||||
var y = firstY;
|
||||
if (firstX > secondX) {
|
||||
for (var x = firstX; x >= secondX; x--) {
|
||||
plot(x, y, cc);
|
||||
if (D > 0) {
|
||||
y += yi;
|
||||
D -= 2*dx;
|
||||
}
|
||||
D += 2 * dy;
|
||||
}
|
||||
} else {
|
||||
for (var x = firstX; x <= secondX; x++) {
|
||||
plot(x, y, cc);
|
||||
if (D > 0) {
|
||||
y += yi;
|
||||
D -= 2*dx;
|
||||
}
|
||||
D += 2 * dy;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function plotLineHigh(firstX, firstY, secondX, secondY, cc) {
|
||||
//Dans le cas où ... ?
|
||||
var dx = secondX - firstX;
|
||||
var dy = secondY - firstY;
|
||||
var xi = 1;
|
||||
if (dx < 0) { xi = -1; dx = -dx; }
|
||||
if (dy < 0) { dy = -dy;}
|
||||
var D = 2*dx - dy;
|
||||
/*console.log ("dx = " + dx + " | dy = " + dy + " | D = " + D);*/
|
||||
var x = firstX;
|
||||
if (firstY > secondY) {
|
||||
for (var y = firstY; y >= secondY; y--) {
|
||||
plot(x, y, cc);
|
||||
if (D > 0) {
|
||||
x += xi;
|
||||
D -= 2*dy;
|
||||
}
|
||||
D += 2*dx;
|
||||
}
|
||||
} else {
|
||||
for (var y = firstY; y <= secondY; y++) {
|
||||
plot(x, y, cc);
|
||||
if (D > 0) {
|
||||
x += xi;
|
||||
D -= 2*dy;
|
||||
}
|
||||
D += 2*dx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function plotLine(firstX, firstY, secondX, secondY, cc) {
|
||||
if (Math.abs(secondY - firstY) < Math.abs(secondX - firstX)) {
|
||||
//Si la différence entre les abscisses est plus grandes que la différence entre les ordonnées...
|
||||
plotLineLow(firstX, firstY, secondX, secondY, cc);
|
||||
|
||||
} else {
|
||||
//Autrement, on utilise plotLineHigh.
|
||||
plotLineHigh(firstX, firstY, secondX, secondY,cc);
|
||||
/*plotLineHigh(secondX, secondY, firstX, firstY, cc);*/
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue