答えはYES。射影2D幾何学に関わる旅の準備をしておいてね。ギリシャ人が円錐曲線に魅了されていたのを思い出してみて。楕円、双曲線、放物線、そしてもちろん円は、すべて射影2D変換の対象として同じものなんだ。無限に延びる(ダブル)円錐を平面で「切る」ことで円錐曲線が得られるから、名前の由来にもなってる。だから、2つの端点を持って(曲線がこれらの点を通過する際に補間する制御点)、3つ目の外挿制御点を持つことができる。3つの制御点を持つ2次ベジェセグメントのような感じだけど、外挿制御点(「中間」制御点)には同次の「w」座標を持たせることができる。だから、3つの点(x₀,y₀)、(x₁,y₁,w₁)、(x₂,y₂)を考えてみて。あるいは、これを(x₀,y₀,1)、(x₁,y₁,w₁)、(x₂,y₂,1)として考えることもできる。これは実質的に、ラショナル2次ベジェセグメントと呼ばれるものだ(NURBSのRと同じ意味でラショナル)。実は、形式(X₀,Y₀,W₀)、(X₁,Y₁,W₁)、(X₂,Y₂,W₂)の3つの同次一般制御点を、標準形(x₀,y₀,1)、(x₁,y₁,w₁)、(x₂,y₂,1)に再パラメータ化することは常に可能なんだ。基本的には、端点のために単位w値を強制する感じ。この標準形では、w₁の値には自然な解釈がある。w₁==1のとき、曲線は放物線セグメントになる(だから、SVGの2次ベジェセグメントに正確に一致するようにパラメータ化されてる)。双曲線セグメントはw₁>1; 楕円セグメントは0。ブール値なしでより良いパラメータ化ができるかも?うん、できるよ。円錐セグメントのパラメータ化にはブール値がない。> SVGの仕様ではrx/ry/回転に加えていくつかのブール値を使ってる。正直、SVGの部分的楕円弧仕様は一見合理的に見えるけど、実際はめちゃくちゃで直感的とは言えない。rx/ry/回転やブール値を変更できるSVGツールで遊んでみると、これらを変えると本当に驚くことがあるよ。円錐セグメントでは、2次ベジェセグメントのような感じだけど、w₁を「引っ張る」ための追加の制御点がある。w₁==1から始めると、それは2次ベジェセグメントになる。wを1以上に増やすと、曲線は「鋭く」なっていく(双曲線的に)。wを1未満に減らすと、曲線は「平ら」になっていく(楕円的に)。まるでテンションコントロールみたいだね。w₁の負の値は問題があるから、w>0の円錐セグメントのスプラインから「大きな弧」(外部円錐セグメントとも呼ばれる)を常に構築できるよ。これは特に難しくない。円錐セグメントには大きな表現上の利点もある。関与するスカラーはすべてスカラー「座標」(x, y, そしてw)なんだ。これを、9つの異なるタイプの値が必要なSVGの部分的楕円弧パラメータ化と対比してみて。2つの長さ(半径)、1つの角度(回転)、2つのブール値(大きなフラグ、スイープ方向)、2つの制御点(4つの座標)。SVGのパラメータ化では双曲線セグメントを描けない!それなのに、360度を超える角度のような変な状況を許容してる(だから弧が何度もループすることができる??)。(SVGは、弧が7つの値だけで指定されているように見せかけているけど、それは前のコマンドから初期の端点を借りているからで、9つの値が「独立した」部分的楕円弧を説明するにはもっと正直だよ。)もし自分の曲線セグメントをGPUに載せるなら、一貫した浮動小数点座標のバッファがあった方がいいよね、異なるタイプの値ではなくて。さらに魅力的なのは、(x₀,y₀,1)、(x₁,y₁,w₁)、(x₂,y₂,1)は、3x3の射影2D行列によって変換できる同次点として扱うことができ、変換された制御点から得られる曲線は、曲線の点を変換するのと同じになるんだ。SVGでパラメータ化された部分的楕円弧にせっかくせんとするなら、シアー/スケール/トランスレート/回転、さらには射影を適用したい?運が必要だね。これを本当にやりたい人へのヒント:SVGの弧を1つ以上の円錐セグメントのスプラインに変換して、その円錐セグメントの制御点を変換行列で変換し、変換された円錐セグメントを不格好なSVGの弧に再構成してみて。基本的に、SVGの弧パラメータ化は、弧の2D変換に対するオイラー角のようなものだよ!