Ein HALLO in die Runde,
das ist mein erster Beitrag hier.
Ich grübel im Moment an einem Problem rum und glaube der Lösung schon recht nah zu sein. Nur komme ich aktuell nicht weiter. In meinem Script ist immer noch ein Fehler drin.
Worum geht es.
Ich möchte gern mit der folgenden Function ein Schachbrettmuster in die Canvas zeichnen. Das Ganze per Pixelzugriff über das ImageData Array. Es funktioniert auch schon, jedoch sieht man im Muster immer einen Fehler, und zwar in Form einer diagonalen Linie. Ich komm dem Problem nicht auf die Schliche.
Hier die Function:
HIER das jsfiddle Bsp.
In der folgenden Zeile könnt ihr die Größe der Schachbrettfelder einstellen:
Vor allem bei kleinen Größen (2-5) sieht man den Fehler besonders gut.
Vielleicht findet ja von euch wer den Fehler. Würde mich super freuen.
Vielen Dank!
- - - Aktualisiert - - -
Jetzt bin ich schon ein ganzes Stück weiter.
Dieser Bug mit den diagonalen Linien ist raus:
jsfiddle
Jedoch sieht man bei genauer Betrachtung ganz links noch immer einen 1 Pixel Bug... Falls also wer eine Idee hat. Immer gerne her damit.
Vielen Dank
das ist mein erster Beitrag hier.
Ich grübel im Moment an einem Problem rum und glaube der Lösung schon recht nah zu sein. Nur komme ich aktuell nicht weiter. In meinem Script ist immer noch ein Fehler drin.
Worum geht es.
Ich möchte gern mit der folgenden Function ein Schachbrettmuster in die Canvas zeichnen. Das Ganze per Pixelzugriff über das ImageData Array. Es funktioniert auch schon, jedoch sieht man im Muster immer einen Fehler, und zwar in Form einer diagonalen Linie. Ich komm dem Problem nicht auf die Schliche.
Hier die Function:
HTML:
function checkerboard() {
var pixelsPerLine = Math.floor( ( w * unit ) / pixelWidth );
if ( pixelsPerLine % 2 === 0 ) {
pixelsPerLine += 2;
} else {
pixelsPerLine += 3;
}
var lineWidth = pixelsPerLine * pixelWidth;
var valueStartIndex = w * unit;
var valueLength = lineWidth - valueStartIndex;
var valueEndIndex = valueStartIndex + valueLength;
var index = 0;
for ( var i = 0, l = lineWidth * h; i < l; i += unit ) {
if ( i % pixelWidth === 0 )
colorSwitch = !colorSwitch;
if ( i % pixelHeight === 0 )
colorSwitch = !colorSwitch;
if ( colorSwitch )
color = color1;
else
color = color2;
data[ index ] = color;
data[ index + 1 ] = color;
data[ index + 2 ] = color;
data[ index + 3 ] = 255;
if ( i > valueStartIndex ) {
if ( i === valueEndIndex ) {
valueStartIndex += lineWidth;
valueEndIndex = valueStartIndex + valueLength;
}
} else {
index += 4;
}
}
};
HIER das jsfiddle Bsp.
In der folgenden Zeile könnt ihr die Größe der Schachbrettfelder einstellen:
var pixelSize = 3;//<-------------------------------------------------------------------
Vor allem bei kleinen Größen (2-5) sieht man den Fehler besonders gut.
Vielleicht findet ja von euch wer den Fehler. Würde mich super freuen.
Vielen Dank!
- - - Aktualisiert - - -
Jetzt bin ich schon ein ganzes Stück weiter.
Dieser Bug mit den diagonalen Linien ist raus:
jsfiddle
Jedoch sieht man bei genauer Betrachtung ganz links noch immer einen 1 Pixel Bug... Falls also wer eine Idee hat. Immer gerne her damit.
Vielen Dank