|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | export const rotationParseNum = (num) => { | 
|---|
|  |  |  | const normalizedDegrees = num % 360; | 
|---|
|  |  |  | 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) => { | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }; | 
|---|