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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#判断线段是否相交

發布時間:2024/1/8 C# 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#判断线段是否相交 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

線段是否相交,一種是從幾何上就是判斷兩個線段有沒有交點,還有一種是通過向量叉乘(也就是向量積)來判斷。因為向量叉乘的結果是一個垂直于原來兩個向量的新向量,可以簡單的理解為垂直于原來兩向量所在平面的向量。我們來看圖

?

/// <summary>/// 線段是否相交/// </summary>/// <param name="p1">線段P1P2的P1點</param>/// <param name="p2">線段P1P2的P2點</param>/// <param name="q1">線段Q1Q2的Q1點</param>/// <param name="q2">線段Q1Q2的Q2點</param>/// <returns></returns>public static bool IsIntersect(PointF p1, PointF p2, PointF q1, PointF q2){//排斥試驗,判斷p1p2在q1q2為對角線的矩形區之外if (Math.Max(p1.X, p2.X) < Math.Min(q1.X, q2.X)){//P1P2中最大的X比Q1Q2中的最小X還要小,說明P1P2在Q1Q2的最左點的左側,不可能相交。return false;}if (Math.Min(p1.X, p2.X) > Math.Max(q1.X, q2.X)){//P1P2中最小的X比Q1Q2中的最大X還要大,說明P1P2在Q1Q2的最右點的右側,不可能相交。return false;}if (Math.Max(p1.Y, p2.Y) < Math.Min(q1.Y, q2.Y)){//P1P2中最大的Y比Q1Q2中的最小Y還要小,說明P1P2在Q1Q2的最低點的下方,不可能相交。return false;}if (Math.Min(p1.Y, p2.Y) > Math.Max(q1.Y, q2.Y)){//P1P2中最小的Y比Q1Q2中的最大Y還要大,說明P1P2在Q1Q2的最高點的上方,不可能相交。return false;}//跨立試驗var crossP1P2Q1 = VectorKits.Cross(p1, p2, q1);var crossP1Q2P2 = VectorKits.Cross(p1, q2, p2);var crossQ1Q2P1 = VectorKits.Cross(q1, q2, p1);var crossQ1P2Q2 = VectorKits.Cross(q1, p2, q2);bool isIntersect = (crossP1P2Q1 * crossP1Q2P2 >= 0) && (crossQ1Q2P1 * crossQ1P2Q2 >= 0);return isIntersect;} /// <summary>/// 矢量工具/// </summary>public class VectorKits{#region Cross/// <summary>/// 叉乘(P1P2 x P1P3)/// </summary>/// <param name="p1"></param>/// <param name="p2"></param>/// <param name="p3"></param>/// <returns></returns>public static float Cross(PointF p1, PointF p2, PointF p3){return (p2.X - p1.X) * (p3.Y - p1.Y) - (p2.Y - p1.Y) * (p3.X - p1.X);}/// <summary>/// 叉乘./// V1(x1, y1) X V2(x2, y2) = x1y2 – y1x2/// </summary>/// <param name="vector1"></param>/// <param name="vector2"></param>/// <returns></returns>public static float Cross(PointF vector1, PointF vector2){return Cross(vector1.X, vector1.Y, vector2.X, vector2.Y);}/// <summary>/// 叉乘/// </summary>/// <param name="v1X">v1向量的X分量</param>/// <param name="v1Y">v1向量的Y分量</param>/// <param name="v2X">v2向量的X分量</param>/// <param name="v2Y">v2向量的Y分量</param>/// <returns></returns>public static float Cross(float v1X, float v1Y, float v2X, float v2Y){return v1X * v2Y - v1Y * v2X;}#endregion#region Dot/// <summary>/// 點乘(P1P2 * P1P3)/// </summary>/// <param name="p1"></param>/// <param name="p2"></param>/// <param name="p3"></param>/// <returns></returns>public static float Dot(PointF p1, PointF p2, PointF p3){return (p2.X - p1.X) * (p3.X - p1.X) + (p3.Y - p1.Y) * (p2.Y - p1.Y);}/// <summary>/// 點乘./// V1( x1, y1) x V2(x2, y2) = x1*x2 + y1*y2/// </summary>/// <returns></returns>public static float Dot(PointF vector1, PointF vector2){return Dot(vector1.X, vector1.Y, vector2.X, vector2.Y);}/// <summary>/// 點乘./// V1( x1, y1) x V2(x2, y2) = x1*x2 + y1*y2/// </summary>/// <param name="v1X">v1向量的X分量</param>/// <param name="v1Y">v1向量的Y分量</param>/// <param name="v2X">v2向量的X分量</param>/// <param name="v2Y">v2向量的Y分量</param>/// <returns></returns>public static float Dot(float v1X, float v1Y, float v2X, float v2Y){return v1X * v2X + v1Y * v2Y;}#endregion }

轉載請注明出處。
?

?

總結

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

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

主站蜘蛛池模板: 在线观看中文字幕一区 | 亚洲色图一区二区 | 欧美日韩在线成人 | 五月六月丁香 | 青草成人免费视频 | 久久久精品国产免费爽爽爽 | 一区二区三区四区av | 日p视频在线观看 | 黑人巨茎大战欧美白妇 | jizz免费在线观看 | 国产精品一品 | 成片免费观看视频 | 亚洲黄色一级大片 | 久久精品无码毛片 | 亚洲精品乱码久久久久久蜜桃91 | 亚洲精品乱码久久久久久 | 雨宫琴音一区二区三区 | 亚洲男人第一网站 | 久久亚洲AV成人无码国产人妖 | 丝袜+亚洲+另类+欧美+变态 | 久久精品男人的天堂 | 我的好妈妈在线观看 | 天天摸夜夜添狠狠添婷婷 | 中文综合网 | 欧美激情国产一区 | 在线观看视频亚洲 | 日韩人体视频 | 久久影视大全 | 爱爱网站视频 | 中文字幕亚洲专区 | 国产88av| 91看片淫黄大片 | 未满十八18禁止免费无码网站 | 女人扒开腿让男人捅爽 | 台湾佬美性中文 | 永久免费黄色 | 中文无码一区二区三区在线观看 | 狠狠热视频| 欧美日韩激情视频 | 一本亚洲| 在线观看免费小视频 | 成人交配视频 | 成年人看的黄色 | 国产精品一区二区毛片 | 无码人妻一区二区三区精品视频 | 99色综合网| 免费看的av片 | 国产二级片 | 黄色福利| av中文字幕不卡 | 中文字幕第7页 | 97国产精品视频 | 日韩精品一区二区三区不卡 | 青青草视频在线观看 | 久久国产精品亚洲 | 国产不卡在线观看视频 | 综合狠狠 | 日本男人的天堂 | 深爱激情站| 私库av在线 | 好吊色青青草 | 免费污污视频在线观看 | 国产做爰xxxⅹ久久久精华液 | 国产福利视频网站 | 99免费精品| 国产精品国产三级国产在线观看 | 日韩成人av免费在线观看 | 97视频在线看 | 欧美午夜在线 | 亚欧日韩 | 黄色资源在线观看 | 秋霞久久精品 | 黑人性生活视频 | 久久精品99 | 亚洲aⅴ在线观看 | 一级黄片毛片 | 丰满岳乱妇在线观看中字无码 | 亚洲一级黄色片 | jjzz日本女人| 亚洲一区天堂 | 亚洲一级片 | 99精品视频在线观看免费 | 欧美激情视频在线播放 | 拍真实国产伦偷精品 | 国产视频你懂得 | 日韩激情网站 | 国产乱码精品一区二区三区精东 | 中文字幕精品视频在线 | mm1313亚洲国产精品美女 | 永久免费国产 | 国产午夜精品久久久久 | 朝鲜一级黄色片 | 欧美国产91 | 一本大道熟女人妻中文字幕在线 | 国产a一级片 | 欧美网站在线 | 公交顶臀绿裙妇女配视频 | 最近中文字幕在线免费观看 | av 一区二区三区 |