From b8bac27bcc895b540bae4c130a3c59d289736081 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期三, 15 五月 2024 16:23:45 +0800
Subject: [PATCH] #

---
 src/utils/common.js |   75 +++++++++++++++++++++++++++++++++++--
 1 files changed, 70 insertions(+), 5 deletions(-)

diff --git a/src/utils/common.js b/src/utils/common.js
index 2ace608..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,8 +20,36 @@
 }
 
 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;
@@ -33,13 +62,49 @@
     }
 };
 
-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);
         });
     }
-};
\ No newline at end of file
+};
+
+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