Tengo una pregunta Conozco una línea Sé su pendiente (m) y un punto en ella A (x, y) ¿Cómo puedo calcular los puntos (en realidad dos de ellos)) en esta línea con una distancia (d) desde el punto A? Estoy pidiendo esto para encontrar intensidad de píxeles en una línea que pasa por A (x, y) con una distancia. La distancia en este caso será el número de píxeles.Encontrar puntos en una línea con una distancia dada
Respuesta
Sugeriría convertir la línea a un formato paramétrico en lugar de punto-pendiente. Es decir, una función paramétrica para la línea devuelve puntos a lo largo de esa línea para el valor de algún parámetro t. Puede representar la línea como punto de referencia y un vector que representa la dirección de la línea que atraviesa ese punto. De esa forma, solo debes mover d unidades hacia adelante y hacia atrás desde el punto A para obtener tus otros puntos.
Como su línea tiene una pendiente m, su vector de dirección es < 1, m>. Dado que mueve m píxeles en y por cada 1 píxel en x. Desea normalizar ese vector de dirección para que sea la longitud de la unidad, por lo que se divide por la magnitud del vector.
magnitude = (1^2 + m^2)^(1/2) N = <1, m>/magnitude = <1/magnitude, m/magnitude>
El vector de dirección normalizado es N. Ahora que casi ha terminado. Sólo tiene que escribir la ecuación para la línea en formato parametrizado:
f(t) = A + t*N
Este utiliza vector math. Específicamente, scalar vector multiplication (de su parámetro ty el vector N) y vector addition (de A y t * N). El resultado de la función f es un punto a lo largo de la línea. Los 2 puntos que está buscando son f (d) y f (-d). Implementa eso en el idioma que elijas.
La ventaja de utilizar este método, a diferencia de todas las otras respuestas hasta ahora, es que puede extender fácilmente este método para admitir una línea con pendiente "infinita". Es decir, una línea vertical como x = 3. Realmente no necesita la pendiente, todo lo que necesita es el vector de dirección normalizado. Para una línea vertical, es < 0, 1>. Esta es la razón por la cual las operaciones gráficas a menudo usan matemáticas vectoriales porque los cálculos son más directos y menos propensos a las singularidades. Puede parecer un poco complicado al principio, pero una vez que te acostumbras a las operaciones vectoriales, muchas tareas de gráficos por computadora se vuelven mucho más fáciles.
Llamemos al punto que está tratando de encontrar P, con las coordenadas px, py, y las coordenadas A de su punto de inicio ax y ay. La pendiente m es simplemente la relación del cambio en Y sobre el cambio en X, de modo que si su punto P es la distancia s desde A, entonces sus coordenadas son px = ax + s, y py = ay + m * s. Ahora usando Pitágoras, la distancia d de A a P será d = sqrt (s * s + (m * s) * (m * s)). Para hacer que P sea unidades D específicas alejadas de A, encuentre s como s = D/sqrt (1 + m * m).
pensé que se trataba de una impresionante y fácil de entender solución:
http://www.physicsforums.com/showpost.php?s=f04d131386fbd83b7b5df27f8da84fa1&p=2822353&postcount=4
Let me explain the answer in a simple way.
punto de inicio - (x0, y0)
Punto final - (x1, y1)
tenemos que encontrar un punto en una (xt, yt)
dt distancia desde el punto de partida hacia el punto final.
La distancia entre el punto inicial y final viene dado por d = sqrt((x1 - x0)^2 + (y1 - y0)^2)
Deje que la relación de las distancias, t = dt/d
Entonces el punto (xt, yt) = (((1 - t) * x0 + t * x1), ((1 - t) * y0 + t * y1))
Cuando 0 < t < 1
, el punto está en la línea.
Cuando t < 0
, el punto está fuera de la línea cerca de (x0, y0)
.
Cuando t > 1
, el punto está fuera de la línea cerca de (x1, y1)
.
- 1. ¿Cómo se puede encontrar un punto a una distancia perpendicular dada de una línea?
- 2. Encontrar un punto en una línea
- 3. Encontrar palabras de Wordnet separadas por una distancia de edición fija de una palabra dada
- 4. Encontrar la distancia entre CLLocationCoordinate2D puntos
- 5. Encontrar la distancia mínima en una mesa
- 6. Encontrar puntos en una curva bezier basada en la distancia desde otro punto
- 7. Manera eficiente de encontrar la distancia entre dos puntos 3D
- 8. Encontrar filas con una diferencia dada entre valores en una columna
- 9. ¿Cómo encuentro la distancia entre dos puntos?
- 10. Encontrar coordenadas de puntos en la frontera de una forma
- 11. Dados 2 puntos, ¿cómo dibujo una línea en ángulo recto con respecto a la línea formada por los dos puntos?
- 12. Encuentra un punto, una distancia dada, a lo largo de una curva de bezier cúbica simple. (! En un iPhone)
- 13. ¿Cómo seleccionar una columna dada de una línea de texto?
- 14. Encontrar el par de puntos más cercano en una esfera
- 15. Algoritmo para calcular una distancia entre 2 puntos tridimensionales?
- 16. Agregando una línea de puntos spacer/infill con CSS
- 17. Distancia entre dos lat, lon puntos
- 18. C# - cómo mover el punto una distancia dada d (y obtener una nueva coordenadas)
- 19. Obtener la distancia entre dos puntos geográficos
- 20. Algoritmo para encontrar clusters (min x pts. Dentro de una distancia y del centro del clúster) de puntos geográficos
- 21. Extender un segmento de línea a una distancia específica
- 22. Método eficiente para trazar una línea con millones de puntos
- 23. ¿Cómo encontrar si un archivo contiene una cadena dada usando la línea de comandos de Windows
- 24. Identificación de puntos con la distancia euclídea más pequeña
- 25. Dada una superficie normal, encontrar rotación para Plane 3D
- 26. distanceFromLocation - Calcular la distancia entre dos puntos
- 27. Todos los puntos con distancia mínima de Manhattan desde el resto de puntos determinados [Optimizado]
- 28. Dada una matriz 2D de números, encontrar grupos
- 29. Seguimiento: Encontrar una "distancia" entre los colores exactos
- 30. ¿Cómo obtener puntos de una línea en OpenCV?
gracias por la ayuda que funciona – Emre
@ALevy Usted introduce una variable, 'A', pero no veo cómo se define 'A'. Qué es un'? –
@TomAuger Presenté A en el párrafo introductorio de esta respuesta. A es un punto en la línea. No importa en qué punto. Cualquier punto que esté en la línea servirá. –