public static class WorldMapGenerator.RotatingSpaceMap extends WorldMapGenerator
WorldMapGenerator
that imitates an infinite-distance perspective view of a
world, showing only one hemisphere, that should be as wide as it is tall (its outline is a circle). It should
look as a world would when viewed from space, and implements rotation differently to allow the planet to be
rotated without recalculating all the data, though it cannot zoom. Note that calling
setCenterLongitude(double)
does a lot more work than in other classes, but less than fully calling
WorldMapGenerator.generate()
in those classes, since it doesn't remake the map data at a slightly different rotation and
instead keeps a single map in use the whole time, using sections of it. This uses an
Orthographic projection with
the latitude always at the equator; the internal map is stored as a WorldMapGenerator.SphereMap
, which uses a
cylindrical equal-area
projection, specifically the Smyth equal-surface projection.
WorldMapGenerator.BiomeMapper, WorldMapGenerator.DetailedBiomeMapper, WorldMapGenerator.EllipticalHammerMap, WorldMapGenerator.EllipticalMap, WorldMapGenerator.HexagonalMap, WorldMapGenerator.HyperellipticalMap, WorldMapGenerator.LocalMap, WorldMapGenerator.LocalMimicMap, WorldMapGenerator.MimicMap, WorldMapGenerator.RotatingSpaceMap, WorldMapGenerator.RoundSideMap, WorldMapGenerator.SimpleBiomeMapper, WorldMapGenerator.SpaceViewMap, WorldMapGenerator.SphereMap, WorldMapGenerator.TilingMap
Modifier and Type | Field and Description |
---|---|
protected int[] |
edges |
protected double |
maxHeat0 |
protected double |
maxHeat1 |
protected double |
maxWet0 |
protected double |
minHeat0 |
protected double |
minHeat1 |
protected double |
minWet0 |
WorldMapGenerator.SphereMap |
storedMap |
double[][] |
xPositions |
double[][] |
yPositions |
double[][] |
zPositions |
cacheA, cacheB, centerLongitude, coastalWaterLower, coastalWaterUpper, deepWaterLower, deepWaterUpper, DEFAULT_NOISE, forestLower, forestUpper, grassLower, grassUpper, heatData, heatModifier, height, heightCodeData, heightData, landData, landModifier, maxHeat, maxHeight, maxHeightActual, maxWet, mediumWaterLower, mediumWaterUpper, minHeat, minHeight, minHeightActual, minWet, moistureData, rng, rockLower, rockUpper, sandLower, sandUpper, seedA, seedB, shallowWaterLower, shallowWaterUpper, snowLower, snowUpper, startCacheX, startCacheY, startX, startY, usedHeight, usedWidth, width, zoom, zoomStartX, zoomStartY
Constructor and Description |
---|
RotatingSpaceMap()
Constructs a concrete WorldMapGenerator for a map that can be used to view a spherical world from space,
showing only one hemisphere at a time.
|
RotatingSpaceMap(int mapWidth,
int mapHeight)
Constructs a concrete WorldMapGenerator for a map that can be used to view a spherical world from space,
showing only one hemisphere at a time.
|
RotatingSpaceMap(long initialSeed,
int mapWidth,
int mapHeight)
Constructs a concrete WorldMapGenerator for a map that can be used to view a spherical world from space,
showing only one hemisphere at a time.
|
RotatingSpaceMap(long initialSeed,
int mapWidth,
int mapHeight,
double octaveMultiplier)
Constructs a concrete WorldMapGenerator for a map that can be used to view a spherical world from space,
showing only one hemisphere at a time.
|
RotatingSpaceMap(long initialSeed,
int mapWidth,
int mapHeight,
Noise.Noise3D noiseGenerator)
Constructs a concrete WorldMapGenerator for a map that can be used to view a spherical world from space,
showing only one hemisphere at a time.
|
RotatingSpaceMap(long initialSeed,
int mapWidth,
int mapHeight,
Noise.Noise3D noiseGenerator,
double octaveMultiplier)
Constructs a concrete WorldMapGenerator for a map that can be used to view a spherical world from space,
showing only one hemisphere at a time.
|
RotatingSpaceMap(WorldMapGenerator.RotatingSpaceMap other)
Copies the RotatingSpaceMap
other to construct a new one that is exactly the same. |
Modifier and Type | Method and Description |
---|---|
protected void |
regenerate(int startX,
int startY,
int usedWidth,
int usedHeight,
double landMod,
double heatMod,
int stateA,
int stateB) |
void |
setCenterLongitude(double centerLongitude)
Sets the center longitude line to a longitude measured in radians, from 0 to 2 * PI.
|
int |
wrapX(int x,
int y) |
int |
wrapY(int x,
int y) |
codeHeight, decodeX, decodeY, generate, generate, generate, getCenterLongitude, project, removeExcess, zoomIn, zoomIn, zoomOut, zoomOut
protected double minHeat0
protected double maxHeat0
protected double minHeat1
protected double maxHeat1
protected double minWet0
protected double maxWet0
public final double[][] xPositions
public final double[][] yPositions
public final double[][] zPositions
protected final int[] edges
public final WorldMapGenerator.SphereMap storedMap
public RotatingSpaceMap()
RotatingSpaceMap#RotatingSpaceMap(long, int, int, Noise3D, double)
, then this would be the
same as passing the parameters 0x1337BABE1337D00DL, 100, 100, DEFAULT_NOISE, 1.0
.public RotatingSpaceMap(int mapWidth, int mapHeight)
WorldMapGenerator.generate(long)
. The width and
height of the map cannot be changed after the fact, but you can zoom in.
Uses FastNoise as its noise generator, with 1.0 as the octave multiplier affecting detail.mapWidth
- the width of the map(s) to generate; cannot be changed latermapHeight
- the height of the map(s) to generate; cannot be changed laterpublic RotatingSpaceMap(long initialSeed, int mapWidth, int mapHeight)
initialSeed
parameter may or may not be used, since you can specify the seed to use when you call WorldMapGenerator.generate(long)
.
The width and height of the map cannot be changed after the fact, but you can zoom in.
Uses FastNoise as its noise generator, with 1.0 as the octave multiplier affecting detail.initialSeed
- the seed for the GWTRNG this uses; this may also be set per-call to generatemapWidth
- the width of the map(s) to generate; cannot be changed latermapHeight
- the height of the map(s) to generate; cannot be changed laterpublic RotatingSpaceMap(long initialSeed, int mapWidth, int mapHeight, double octaveMultiplier)
initialSeed
parameter may or may not be used, since you can specify the seed to use when you call WorldMapGenerator.generate(long)
.
The width and height of the map cannot be changed after the fact, but you can zoom in.
Uses FastNoise as its noise generator, with the given octave multiplier affecting detail.initialSeed
- the seed for the GWTRNG this uses; this may also be set per-call to generatemapWidth
- the width of the map(s) to generate; cannot be changed latermapHeight
- the height of the map(s) to generate; cannot be changed lateroctaveMultiplier
- used to adjust the level of detail, with 0.5 at the bare-minimum detail and 1.0 normalpublic RotatingSpaceMap(long initialSeed, int mapWidth, int mapHeight, Noise.Noise3D noiseGenerator)
initialSeed
parameter may or may not be used, since you can specify the seed to use when you call WorldMapGenerator.generate(long)
.
The width and height of the map cannot be changed after the fact, but you can zoom in.
Uses the given noise generator, with 1.0 as the octave multiplier affecting detail.initialSeed
- the seed for the GWTRNG this uses; this may also be set per-call to generatemapWidth
- the width of the map(s) to generate; cannot be changed latermapHeight
- the height of the map(s) to generate; cannot be changed laternoiseGenerator
- an instance of a noise generator capable of 3D noise, usually FastNoise
public RotatingSpaceMap(long initialSeed, int mapWidth, int mapHeight, Noise.Noise3D noiseGenerator, double octaveMultiplier)
Noise.Noise3D
implementation, which is usually FastNoise.instance
, and a
multiplier on how many octaves of noise to use, with 1.0 being normal (high) detail and higher multipliers
producing even more detailed noise when zoomed-in). The initialSeed
parameter may or may not be used,
since you can specify the seed to use when you call WorldMapGenerator.generate(long)
. The width and height of the map
cannot be changed after the fact, but you can zoom in. FastNoise will be the fastest 3D generator to use for
noiseGenerator
, and the seed it's constructed with doesn't matter because this will change the
seed several times at different scales of noise (it's fine to use the static FastNoise.instance
because it has no changing state between runs of the program). The octaveMultiplier
parameter should
probably be no lower than 0.5, but can be arbitrarily high if you're willing to spend much more time on
generating detail only noticeable at very high zoom; normally 1.0 is fine and may even be too high for maps
that don't require zooming.initialSeed
- the seed for the GWTRNG this uses; this may also be set per-call to generatemapWidth
- the width of the map(s) to generate; cannot be changed latermapHeight
- the height of the map(s) to generate; cannot be changed laternoiseGenerator
- an instance of a noise generator capable of 3D noise, usually FastNoise
octaveMultiplier
- used to adjust the level of detail, with 0.5 at the bare-minimum detail and 1.0 normalpublic RotatingSpaceMap(WorldMapGenerator.RotatingSpaceMap other)
other
to construct a new one that is exactly the same. References will only
be shared to Noise classes.other
- a RotatingSpaceMap to copypublic int wrapX(int x, int y)
wrapX
in class WorldMapGenerator
public int wrapY(int x, int y)
wrapY
in class WorldMapGenerator
public void setCenterLongitude(double centerLongitude)
WorldMapGenerator
setCenterLongitude
in class WorldMapGenerator
centerLongitude
- the longitude to center the map projection on, from 0 to 2 * PI (can be any non-negative double).protected void regenerate(int startX, int startY, int usedWidth, int usedHeight, double landMod, double heatMod, int stateA, int stateB)
regenerate
in class WorldMapGenerator
Copyright © Eben Howard 2012–2022. All rights reserved.