Lattices

From JSXGraph Wiki

Sphere packing

JavaScript code for these examples

Lattice:

var brd = JXG.JSXGraph.initBoard('box1', {boundingbox: [-5, 5, 5, -5], axis:true});
brd.suspendUpdate();
var b1 = brd.create('point', [1,0], {size:6, name:'', color:'blue'});
var b2 = brd.create('point', [0,1], {size:6, name:'', color:'blue'});
var i, j;
for (i=-5;i<6;i++) for (j=-5;j<6;j++) {
  if (!(i==1&&j==0) && !(i==0&&j==1)) {
  brd.create('point',[
       function(x,y){ return function(){ return x*b1.X()+y*b2.X(); };}(i,j),
       function(x,y){ return function(){ return x*b1.Y()+y*b2.Y(); };}(i,j)
       ], {name:'',style:4});
}}
brd.unsuspendUpdate();

Spheres:

var brd2 = JXG.JSXGraph.initBoard('box2', {boundingbox: [-5, 5, 5, -5], axis:true});
brd2.suspendUpdate();
var b3 = brd2.create('point', [1,0], {size:6, name:'', color:'blue'});
var b4 = brd2.create('point', [0,1], {size:6, name:'', color:'blue'});
var p = [];
for (i=-5;i<6;i++) for (j=-5;j<6;j++) {
  if (!(i==1&&j==0) && !(i==0&&j==1)) {
  p[i*11+j] = brd2.create('point',[
       function(x,y){ return function(){ return x*b3.X()+y*b4.X(); };}(i,j),
       function(x,y){ return function(){ return x*b3.Y()+y*b4.Y(); };}(i,j)
       ], {name:'',style:4});
  brd2.createElement('circle',[p[i*11+j],0.5]);
}}
brd2.unsuspendUpdate();