Published
Edited
Jul 14, 2021
1 star
Insert cell
# Conformal Geometry VS JS Prettier

Insert cell
Algebra = require("ganja.js")
Insert cell
### paste the code in the cell below.
Access the Prettier toggle in your system settings. They are identical pastes of the same text into Observable cells with and without the Prettier option on.
EX: 1e0 in ganja speak is a unit of dimension zero, prettier just turns it into 1;

Insert cell
Algebra(3, 0, 1, () => {
var gridX = Array.apply([], { length: 21 }).map((x, i) => [
1e123 + 2e12 + 1e13 + (i - 10) * 0.2e23,
1e123 - 2e12 + 1e13 + (i - 10) * 0.2e23
]);
var gridY = Array.apply([], { length: 21 }).map((x, i) => [
1e123 + 2e23 + 1e13 + (i - 10) * 0.2e12,
1e123 - 2e23 + 1e13 + (i - 10) * 0.2e12
]);
var orig = 1e123 - 1e13;
var p = 1e123 + 1e13 + 0.65e23 - 0.9e12;
var p2 = 1e123 + 1e13 - 1.35e23 + 0.8e12;
var p3 = 1e123 + 1e13 + 1.35e23 + 1.1e12;
var p4 = p.slice();
var /*camera=1+0e0, */ t = 0;
debugger;
console.log("line : ", (orig & p2 & p3) ^ (p & 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,
p,
"point in 2D",
orig & p,
"vector in 3D",
0xffcccc,
[orig, p2, p3],
0xcc4444,
"bivector in 3D",
p2 & p3,
"line in 2D"
];
},
{ gl: true, animate: false }
); //
(el.style.width = "100%"), (el.style.height = "500px");
return el;
})
Insert cell
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;
var p = 1e123+1e013+.65e023-.9e012;
var p2 = 1e123+1e013-1.35e023+.8e012;
var p3 = 1e123+1e013+1.35e023+1.1e012;
var p4 = p.slice();
var /*camera=1+0e0, */ t=0;
debugger;
console.log('line : ',(orig&p2&p3)^(p&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, p,"point in 2D",orig&p,"vector in 3D",0xffcccc,[orig,p2,p3],0xCC4444,"bivector in 3D",p2&p3,"line in 2D"]},{gl:true, animate:false}); //
el.style.width='100%',el.style.height='500px'; return el;
})
Insert cell
cut and paste into above cell
<pre>
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;
var p = 1e123+1e013+.65e023-.9e012;
var p2 = 1e123+1e013-1.35e023+.8e012;
var p3 = 1e123+1e013+1.35e023+1.1e012;
var p4 = p.slice();
var /*camera=1+0e0, */ t=0;
debugger;
console.log('line : ',(orig&p2&p3)^(p&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, p,"point in 2D",orig&p,"vector in 3D",0xffcccc,[orig,p2,p3],0xCC4444,"bivector in 3D",p2&p3,"line in 2D"]},{gl:true, animate:false}); //
el.style.width='100%',el.style.height='500px'; return el;
})
</pre>
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more