From 2bb437dbb952b901bbb869930e368ae0d63f7c0e Mon Sep 17 00:00:00 2001 From: "bradley.richins" Date: Sun, 11 Oct 2020 11:13:54 -0600 Subject: [PATCH] Added script to do all the math Added the algorithm needed to convert portal codes into galatic coordinates --- converter.sh | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 converter.sh diff --git a/converter.sh b/converter.sh new file mode 100644 index 0000000..bc08f6c --- /dev/null +++ b/converter.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +PORTALHEX=$1 +if [ -z "$PORTALHEX" ]; then + exit 1 +fi + +P=$(echo $PORTALHEX | cut -c 1-1) +SSI=$(echo $PORTALHEX | cut -c 2-4) +Y=$(echo $PORTALHEX | cut -c 5-6) +Z=$(echo $PORTALHEX | cut -c 7-9) +X=$(echo $PORTALHEX | cut -c 10-12) + +Yd=$(echo "ibase=16; $Y" | bc) +Xd=$(echo "ibase=16; $X" | bc) +Zd=$(echo "ibase=16; $Z" | bc) + +if (( $Yd <= 128 )) ; then + Y=$(expr $Y + 100) +fi +if (( $Zd <= 2048 )) ; then + Z=$(expr $Z + 1000) +fi +if (( $Xd <= 2048 )) ; then + X=$(expr $X + 1000) +fi + +Yd=$(echo "ibase=16; $Y" | bc) +Xd=$(echo "ibase=16; $X" | bc) +Zd=$(echo "ibase=16; $Z" | bc) + +Y=$(echo "obase=16; $(expr $Yd - 129)" | bc) +X=$(echo "obase=16; $(expr $Xd - 2049)" | bc) +Z=$(echo "obase=16; $(expr $Zd - 2049)" | bc) + +X=`printf "%04x" 0x$X` +Y=`printf "%04x" 0x$Y` +Z=`printf "%04x" 0x$Z` +SSI=`printf "%04x" 0x$SSI` + +echo -e "$X:$Y:$Z:$SSI"