| | |
| | | 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) { |
| | |
| | | } |
| | | |
| | | export const rotationParseNum = (num) => { |
| | | return num * Math.PI / 180; |
| | | const normalizedDegrees = positiveAngle(num); |
| | | 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; |
| | |
| | | } |
| | | }; |
| | | |
| | | export const setColor = (obj) => { |
| | | export const setColor = (obj, color = 0x4680BF) => { |
| | | if (obj.material) { |
| | | obj.material.color.set(0x4680BF); |
| | | obj.material.color.set(color); |
| | | } |
| | | if (obj.children) { |
| | | obj.children.forEach((child) => { |
| | | setColor(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; |
| | | } |