Lattices
From JSXGraph Wiki
Sphere packing
JavaScript code for these examples
Lattice:
<jsxgraph height="500" width="500" board="board" box="box1">
brd = JXG.JSXGraph.initBoard('box1', {originX: 250, originY: 250, unitX: 50, unitY: 50, axis:true});
brd.suspendUpdate();
var b1 = brd.createElement('point', [1,0], {style:6,name:''});
var b2 = brd.createElement('point', [0,1], {style:6,name:''});
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.createElement('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();
</jsxgraph>
Spheres:
<jsxgraph height="500" width="500" board="board" box="box2">
brd2 = JXG.JSXGraph.initBoard('box2', {originX: 250, originY: 250, unitX: 50, unitY: 50, axis:true});
brd2.suspendUpdate();
var b3 = brd2.createElement('point', [1,0], {style:6,name:''});
var b4 = brd2.createElement('point', [0,1], {style:6,name:''});
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.createElement('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();
</jsxgraph>