From fdd6020d22c6c9d54ce977f125e38b024e284159 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期六, 17 八月 2024 11:23:17 +0800 Subject: [PATCH] # --- src/utils/common.js | 89 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 88 insertions(+), 1 deletions(-) diff --git a/src/utils/common.js b/src/utils/common.js index b1041f5..9709c90 100644 --- a/src/utils/common.js +++ b/src/utils/common.js @@ -1,4 +1,5 @@ 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) { @@ -19,5 +20,91 @@ } 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; + 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; } \ No newline at end of file -- Gitblit v1.9.1