import * as THREE from 'three'; import { REAL_COMPARE_MAP_SCALE, REAL_COMPARE_MAP_OFFSET_X, REAL_COMPARE_MAP_OFFSET_Z } from '../config/setting' export const isNullOfUndefined = (param) => { if (null === param || undefined === param) { return true; } else { return false; } } export const rotationToNum = (rotation) => { let res = rotation * 180 / Math.PI; if (res < 0) { res += 360; } else if (res > 360) { res -= 360; } return res; } export const rotationParseNum = (num) => { const normalizedDegrees = num % 360; return normalizedDegrees * Math.PI / 180; } export const minDiffTheta = (originTheta, targetTheta) => { return (targetTheta - originTheta > 180) ? targetTheta - 360 : targetTheta; } export const positiveAngle = (angle) => { return ((angle % 360) + 360) % 360; } export const normalizeAngle = (angle) => { let newAngle = angle % 360; if (newAngle < -180) { newAngle += 360; } else if (newAngle > 180) { newAngle -= 360; } return newAngle; } export const calculateMappedPosition = (realPos) => { return [ realPos[0] * REAL_COMPARE_MAP_SCALE + REAL_COMPARE_MAP_OFFSET_X, realPos[1], realPos[2] * REAL_COMPARE_MAP_SCALE + REAL_COMPARE_MAP_OFFSET_Z ]; }; export const setShadow = (obj) => { obj.castShadow = true; obj.receiveShadow = true; if (obj.children) { obj.children.forEach((child) => { setShadow(child); }); } }; export const setColor = (obj, color = 0x4680BF) => { if (obj.material) { obj.material.color.set(color); } if (obj.children) { obj.children.forEach((child) => { setColor(child, color); }); } }; export const deepEqual = (obj1, obj2) => { if (obj1 === obj2) { return true; } if (typeof obj1 !== "object" || obj1 === null || typeof obj2 !== "object" || obj2 === null) { return false; } var keys1 = Object.keys(obj1); var keys2 = Object.keys(obj2); if (keys1.length !== keys2.length) { return false; } for (var key of keys1) { if (!keys2.includes(key) || !deepEqual(obj1[key], obj2[key])) { return false; } } return true; } export const parseLocNo = (locNo) => { if (!locNo || typeof locNo !== 'string') { return null; } const locParseArr = locNo.split('-'); return { row: Number(locParseArr?.[0]), bay: Number(locParseArr?.[1]), lev: Number(locParseArr?.[2]), } } export const generateLocNo = (row, bay, lev) => { return row + '-' + bay + '-' + lev; }