Ich versuche, eine dreieckige Berührungsfläche für iOS zu erstellen, auf der der Benutzer einen Punkt innerhalb dieses Dreiecks ziehen kann. Anhand der Informationen auf dieser Seite können Sie leicht herausfinden, ob sich der gezogene Punkt innerhalb oder außerhalb des Dreiecks befindet. Ich möchte den Punkt jedoch an den Dreieckskanten abschneiden, wenn der Benutzer außerhalb des Dreiecks zieht.
Dies ist für Seite AB und Seite AC einfach , da ich nur die Vektoren u oder v auf Null setzen muss, wenn der Finger des Benutzers außerhalb dieser Kanten zieht. Ich bin mir jedoch nicht sicher, wie ich Punkt p auf Seite BC finden soll. Ich muss diesen Schnittpunkt finden, wenn der Benutzer seinen Finger außerhalb der Kante BC zieht .
Antworten:
Alle Punkte am Rand BC haben die Eigenschaft | u | + | v | = 1. Wenn Sie die Größe des längeren Vektors so reduzieren, dass diese Eigenschaft wahr ist, erhalten Sie Ihren Schnittpunkt. In Ihrem Bild würde dies bedeuten, die Größe von v um 0,245764829343853 zu reduzieren. Dies funktioniert nur, wenn Ihre Linie von A zum Finger BC kreuzt.
quelle
Angenommen, Sie haben Koordinaten für A, B und C (die wir Axe, Ay usw. nennen) und D = u + v, dann ist der Schnittpunkt:
Siehe auch Wikipedia-Artikel über Linien-Linien-Schnittpunkte .
quelle