Ich baue ein Asteroiden-ähnliches Spiel für Android. Ich lese "Android-Spiel-Programmierung mit Beispiel". Ich implementiere den Algorithmus der Kreuzungszahl. Die App fertig ist und es funktioniert, aber ich verstehe nicht, diesen Teil des Codes:Crossing-Nummer Algorithmus in Android
if (((cp2.currentPoint.y > cp1.currentPoint.y) !=
(cp2.currentPoint2.y > cp1.currentPoint.y)) &&
(cp1.currentPoint.x < (cp2.currentPoint2.x - cp2.currentPoint2.x) *
(cp1.currentPoint.y - cp2.currentPoint.y)/(cp2.currentPoint2.y - cp2.currentPoint.y) + cp2.currentPoint.x))
Wo cp1.currentPoint
ist die erste erste Eckpunkt des Objekts (es ist also ein Punkt), ist cp2.currentPoint
des zweiten Objekts ersten Scheitelpunkt und cp2.currentPoint2
ist der zweite Punkt. Diese zwei Punkte bilden unsere Linie.
Dieser Teil verstehe ich nicht:
(cp2.currentPoint2.x - cp2.currentPoint2.x)
Das Ergebnis davon ist immer 0, also warum ich das zu tun?
Oder vielleicht wurde es falsch aus dem Buch transkribiert? –
Ich kopiere den Code um sicher zu sein. –
Die Lösung funktioniert meistens "(cp2.currentPoint.x - cp2.currentPoint2.x)" –