Shortest Distance between two vectors in 3D space
[SD Angle]= shortestdistance(O,V,Q);
To find the shortest (perpendicular) distance between two vectors O and V in 3 dimensions. Q is a vector joining O and V. One point on each vector also needs to be known to comupte Q (Q=Point1-Point2)
SD is the shortest distance returned by the function.
Angle is the angle between the two vectors.
Example:
O = [-0.012918 0.060289 0.998097];
V = [47.9083 -3.8992 65.6425];
Point1 = [35.4 5.6 -49.4];
Point2 = [37.4 5.8 32.8];
Q = Point1 - Point 2;
[SD Angle]= shortestdistance(O,V,Q);
The Algorithm:
In 3D space, the shortest distance between two skew lines is in the direction of the common perpendicular.
To find a vector, P=(Px,Py,Pz), perpendicular to both vectors (O and P), we need to solve the two simultaneous equations, O.P=0 and V.P=0.
Although two equations in three unknowns cannot generally be solved analytically, these homogenous equations can be transformed into a series of two equations in two unknowns by using the ratios Px/Pz and Py/Pz, which can then be solved using normal methods.
Choosing an arbitrary value for Pz, we can determine a valid P, as well as the corresponding unit vector U = P /|P|.
Then to find the shortest distance, the scalar product can be used to find the projection of any vector Q (connecting the two skew lines and Q can be computed by knowing one point on each of the skew lines )onto the unit vector U. Thus the shortest distance SD= Q .U ,
The angle between the two vectors is computed by taking the arccosine of the scalar product of V and O divided by the product of the magnitudes of V and O , i.e. Angle = acos( (V.0)/|V||O| )*180/pi
Copyright 2013 Mathew Philip.
Date: 2013/09/04
Cite As
Mathew Philip (2026). Shortest Distance between two vectors in 3D space (https://www.mathworks.com/matlabcentral/fileexchange/43387-shortest-distance-between-two-vectors-in-3d-space), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform Compatibility
Windows macOS LinuxCategories
Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.
| Version | Published | Release Notes | |
|---|---|---|---|
| 1.0.0.0 |
