Estoy tratando de encontrar una manera de extender un segmento de línea en una distancia específica. Por ejemplo, si tengo un segmento de línea que comienza en 10,10 que se extiende a 20,13 y quiero extender la longitud por 3, ¿cómo calculo el nuevo punto final? Puedo obtener la longitud por sqrt (a^2 + b^2) en este ejemplo 10.44, así que si quisiera saber el nuevo punto final de 10,10 con una longitud de 13.44, ¿cuál sería computacionalmente la manera más rápida? También sé la pendiente pero no sé si eso me ayuda en este caso.Extender un segmento de línea a una distancia específica
Respuesta
Puede hacerlo buscando el vector unitario de su segmento de línea y escalarlo a la longitud deseada, y luego traducir el punto final de su segmento de línea con este vector. Suponga que los puntos finales de su segmento de línea son A
y B
y desea extenderse después del punto final B
(y lenAB
es la longitud del segmento de línea).
#include <math.h> // Needed for pow and sqrt.
struct Point
{
double x;
double y;
}
...
struct Point A, B, C;
double lenAB;
...
lenAB = sqrt(pow(A.x - B.x, 2.0) + pow(A.y - B.y, 2.0));
C.x = B.x + (B.x - A.x)/lenAB * length;
C.y = B.y + (B.y - A.y)/lenAB * length;
Si ya tiene la pendiente se puede calcular el nuevo punto:
x = old_x + length * cos(alpha);
y = old_y + length * sin(alpha);
no he hecho esto desde hace tiempo por lo que tomar con un grano de sal.
donde alpha = atan2 (y-old_y, x-old_x) –
Gracias por su ayuda, esta solución parece un poco más lenta que la solución más baja. Aprecio la ayuda, esto funcionó también. – goodgulf
Me tropecé con esto después de haber buscado esto por mí mismo, y para darle una solución out-of-the-box, se puede echar un vistazo al código dentro de una clase de vectores estándar (en cualquier idioma) y cereza elegir qué partes necesita, pero terminé usando una y el código se ve así:
vector.set(x,y);
vector.normalize();
vector.multiply(10000);// scale it by the amount that you want
¡Buena suerte!
Creo que esta es la respuesta más elegante –
- 1. Calcula la distancia promedio de un segmento de punto a otro y de un segmento de línea a un segmento de línea
- 2. Comprobando un segmento de línea está dentro de una distancia desde un punto
- 3. Encontrar la distancia desde un punto 3d a un segmento de línea
- 4. Intersección del segmento de línea y línea
- 5. Perpendicular en un segmento de línea desde un punto dado
- 6. Desplazamiento de una vista de texto a una línea específica
- 7. Deshabilitar una advertencia específica en una línea específica en Xcode
- 8. ¿Cómo calculo el vector normal de un segmento de línea?
- 9. Encontrar un punto en una línea
- 10. Bash: lea un archivo línea por línea y procese cada segmento como parámetros a otro prog
- 11. ¿Cómo se puede encontrar un punto a una distancia perpendicular dada de una línea?
- 12. ¿Cómo salteo a una línea de entrada específica en Perl?
- 13. Lectura de una línea específica de un archivo
- 14. Scroll WPF Listview a la línea específica
- 15. Encontrar puntos en una línea con una distancia dada
- 16. insertando texto en una línea específica
- 17. Distancia de un punto a un polígono
- 18. Alcanzar una línea específica en un archivo usando RandomAccessFile
- 19. En la documentación doxygen cómo crear un enlace a una línea específica de un archivo
- 20. Sed para eliminar un rango de líneas de una línea de coincidencia específica HASTA una línea de coincidencia específica (sin incluir la última línea)
- 21. dado un punto de inicio y final, y una distancia, calcular un punto a lo largo de una línea
- 22. ¿Cómo puedo reemplazar una línea específica por número de línea en un archivo de texto?
- 23. ¿Cómo puedo desplazarme a una línea específica en un cuadro de texto de WinForms usando C#?
- 24. MySQL: ¿Cómo calcular semanas a partir de una fecha específica?
- 25. ¿Cómo obtener una línea específica de una cadena en C#?
- 26. Dibujar una flecha en un segmento de Bezier cuadrático usando xaml
- 27. ¿Borrar línea específica de un archivo de texto?
- 28. subscribiendo una línea específica del lector csv de python?
- 29. Una forma de vincular a una clase, un método, especialmente una línea de código específica en el comentario de C#
- 30. ¿Cómo abrir un archivo en Eclipse Y saltar a una línea específica?
Esto no es una cuestión de programación, sino matemática simple, que luego debe ampliar a su código. – Constantinius
@Constantinius Todavía es una pregunta de algoritmo, solo una basada en matemáticas (que la ciencia de la computación es extremadamente pesada). – corsiKa
@glowcoder: No estoy de acuerdo. Sin entender las matemáticas subyacentes, no hay duda de que fracasa con su tarea. Por otro lado, si está familiarizado con las matemáticas, es una tarea trivial traducirlo al código del programa. – Constantinius