المشكلة التي حلّها بيرلين
عام 1983، كان كين بيرلين يعمل على فيلم Tron ويحتاج إلى توليد مواد طبيعية — سحاب، دخان، تضاريس — تبدو عضوية لا آلية. random() لم تكن كافية: القيم العشوائية الخالصة تخلق ضوضاء بيضاء بدون تماسك مكاني.
حله: ضوضاء زائفة متسقة. نقطتان قريبتان لهما قيم متقاربة. فاز بيرلين بجائزة أوسكار علمي عن هذا الاختراع.
كيف تعمل (بدون رياضيات)
noise(x) تأخذ حجة موضع وتُرجع قيمة بين 0 و1. المهم: إذا تغير x ببطء، تغيرت القيمة ببطء.
الاستخدامات الثلاثة الأساسية في p5.js
1. موضع متحرك
let t = 0;
function draw() {
t += 0.005;
let x = noise(t) * width;
let y = noise(t + 100) * height;
ellipse(x, y, 10, 10);
}
2. حقل متجهات
let angle = noise(p.x * 0.005, p.y * 0.005, frameCount * 0.003) * TWO_PI * 2;
p.x += cos(angle) * 1.5;
p.y += sin(angle) * 1.5;
3. تضاريس ثنائية الأبعاد
let h = noise(x * 0.008, frameCount * 0.005) * height;
line(x, height, x, height - h);
3 قواعد ملخصة
1. غيّر حجة noise() ببطء للحركة البطيئة
2. استخدم إزاحات مختلفة للأبعاد المستقلة
3. العب بـ عامل المقياس للتحكم في كثافة النمط