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 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;
|
}
|