|
Jump Calculations
Jeff Zeitlin
(27 Mar 2020 22:32 UTC)
|
|
Re: [TML] Jump Calculations
Vareck Bostrom
(28 Mar 2020 01:42 UTC)
|
|
Re: [TML] Jump Calculations
Vareck Bostrom
(28 Mar 2020 02:13 UTC)
|
|
Re: [TML] Jump Calculations
Jeff Zeitlin
(28 Mar 2020 19:16 UTC)
|
|
Re: [TML] Jump Calculations
Vareck Bostrom
(28 Mar 2020 19:26 UTC)
|
|
Re: [TML] Jump Calculations
shadow@xxxxxx
(28 Mar 2020 21:14 UTC)
|
|
Re: [TML] Jump Calculations
Vareck Bostrom
(28 Mar 2020 21:45 UTC)
|
|
Re: [TML] Jump Calculations
Thomas RUX
(29 Mar 2020 21:20 UTC)
|
|
Re: [TML] Jump Calculations
Jeff Zeitlin
(30 Mar 2020 22:13 UTC)
|
|
Re: [TML] Jump Calculations
Thomas RUX
(31 Mar 2020 02:37 UTC)
|
|
Re: [TML] Jump Calculations
Kurt Feltenberger
(31 Mar 2020 02:50 UTC)
|
|
Re: [TML] Jump Calculations
Edward Anderson
(31 Mar 2020 10:18 UTC)
|
|
Re: [TML] Jump Calculations
Vareck Bostrom
(31 Mar 2020 17:35 UTC)
|
|
Plague
Thomas RUX
(31 Mar 2020 21:22 UTC)
|
|
Re: [TML] Plague
Jeff Zeitlin
(03 Apr 2020 10:23 UTC)
|
|
Re: [TML] Plague
shadow@xxxxxx
(03 Apr 2020 18:41 UTC)
|
|
Re: [TML] Plague
Timothy Collinson
(03 Apr 2020 19:42 UTC)
|
|
Re: [TML] Plague
Timothy Collinson
(03 Apr 2020 20:58 UTC)
|
|
Re: [TML] Plague
Timothy Collinson
(04 Apr 2020 07:01 UTC)
|
|
Re: [TML] Plague
Thomas Jones-Low
(05 Apr 2020 12:51 UTC)
|
|
Re: [TML] Plague
Bruce Johnson
(03 Apr 2020 20:40 UTC)
|
|
Re: [TML] Plague
kaladorn@xxxxxx
(13 Apr 2020 16:53 UTC)
|
|
Re: [TML] Plague
Kenneth Barns
(14 Apr 2020 01:07 UTC)
|
|
Re: [TML] Plague
kaladorn@xxxxxx
(14 Apr 2020 02:44 UTC)
|
|
Re: [TML] Plague
Kenneth Barns
(14 Apr 2020 08:08 UTC)
|
|
Re: [TML] Plague
kaladorn@xxxxxx
(15 Apr 2020 01:14 UTC)
|
|
Re: [TML] Plague
shadow@xxxxxx
(15 Apr 2020 01:13 UTC)
|
|
Re: [TML] Plague
kaladorn@xxxxxx
(15 Apr 2020 01:18 UTC)
|
|
Re: [TML] Plague
Thomas RUX
(15 Apr 2020 02:20 UTC)
|
|
Re: [TML] Jump Calculations
Thomas RUX
(31 Mar 2020 21:47 UTC)
|
|
Re: [TML] Jump Calculations
Thomas RUX
(31 Mar 2020 21:59 UTC)
|
|
Re: [TML] Jump Calculations
Ewan
(01 Apr 2020 13:04 UTC)
|
|
Re: [TML] Jump Calculations
Thomas Jones-Low
(13 Apr 2020 01:35 UTC)
|
|
Re: [TML] Jump Calculations
kaladorn@xxxxxx
(13 Apr 2020 02:49 UTC)
|
|
Re: [TML] Jump Calculations Christopher Sean Hilton (12 Apr 2020 02:51 UTC)
|
|
Re: [TML] Jump Calculations
Christopher Hilton
(12 Apr 2020 12:00 UTC)
|
|
Re: [TML] Jump Calculations
kaladorn@xxxxxx
(12 Apr 2020 23:12 UTC)
|
On Fri, Mar 27, 2020 at 06:32:37PM -0400, Jeff Zeitlin wrote:
> Given a standard Traveller subsector, with coordinates 0101 to 0810,
> alternate columns staggered, what's the formula/algorithm to calculate the
> jump distance between two hexes?
>
To start, there is a wealth of information on hex grids here:
* [Hexagonal Grids](https://www.redblobgames.com/grids/hexagons/)
Your question is best answered by the sections on Coordinate systems
and distances:
* [Hex Coordinate systems](https://www.redblobgames.com/grids/hexagons/#coordinates)
* [Hex Distances](https://www.redblobgames.com/grids/hexagons/#distances)
----------------------------------------
If you read the sections it will give you the algorithm. Here's some
python that implements it.
```
class Hex(object):
def __init__(self, hex_label):
self.hex_label = hex_label
## Break a four digit hex label into it's x and y components
self.x, self.y = divmod(hex_label, 100)
## Calculate an alternate (x, y) in this system two hexes
## with the same y value will always be in a row.
self.alt_x = self.x
self.alt_y = self.y - (self.x // 2)
## Calculate a third set of coordinates, (x, y, z)
self.cube_x = self.alt_x
self.cube_y = self.alt_y
self.cube_z = -(self.cube_x + self.cube_y)
def distance(self, other):
"""Calculate the distance between two hexes"""
return max(abs(self.cube_x - other.cube_x),
abs(self.cube_y - other.cube_y),
abs(self.cube_z - other.cube_z))
def main():
start = Hex(101)
finish = Hex(801)
distance = finish.distance(start)
print("Distance: {}".format(distance))
```
Here's what the output looks like:
```
$ ipython
Python 3.7.6 (default, Dec 22 2019, 01:09:06)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.12.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: class Hex(o\bject):
...:
...: def __init__(self, hex_label):
...: self.hex_label = hex_label
[ ...snip... ]
In [2]: main()
Distance: 7
```
--
Chris
__o "All I was trying to do was get home from work."
_`\<,_ -Rosa Parks
___(*)/_(*)____.___o____..___..o...________ooO..._____________________
Christopher Sean Hilton [chris/at/vindaloo/dot/com]