18 votos

¿Encontrar la distancia perpendicular del punto a la línea en 3D?

Tengo una línea que pasa por los puntos B y C ¿Cómo averiguo la distancia perpendicular a un?

$$A= (4,2,1)$$ $$B= (1,0,1)$$ $$C = (1,2,0)$$

enter image description here

22voto

Wizzard Puntos 2126

Intuitivamente, la distancia entre el punto a y el punto en la línea BC que está más cerca de Una. Y el punto en la línea que usted está buscando es exactamente la proyección de a sobre la línea. La proyección puede ser calculado utilizando el producto escalar (que a veces se conoce como "proyección del producto").

Así que usted puede calcular el vector de dirección $\mathbb{d}$ de la línea de $BC$. Esta es la diferencia de $B$$C$, dividido por la distancia:

$$\mathbb{d} = (C-B) / ||C-B||$$

Then you can define a vector from $B$ to $UN$:

$$\mathbb{v} = B - A$$

Computing the dot product between this vector and the direction vector will give you the the distance between $B$ and the projection of $$ on $AC$:

$$ t = \mathbb{v} \cdot \mathbb{d}$$

The actual projection $P$ of $$ on $AC$ is then given as

$$P = B + t \cdot \mathbb{d}$$

And finally, the distance that you have been looking for is

$$|| P - A||$$

Perpendicular

Por supuesto, esto podría ser escrito en una un poco más corta. Tiene las ventajas de dar exactamente el punto más cercano de la línea (que puede ser un buen complemento a la informática sólo de la distancia), y puede ser implementado fácilmente. Algunos pseudocódigo:

double computeDistance(vec3 A, vec3 B, vec3 C) {
    vec3 d = (C - B) / C.distance(B);
    vec3 v = B - A;
    double t = v.dot(d);
    vec3 P = B + t * d;
    return P.distance(A);
}

15voto

David Quinn Puntos 7591

Si estás familiarizado con el producto cruzado, puede obtener la distancia requerida mediante el cálculo de %#% $ #%

6voto

Elliot G Puntos 4604

Puede parametrizar la línea (y que incluso no necesitará preocuparse por el hecho de que es un segmento):

$$B-C=\langle 0,-2,1 \rangle$ $ por lo que la línea es %#% $ #%

Así que para algún valor de $$\langle 1,0,1 \rangle+ t\ \langle 0,-2,1 \rangle$, llame al $t$, el vector de $k$ $A$ es ortogonal a $\langle 1,-2k,1+k \rangle$. Por lo tanto

$\langle 0,-2,1 \rangle$$

$$(\langle 1,-2k,1+k \rangle-\langle 4,2,1\rangle)\cdot \langle 0,-2,1\rangle=0$$

$$\langle -3,-2k-2,k \rangle\cdot \langle 0,-2,1\rangle=0$$

$$4k+4+k=0$$

así que ahora debe ser capaz de encontrar el punto.

4voto

H. H. Rugh Puntos 1963

Sugerencia: Un punto en la línea BC se describe por $t B + (1-t)C$, $t\in {\Bbb R}$. Tratar de minimizar su distancia a $A$

2voto

Roger Hoover Puntos 56

Otro enfoque (una solución muy sencilla). Por el teorema de Pitágoras tenemos % $ $$ AB=\sqrt{13},\qquad AC=\sqrt{10},\qquad BC=\sqrt{5}\tag{1}$por lo tanto, $ABC$ es un triángulo agudo (desde $AB^2<AC^2+BC^2$ y así sucesivamente) y llamando a $H_A$ la proyección de $A$ $BC$, también tenemos $$ H_A B^2 - H_A C^2 = AB^2 - AC^2 = 3 \tag{2}$ $ desde $H_A B + H_A C = BC = \sqrt{5}$, $(2)$ sigue que $H_A B-H_A C = \frac{3}{\sqrt{5}}$, así: $$ H_A B = \frac{4\sqrt{5}}{5}\qquad H_A C = \frac{\sqrt{5}}{5}\tag{3}$ $ y: $$\boxed{\phantom{\sum_{j=1}^{n^2}} H_A = \frac{4}{5}C+\frac{1}{5}B = \color{red}{\left(\frac{5}{5};\frac{8}{5};\frac{1}{5}\right)},\qquad AH_A^2 = AC^2-H_A C^2 = \color{red}{\frac{49}{5}}\phantom{\sum_{j=1}^{n^2}}}\tag{4} $ $

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X