2

楕円の焦点の座標があります。1 つの焦点から楕円の境界、2 番目の焦点までの距離は、軸間の合計距離の 130% に等しくなります。 http://www.w3schools.com/svg/svg_path.asp svg を使用してこれらの座標に基づいて楕円を描くにはどうすればよいですか? または、そのことについての非水平楕円。残念ながら、この場合は svg Ellipse を使用できません。

次の 2 つの楕円弧は楕円を形成しますが、焦点に基づいてそれらを操作する方法がわかりません。

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
     <path d="M 125,75 a180,50 100 1,1 100,50" />
     <path d="M 125,75 a180,50 100 0,0 100,50" />
</svg>
4

1 に答える 1

3

2つの焦点自体は楕円を定義しません。もう1つの実際のパラメータが必要になります。これは、焦点の周りに固定長の文字列を巻き付け、描画ペンでそれを罵倒することによって楕円を描くことができるという事実から見ることができます。足りないのはその文字列の長さです。したがって、たとえば、楕円上の1つのポイント、または同様のものが必要になります。

もう1つのパラメーターと焦点間の距離が与えられると、パスの指定に必要な、セミメジャー軸とセミマイナー軸の長さなどの他のすべてのパラメーターを計算できます。したがって、たとえば、楕円上にある必要がある1つのポイントがある場合、2つの焦点までの距離を計算し、それらの長さを加算して、合計が2 aに等しいことを知ることができます。ここで、aはセミメジャーの長さです。軸。次に、半短軸の長さをb = sqrt(a 2 - f  <sup> 2)として取得します。ここで、2fは焦点間の距離です。

質問に130%の部分が含まれているので、その計算も行うことができます。a = 1.3<i>f
があります。それから、b = sqrt(1.3 2 --1 )f≈0.83<i>fが得られます。fは、焦点間の距離の半分を指していることに注意してください。また、楕円上の2つの点を計算する必要があります。主軸上でこれらを選択するのが最も簡単です。したがって、FGが焦点である場合、P =(fa)/(2 f)× F +(f + a)/(2楕円上の1つの点としてf)× G 、もう1つの点としてQ =(f + a)/(2 f)× F +(f --a)/(2 f)× G

セミメジャー軸とセミマイナー軸の長さが決まったら、これらをsvgパスのarcコマンド180,50の半径引数として使用できます。これは、例では最初の2つのパラメーターです。atan2または同様のものを使用して、焦点を結ぶ線の傾きから回転を計算し、それをの代わりに3番目のパラメータとして使用できます100。大弧フラグを好きなように設定し(例:0)、スイープフラグを任意に設定しますが、楕円の2つの半分(例:0)は同じです。これらの用語はすべて、SVG1.1仕様の説明を参照しています。Pに移動し、先ほど説明したパラメータを使用してQを指すようにアークを実行し、別のアークをPに戻します。

結果は、パラメータに一致する完全な楕円になるはずです。 2つの弧の組み合わせは、後の編集で書かれました。

于 2012-08-06T22:02:04.867 に答える