Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ss14:dokumentation [2014/07/03 18:11] p.kugelstadt |
ss14:dokumentation [2016/05/10 14:46] (aktuell) |
||
---|---|---|---|
Zeile 27: | Zeile 27: | ||
Kontrahenten.append(Mensch) | Kontrahenten.append(Mensch) | ||
return Kontrahenten | return Kontrahenten | ||
+ | </code> | ||
+ | |||
+ | Stufe 1 unserer(dokumentierten) Ausweichsfunktion: | ||
+ | Das Ziel nun ist: Gassenbildung - ist bisher nicht der Fall | ||
+ | |||
+ | <code python> | ||
+ | def Ausweichen(self,Liste): | ||
+ | '''Gibt einen Geschwindigkeitsvektor zurueck, braucht einen Menschen und eine Liste von sichtbaren Mitmenschen(Kontrahenten)''' | ||
+ | Ziel = self.eigenschaften['Ziel'] | ||
+ | Kraft = self.eigenschaften['Lieblingsgeschwindigkeit'] * (Ziel-vector(self.x,self.y,0))/np.linalg.norm(Ziel-vector(self.x,self.y,0) ) | ||
+ | for einzelner in Liste: | ||
+ | Gustav = vector(self.x-einzelner.x,self.y - einzelner.y,0) #Vektor von einem anderen Menschen zum 'Fuessgaenger' | ||
+ | Kraft += (self.eigenschaften['Abstossungskonstante']*Gustav *1/(np.linalg.norm(Gustav)**3)) *(1-Skalarprodukt(Ziel-vector(self.x,self.y,0),vector(einzelner.vx,einzelner.vy,0))) #/len(Liste) | ||
+ | if((np.linalg.norm(Gustav))<4): | ||
+ | Kraft += 1000*Gustav*1/(np.linalg.norm(Gustav))/(10*len(Liste)) | ||
+ | if(np.linalg.norm(Kraft) > 6/3.6): | ||
+ | Kraft = (Kraft/np.linalg.norm(Kraft))*6/3.6 | ||
+ | return Kraft | ||
</code> | </code> |