d3-3d
Version:
D3.js plugin for 3d visualization
65 lines (54 loc) • 1.88 kB
JavaScript
import {ccw} from '../counter-clockwise';
import {centroid} from '../centroid';
import {point as pt} from './point';
export function cube(cubes, options, point, angles){
for (var i = cubes.length - 1; i >= 0; i--) {
var cube = cubes[i];
var vertices = pt([
cube[0],
cube[1],
cube[2],
cube[3],
cube[4],
cube[5],
cube[6],
cube[7]
], options, point, angles);
var v1 = vertices[0];
var v2 = vertices[1];
var v3 = vertices[2];
var v4 = vertices[3];
var v5 = vertices[4];
var v6 = vertices[5];
var v7 = vertices[6];
var v8 = vertices[7];
var front = [v1, v2, v3, v4];
var back = [v8, v7, v6, v5];
var left = [v5, v6, v2, v1];
var right = [v4, v3, v7, v8];
var top = [v5, v1, v4, v8];
var bottom = [v2, v6, v7, v3];
front.centroid = centroid(front);
back.centroid = centroid(back);
left.centroid = centroid(left);
right.centroid = centroid(right);
top.centroid = centroid(top);
bottom.centroid = centroid(bottom);
front.ccw = ccw(front);
back.ccw = ccw(back);
left.ccw = ccw(left);
right.ccw = ccw(right);
top.ccw = ccw(top);
bottom.ccw = ccw(bottom);
front.face = 'front';
back.face = 'back';
left.face = 'left';
right.face = 'right';
top.face = 'top';
bottom.face = 'bottom';
var faces = [front, back, left, right, top, bottom];
cube.faces = faces;
cube.centroid = {x: (left.centroid.x + right.centroid.x)/2, y: (top.centroid.y + bottom.centroid.y)/2, z: (front.centroid.z + back.centroid.z/2)};
}
return cubes;
}