示例#1
0
    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);
    }
示例#3
0
        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;
            }
        }