Cercando il modo più rapido per calcolare un punto che si trova su una linea di una certa distanza dal punto finale della linea:Dato un punto di inizio e di fine, e una distanza, calcolare un punto lungo una linea
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 = ???
}
Grazie per le risposte, no questo non è compito a casa, solo un po 'di hacking di mia normale area di competenza.
Questa è la funzione suggerita di seguito. Non è vicino al lavoro. Se I calcola i punti ogni 5 gradi nella porzione di 90 gradi in alto a destra di un cerchio come punti di partenza e chiama la funzione in basso con il centro del cerchio come x2, y2 con una distanza di 4 i punti finali sono completamente sbagliati. Si trovano sotto e alla destra del centro e la lunghezza è lunga quanto il punto centrale. Qualcuno ha dei suggerimenti?
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));
}
ho trovato this soluzione su StackOverflow, ma non lo capisco completamente, chiunque può chiarire?
Forse si dovrebbe usare carri/doppie, perché si otterrà roundi ng errori. Questa potrebbe essere una preoccupazione. – Lucas
Cosa disse Lucas. Inoltre, probabilmente hai letto il mio post mentre avevo un refuso. Se x1y1 è l'origine, vuoi x1y1 + vxvy * (mag + distanza), non x2y2. Ovvero, partendo dall'origine, si desidera percorrere la distanza da _ a x2y2_ più la distanza aggiuntiva, usando la direzione da x1y1 a x2y2. Anche se penso che potresti voler riformulare la tua domanda. Cosa vuoi esattamente fare? La domanda così com'è ora sembra più un problema intermedio. –
[Geometria: trova un punto lungo una linea a una certa distanza da un altro punto!] (Http://math.stackexchange.com/questions/175896/finding-a-point-along-a-line-a-certain- distanza-da-un altro punto/1630886 # 1630886) –