<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de-x-formal">
	<id>https://glossar.hs-augsburg.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Visus</id>
	<title>GlossarWiki - Benutzerbeiträge [de-formal]</title>
	<link rel="self" type="application/atom+xml" href="https://glossar.hs-augsburg.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Visus"/>
	<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/Spezial:Beitr%C3%A4ge/Visus"/>
	<updated>2026-07-17T17:34:37Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Benutzer:Visus&amp;diff=11146</id>
		<title>Benutzer:Visus</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Benutzer:Visus&amp;diff=11146"/>
		<updated>2007-09-25T21:40:42Z</updated>

		<summary type="html">&lt;p&gt;Visus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://blog.visusnet.de&lt;br /&gt;
http://www.visusnet.de&lt;/div&gt;</summary>
		<author><name>Visus</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Diskussion:Kollisionsbehandlung_(ActionScript)&amp;diff=11145</id>
		<title>Diskussion:Kollisionsbehandlung (ActionScript)</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Diskussion:Kollisionsbehandlung_(ActionScript)&amp;diff=11145"/>
		<updated>2007-09-25T21:40:22Z</updated>

		<summary type="html">&lt;p&gt;Visus: Berechnung der Abprallgeschwindigkeit über das Skalarprodukt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Berechnung der Abprallgeschwindigkeit über das Skalarprodukt ==&lt;br /&gt;
&lt;br /&gt;
 dx = dx/len;&lt;br /&gt;
 dy = dy/len;&lt;br /&gt;
 a_sc = -avx * dx - avy * dy;&lt;br /&gt;
 b_sc = bvx * dx - bvy * -dy;&lt;br /&gt;
 a_cx = -dx * a_sc;&lt;br /&gt;
 a_cy = -dy * a_sc;&lt;br /&gt;
 b_cx = dx * b_sc;&lt;br /&gt;
 b_cy = dy * b_sc;&lt;br /&gt;
&lt;br /&gt;
Dabei muesste gelten:&lt;br /&gt;
 a_sc = -avx * dx - avy * dy = -1 (avx * dx + avy * dy)&lt;br /&gt;
 b_sc = bvx * dx - bvy * -dy = bvx * dx + bvy * dy&lt;br /&gt;
&lt;br /&gt;
wobei bei a_sc das negative Vorzeichen sinnlos ist, wenn:&lt;br /&gt;
 a_cx = -dx * a_sc&lt;br /&gt;
und analog mit y, denn:&lt;br /&gt;
 a_cx = dx * -a_sc = dx * -[-1 * (avx * dx + avy * dy)]&lt;br /&gt;
 =&amp;gt; a_cx = dx * (avx * dx + avy * dy)&lt;br /&gt;
Also &amp;quot;relativer Abstand mal Skalarprodukt des relativen Abstand- und Geschwindigkeitsvektors&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Also muesste sich das ganze dazu vereinfachen lassen:&lt;br /&gt;
&lt;br /&gt;
 dx = dx / len;&lt;br /&gt;
 dy = dy / len;&lt;br /&gt;
 &lt;br /&gt;
 a_sc = avx * dx + avy * dy;&lt;br /&gt;
 b_sc = bvy * dy + bvy * dy;&lt;br /&gt;
 &lt;br /&gt;
 a_cx = dx * a_sc&lt;br /&gt;
 a_cy = dy * a_sc&lt;br /&gt;
 &lt;br /&gt;
 b_cx = dx * b_sc&lt;br /&gt;
 b_cy = dy * b_sc&lt;br /&gt;
&lt;br /&gt;
Wenn ich mich nicht irre, muesste das laut der Herleitung funktionieren. Der Algorithmus funktionierte bei meinen Versuchen leider nicht, wobei ich sagen muss, dass ich das ganze in C++ gemacht habe und dort meine Vector-Klasse (http://blog.visusnet.de/2007/09/12/vektoren-fuer-c-programmierer/) benutze, wodurch der Quellcode ziemlich anders aussieht. Hier mal im Vergleich:&lt;br /&gt;
&lt;br /&gt;
 /*&lt;br /&gt;
  * Definitionen:&lt;br /&gt;
  * ObjectWrapper *objectA, *objectB;&lt;br /&gt;
  * Vector *positionA, *positionB;&lt;br /&gt;
  * Vector deltaPosition;&lt;br /&gt;
  * double scalarA, scalarB;&lt;br /&gt;
  */&lt;br /&gt;
 &lt;br /&gt;
 // dx = dx/len;&lt;br /&gt;
 // dy = dy/len;&lt;br /&gt;
 deltaPosition = (*positionA - *positionB);&lt;br /&gt;
 deltaPosition.Normalize();&lt;br /&gt;
 &lt;br /&gt;
 // Vorzeichenkorrektur, wuerde auch mit abs(),&lt;br /&gt;
 // also dem Betrag der Werte funktionieren.&lt;br /&gt;
 if (deltaPosition.x &amp;lt; 0)&lt;br /&gt;
 {&lt;br /&gt;
     deltaPosition.x *= -1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 if (deltaPosition.y &amp;lt; 0)&lt;br /&gt;
 {&lt;br /&gt;
     deltaPosition.y *= -1;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // a_sc = -avx * dx - avy * dy;&lt;br /&gt;
 // b_sc = bvx * dx - bvy * -dy;&lt;br /&gt;
 // GetSpeed() liefert den Geschwindigkeitsvektor&lt;br /&gt;
 scalarA = deltaPosition * objectA-&amp;gt;GetSpeed();&lt;br /&gt;
 scalarB = deltaPosition * objectB-&amp;gt;GetSpeed();&lt;br /&gt;
 &lt;br /&gt;
 // a_cx = -dx * a_sc;&lt;br /&gt;
 // a_cy = -dy * a_sc;&lt;br /&gt;
 // b_cx = dx * b_sc;&lt;br /&gt;
 // b_cy = dy * b_sc;&lt;br /&gt;
 Vector tempSpeedA = deltaPosition * scalarA;&lt;br /&gt;
 Vector tempSpeedB = deltaPosition * scalarB;&lt;br /&gt;
 &lt;br /&gt;
 // element2.vx = bvx - (b_cx - a_cx) * v_bouncing;&lt;br /&gt;
 // element2.vy = bvy - (b_cy - a_cy) * v_bouncing;&lt;br /&gt;
 // element1.vx = avx - (a_cx - b_cx) * v_bouncing;&lt;br /&gt;
 // element1.vy = avy - (a_cy - b_cy) * v_bouncing;&lt;br /&gt;
 int bouncing = 1;&lt;br /&gt;
 &lt;br /&gt;
 objectA-&amp;gt;SetXSpeed(objectA-&amp;gt;GetXSpeed() - (tempSpeedB.x - tempSpeedA.x) * bouncing);&lt;br /&gt;
 objectA-&amp;gt;SetYSpeed(objectA-&amp;gt;GetYSpeed() - (tempSpeedB.y - tempSpeedA.y) * bouncing);&lt;br /&gt;
 objectB-&amp;gt;SetXSpeed(objectB-&amp;gt;GetXSpeed() - (tempSpeedA.x - tempSpeedB.x) * bouncing);&lt;br /&gt;
 objectB-&amp;gt;SetYSpeed(objectB-&amp;gt;GetYSpeed() - (tempSpeedA.y - tempSpeedB.y) * bouncing);&lt;br /&gt;
&lt;br /&gt;
Bei meinem C++-Quellcode schiessen die beiden Objekte wild durch den Raum, wenn sie aufeinander treffen, wobei ich feststellen konnte, dass der x Wert der Objekte abwechselnd positiv und negativ mit den selben Werten ist.&lt;br /&gt;
&lt;br /&gt;
Vielleicht habe ich das ganze auch nur falsch portiert. ... Bin fuer Hinweise dankbar ;-)&lt;br /&gt;
&lt;br /&gt;
-- [[Benutzer:Visus|Visus]] 23:40, 25. Sep. 2007 (CEST)&lt;/div&gt;</summary>
		<author><name>Visus</name></author>
	</entry>
</feed>