Perlin Noise 1-D và 2-D, dùng để sinh địa hình ngẫu nhiên nhưng mượt cho map generator.
1-D Perlin Noise
Về cơ bản, mục tiêu của Perlin Noise là từ đầu vào ngẫu nhiên cho ra một kết quả smooth (mượt).
Xét một dãy số có giá trị thực từ 0 đến dưới 1, gọi là dãy số ngẫu nhiên này và .
Áp dụng piecewise linear interpolation (phép nội suy tuyến tính từng phần), giúp ta có thể tìm kiếm một giá trị bất kỳ trong khoảng rời rạc của 2 giá trị:
(trong đó là phần nguyên của , là phần thập phân của )
Lúc này thì ta đã thấy ra dáng rồi nhưng chưa được mượt lắm, bởi vậy ta thay bằng một hàm .
Ta có thể mở rộng hàm noise ra bên ngoài khoảng bằng cách:
2-D Perlin Noise
Ta có lưới đơn vị . Với mỗi đơn vị ta sinh ra một điểm ngẫu nhiên .
Từ đó ta suy ra các điểm góc là , , , , trong đó:
- là phần nguyên của
- là
- là phần nguyên của
- là
Cho hàm số liên tục , ta tìm được đạo hàm cho ta hệ số góc tiếp tuyến tại điểm của hàm.
Thay vì nghĩ về một hàm số hai tham số, ta chỉ cần tưởng tượng hàm giá trị là độ cao của điểm trong không gian 2 chiều. Nếu smooth, thì những điểm trong địa hình đều có thể liên hệ với mặt phẳng tiếp tuyến.
"Độ dốc" của mặt phẳng tiếp tuyến đi qua một điểm như vậy được xác định bởi các đạo hàm riêng của hàm và .
Vector là vector của mặt phẳng mà các điểm đi lên dốc nhất của hàm . Vector này thay đổi từng điểm, phụ thuộc vào . Gọi là gradient của và được ký hiệu bằng .
, , , là các gradient vector ngẫu nhiên ở từng góc.
Với mỗi , ta tìm được vector từ các góc đến điểm này:
, , ,