早教吧 育儿知识 作业答案 考试题库 百科 知识分享

java取得线段与矩形的交点RT,现有两个点A(X1,Y1),B(X2,Y2)组成的线段,另有一个矩形的四个点D(X3,Y3),E(X4,Y4),F(X5,Y5),G(X6,Y6),矩形不是和X轴,Y轴平行的(即可旋转的)求线段与矩形相交的点的坐标应

题目详情
java取得线段与矩形的交点
RT,现有两个点A(X1,Y1), B(X2,Y2)组成的线段, 另有一个矩形的四个点D(X3,Y3), E(X4,Y4), F(X5,Y5), G(X6,Y6), 矩形不是和X轴,Y轴平行的(即可旋转的)
求线段与矩形相交的点的坐标
应该有四种情况:
①不相交
②一个交点
③两个交点
④与某条边重合(此时按①处理)

要求:纯数学计算

PS:算法我会, 代码不愿写, 只求有轮子拿来就用
有满意答案追加悬赏200
▼优质解答
答案和解析
解法一:
可以把矩形看成是4条直线相交段构成的,把这4条直线的方程写出来,在把直线AB的方程也写出来。把直线AB的方程和分别和这4条边的直线的某一条组成方程组求
1、若都无解,肯定不相交。
2、有1个或2个解,可能相交。看求得的横坐标和纵坐标是否同时在线段DE(或EF或FG或GD)和线段AB的范围内。
3、计算过程中x、y的系数完全抵消,这是重合情况。
解法二:AB和矩形DEFG相交,有两种情况:
(1)有一个点在矩形内部,另一个点在矩形外部,这时候只有一个交点。
(2)两个点都在矩形外部,这时候有两个交点。
(1)和(2)不同时满足。
对于(1)通过判断A、B相对于矩形4条边的位置就可以确定。
对于(2)先计算出AB、DE、EF、FG、GD这5条直线的斜率,然后可以根据斜率判断是否相交,若斜率相同可能是重合或平行要排除。若只与其中一条相交,归结为情况(1),排除。然后,求出相交点,看求得的横坐标和纵坐标是否同时在线段DE(或EF或FG或GD)和线段AB的范围内。