我在计算椭圆和直线的交点时遇到了麻烦。
假设我在半径为500的点(0/0)处有一个椭圆。另外,我是从点(0/0)到(mouseX, mouseY
)画一条线。 / p>
首先,我通过
检查鼠标坐标是否在椭圆之外if((mouseX*mouseX)+(mouseY*mouseY)) > 500*500){/*...*/}
现在,只要鼠标坐标位于该椭圆之外,我就想直到鼠标画线,但直到边界为''椭圆为了做到这一点,我必须有线和椭圆的交点。
是否有任何库可以简化这些三角函数任务?有没有其他或多或少的简单方法来计算交叉点?
答案 0 :(得分:2)
据你所说,我做了以下假设:
如果这些都是真的那么问题实际上非常简单。您需要做的就是截断直线,使其长度与圆的半径相同,并为您提供交点。
如果鼠标在椭圆之外:
矢量现在包含相对于圆心的交点。
您不必使用矢量类,尽管它可能会有所帮助。
如果您的圆和线没有在原点(0,0)上开始,那么您需要进行补偿。在步骤1中,从(mouseX,mouseY)中减去新的原点。在步骤3之后,重新添加原点以获取显示坐标。