两条线段是否相交及交点坐标
思路:
已知两条线段的起点和终点坐标
先分别求出两条线段的解析式,然后分情况讨论。
lua代码如下:
function UIUtil:getPosOfTowLine(pointA, pointB, pointM, pointN) -- AB线段,MN线段
local Xa, Ya = pointA.x,pointA.y -- AB线段 首坐标
local Xb, Yb = pointB.x, pointB.y -- AB线段 尾坐标
local Xm, Ym = pointM.x, pointM.y -- MN线段 首坐标
local Xn, Yn = pointN.x, pointN.y -- MN线段 尾坐标
-- 两条线段的斜率,需要考虑斜率不存在的情况
local Kab = (Xb - Xa ~= 0) and (Yb - Ya) / (Xb - Xa) or nil -- 线段AB斜率,方程式:y = x * Kab + Ya - Xa * Kab
local Kmn = (Xn - Xm ~= 0) and (Yn - Ym) / (Xn - Xm) or nil -- 线段MN斜率,方程式:y = x * Kmn + Ym - Xm * Kmn
print("Kab, Kmn is ---", tostring(Kab), tostring(Kmn))
-- 两条线段斜率不同时 才会相交。先求出两直线交点坐标,再判断该点是否在线段ab上
local Xp, Yp -- 设交点坐标为 P
if Kab and Kmn then -- 斜率都存在
if Kab ~= Kmn then -- 还要考虑斜率为0不能做分母的情况
if Kab == 0 then -- 线段ab:解析式 y = Ya
Xp = (Ya - Ym + Xm * Kmn) / Kmn
Yp =

通过起点和终点坐标判断两条线段是否相交,并给出交点坐标。使用lua编写代码实现,该方法可扩展应用于线段与多边形交点的计算。

1507

被折叠的 条评论
为什么被折叠?



