der Suche nach dem schnellsten Weg zu berechnen, einen Punkt zu berechnen, die auf einer Linie liegt in einem gegebenen Abstand vom Endpunkt der Linie:einen Start- und Endpunkt gegeben, und ein Abstand, einen Punkt entlang einer Linie
void calculate_line_point(int x1, int y1, int x2, int y2, int distance, int *px, int *py)
{
//calculate a point on the line x1-y1 to x2-y2 that is distance from x2-y2
*px = ???
*py = ???
}
Vielen Dank für die Antworten, nein, das ist keine Hausaufgaben, nur ein wenig aus hacken mein normales Fachgebiet.
Dies ist die unten vorgeschlagene Funktion. Es ist nicht in der Nähe zu arbeiten. Wenn I Punkte alle 5 Grad auf der oberen rechten 90 Grad-Teil von einen Kreis als Startpunkte berechnen und die Funktion unten mit dem Mittelpunkt des Kreises als x2, y2 mit einem Abstand von 4 die Endpunkte sind total falsch. Sie liegen unterhalb und rechts von der Mitte und die Länge ist so lang wie der Mittelpunkt. Hat jemand irgendwelche Vorschläge?
void calculate_line_point(int x1, int y1, int x2, int y2, int distance)
{
//calculate a point on the line x1-y1 to x2-y2 that is distance from x2-y2
double vx = x2 - x1; // x vector
double vy = y2 - y1; // y vector
double mag = sqrt(vx*vx + vy*vy); // length
vx /= mag;
vy /= mag;
// calculate the new vector, which is x2y2 + vxvy * (mag + distance).
px = (int) ((double) x2 + vx * (mag + (double)distance));
py = (int) ((double) y2 + vy * (mag + (double)distance));
}
I this Lösung auf Stackoverflow gefunden habe, aber es nicht verstehen völlig, kann jeder klären?
Vielleicht sollten Sie verwenden Schwimmern/Doppelzimmer, weil Sie werde abgerundet ng Fehler. Dies könnte ein Problem sein. – Lucas
Was Lucas gesagt hat. Außerdem hast du wahrscheinlich meinen Post gelesen, als ich einen Tippfehler hatte. Wenn x1y1 der Ursprung ist, wollen Sie x1y1 + vxvy * (mag + Abstand), nicht x2y2. Das heißt, ausgehend vom Ursprung, möchten Sie die Entfernung _ bis x2y2_ plus die zusätzliche Entfernung zurücklegen, indem Sie die Richtung von x1y1 bis x2y2 verwenden. Obwohl ich denke, dass Sie vielleicht Ihre Frage neu formulieren möchten. Was genau willst du machen? Die Frage, so wie sie jetzt ist, scheint eher ein Zwischenproblem zu sein. –
[Geometrie: Einen Punkt entlang einer Linie in einer bestimmten Entfernung von einem anderen Punkt finden!] (Http://math.stackexchange.com/questions/175896/finding-a-point-along-a-line-a-certain-) distance-away-from-after-point/1630886 # 1630886) –