※この翻訳ドキュメントはスクリプトによって出力・同期されています。内容が怪しそうな場合はGitHubにissueを追加したり英語の原文の確認をお願いします。

PathBezier3D クラス

このページではPathBezier3Dクラスについて説明します。

クラス概要

PathBezier3Dクラスはパス上に3次のベジェ曲線を設定するためのクラスです。

このクラスは2つの制御点を持ちます(比較対象として、2次のベジェ曲線では1つの制御点のみを持ちます)。

主にこの設定はPathクラスのコンストラクタとdraw_pathメソッドのインターフェイスで使用されます。

基本的な使い方

PathBezier3Dクラスのコンストラクタではcontrol_x1control_y1control_x2control_y2dest_xdest_yの各引数の指定が必要です。

control_x1control_y1はベジェ曲線の最初の制御点の位置を決定するための座標指定です。

同様に、control_x2control_y2はベジェ曲線の2番目の制御点の位置を決定するための座標指定です。

dest_xdest_yはベジェ曲線の終点座標の指定となります。

import apysc as ap

ap.Stage(
    background_color=ap.Color("#333"),
    stage_width=250,
    stage_height=270,
    stage_elem_id="stage",
)

path: ap.Path = ap.Path(
    path_data_list=[
        ap.PathMoveTo(x=50, y=200),
        ap.PathBezier3D(
            control_x1=50,
            control_y1=25,
            control_x2=200,
            control_y2=25,
            dest_x=200,
            dest_y=200,
        ),
    ],
    line_color=ap.Color("#0af"),
    line_thickness=5,
)

ap.save_overall_html(dest_dir_path="path_bezier_3d_basic_usage_1/")

以下のコード例では、シアン色の円はベジェ曲線の最初の制御点を示しています。

マゼンタの円ではベジェ曲線の2つ目の制御点を示しています。

また、黄色の円ではベジェ曲線の終点座標を示しています。

import apysc as ap

ap.Stage(
    background_color=ap.Color("#333"),
    stage_width=250,
    stage_height=270,
    stage_elem_id="stage",
)

CONTROL_X1: float = 50
CONTROL_Y1: float = 25
CONTROL_X2: float = 200
CONTROL_Y2: float = 25
DEST_X: float = 200
DEST_Y: float = 200

path: ap.Path = ap.Path(
    path_data_list=[
        ap.PathMoveTo(x=50, y=200),
        ap.PathBezier3D(
            control_x1=CONTROL_X1,
            control_y1=CONTROL_Y1,
            control_x2=CONTROL_X2,
            control_y2=CONTROL_Y2,
            dest_x=DEST_X,
            dest_y=DEST_Y,
        ),
    ],
    line_color=ap.Color("#fff"),
    line_thickness=5,
)

RADIUS: int = 10
cyan_circle: ap.Circle = ap.Circle(
    x=CONTROL_X1,
    y=CONTROL_Y1,
    radius=RADIUS,
    fill_color=ap.Color("#0af"),
)

magenta_circle: ap.Circle = ap.Circle(
    x=CONTROL_X2,
    y=CONTROL_Y2,
    radius=RADIUS,
    fill_color=ap.Color("#f0a"),
)

yellow_circle: ap.Circle = ap.Circle(
    x=DEST_X,
    y=DEST_Y,
    radius=RADIUS,
    fill_color=ap.Color("#ff0"),
)

ap.save_overall_html(dest_dir_path="path_bezier_3d_basic_usage_2/")

相対座標設定

コンストラクタのrelativeのオプション引数はその挙動を変更します。

例として、もしその引数にTrueを指定した場合座標は相対座標として設定されます。

デフォルト値はFalseとなっており、この設定では絶対座標として扱われます。

基準点は開始位置の座標となります。最初の制御点や2つ目の制御点ではありません。

以下のコード例ではrelativeの設定をしてベジェ曲線を描画しています。

import apysc as ap

ap.Stage(
    background_color=ap.Color("#333"),
    stage_width=250,
    stage_height=270,
    stage_elem_id="stage",
)

path: ap.Path = ap.Path(
    path_data_list=[
        ap.PathMoveTo(x=50, y=200),
        ap.PathBezier3D(
            control_x1=0,
            control_y1=-175,
            control_x2=150,
            control_y2=-175,
            dest_x=150,
            dest_y=0,
            relative=True,
        ),
    ],
    line_color=ap.Color("#0af"),
    line_thickness=5,
)

ap.save_overall_html(dest_dir_path="path_bezier_3d_relative/")

PathBezier3D クラスのコンストラクタのAPI

特記事項: このAPIドキュメントはドキュメントビルド用のスクリプトによって自動で生成・同期されています。そのためもしかしたらこの節の内容は前節までの内容と重複している場合があります。

[インターフェイスの構造] __init__(self, control_x1: Union[float, apysc._type.number.Number], control_y1: Union[float, apysc._type.number.Number], control_x2: Union[float, apysc._type.number.Number], control_y2: Union[float, apysc._type.number.Number], dest_x: Union[float, apysc._type.number.Number], dest_y: Union[float, apysc._type.number.Number], *, relative: Union[bool, apysc._type.boolean.Boolean] = False, variable_name_suffix: str = '') -> None


[インターフェイス概要]

SVGの3次のベジェ曲線(C)のパスデータのためのクラスです。


[引数]

  • control_x1: float or Number

    • ベジェ曲線の最初の制御点のX座標。

  • control_y1: float or Number

    • ベジェ曲線の最初の制御点のY座標。

  • control_x2: float or Number

    • ベジェ曲線の2つ目の制御点のX座標。

  • control_y2: float or Number

    • ベジェ曲線の2つ目の制御点のY座標。

  • dest_x: float or Number

    • 終点のX座標。

  • dest_y: float or Number

    • 終点のY座標。

  • relative: bool or Boolean, default False

    • パスの座標が相対座標として扱うかもしくは絶対座標として扱うかどうかの真偽値。

  • variable_name_suffix: str, default “”

    • JavaScript上の変数のサフィックスの設定です。この設定はJavaScriptのデバッグ時に役立つことがあります。


[コードサンプル]

>>> import apysc as ap
>>> stage: ap.Stage = ap.Stage()
>>> sprite: ap.Sprite = ap.Sprite()
>>> sprite.graphics.line_style(color=ap.Color("#fff"), thickness=3)
>>> path: ap.Path = sprite.graphics.draw_path(
...     path_data_list=[
...         ap.PathMoveTo(x=0, y=50),
...         ap.PathBezier3D(
...             control_x1=0,
...             control_y1=0,
...             control_x2=50,
...             control_y2=0,
...             dest_x=50,
...             dest_y=50,
...         ),
...         ap.PathBezier3DContinual(
...             control_x=100, control_y=100, dest_x=100, dest_y=50
...         ),
...     ]
... )

[関連資料]