UNPKG

threed-garden

Version:

ThreeD Garden: WebGL 3D Environment Interface for Next.JS React TypeScript Three.JS React-Three Physics, 2D Paper.JS; APIs: Apollo GraphQL, WordPress; CSS: Tailwind, Radix-UI; Libraries: FarmBot 3D; AI: OpenAI, DeepSeek

49 lines (45 loc) 1.33 kB
// @ ts-nocheck /* OR @ ts-expect-error */ import { Config } from "./config-threed"; import * as THREE from 'three'; export const threeSpace = (position: number, max: number): number => position - max / 2; export const zZero = (config: Config): number => config.columnLength + 40 - config.zGantryOffset; export const getColorFromBrightness = (value: number) => { const colorMap: { [key: number]: string } = { 1: "#444", 2: "#555", 3: "#666", 4: "#777", 5: "#888", 6: "#999", 7: "#aaa", 8: "#bbb", 9: "#ccc", 10: "#ddd", 11: "#eee", 12: "#fff", }; return colorMap[value]; }; export const zDir = -1; interface Vector3Array extends Array<number> { 0: number; 1: number; 2: number; } export const easyCubicBezierCurve3 = ( startPosition: Vector3Array, startControl: Vector3Array, endControl: Vector3Array, endPosition: Vector3Array ) => { const [x1, y1, z1] = startPosition; const [x1c, y1c, z1c] = startControl; const [x2c, y2c, z2c] = endControl; const [x2, y2, z2] = endPosition; return new THREE.CubicBezierCurve3( new THREE.Vector3(x1, y1, z1), new THREE.Vector3(x1 + x1c, y1 + y1c, z1 + z1c), new THREE.Vector3(x2 + x2c, y2 + y2c, z2 + z2c), new THREE.Vector3(x2, y2, z2) ); };