因此,我给出了省略号 - 它们由中点,水平半径(rh)和垂直半径(rv)定义 . 我正在使用sin / cos绘制它们,结果对我来说看起来相当不错(只是确保这不是错误源) .
现在说我有一个角度(或方向向量),我希望椭圆的轮廓上的点具有该角度/方向 . 我的直观方法是简单地使用方向向量,对其进行归一化并将其x分量乘以rh,其y分量乘以rv . 现在,我的书面程序和我在纸上所做的所有计算都没有给出我想要的点,而是另一个,尽管它仍然在椭圆的轮廓上 . 但是,如果方向是(1,0),(0,1),( - 1,0),(0,-1)之一,则此方法可以正常工作(因此它适用于0°,90°, 180°,270°) .
虽然互联网上有大量有关椭圆本身的数据,但我找不到有关我的特定问题的任何信息 - 我无法提出比上述更好的解决方案 .
那么,任何想法如何实现这一目标?
2 回答
如果我理解你的要求那么我认为你需要的是polar form of an ellipse,其中角度是从椭圆中心测量的 . 使用这种形式的椭圆,您将能够为给定的θ选择评估椭圆半径值,然后绘制您的点 .
如果您看一下这个gif图像,您会看到为什么使用 parametric 角度会在θ= 90,180,270和360度http://en.wikipedia.org/wiki/File:Parametric_ellipse.gif处给出正确的结果 only . 使用极坐标形式作为椭圆,你应该得到你想要的点 .
你是对的 - 参数角度与所需点和X轴之间的角度不同 . 但是,它们的切线是成比例的(因子为
rh/rv
),因此您可以使用此方法:获取所需角度的切线
将此切线乘以
rh/rv
使用trigonometric identities从切线计算正弦和余弦
根据参数(中点,rh,rv)缩放/定位点
在Python中: