Algebra(3,0,1,()=>{
var gridX = Array.apply([],{length:21}).map((x,i)=>[1e123+2e012+1e013+(i-10)*.2e023,1e123-2e012+1e013+(i-10)*.2e023]);
var gridY = Array.apply([],{length:21}).map((x,i)=>[1e123+2e023+1e013+(i-10)*.2e012,1e123-2e023+1e013+(i-10)*.2e012]);
var orig = 1e123-1e013;
debugger;
var p2 = 1e123+1e013-1.35e023+.8e012;
var p3 = 1e123+1e013+1.35e023+1.1e012;
var camera=1+0e0, t=0;
debugger;
console.log('line : ',(orig&p2&p3)^(p2&p3));
var el=this.graph(()=>{
t = t+ 0.001;
camera.set(Math.cos(t)+Math.sin(t)*1e13);
return [orig,"origin in 3D",0x123456,gridX,"gridx",gridY,"GRIDY",0x4444cc, p2,"point in 2D",orig&p2,"vector in 3D",0xffcccc,[orig,p2,p3],0xCC4444,"bivector in 3D",p2&p3,"line in 2D"]},{gl:true, animate:true, camera});
el.style.width='100%',el.style.height='500px'; return el;
})