public static float Get(float x, float y, float frequency) { // TEMP if (Math.Abs(x) < TOLERANCE && Math.Abs(y) < TOLERANCE) { permutation = new PermutationTable(UnityEngine.Random.Range(int.MinValue, int.MaxValue)); } x *= frequency; y *= frequency; var intPartX = Mathf.FloorToInt(x); var intPartY = Mathf.FloorToInt(y); var floatPartX = x - intPartX; var floatPartY = y - intPartY; var inverseX = floatPartX - 1; var inverseY = floatPartY - 1; var tX = Fade(floatPartX); var tY = Fade(floatPartY); var num1 = Grad(permutation[intPartX, intPartY], floatPartX, floatPartY); var num2 = Grad(permutation[intPartX, intPartY + 1], floatPartX, inverseY); var value1 = Mathf.Lerp(num1, num2, tY); var num3 = Grad(permutation[intPartX + 1, intPartY], inverseX, floatPartY); var num4 = Grad(permutation[intPartX + 1, intPartY + 1], inverseX, inverseY); var value2 = Mathf.Lerp(num3, num4, tY); var value = Mathf.Lerp(value1, value2, tX); return(Map(value, -1, 1, 0, 1)); }
public PerlinNoise(int seed, float frequency, float amplitude = 1.0f) { Frequency = frequency; Amplitude = amplitude; Offset = Vector3.zero; Perm = new PermutationTable(1024, 255, seed); }
static void GeneratePermutationTable( PermutationTable table, string entityName = "ENTITY_NAME", string architectureName = "ARCHITECTURE_NAME") { switch (table) { case PermutationTable.IP: var ip = TableValues.IP(); var ipResult = InitPermutationTableHeader(64, 64, entityName, architectureName); ipResult = GeneratePermutationTableAssignments(ip, ipResult); ipResult.Add($"end {architectureName};"); File.WriteAllLines(_path + "IP.vhd", ipResult); break; case PermutationTable.IPInv: var ipInv = TableValues.IPInv(); var ipInvResult = InitPermutationTableHeader(64, 64, entityName, architectureName); ipInvResult = GeneratePermutationTableAssignments(ipInv, ipInvResult); ipInvResult.Add($"end {architectureName};"); File.WriteAllLines(_path + "IPInv.vhd", ipInvResult); break; case PermutationTable.P: var p = TableValues.P(); var pResult = InitPermutationTableHeader(32, 32, entityName, architectureName); pResult = GeneratePermutationTableAssignments(p, pResult); pResult.Add($"end {architectureName};"); File.WriteAllLines(_path + "P.vhd", pResult); break; case PermutationTable.PC1: var pc1 = TableValues.PC1(); var pc1Result = InitPermutationTableHeader(64, 56, entityName, architectureName); pc1Result = GeneratePermutationTableAssignments(pc1, pc1Result); pc1Result.Add($"end {architectureName};"); File.WriteAllLines(_path + "PC1.vhd", pc1Result); break; case PermutationTable.PC2: var pc2 = TableValues.PC2(); var pc2Result = InitPermutationTableHeader(56, 48, entityName, architectureName); pc2Result = GeneratePermutationTableAssignments(pc2, pc2Result); pc2Result.Add($"end {architectureName};"); File.WriteAllLines(_path + "PC2.vhd", pc2Result); break; } }