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
text/typescript
// @ 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)
);
};