gpt4 book ai didi

language-agnostic - 在给定距离的线上寻找点

转载 作者:行者123 更新时间:2023-12-03 13:33:17 27 4
gpt4 key购买 nike

我有一个问题,我知道一条线,我只知道它的斜率(m)和它的一个点A(x,y),我如何计算距该点的距离(d)的这条线上的点(实际上是其中的两个)一种 ???
我问这个问题是为了找到经过A(x,y)并有一段距离的线上的像素强度。在这种情况下,距离将是像素数量。

最佳答案

我建议将线转换为参数格式而不是点斜率。也就是说,该线的参数函数返回沿该线的一些参数t的值。您可以将线表示为引用点,并可以将 vector 表示通过该点的线的方向。这样,您只需从A点向前和向后移动d个单位即可获得其他点。

由于您的直线的斜率为m,因此其方向 vector 为<1,m>。因为它在x中每1个像素移动y中m个像素。您想将该方向 vector 归一化为单位长度,以便除以 vector 的大小。

大小=(1 ^ 2 + m ^ 2)^(1/2)

N = <1,m> /幅度= <1 / /幅度,m /幅度>

归一化方向 vector 为N。现在您差不多完成了。您只需要以参数化格式为线写方程式:

f(t)= A + t * N

这使用vector math。具体来说,是scalar vector multiplication(具有您的参数t和 vector N)和vector addition(具有A和t * N)。函数f的结果是直线上的一个点。您正在寻找的两个点是f(d)和f(-d)。用您选择的语言来实现。

与到目前为止的所有其他答案相比,使用此方法的优势在于,您可以轻松地扩展此方法以支持斜率为“无限”的直线。也就是说,一条类似x = 3的垂直线。您实际上并不需要斜率,只需要归一化方向 vector 即可。对于垂直线,它是<0,1>。这就是图形操作经常使用 vector 数学的原因,因为计算更简单明了,不易出现奇异性。
乍一看似乎有些复杂,但是一旦掌握了 vector 运算的功能,许多计算机图形任务就会变得容易得多。

关于language-agnostic - 在给定距离的线上寻找点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1250419/

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