Sikke en overskrift...

Jeg får lidt data omkring hvilke personer der er i hvilke rum i en bygning.
Jeg skal så, fra et fugleperspektiv, simulere de går rundt som lysende pletter i en
tegning af bygningen. (tænk GPS og Die Hard, James Bond, Hackers ...indsæt selv flere film med skurke, gadgets og helte i ventilationssystemer)

Jeg har en del mennesker og rum at holde styr på og som altid et minimum af system ressourcer
til rådighed.

Jeg har lavet en løsning der benytter tilfældig tal. dvs:

newX = Math.random()*room.width;
newY = Math.random()*room.height;

Jeg tweener personerne til dette koordinat (newX, newY) med en event
der "trickler" ned gennem de forskellige bygninger, etager og rum og beder mine person objekter om at udregne
deres næste destination og flytte sig dertil.

Det er i og for sig fint, det ser dog ikke specielt ud som mennesker der bevæger sig.
En anden bivirkning ved dette er at "folk" kan finde på at tage nogle gevaldige ryk fra den ene ende af rummet
til en anden, hvis tallene der kommer ud af random metoden er langt fra den nuværende position.

Det gode ved denne løsning er dog at jeg ikke ender i noget form for collisionDetection for at sikre mig
at en person bliver inde for rammerne af rummet (det ville få selv den største octocore til at bryde sammen da jeg har mange mennesker i spil)
Ressource spørgsmålet fik mig også til at droppe ting som Brownian motion osv. da de er ret beregningskrævende.

For at kompensere for den bivirkning med folk der flytter sig for langt på en "opdaterings cycle" (1 sek.)
så prøvede jeg at udregne den rette linie mellem den nuværende position og den tilfældigt genererede position.
Det gav mig så mulighed for at lade en person gemme sin egen velocity/fart internt i person objektet og så bruge
denne værdi til at bevæge personen ud af den rette linie vha. af sin egen fart.

Dette er godt da jeg så ved oprettelse af en person kan lade vedkommne være mere eller mindre aktiv (større mindre fart)
og blive ved med at følge det mønster. Så jeg ikke har mennesker der bevæger sig hurtigt, langsomt, hurtigt, men istedet
benytter det samme tempo (og nogle endda står stille hvis farten er 0)
Men igen, bevægelsesmønstret ligner ikke noget et mennesker ville følge og det giver uheldige bivirkninger med masser
af "if" sætninger når personer skal tildeles negative hastigheder for at kunne komme rundt i rummet og ikke smutte ud over kanten af rummet
fordi farten er større end afstanden til slutpunktet. Feks:
Personen står i punktet 2, 2 og får som det nye koordinat 0,0. Personens fart er 3 pixel per sek. ud mod punktet 0,0 ... dvs. næste skridt er
ligger i -0.2 , -0.2 og er så udenfor rummet og beregningen bryder sammen.

Så ville høre om der er nogle idéer derude til at få disser pletter til at opføre sig "ordentligt" og menneskeligt.
Samtidigt blive inden for grænserne af deres rum og på en måde der skåner CPU'en når den skal flytte mellem 0 - 1000 af disse
rundt på skærmen.

Tak for input og go weekend.