This is what it looks like when finished:
Our goal is to let octahedron ABCDEF spin slowly around its center, which is also the origin of our 3D coordinates space.
draw a sphere centered at origin
draw the 1st face ABF
draw the 2nd face BCF
draw the 3rd face CDF
file octahedron.html
<!DOCTYPE html>
<html lang="en">
<head>
<title>Octahedron</title>
<meta name="viewport"
content="width=device-width,
initial-scale=1" />
<script src=
"https://cdnjs.cloudflare.com/
ajax/libs/p5.js/1.5.0/
p5.min.js">
</script>
<style>
canvas {
width: 100% !important;
height: 100% !important;
}
</style>
<meta charset="utf-8" />
</head>
<body>
<p>
Octahedron
</p>
<script src=
"/scripts/octahedron.js">
</script>
</body>
</html>
file octahedron.js
let ang = 0;
let u = 500;
function setup() {
createCanvas(960, 960, WEBGL);
stroke(255);
strokeWeight(3);
}
function draw() {
background(0);
normalMaterial();
rotateY(ang);
rotateX(ang*0.5);
rotateZ(ang*0.2);
strokeWeight(15);
sphere(70);
let a = [ u, 0, 0];
let b = [ 0, 0, u];
let c = [-u, 0, 0];
let d = [ 0, 0, -u];
let e = [ 0, u, 0];
let f = [ 0, -u, 0];
stroke(255);
strokeWeight(3);
triangleShape(a,b,f,200,0,0);
triangleShape(b,c,f,0,200,0);
triangleShape(c,d,f,0,0,200);
triangleShape(d,a,f,200,200,0);
triangleShape(a,b,e,200,0,200);
triangleShape(b,c,e,0,200,200);
triangleShape(c,d,e,0,100,100);
triangleShape(d,a,e,200,200,0);
ang += 0.01;
}
function triangleShape(i,j,k,r,g,b){
fill(r, g, b, 100);
beginShape();
vertex(i[0], i[1], i[2]);
vertex(j[0], j[1], j[2]);
vertex(k[0], k[1], k[2]);
endShape(CLOSE);
}
ch 2.2 The Regular Polyhedra p21 of