1. 程式人生 > >三維空間兩直線/線段最短距離、線段計算演算法

三維空間兩直線/線段最短距離、線段計算演算法

設有兩空間線段
1. Ls,其起點、終點座標為s0s1,方向向量u⃗ =s1s0
2. Lt,其起點、終點座標為t0t1,方向向量v⃗ =t1t0
記兩線段對應的直線為lslt,採用向量表示法如下:

ls=s0+csu⃗ 
lt=t0+ctv⃗ 
0csct1時,上述兩式表達
設最短距離兩點分別為sjtj,則有
sj=s0+scu⃗ 
tj=t0+scv⃗ 
其中sctcsjtj兩點所對應的標量。

記向量w⃗ =sjtj,記向量w⃗ 0=s0t0,根據下圖可以得出:
向量示意圖

w⃗ =s0+scu⃗ (t0+tcv⃗ ) 即:
w⃗ =w⃗ 0+scu⃗ 
tcv⃗ (1)

如果st兩條直線不平行、重合,則存在唯一的兩點sctc使線段sctclslt最近兩點的連線。同時,線段sctc也是唯一與兩條直線同時垂直的線段。轉換為向量表達即為:
u⃗ w⃗ =0v⃗ 

相關推薦

三維空間直線/線段短距離線段計算算法 【轉】

發布 2.3 main position overflow 解析 get fix 三維 https://segmentfault.com/a/1190000006111226 d(ls,lt)=|sj−tj|=|s0−t0+(be

三維空間直線/線段短距離線段計算演算法

設有兩空間線段 1. Ls,其起點、終點座標為s0、s1,方向向量u⃗ =s1−s0 2. Lt,其起點、終點座標為t0、t1,方向向量v⃗ =t1−t0 記兩線段對應的直線為ls、lt,採用向量表示法如下: ls=s0+cs⋅u⃗  lt=t0+ct

三維空間直線短距離最近點及C++演算法實現

未經許可請勿轉載 在雙目視覺立體空間重建中,會根據兩個相機中的物體影象座標,求取給定三維座標系的三維座標,而可以根據物體 影象座標、相機內參、給定座標系的相機外參,求取相機光軸線的方程,從而實現立體重建,內外參、直線方程請執行 搜尋學習,本文主要是解決在已知空間兩直線求最短

[計算幾何] (平面上)線段短距離 向量法

知識都是環環相扣的, 在閱讀這編文章之前, 要求懂兩個知識點 1. 會求點到線段的最短距離     傳送門 2. 會判斷點與線段位置關係     傳送門   如果上面兩個知識點都懂, 那麼就進入

[計算幾何] (平面上)線段短距離 向量法

知識都是環環相扣的, 在閱讀這編文章之前, 要求懂兩個知識點 1. 會求點到線段的最短距離     傳送門 2. 會判斷點與線段位置關係     傳送門 如果上面兩個知識點都懂, 那麼就進入正題了 給出點A1、A2的座標, 構成線段A1A2, 再給出點B1,B2的

【C#】點到線段短距離的那條直線線段的交點

/// <summary> /// 點到線段最短距離的那條直線與線段的交點,{x=...,y=...} /// </summary> /// <param name="x">線段外的點的x座標</param

空間直線短距離及最近點計算

直線的資訊可以以兩個端點的形式給出,也可以以一個直線上的點和直線的方向向量給出。本文中假設這兩條直線不共線,即這兩條直線既不重合也不相交。 1.如果這兩條直線是以兩個端點的形式給出,那麼假設直線l0的兩端點為:P0、P1;直線l1的兩端點為Q0、Q1,;求兩直線的最短距離?

as3 點到線段短距離 函式

public function pointToLineDistance( p1:Point, p2:Point, p3:Point ) : Number {var xDelta: Number = p2. x - p1. x ;var yDelta: Number = p2

點到線段短距離演算法

double computer(CPoint p1,CPoint p2,CPoint p0) {        double S;//S表示面積        double distance1,distance2,distance3,distance;     double

(dijkstra)演算法計算個地鐵站短距離演算法

前言 最新更新了github。歡迎多評論+討論,共同努力。 往後準備更新大資料和微服務的BLOG 由於專案需要計算兩個地鐵站之前最短距離及其線路流程。 引發使用迪傑斯特拉演算法計算帶權值兩點之前最短距離。 網上資料多用的是C++寫的演算法,在這裡用的是Java。實現的方

迪傑斯特拉(dijkstra)演算法計算個地鐵站短距離

private static HashMap<station> resultMap = new HashMap<>();//結果集   private static List<station> analysisList = new Arra

三維空間直線交點

emmm這個我今天百度了好久,發現都是同一篇,而且很長懶得看。。。於是我自己想了一個 設四個點構成兩個線段p1(x1,y1,z1) p2(x2,y2,z2) p3(x3,y3,z3) p4(x4,y4,z4) ,向量a=p2-p1,b=p4-p3; 1.先

Scala實現:已知三點坐標,求短距離(如果在垂足不在線段內,短距離為到其中一點的直線距離)

線段 在線 obj creat sqrt reat 最短距離 最小 space /** * 已知三點坐標,求其中一點到另兩點的垂線距離 * (如果在垂足不在線段內,最短距離為到其中一點的直線距離) * Created by wzq on 17-11-2. */obj

【matlab】已知線段的端點,求線段之間短距離

資料說明:       線段: points=[x1 y1 x2 y2] 程式說明: 通過線段兩端點,寫成引數函式(考慮了斜率不存在的問題) 程式: function practice(points1,points2) g=points1(2)-points1(4

向量叉乘求三維空間直線(或線段)的交點

1.2D空間的直線相交 在二維空間中,利用兩個直線方程y = kx + b我們可以直接計算出交點,但是這種方法麻煩了些,並且套用到三維空間用公式就更麻煩了,接下來介紹的是如何利用向量叉乘求出直線交點。並且由於利用叉乘最後可以的到一個比例值,這個值的大小還可以判斷四個點所得到的兩個線段是延長線相交

【洛谷】4180:【模板】嚴格次小生成樹[BJWC2010]【鏈剖】【線段樹維護嚴格次大值】

P4180 【模板】嚴格次小生成樹[BJWC2010] 題目描述 小C最近學了很多最小生成樹的演算法,Prim演算法、Kurskal演算法、消圈演算法等等。正當小C洋洋得意之時,小P又來潑小C冷水了。小P說,讓小C求出一個無向圖的次小生成

初學計算幾何(二)——點直線線段的關係

前言 \(NOIP\)結束之後,我下定決心來好好學習一些省選演算法了。 計算幾何應該是一個比較複雜的演算法吧,雖然出現得較少,但還是蠻實用的。 接著上一次學習的點與向量·叉積與點積,我繼續學習了點、直線、線段的關係。 直線與線段 我們可以用這樣子的結構體來表示直線與線段: struct Lin

[計算幾何] (平面上)點到線段短距離 向量法

 給出點A、B的座標, 構成線段AB, 再給出一點P的座標, 求點P到線段AB的最短距離  程式程式碼 #include<cmath> #include<iostream> using namespace std; typedef stru

Codeforces Round #339 (Div. 2)-C(點到線段短距離

Peter got a new snow blower as a New Year present. Of course, Peter decided to try it immediately. After reading the instructions he realized that it doe

點到直線線段的距離

補充數學知識: 直線方程一般式 Ax + By + C = 0 點斜式 y-y1 = k(x - x1) 斜切式 y = kx +b 兩點式 (y-y1)/(y2-y1) =(x-x1)/(x2-x1) x1不等於x2 y1不等於要y2 截距式 x/a + y/b = 1