Skip to content

Commit 2d77299

Browse files
authored
Fix noise's bug when coord is negative (#37)
1 parent bba8e5c commit 2d77299

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

src/MineCase.Algorithm/Noise/PerlinNoise.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,10 @@ public void AddNoise(float[,,] noise, Vector3 offset, Vector3 scale, float noise
193193
private static (int integer, float remainder) Split(float value)
194194
{
195195
var integer = (int)value;
196-
return (integer % 256, value - integer);
196+
var remainder = value - integer;
197+
integer %= 256;
198+
if (integer < 0) integer += 256;
199+
return (integer, remainder);
197200
}
198201

199202
private static float Fade(float t)

tests/UnitTest/NoiseTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public void TestOctavedPerlinNoise3D()
5959
{
6060
var noise = new OctavedNoise<PerlinNoise>(new PerlinNoise(100), 8, 1);
6161
var noiseValue = new float[xExtent, yExtent, 1];
62-
noise.Noise(noiseValue, Vector3.Zero, new Vector3(0.1f, 0.1f, 0));
62+
noise.Noise(noiseValue, new Vector3(-10, 10, -10), new Vector3(0.1f, 0.1f, 0));
6363
for (int x = 0; x < xExtent; x++)
6464
{
6565
for (int y = 0; y < yExtent; y++)

0 commit comments

Comments
 (0)