spiral_calendar/view/spiral.js

32 lines
824 B
JavaScript
Raw Normal View History

2023-11-30 19:31:13 +03:00
import * as THREE from 'three';
export const calculateGeometry = (spiralHeight) => {
let pointsOfCurve = [];
const number = 100;
for (let i = 0; i <= number; i ++) {
let p = i / number;
let x = Math.cos(p * 2 * Math.PI);
let y = p * spiralHeight;
let z = Math.sin(p * 2 * Math.PI);
pointsOfCurve.push(new THREE.Vector3(x, y, z));
}
let curve = new THREE.CatmullRomCurve3(pointsOfCurve);
return new THREE.TubeGeometry(curve, 400, 0.1, 400, false);
}
2023-12-05 03:17:38 +03:00
const geom = calculateGeometry(2)
2023-11-30 19:31:13 +03:00
export class SpiralSegment {
2023-12-05 03:17:38 +03:00
constructor(year, height, material) {
this.year = year;
this.segment = new THREE.Mesh(geom, material);
// this.segment.position.y += number * height;
2023-11-30 19:31:13 +03:00
}
getSegment() {
return this.segment;
}
}