这两个焦点本身并没有定义一个椭圆,你需要一个更真实的参数。这可以从以下事实看出:人们可以通过在焦点周围缠绕一串固定长度并用绘图笔保持嘲讽来绘制椭圆。这是您缺少的字符串长度。所以你需要例如椭圆上的一个点,或类似的东西。
再给定一个参数和焦点之间的距离,您可以计算所有其他参数,例如长半轴和短半轴的长度,因为您需要它们用于路径规范。因此,例如,如果您有一个点应该位于椭圆上,那么您可以计算到两个焦点的距离,将这些长度相加,并知道总和等于 2 a,其中a是半长的长度轴。然后你得到半短轴的长度为b = sqrt( a 2 - f <sup>2),其中 2 f是焦点之间的距离。
既然你已经在你的问题中包含了 130% 的部分,我也可以给你一个计算。
你有一个= 1.3 <i>f。从中你得到b = sqrt(1.3 2 - 1) f ≈ 0.83 <i>f。请注意,f仍然指的是焦点之间距离的一半。您还需要计算椭圆上的两个点。在主轴上选择这些是最容易的。所以如果F和G是你的焦点,那么你有P = ( f − a )/(2 f ) × F + ( f + a )/(2f ) × G作为椭圆上的一点,Q = ( f + a )/(2 f ) × F + ( f - a )/(2 f ) × G作为另一点。
一旦有了长半轴和短半轴的长度,就可以将它们用作svg 路径的arc 命令180,50
的半径参数,在您的示例中,它们是前两个参数。您可以使用或类似方法从连接焦点的线的斜率计算旋转atan2
,并将其用作第三个参数而不是100
. 任意设置大弧标志(例如 0),任意设置扫描标志,但椭圆的两半相等(例如 0)。所有这些术语均参考 SVG 1.1 规范中的描述。移动到P,用我刚才描述的参数做一个圆弧指向Q,另一个圆弧回到P。
结果应该是与您的参数匹配的完整椭圆。
两条弧线的组合是在后来的编辑中编写的。