ניסוי אינטראקטיבי · Canvas אחד · אפס ספריות רנדור

שדה חלקיקים אחד, ארבעה מצבי נפש

געגוע

השדה כולו נמשך אל אור רחוק שנודד לאיטו — ולעולם לא מגיעים אליו. הזיזו את הסמן, החלקיקים ירכנו אליכם.

לחיצה על השדה מולידה מילה מקשים 1–4 מחליפים רגש
לגלול

ארבע נשמות

אותם חלקיקים.
רגש אחר לגמרי.

כל רגש הוא חתימת תנועה: סט כוחות שפועל על אותם אלף חלקיקים בדיוק. שום דבר לא מתחלף — רק הפיזיקה. הכרטיסים כאן חיים: כל אחד מריץ מיני־שדה עם ההתנהגות האמיתית שלו.

שמחה JOY

עלייה קלילה ומתנדנדת, כמו אבק זהב שמסרב ליפול. הסמן הופך למערבולת — החלקיקים מסתחררים סביבו כמו קונפטי ברוח.

תנועה · ריחוף מעלה סמן · מערבולת מילים · אור, צחוק, ריקוד

געגוע LONGING

כל השדה נמשך לאט אל אור רחוק שנודד — ולעולם לא מושג. הסמן זוכה רק לרכינה עדינה, כאילו החלקיקים נזכרים במשהו.

תנועה · משיכה לאופק סמן · רכינה מילים · מרחק, זיכרון, בית

כעס ANGER

רעד חד, קפיצות כיוון פתאומיות, בלי מנוחה. הסמן הודף את החלקיקים בכוח — והם חוזרים לרתוח סביבו שוב ושוב.

תנועה · ג'יטר נפיץ סמן · הדיפה מילים · אש, סערה, די

שלווה CALM

שדה זרימה איטי שנושם. החלקיקים נעים בזרמים רכים, כמו ערפל מעל ים שקט, והסמן רק מפנה אותם הצידה באדווה.

תנועה · זרימה נושמת סמן · אדווה מילים · נשימה, שקט, ים

מאחורי הקלעים

איך גורמים לנקודות
להרגיש משהו?

אין כאן WebGL, אין ספריות פיזיקה, אין סרטונים. יש לולאת ציור אחת על Canvas דו־ממדי, וארבעה סטים של כוחות. כל השאר — הרגשה.

01

חלקיק אחד, ארבע נשמות

כל חלקיק הוא נקודה עם מיקום, מהירות ופאזה. הרגש לא מחליף את החלקיקים — הוא מחליף את force(p) שפועל עליהם. שמחה דוחפת מעלה, געגוע מושך לאופק, כעס מרעיד, שלווה מזרימה.

02

הסמן הוא חלק מהפיזיקה

לכל רגש יש תגובה משלו למגע: מערבולת בשמחה, רכינה בגעגוע, הדיפה בכעס, אדווה בשלווה. אותו סמן — ארבע שפות גוף.

03

מעבר כמיזוג כוחות

מעבר רגש לא מאתחל כלום. במשך 2.2 שניות המערכת מחשבת את שני שדות הכוח וממזגת ביניהם עם lerp(fA, fB, m) — כך השמחה נמסה לתוך הכעס באמצע תנועה.

04

עומק בלי WebGL

שובל נבנה ממילוי רקע שקוף למחצה במקום ניקוי המסך; חיבור צבעים במצב lighter יוצר זוהר; שלוש "אורורות" רכות וגרעין רעש מוסיפים אווירה קולנועית.

field.js — the heart
// every frame, for every particle:
const fA = force(p, previousEmotion, t);   // where we came from
const fB = force(p, currentEmotion,  t);   // where we're going
p.vx += lerp(fA.x, fB.x, mix);            // feelings cross-fade
p.vy += lerp(fA.y, fB.y, mix);
p.vx *= damping;  p.vy *= damping;         // each emotion has its own friction

על הפרויקט

למה שדה של רגשות?

התחלנו משאלה פשוטה: האם אפשר לזהות רגש בלי אף מילה, בלי אף פרצוף — רק מתנועה? מסתבר שכן. כשמראים לאנשים את השדה בכעס, הם נסוגים מהמסך. כשהוא עובר לשלווה, הנשימה מאטה.

המילים העבריות שצפות בשדה — אור, מרחק, די, נשימה — אינן כיתוב. הן חלקיקים בעצמן: נולדות מלחיצה, נסחפות עם הרגש, ונמוגות. העברית כאן היא חומר, לא ממשק.

הכול נכתב מאפס: אין תמונות, אין סרטונים, אין מודל תלת־ממד. הדף שאתם רואים שוקל פחות ממגה־בייט ורץ על הטלפון באותה חלקות שהוא רץ על מסך גדול.

4רגשות · חתימות תנועה
700חלקיקים בשדה הראשי
60פריימים בשנייה, גם בנייד
0ספריות רנדור · תמונות
שדה הרגשות