Buscando la manera más rápida para calcular un punto que se encuentra en una línea una distancia dada de distancia desde el punto final de la línea:dado un punto de inicio y final, y una distancia, calcular un punto a lo largo de una línea
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 = ???
}
Gracias por las respuestas, no, esto no es tarea, solo algunos hackeos de mi área normal de especialización.
Esta es la función que se sugiere a continuación. No está cerca de funcionar. Si yo calculo puntos cada 5 grados en la parte superior derecha de 90 grados de un círculo como puntos de inicio y llamo a la función siguiente con el centro del círculo como x2, y2 con una distancia de 4 los puntos finales son totalmente incorrectos. Se encuentran debajo y a la derecha del centro y la longitud es tan larga como el punto central. ¿Alguien tiene alguna sugerencia?
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));
}
que he encontrado this solución en stackoverflow, pero no lo entiendo por completo, ¿alguien puede aclarar?
Tal vez deberías usar flotadores/dobles, porque recibirá roundi ng errores. Esto podría ser una preocupación. – Lucas
Lo que Lucas dijo. Además, probablemente leas mi publicación mientras tengo un error tipográfico. Si x1y1 es el origen, quieres x1y1 + vxvy * (mag + distancia), no x2y2. Es decir, comenzando desde el origen, desea recorrer la distancia _a x2y2_ más la distancia adicional, usando la dirección de x1y1 a x2y2. Aunque creo que es posible que desee reformular su pregunta. ¿Qué es exactamente lo que quiere hacer? La pregunta tal como está ahora parece más un problema intermedio. –
[Geometría: ¡Encontrar un punto a lo largo de una línea a cierta distancia de otro punto!] (Http://math.stackexchange.com/questions/175896/finding-a-point-along-a-line-a-certain- distancia-lejos-de-otro-punto/1630886 # 1630886) –