gpt4 book ai didi

java - 在处理中计算椭圆和直线的交点

转载 作者:行者123 更新时间:2023-12-02 06:35:34 26 4
gpt4 key购买 nike

我在计算椭圆和直线的交点时遇到问题。

假设我在点 (0/0) 处有一个半径为 500 的椭圆。另外,我正在从点 (0/0) 到 (mouseX, mouseY) 绘制一条线。

首先,我检查鼠标坐标是否在椭圆之外

if((mouseX*mouseX)+(mouseY*mouseY)) > 500*500){/*...*/}

现在,每当鼠标坐标位于该椭圆之外时,我想绘制的线不是直到鼠标,而是直到椭圆的“边界”。为此,我必须有直线和椭圆的交点。

是否有任何库可以简化此类三角函数任务?还有其他或多或少简单的方法来计算交集吗?

最佳答案

根据您所说的,我做出以下假设:

  • 椭圆始终是圆形(始终具有相同的半径)。
  • 该线始终从圆心绘制。

如果这些都是真的,那么问题其实就很简单了。您需要做的就是截断直线,使其长度与圆的半径相同,这就是交点。

如果鼠标位于椭圆之外:

  1. 存储描述线条的 vector ;在本例中(mouseX,mouseY)。
  2. 标准化 vector (将每个分量除以线的长度)。
  3. 将 vector 乘以圆的半径。

vector 现在包含相对于圆心的交点。

您不必为此使用 vector 类,尽管它可能会有所帮助。

如果您的圆和直线不是从原点 (0,0) 开始,那么您需要进行补偿。在步骤 1 中,从 (mouseX,mouseY) 中减去新的原点。步骤 3 后,重新添加原点以获得显示坐标。

关于java - 在处理中计算椭圆和直线的交点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19687638/

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