Geometry 从点查找圆中最远的点
我试图找到从2D空间中的指定点获取圆的最远点的最佳方法。到目前为止,我发现的是如何得到点和圆位置之间的距离,但我不完全确定如何展开它来找到圆的最远点 已知变量为:Geometry 从点查找圆中最远的点,geometry,Geometry,我试图找到从2D空间中的指定点获取圆的最远点的最佳方法。到目前为止,我发现的是如何得到点和圆位置之间的距离,但我不完全确定如何展开它来找到圆的最远点 已知变量为: a点 点b(圆位置) 半径r(圆半径) 为了找到点和圆位置之间的距离,我发现: xd=x2-x1 yd=y2-y1 距离=平方根(xd*xd+yd*yd) 在我看来,这是解决方案的一部分。如何将其展开以获得下图中点x的位置 作为问题的另一个可选部分:我在一些地方读到,不使用平方根就可以得到距离部分,这是非常高性能的,如果需要快速
- a点
- 点b(圆位置)
- 半径r(圆半径)
我们现在有一个向量,从圆心指向一个(如果B是原点,跳过这个,只考虑点A向量)。
现在我们的向量指向正确的方向
现在我们的向量偏移正确,所以它的端点就是我们想要的点
(回复伪码)
假设你有一个vec2类,它是一个由两个浮点数组成的结构,带有向量减法和标量乘法的运算符(非常简单,大约有十几行代码)和一个函数
normalize
,它只需要是一个与inv_sqrt(x*x+y*y)
相乘的简写(这里我的伪代码类似于C++/GLSL混合代码)可能看起来像这样:
vec2 most_distant_on_circle(vec2 const& B, float r, vec2 const& A)
{
vec2 P(A - B);
normalize(P);
return -r * P + B;
}
您使用的大多数数学库都应该内置所有这些函数和类型。HLSL和GLSL将它们作为第一类原语和内在函数。有些GPU甚至有专用的规范化指令。这是怎么回事
我们现在有一个向量,从圆心指向一个(如果B是原点,跳过这个,只考虑点A向量)。
现在我们的向量指向正确的方向
现在我们的向量偏移正确,所以它的端点就是我们想要的点
(回复伪码)
假设你有一个vec2类,它是一个由两个浮点数组成的结构,带有向量减法和标量乘法的运算符(非常简单,大约有十几行代码)和一个函数
normalize
,它只需要是一个与inv_sqrt(x*x+y*y)
相乘的简写(这里我的伪代码类似于C++/GLSL混合代码)可能看起来像这样:
vec2 most_distant_on_circle(vec2 const& B, float r, vec2 const& A)
{
vec2 P(A - B);
normalize(P);
return -r * P + B;
}
你会使用的大多数数学库都应该内置所有这些函数和类型。HLSL和GLSL将它们作为第一类原语和内在函数。一些GPU甚至有专用的规范化指令。你比我快。我正要写:投影到圆上,然后镜像坐标。哇,你的答案是pret很快。虽然可能需要更多的细节。考虑到我在这里问了这个问题(而不是),我敢要求一些伪代码。谢谢!谢谢!这正是我所需要的。我感谢你的时间和你编辑回复的意愿。你击败了我。我正要写:投影到圆上,然后镜像坐标。哇,你的答案来得很快。尽管可能会感谢你提供更多细节。给出我在这里问了这个问题(而不是),我敢问一些伪代码。谢谢!谢谢!这正是我所需要的。我感谢你花时间和意愿编辑回复。