日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

判断两条线段是否相交

發布時間:2025/3/16 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 判断两条线段是否相交 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


如上圖,判斷線段AB和線段CD相交。

分析:如果線段AB和線段CD相交,只能是圖中的兩種相交情況。可以用向量叉乘來判斷。如果(向量AB叉乘向量AC)*(向量AB叉乘向量AD)<= 0 并且(向量CD叉乘向量CA)*(向量CD叉乘向量CB)<= 0,那么說明線段AB與線段CD相交。

設A(X1,Y1), B(X2, Y2), C(X3, Y3), D(X4, Y4),三角形ABC的面積為:2A =??= X1*Y2 + X3*Y1 + X2*Y3 - X3*Y2 - X1*Y3 - X2*Y1。

如果A>0,有向面積為正,ABC為逆時針排列;否則,ABC為順時針排列。

應用:NYOJ 1016 ?http://acm.nyist.net/JudgeOnline/problem.php?pid=1016

德萊聯盟

時間限制:1000?ms ?|? 內存限制:65535?KB 難度:1 描述

歡迎來到德萊聯盟。。。。

德萊文。。。

德萊文在逃跑,卡茲克在追。。。。

我們知道德萊文的起點和終點坐標,我們也知道卡茲克的起點和中點坐標,問:卡茲克有可能和德萊文相遇嗎?,并且保證他們走的都是直線。

輸入
幾組數據,一個整數T表示T組數據
每組數據 8個實數,分別表示德萊文的起點和終點坐標,以及卡茲克的起點和終點坐標
輸出
如果可能 輸出 Interseetion,否則輸出 Not Interseetion
樣例輸入
2 -19.74 7.14 22.23 -27.45 -38.79 -5.08 47.51 34.01 -8.61 9.91 -32.47 6.47 -3.81 -16.1 7.82 -6.37
樣例輸出
Interseetion Not Interseetion
題目就是給出兩條線段的起點坐標和終點坐標,判斷這兩條線段是否相交,如果相交輸出Interseetion;否則輸出“Not Intersection”。#include<stdio.h> struct node {double x, y; }st1, ed1, st2, ed2; double get_area(node a0, node a1, node a2) { //求有向面積double s = a0.x*a1.y + a2.x*a0.y +a1.x*a2.y - a2.x*a1.y - a0.x*a2.y - a1.x*a0.y;return s; } int main() {int n;scanf("%d",&n);while(n--) {scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&st1.x, &st1.y, &ed1.x, &ed1.y, &st2.x, &st2.y, &ed2.x, &ed2.y);double s1 = get_area(st1, ed1, st2);double s2 = get_area(st1, ed1, ed2);double s3 = get_area(st2, ed2, st1);double s4 = get_area(st2, ed2, ed1);if(s1 * s2 <= 0 && s3 * s4 <= 0)printf("Interseetion\n");elseprintf("Not Interseetion\n");}return 0; }


總結

以上是生活随笔為你收集整理的判断两条线段是否相交的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。