شما اینجا هستید

۰-۷ -- نگاشت نویز

پیغام خطا

Deprecated function: The each() function is deprecated. This message will be suppressed on further calls در book_prev() (خط 775 در /home/molavy/public_html/modules/book/book.module).

حال ما آماده ایم که به این سوال پاسخ دهیم: با مقادیر نویز چه کارهایی می توانیم انجام دهیم.

وقتی مقداری بین صفر تا یک را داریم می توانیم آن را به یک محدوده خاص نگاشت کنیم.

ساده ترین راه برای این کار استفاده از تابع map در زبان processing است. تابع map چند آرگومان می گیرد اولین آن مقداری است که می خواهیم نگاشت کنیم، در اینجا n. سپس ما باید مقادیر محدوده جاری را به آن بدهیم( حداقل و حداکثر را)،سپس مقادیر محدوده ای که مد نظر داریم را مقدار در آن محدوده را تبدیل کند میدهیم( حداقل و حداکثر محدوده مقصد را)

تصویر ۸-۰

در اینجا، ما می دانیم که نویز محدوده ای بین صفر تا یک دارد، اما ما می خواهیم که یک دایره در محدوده بین صفر تا عرض پنجره ترسیم کنیم

 float t = 0;
 
void draw() {
  float n = noise(t);
  float x = map(n,0,1,0,width);
  ellipse(x,180,16,16);
 
  t += 0.01;
}

ما می توانیم منطق یکسانی را به گردشگر تصادفی اعمال کنیم و مقدار x و مقدار y را به اساس نویز پرلین اعمال کنیم.

 

 

 class Walker {
  float x,y;
 
  float tx,ty;
 
  Walker() {
    tx = 0;
    ty = 10000;
  }
 
  void step() {
    x = map(noise(tx), 0, 1, 0, width);
    y = map(noise(ty), 0, 1, 0, height);
 
    tx += 0.01;
    ty += 0.01;
  }
}

توجه کنید چطور مثال بالا متغیر های بیشتری دارد، tx و ty . به خاطر اینکه ما نیاز به دنبال کردن دو خط زمان از متغیر ها داریم، یکی برای موقعیت x ها و دیگری برای موقعیت y. اما یک چیزی در اینجا عجیب است. چرا مقدار tx از 0 شروع می شود و مقدار y از 10,000؟

به دلیل اینکه این مقدایر دلبخواهی است، ما هر کدام از متغیر ها را با مقدار متفاوتی مقدار دهی اولیه کرده ایم. به دلیل اینکه تابع نویز جبری است: به ما مقداری یکسانی برای زمان خاصی در زمان می دهد. اگر ما بخواهیم که مقدار یکسان t برای هر دوی x و y استفاده کنیم، مقدار این دو همیشه یکسان خواهند بود، این به معنای آن است که گردشگر تنها به صورت قطری حرکت میکند. به جای این کار، ما به راحتی از دو بخش متفاوت از فضای نویز استفاده می کنیم، از صفر برای x شروع می کنیم و از ۱۰۰۰۰ برای y شروع می کنیم، بنابراین مقدایر این به نظر مستقل از یکدیگر عمل می کنند.

تصویر ۰-۹

در حقیقت، مفهومی به معنای زمان در اینجا معنی نمی دهد. این تشبیه کمک می کند که بفهمیم تابع noise چطور کار می کند. چیزی که در واقع به جای زمان داریم فضاست. تصویر بالا تصویری از بسامد خطی از مقادیر نویز در یک نمودار در فضای یک وجهی است، ما می توانیم مقدار x خاصی را در هر زمانی که بخواهیم به دست آوریم. در این مثال ها، شما اغلب یک مقدار به نام xoff که نشان دهنده فاصله x در روی گراف نویز به جای t برای زمان، داریم (همانطور که در نمودار ذکر شده است).

تمرین ۰-۷

در گردشگر تصادفی بالا، نتیجه تابع نویز مستقیما به موقعیت گردشگر در صفحه نگاشت شده است. یک گردشگر تصادفی بسازید که مقدار نتیجه تابع نویز را به اندازه قدم های گردشگر نگاشت کند

دیدگاه جدیدی بگذارید