C# 计算两条线段交点的位置
来源:互联网 发布:淘宝店铺贷款入口 编辑:程序博客网 时间:2024/05/20 09:47
Hello,我是KitStar。
以下文章整理的不对。还请见谅。
线段A,和线段B,直接求得AB的交点坐标,然后再判断该交点坐标是否在定长线段B的内部就可以了啊
AB本身就是两条直线,知道两端点就可以知道其直线方程,B也是一样,两个方程联立,
得到一个坐标,再看该坐标是否在B的定义域内就可以啊
首先,我们指定直线方程都有:
A的两点为(x1,y1),(x2,y2)
则A的直线方程为l1:y-y1=(y2-y1)(x-x1)/(x2-x1)
B的两点为(x3,y3),(x4,y4)
则B的直线方程为l2:y-y3=(y4-y3)(x-x3)/(x4-x3)
联立解出交点坐标为的横坐标为:
x=(k2x3-y3-k1x1+y1)/(k2-k1)
其中k1=(y2-y1)/(x2-x1)
k2=(y4-y3)/(x4-x3)
可以推导出来
x = ((x2 - x1) * (x3 - x4) * (y3 - y1) -
x3 * (x2 - x1) * (y3 - y4) + x1 * (y2 - y1) * (x3 - x4)) /
((y2 - y1) * (x3 - x4) - (x2 - x1) * (y3 - y4));
同理也可以推导出y的值:
y = ((y2 - y1) * (y3 - y4) * (x3 - x1) -
y3 * (y2 - y1) * (x3 - x4) + y1 * (x2 - x1) * (y3 - y4)) /
((y2 - y1) * (y3 - y4) - (y2 - y1) * (x3 - x4));
此处即是计算角点的程序:
/// <summary> /// 计算多边形的边与直线之间是否相交。相交则碰撞 /// </summary> /// <param name="a">/线段A为的起点</param> /// <param name="b">线段A为的终点</param> /// <param name="c">线段B的起点</param> /// <param name="d">线段B的终点</param> /// void IntersectionPoint(Vector3 a,Vector3 b, Vector3 c, Vector3 d) { if ( ( (c.x < orthogon_B_x && d.x > orthogon_A_x) || (d.x < orthogon_B_x && c.x > orthogon_A_x ) ) && ((c.y < orthogon_B_y && d.y > orthogon_A_y) || (d.y < orthogon_B_y && c.y > orthogon_A_y)) ) { Vector3 Intersection = new Vector3(); Intersection.x = ((a.x - b.x) * (c.x * d.z - d.x * c.z) - (c.x - d.x) * (a.x * b.z - b.x * a.z)) / ((c.x - d.x) * (a.z - b.z) - (a.x - b.x) * (c.z - d.z)); Intersection.z = ((a.z - b.z) * (c.x * d.z - d.x * c.z) - (c.z - d.z) * (a.x * b.z - b.x * a.z)) / ((c.x - d.x) * (a.z - b.z) - (a.x - b.x) * (c.z - d.z)); Intersection.y = orthogon_B.y; if (Intersection.z < orthogon_A_z && Intersection.z >= orthogon_B_z) //一重判断,如何目标对象的Z轴在两个基站之间 { middleObj.transform.position = Intersection; Debug.Log(Intersection); } } }
- C# 计算两条线段交点的位置
- java计算两条线段交点
- 计算两条直线的交点
- 计算两条直线的交点
- 两条线段是否相交,计算交点公式。
- 两条线段是否相交,计算交点公式。
- ObjectARX学习笔记(廿八)---如何计算两条线段的交点AcGeLineSeg3d
- 计算线段的交点
- hunnu10522(判断两条线段的交点个数)
- 判断两条直线(线段)的交点问题
- hdu1086计算n条线段的交点个数
- poj1269 Intersecting Lines(计算几何--两条直线的交点)
- 两条线段求交点编程
- 计算几何--两圆的位置关系(求交点个数及交点坐标)
- 使用投影计算两条直线交点
- poj 1269判断两条直线的位置关系 以及求交点
- 判断两条线段/直线相交,并求交点
- 判断两条线段/直线相交,并求交点
- oracle-sql统计列m下的不重复列n的数目
- 一致性hash算法
- OpenGL--粒子系统
- HDU 2037 今年暑假不AC (结构体排序示例题)
- poi中文api文档
- C# 计算两条线段交点的位置
- 商品展示案例
- TP虚拟按键部分相关调试经验
- openSession和getCurrentSession区别详解
- 【python】mysqldb connect
- Qt中使用QProcess备份和恢复Mysql数据库
- 网页加载的时候timing中的waiting时间过长导致页面加载过慢解决。
- Android Studio新建通用library及添加依赖
- WEB消息推送—GoEasy