gpt4 book ai didi

unity3d - 寻找线段-矩形交点

转载 作者:行者123 更新时间:2023-12-05 01:28:10 25 4
gpt4 key购买 nike

简单地说,我有:

  • 一个视口(viewport)矩形,其中 (0,0) 是左下角,(1,1) 是右上角,(0.5,0.5) 是屏幕中心。
  • 矩形外的点 (a,b)。

  • 这是在视口(viewport)坐标中,所以 +X 是正确的,+Y 在屏幕上。

    我需要一个函数,它接受这些参数并返回矩形边缘上的点,线(在矩形中心 (0.5,0.5) 和点 (a,b) 之间)与它相交。

    我知道如何在给定坐标的纸上做到这一点,但是当它归结为代码时我无法弄清楚。另外,我意识到这样的问题已经在不同的线程中得到解决——但我在任何地方都找不到简单的输入到输出函数。

    我在 Unity3D 引擎中执行此操作,因此最好使用 Javascript,但任何语言或伪代码都会有很大帮助,因为我可能可以手动转换它。

    编辑
    为了澄清,我正在寻找类似的东西:
    function IntersectFromViewportCenter(x : float, y : float) {
    ...
    return Point(x1, y1);
    }

    其中 (x,y) 是圆外的点, (x1,y1) 是交点。

    谢谢

    最佳答案

    将所有系统移动到点 (0,0) 的中心。计算从原点到(移动)点 (x',y') 的光线与框 (-1,-1)-(1,1) 的交点。缩放并向后移动。我没有考虑盒子内有点的琐碎案例(需要吗?)

    x = x - 0.5
    y = y - 0.5
    if Abs(x) >= Abs(y) then //vertical box edge
    y1 = y/x //care with case both y and x = 0
    x1 = Sign(x) //+-1
    else // horizontal edge
    x1 = x/y
    y1 = Sign(y)

    x1 = 0.5*x1 + 0.5
    y1 = 0.5*y1 + 0.5

    关于unity3d - 寻找线段-矩形交点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10657128/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com