三維空間中兩直線的最短距離及最近點

方法1:

  • 已知空間中兩直線AB, CD,判斷它們是否相交

?????問題的關(guān)鍵是求出這兩條直線之間的最短距離啄刹,以及在這個距離上最接近兩線的點坐標,判斷該點是否在直線AB和直線CD上凄贩。

?????首先將直線方程化為對稱式誓军,分別得到兩直線方向向量AB=(x1,y1,z1), CD=(x2,y2,z2),
再將兩向量AB, CD叉乘得到其公垂向量N=(x,y,z),在AB, CD兩直線上分別選取點E,F(任意)疲扎,得到向量M昵时,求向量M在向量N方向的投影即為兩異面直線間的距離了(就是最短距離啦)捷雕。

?????最短距離的求法:d=|向量N向量M|/|向量N|(上面是兩向量的數(shù)量積,下面是取模)壹甥。*
設(shè)兩直線與距離的交點分別為S,T救巷,可帶入公垂線N的對稱式中得到第一個方程,又因為S,T兩點分別滿足直線AB和CD的方程句柠,所以得到關(guān)于S(或T)的第二個方程浦译,聯(lián)立兩個方程分別解出來即可!

方法2:

0.jpg
1.jpg
2.jpg
#include<iostream>
#include<cmath>

using namespace std;

struct Point
{
    double x, y, z;
    Point(double x = 0, double y = 0, double z = 0) : x(x), y(y), z(z) {}
};
typedef Point Vector;

Vector operator + (Vector a, Vector b)
{
    return Vector(a.x + b.x, a.y + b.y, a.z + b.z);
};
Vector operator - (Vector a, Vector b)
{
    return Vector(a.x - b.x, a.y - b.y, a.z - b.z);
};
Vector operator * (Vector a, double p)
{
    return Vector(a.x * p, a.y * p, a.z * p);
}
Vector operator / (Vector a, double p)
{
    return Vector(a.x / p, a.y / p, a.z / p);
}

double Dot(Vector a, Vector b)
{
    return a.x * b.x + a.y * b.y + a.z * b.z;
}
double Length(Vector a)
{
    return sqrt(Dot(a, a));
}
Vector Cross(Point a, Point b)
{
    return Vector(a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x);
}

Point a1, b1, a2, b2;
int main()
{
    int n;
    scanf("%d", &n);
    while(n--)
    {
        scanf("%lf%lf%lf", &a1.x, &a1.y, &a1.z);
        scanf("%lf%lf%lf", &b1.x, &b1.y, &b1.z);
        scanf("%lf%lf%lf", &a2.x, &a2.y, &a2.z);
        scanf("%lf%lf%lf", &b2.x, &b2.y, &b2.z);
        Vector v1 = (a1 - b1), v2 = (a2 - b2);
        Vector N = Cross(v1, v2);
        Vector ab = (a1 - a2);
        double ans = Dot(N, ab) / Length(N);
        Point p1 = a1, p2 = a2;
        Vector d1 = b1 - a1, d2 = b2 - a2;
        Point ans1, ans2;
        double t1, t2;
        t1 = Dot((Cross(p2 - p1, d2)), Cross(d1, d2));
        t2 = Dot((Cross(p2 - p1, d1)), Cross(d1, d2));
        double dd = Length((Cross(d1, d2)));
        t1 /= dd * dd;
        t2 /= dd * dd;
        ans1 = (a1 + (b1 - a1) * t1);
        ans2 = (a2 + (b2 - a2) * t2);
        printf("%.6f\n", fabs(ans));
        printf("%.6f %.6f %.6f ", ans1.x, ans1.y, ans1.z);
        printf("%.6f %.6f %.6f\n", ans2.x, ans2.y, ans2.z);
    }
    return 0;
}

</br>

markdown 粘貼代碼方法
markdown 插入縮進方法
markdown 換行方法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末溯职,一起剝皮案震驚了整個濱河市精盅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌谜酒,老刑警劉巖叹俏,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異僻族,居然都是意外死亡粘驰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門述么,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蝌数,“玉大人,你說我怎么就攤上這事碉输∽亚埃” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵敷钾,是天一觀的道長。 經(jīng)常有香客問我肄梨,道長阻荒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任众羡,我火速辦了婚禮侨赡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘粱侣。我一直安慰自己羊壹,他們只是感情好,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布齐婴。 她就那樣靜靜地躺著油猫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沫浆。 梳的紋絲不亂的頭發(fā)上哄辣,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機與錄音窑滞,去河邊找鬼毡证。 笑死电爹,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的料睛。 我是一名探鬼主播丐箩,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼恤煞!你這毒婦竟也來了雏蛮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤阱州,失蹤者是張志新(化名)和其女友劉穎挑秉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苔货,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡犀概,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了夜惭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姻灶。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖诈茧,靈堂內(nèi)的尸體忽然破棺而出产喉,到底是詐尸還是另有隱情,我是刑警寧澤敢会,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布曾沈,位于F島的核電站,受9級特大地震影響鸥昏,放射性物質(zhì)發(fā)生泄漏塞俱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一吏垮、第九天 我趴在偏房一處隱蔽的房頂上張望障涯。 院中可真熱鬧,春花似錦膳汪、人聲如沸唯蝶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽粘我。三九已至,卻和暖如春媳谁,著一層夾襖步出監(jiān)牢的瞬間涂滴,已是汗流浹背友酱。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留柔纵,地道東北人缔杉。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像搁料,于是被迫代替她去往敵國和親或详。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容