鱼C论坛

 找回密码
 立即注册
查看: 273|回复: 12

射线和矩形的交点

[复制链接]
发表于 2023-3-5 16:16:02 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 鱼cpython学习者 于 2023-3-15 19:30 编辑

矩形没有旋转,四条边都和坐标轴平行或者垂直
射线从原点出发
射线与矩形不一定有交点,必须先进行检测

给出矩形左上角的顶点(x, y)和长宽width, height,射线与x轴正半轴的夹角angle,求射线与矩形的交点,并返回离原点最近的那一个点的坐标
目前我的方法是分别检测四条边和射线的交点,求出所有的点后再取和原点距离最近的点
有没有不用每条边都检测一遍的方法?
附加:矩形可以在任何地方,可以跨象限,可以某条边与坐标轴重合;angle的取值范围是0~360

编辑:
似乎有很多人读不懂我的题,我也觉得我的题目有点抽象了
这有个例子:一个子弹从原点射出,击中一堵墙,求子弹击中的那个点的坐标。墙的两条边平行于y轴,两条边平行于x轴

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2023-3-5 21:20:12 From FishC Mobile | 显示全部楼层
顶一顶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2023-3-6 14:38:30 | 显示全部楼层

都不知道你的已知条件和预期结果   根本就看不明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2023-3-6 20:54:57 | 显示全部楼层
wp231957 发表于 2023-3-6 14:38
都不知道你的已知条件和预期结果   根本就看不明白

这有啥不明白的,已知条件就是平面直角坐标系中的一条射线和一个矩形,预期结果就是射线和矩形边缘的交点,把计算过程封装成一个函数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2023-3-9 12:36:29 | 显示全部楼层
我再顶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2023-3-10 22:00:07 | 显示全部楼层
本帖最后由 歌者文明清理员 于 2023-3-10 22:05 编辑


我不知道,我只知道aa+bb=cc
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2023-3-13 18:40:40 | 显示全部楼层
帮顶
我是歌者文明清理员的小号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2023-3-13 19:14:29 | 显示全部楼层
顶(使劲读题目ing)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 7 天前 | 显示全部楼层
不太理解,看完你的问题,我变相的理解为求满足垂直平行条件矩阵的四顶点中,离原点最近的点。
这大概不是你的本意,但我理解下来得到的就是这样。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 7 天前 | 显示全部楼层
曼查克 发表于 2023-3-15 15:30
不太理解,看完你的问题,我变相的理解为求满足垂直平行条件矩阵的四顶点中,离原点最近的点。
这大概不是 ...

确实不是我的本意。你可以这样理解:
一个子弹从原点射出,击中一堵平行垂直的墙,求子弹击中的那个点的坐标。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 3 天前 | 显示全部楼层
本帖最后由 歌者文明清理员 于 2023-3-19 07:29 编辑

给个测试条件呗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 3 天前 | 显示全部楼层

比如说
  1. x, y = 6, 10
  2. width, height = 10, 10
  3. angle = 45
  4. target = (6, 6) # 正确的结果
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 3 天前 | 显示全部楼层

为什么我得到的结果是(-2,-6)
应该不对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 )

GMT+8, 2023-3-22 02:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表