2010-11-25 20 views
5

Ich habe 2 Punkte P1 und P2. Ich muss die P3 finden, damitFinden Sie den dritten Punkt

  • alle Punkte auf der gleichen Linie sein;
  • P3 sollte (von P1 entfernt) im Abstand d vom P2 sein

ich ein kompliziertes System scheinbar kaum begonnen ...
alt text

PS zu lösen.

Vektorielle Antworten ist cool, aber ich benutze C# und weiß nicht, wie man Vektoren da drüben hinzufügt.

+0

http://math.stackexchange.com/- vielleicht finden Sie bessere Antworten ;-) – Svisstack

+0

Sie haben nur zwei Punkte in einer geraden li ne das sind in der nähe ** d ** von ** P2 ** !! –

+0

@Svisstack: vielleicht sollte ich diese Frage dorthin übertragen, weiß aber nicht wie. – serhio

Antwort

5
P3 = P2 + d * ±(P2 - P1)/|P2 - P1| 

EDIT:

Weil Shopping ist einfach:

mag = sqrt((P2x - P1x) ** 2 + (P2y - P1y) ** 2) 
P3x = P2x + d * (P2x - P1x)/mag 
P3y = P2y + d * (P2y - P1y)/mag 
+0

wirklich habe ich die Vektorteilung vergessen ... und warum + -? – serhio

+0

ignacio, Alter, könntest du bitte eine nicht-vektorielle Antwort vorschlagen ...: "(Ich sollte erkennen, dass du kein Mathe-Mann bist. – serhio

+0

Da sind zwei kolineare Punkte' d' von 'P2' entfernt: eins weg von' P1 '(positiv) und eins in Richtung' P1' (negativ) –

2

ich den Code in Objective C übersetzt

float distanceFromPx2toP3 = 1300.0;  

float mag = sqrt(pow((px2.x - px1.x),2) + pow((px2.y - px1.y),2)); 
float P3x = px2.x + distanceFromPx2toP3 * (px2.x - px1.x)/mag; 
float P3y = px2.y + distanceFromPx2toP3 * (px2.y - px1.y)/mag; 

CGPoint P3 = CGPointMake(P3x, P3y); 
+0

Danke! Das funktionierte für mich. (für andere Sucher, die Schlüsselwörter, die ich versuchte, diese Antwort zu finden mit: Bresenham Linienprojektion zum 3. Punkt) –

Verwandte Themen