Brett - halbe Lösung

by bjelline

HTML

<script src="http://webcode.multimediatechnology.at/code/js/brett.js"></script>
<h2>Unendliches Schachbrett</h2>

CSS

canvas {
    margin: 10px;
}

JavaScript

// Brett( cx, cy, pixelx, pixely ) erzeugt ein schachbrett
// und zeigt davon die zellen von -cx bis +cx und -cy bis +cy
// pixelx und pixely gibt die größe am bildschrim an
var linkes_brett = new Brett(4, 6, 200, 300);
var rechtes_brett = new Brett(4, 6, 200, 300);

linkes_brett.grid();
rechtes_brett.grid();

console.log(linkes_brett);

linkes_brett.text_at("0", 0, 0);

function xy2n(x, y) {
    if (x==0 && y==0) return 0;
    
    var n = 0;
    var l = Math.abs(x) + Math.abs(y);
    
    var base = 1 + 2 * (l-1) * l;
    
    if( y >= 0 ) {
        n = base + l + x;
    } else {
        n = base + l*3 - x;
    }

    return n;
}


function n2xy(n) {
    var coord = {
        x: 0,
        y: 0
    };

    if(n==0) return coord;
    
    var l = Math.round(Math.sqrt( n - 3/4 ));
    
    
    return { x: 0, y: l};
}

/*
for (var n = 0; n < 64; n++) {
    var coord = n2xy(n);
    linkes_brett.text_at(n, coord.x, coord.y);
}
*/

var n = 0;
var coord = n2xy(n);
linkes_brett.text_at(n, coord.x, coord.y);

n=1;
coord = n2xy(n);linkes_brett.text_at(n, coord.x, coord.y);
n=5; 
coord = n2xy(n);linkes_brett.text_at(n, coord.x, coord.y);
n=13;
coord = n2xy(n);linkes_brett.text_at(n, coord.x, coord.y);
n=25;
coord = n2xy(n);linkes_brett.text_at(n, coord.x, coord.y);
n=41;
coord = n2xy(n);linkes_brett.text_at(n, coord.x, coord.y);

var map = [];
for (var x = -4; x < 4; x++) {
    for (var y = -4; y < 4; y++) {
        var n = xy2n(x, y);
        rechtes_brett.text_at(n, x, y);
        map[n] = "" + x + "/" + y;
      
    }
}


for(var n=0; n < 40; n++) {
  console.log("x/y = " + map[n] + ", n = " + n + " /4 = " + Math.round( Math.sqrt( 0.5 + 4*n ) ) );
}