SVGのキュービックベジエカーブ:滑らかな曲線を描くための高度なヒント
以前の記事「SVGで複雑なパスの作成方法」では、
要素を探り、一連の直線とアークを描画して任意の形状を作成する方法を示しています。 (通常、完全なフォントをダウンロードせずにフォントをコピーするために使用されます。)<path></path>
属性は、滑らかな曲線を描くためのいくつかの追加のトリックを提供します。この記事では、Cubic Bezier Curvesについて説明します。また、「SVG画像に二次ビジエ曲線を描く方法」を参照することもできます。 d
立方体のbezier曲線は何ですか?
デスクトップパブリッシングおよびグラフィックスソフトウェアでCubic Bezier曲線に遭遇した可能性があります。それらは、出発点(P0)とエンドポイント(P3)を定義します。ただし、二次曲線はコントロールポイントを使用しますが、立方体のbezier曲線には2つのライン(P1とP2)の両端に2つあります。ウィキペディアのbezier曲線ページは、優れた生成されたイラストを提供します:
画像ソース
Wolfram Mathworldで困難な方程式を表示することもできます。
立方体のベジエ曲線は、より多くの可能性を提供します。 2つの制御ポイントは、逆またはそれ自体の曲線を生成できます。
パスパズル
キュービックベジエカーブの使用パス
属性のディレクティブ定義:d
C
初期
<code class="language-xml"><path d="M100,250 C100,100 400,100 400,250"></path></code>
コマンドは、ペンを最初のポイント(100,250)に移動します。
の後には、最初の制御ポイント(100,100)、2番目の制御ポイント(400,100)、および最終エンドポイント(400,250)の3つの座標が続きます。 M
C
小文字
を使用して、絶対座標の代わりに相対座標を表すこともできます。次の曲線は同じで、エンコードしやすい場合があります。
c
最後に、略語
および
<code class="language-xml"><path d="M100,250 c0,-150 300,-150 300,0"></path></code>
命令があります(通常のように、小文字オプションは絶対座標ではなく相対座標を示します)。これらは、別のエンドポイントとそれに関連する制御ポイントを設定することにより、複数の曲線を接続するための2つの追加の座標を受け入れます。開始制御ポイントは、前の曲線のエンドコントロールポイントと同じであると想定されています。たとえば、次のパスを検討してください
S
上記のように、100,250(100,100のコントロールポイント)から400,250(400,100のコントロールポイント)に曲線を引きます。次に、別の曲線を400,250(コントロールポイント、400,100)から700,250(コントロールポイント700,400)に描きます。
s
<code class="language-xml"><path d="M100,250 C100,100 400,100 400,250 S700,400 700,250"></path></code>
キュービックベジエ曲線をエンコードして視覚化するのは少し難しい場合があるため、このクイックジェネレーションツールは
コードを生成します。
codepen link
それに応じて、曲線の両端でコントロールポイントをドラッグします。曲線自体をクリックしてフィルエフェクトを切り替えると、効果がend Z
コマンドに追加されます。
このツールは、すべての画面サイズで適切に機能するように、DOMページ座標をSVG座標に変換する必要があることに注意してください。これは予想よりも少し複雑な場合があるため、詳細については「DOM座標からSVG座標に変換する方法、次に戻る方法」を参照してください。
わずかにシンプルなオプションが必要な場合は、SVG画像に2次bezier曲線を作成してみてください。
HTML5 SVG Cubic Curves(FAQ)
についてのFAQ
SVGキュービックビジエカーブと二次ビジエ曲線の違いは何ですか?
SVGキュービックベジエカーブと二次ビジエ曲線は、どちらもSVGグラフィックスで使用されるパスコマンドタイプです。それらの主な違いは、使用する制御ポイントの数です。 Cubic Bezier Curveは2つの制御ポイントを使用して、より複雑で柔軟な形状を作成できます。一方、二次ビジエ曲線は1つの制御ポイントのみを使用しているため、柔軟性が低下しますが、使いやすくなります。
以上がHTML5 SVGでキュービックベジエ曲線を描く方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。