※この翻訳ドキュメントはスクリプトによって出力・同期されています。内容が怪しそうな場合はGitHubにissueを追加したり英語の原文の確認をお願いします。
Polygon クラス¶
このページではPolygon
クラスについて説明します。
クラス概要¶
Polygon
クラスは多角形のベクターグラフィックスを生成します。
基本的な使い方¶
Polygon
クラスのコンストラクタではpoints
のリストの引数の指定が必要となります。
コンストラクタでは他のfill_color
などのスタイル設定の各引数も受け付けます。
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=75, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=100),
],
fill_color=ap.Color("#0af"),
)
ap.save_overall_html(dest_dir_path="polygon_basic_usage/")
draw_polygon インターフェイスにおける特記事項¶
draw_polygon
インターフェイスを使う形でも多角形のインスタンスを生成することができます。
関連資料:
x属性のインターフェイス例¶
x
属性ではX座標の値の更新もしくは取得を行えます:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=75, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=100),
],
fill_color=ap.Color("#0af"),
)
polygon.x = ap.Number(100)
ap.save_overall_html(dest_dir_path="polygon_x/")
特記事項: この属性の値は引数の座標の最小値と同値になります。
y属性のインターフェイス例¶
y
属性ではY座標の値の更新もしくは取得を行えます:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=75, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=100),
],
fill_color=ap.Color("#0af"),
)
polygon.y = ap.Number(100)
ap.save_overall_html(dest_dir_path="polygon_y/")
特記事項: この属性の値は引数の座標の最小値と同値になります。
fill_color属性のインターフェイス例¶
fill_color
属性は塗りの色の値の更新もしくは取得を行えます:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=75, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=100),
]
)
polygon.fill_color = ap.Color("#f0a")
ap.save_overall_html(dest_dir_path="polygon_fill_color/")
fill_alpha属性のインターフェイス例¶
fill_alpha
属性は塗りの透明度の値の更新もしくは取得を行えます:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=75, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=100),
],
fill_color=ap.Color("#0af"),
)
polygon.fill_alpha = ap.Number(0.3)
ap.save_overall_html(dest_dir_path="polygon_fill_alpha/")
line_color属性のインターフェイス例¶
line_color
属性では線の色の値の更新もしくは取得を行えます:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=75, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=100),
],
line_thickness=5,
)
polygon.line_color = ap.Color("#0af")
ap.save_overall_html(dest_dir_path="polygon_line_color/")
line_alpha属性のインターフェイス例¶
line_alpha
属性では線の透明度の値の更新もしくは取得を行えます:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=75, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=100),
],
line_color=ap.Color("#0af"),
line_thickness=5,
)
polygon.line_alpha = ap.Number(0.3)
ap.save_overall_html(dest_dir_path="polygon_line_alpha/")
line_thickness属性のインターフェイス例¶
line_thickness
属性では線の幅の更新もしくは取得を行えます:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=75, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=100),
],
line_color=ap.Color("#0af"),
)
polygon.line_thickness = ap.Int(8)
ap.save_overall_html(dest_dir_path="polygon_line_thickness/")
line_dot_setting属性のインターフェイス例¶
line_dot_setting
属性では点線のスタイル設定の更新もしくは取得を行えます:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=75, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=100),
],
line_color=ap.Color("#0af"),
line_thickness=2,
)
polygon.line_dot_setting = ap.LineDotSetting(dot_size=2)
ap.save_overall_html(dest_dir_path="polygon_line_dot_setting/")
line_dash_setting属性のインターフェイス例¶
line_dash_setting
属性では破線のスタイル設定の更新もしくは取得を行えます:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=75, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=100),
],
line_color=ap.Color("#0af"),
line_thickness=2,
)
polygon.line_dash_setting = ap.LineDashSetting(dash_size=5, space_size=2)
ap.save_overall_html(dest_dir_path="polygon_line_dash_setting/")
line_round_dot_setting属性のインターフェイス例¶
line_round_dot_setting
属性では丸ドット線のスタイル設定の更新もしくは取得を行えます:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=75, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=100),
],
line_color=ap.Color("#0af"),
)
polygon.line_round_dot_setting = ap.LineRoundDotSetting(round_size=4, space_size=3)
ap.save_overall_html(dest_dir_path="polygon_line_round_dot_setting/")
line_dash_dot_setting属性のインターフェイス例¶
line_dash_dot_setting
属性では一点鎖線のスタイル設定の更新もしくは取得を行えます:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=75, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=100),
],
line_color=ap.Color("#0af"),
)
polygon.line_dash_dot_setting = ap.LineDashDotSetting(
dot_size=2, dash_size=5, space_size=2
)
ap.save_overall_html(dest_dir_path="polygon_line_dash_dot_setting/")
rotation_around_center属性のインターフェイス例¶
rotation_around_center
属性ではインスタンスの中央座標での回転量(0~359)の更新もしくは取得を行えます:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=75, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=100),
],
line_color=ap.Color("#0af"),
)
def on_timer(e: ap.TimerEvent, options: dict) -> None:
"""
The timer event handler.
Parameters
----------
e : ap.TimerEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
polygon.rotation_around_center += 1
ap.Timer(on_timer, delay=ap.FPS.FPS_60).start()
ap.save_overall_html(dest_dir_path="polygon_rotation_around_center/")
set_rotation_around_pointとget_rotation_around_pointメソッドのインターフェイス例¶
set_rotation_around_point
メソッドは指定された座標からのインスタンスの回転量(0~359)を更新します。
同様に、get_rotation_around_point
メソッドでは指定された座標のインスタンスの回転量(0~359)を取得します:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=75, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=100),
],
line_color=ap.Color("#0af"),
)
x: ap.Int = ap.Int(100)
y: ap.Int = ap.Int(100)
def on_timer(e: ap.TimerEvent, options: dict) -> None:
"""
The timer event handler.
Parameters
----------
e : ap.TimerEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
rotation: ap.Int = polygon.get_rotation_around_point(x=x, y=y)
rotation += 1
polygon.set_rotation_around_point(rotation=rotation, x=x, y=y)
ap.Timer(on_timer, delay=ap.FPS.FPS_60).start()
ap.save_overall_html(dest_dir_path="polygon_set_rotation_around_point/")
scale_x_from_center属性のインターフェイス例¶
scale_x_from_center
属性ではインスタンスの中央座標でのX軸の拡縮値の更新もしくは取得を行えます:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=75, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=100),
],
line_color=ap.Color("#0af"),
)
direction: ap.Int = ap.Int(-1)
def on_timer(e: ap.TimerEvent, options: dict) -> None:
"""
The timer event handler.
Parameters
----------
e : ap.TimerEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
with ap.If(polygon.scale_x_from_center <= 0.001):
direction.value = 1
with ap.If(polygon.scale_x_from_center >= 2.0):
direction.value = -1
polygon.scale_x_from_center += direction * 0.005
ap.Timer(on_timer, delay=ap.FPS.FPS_60).start()
ap.save_overall_html(dest_dir_path="polygon_scale_x_from_center/")
scale_y_from_center属性のインターフェイス例¶
scale_y_from_center
属性ではインスタンスの中央座標でのX軸の拡縮値の更新もしくは取得を行えます:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=75, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=100),
],
line_color=ap.Color("#0af"),
)
direction: ap.Int = ap.Int(-1)
def on_timer(e: ap.TimerEvent, options: dict) -> None:
"""
The timer event handler.
Parameters
----------
e : ap.TimerEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
with ap.If(polygon.scale_y_from_center <= 0.001):
direction.value = 1
with ap.If(polygon.scale_y_from_center >= 2.0):
direction.value = -1
polygon.scale_y_from_center += direction * 0.005
ap.Timer(on_timer, delay=ap.FPS.FPS_60).start()
ap.save_overall_html(dest_dir_path="polygon_scale_y_from_center/")
set_scale_x_from_pointとget_scale_x_from_pointメソッドのインターフェイス例¶
set_scale_x_from_point
メソッドは指定されたX座標を基準としてX軸の拡縮値を更新します。
同様に、get_scale_x_from_point
メソッドでは指定されたX座標を基準としたX軸の拡縮値を取得します:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=75, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=100),
],
line_color=ap.Color("#0af"),
)
direction: ap.Int = ap.Int(-1)
x: ap.Int = ap.Int(100)
def on_timer(e: ap.TimerEvent, options: dict) -> None:
"""
The timer event handler.
Parameters
----------
e : ap.TimerEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
scale: ap.Number = polygon.get_scale_x_from_point(x=x)
with ap.If(scale <= 0.001):
direction.value = 1
with ap.If(scale >= 2.0):
direction.value = -1
scale += direction * 0.005
polygon.set_scale_x_from_point(scale_x=scale, x=x)
ap.Timer(on_timer, delay=ap.FPS.FPS_60).start()
ap.save_overall_html(dest_dir_path="polygon_scale_x_from_point/")
set_scale_y_from_pointとget_scale_y_from_pointメソッドのインターフェイス例¶
set_scale_y_from_point
メソッドは指定されたY座標を基準としてY軸の拡縮値を更新します。
同様に、get_scale_y_from_point
メソッドでは指定されたY座標を基準としたY軸の拡縮値を取得します。
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=75, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=100),
],
line_color=ap.Color("#0af"),
)
direction: ap.Int = ap.Int(-1)
y: ap.Int = ap.Int(100)
def on_timer(e: ap.TimerEvent, options: dict) -> None:
"""
The timer event handler.
Parameters
----------
e : ap.TimerEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
scale: ap.Number = polygon.get_scale_y_from_point(y=y)
with ap.If(scale <= 0.001):
direction.value = 1
with ap.If(scale >= 2.0):
direction.value = -1
scale += direction * 0.005
polygon.set_scale_y_from_point(scale_y=scale, y=y)
ap.Timer(on_timer, delay=ap.FPS.FPS_60).start()
ap.save_overall_html(dest_dir_path="polygon_scale_y_from_point/")
flip_x属性のインターフェイス例¶
flip_x
属性ではインスタンスのX軸の反転状況の真偽値の更新もしくは取得を行えます:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=50, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=75),
],
line_color=ap.Color("#0af"),
)
def on_timer(e: ap.TimerEvent, options: dict) -> None:
"""
The timer event handler.
Parameters
----------
e : ap.TimerEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
polygon.flip_x = polygon.flip_x.not_
ap.Timer(on_timer, delay=1000).start()
ap.save_overall_html(dest_dir_path="polygon_flip_x/")
flip_y属性のインターフェイス例¶
flip_y
属性ではインスタンスのX軸の反転状況の真偽値の更新もしくは取得を行えます:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=75, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=100),
],
line_color=ap.Color("#0af"),
)
def on_timer(e: ap.TimerEvent, options: dict) -> None:
"""
The timer event handler.
Parameters
----------
e : ap.TimerEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
polygon.flip_y = polygon.flip_y.not_
ap.Timer(on_timer, delay=1000).start()
ap.save_overall_html(dest_dir_path="polygon_flip_y/")
skew_x属性のインターフェイス例¶
skew_x
属性ではインスタンスのX軸の歪みの値の更新もしくは取得を行えます:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=75, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=100),
],
line_color=ap.Color("#0af"),
)
def on_timer(e: ap.TimerEvent, options: dict) -> None:
"""
The timer event handler.
Parameters
----------
e : ap.TimerEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
polygon.skew_x += 1
ap.Timer(on_timer, delay=ap.FPS.FPS_60).start()
ap.save_overall_html(dest_dir_path="polygon_skew_x/")
skew_y属性のインターフェイス例¶
skew_y
属性ではインスタンスのY軸の歪みの値の更新もしくは取得を行えます:
import apysc as ap
ap.Stage(
background_color=ap.Color("#333"),
stage_width=150,
stage_height=150,
stage_elem_id="stage",
)
polygon: ap.Polygon = ap.Polygon(
points=[
ap.Point2D(x=75, y=50),
ap.Point2D(x=50, y=100),
ap.Point2D(x=100, y=100),
],
line_color=ap.Color("#0af"),
)
def on_timer(e: ap.TimerEvent, options: dict) -> None:
"""
The timer event handler.
Parameters
----------
e : ap.TimerEvent
Event instance.
options : dict
Optional arguments dictionary.
"""
polygon.skew_y += 1
ap.Timer(on_timer, delay=ap.FPS.FPS_60).start()
ap.save_overall_html(dest_dir_path="polygon_skew_y/")
Polygon クラスのコンストラクタのAPI¶
特記事項: このAPIドキュメントはドキュメントビルド用のスクリプトによって自動で生成・同期されています。そのためもしかしたらこの節の内容は前節までの内容と重複している場合があります。
[インターフェイスの構造] __init__(self, *, points: Union[List[apysc._geom.point2d.Point2D], apysc._type.array.Array[apysc._geom.point2d.Point2D]], fill_color: apysc._color.color.Color = Color(""), fill_alpha: Union[float, apysc._type.number.Number] = 1.0, line_color: apysc._color.color.Color = Color(""), line_alpha: Union[float, apysc._type.number.Number] = 1.0, line_thickness: Union[int, apysc._type.int.Int] = 1, line_cap: Union[apysc._type.string.String, apysc._display.line_caps.LineCaps, NoneType] = None, line_joints: Union[apysc._type.string.String, apysc._display.line_joints.LineJoints, NoneType] = None, line_dot_setting: Union[apysc._display.line_dot_setting.LineDotSetting, NoneType] = None, line_dash_setting: Union[apysc._display.line_dash_setting.LineDashSetting, NoneType] = None, line_round_dot_setting: Union[apysc._display.line_round_dot_setting.LineRoundDotSetting, NoneType] = None, line_dash_dot_setting: Union[apysc._display.line_dash_dot_setting.LineDashDotSetting, NoneType] = None, parent: Union[apysc._display.child_mixin.ChildMixIn, NoneType] = None, variable_name_suffix: str = '') -> None
[インターフェイス概要]
多角形のベクターグラフィックスを生成します。このクラスはPolylineクラスと似ていますが、Polylineクラスとは異なりこのクラスでは座標の終点と始点が接続される点が異なります。
[引数]
points
: Array of Point2D or list of Point2D多角形の各頂点の座標のリスト。
fill_color
: Color, default COLORLESS設定する塗りの色。
fill_alpha
: float or Number, default 1.0設定する塗りの透明度。
line_color
: Color, default COLORLESS設定する線の色。
line_alpha
: float or Number, default 1.0設定する線の透明度。
line_thickness
: int or Int, default 1設定の線幅。
line_cap
: String or LineCaps or None, default None設定する線の端のスタイル設定。
line_joints
: String or LineJoints or None, default None設定する線の連結部分のスタイル設定。
line_dot_setting
: LineDotSetting or None, default None設定する点線のスタイル設定。
line_dash_setting
: LineDashSetting or None, default None設定する破線のスタイル設定。
line_round_dot_setting
: LineRoundDotSetting or None, default None設定する丸ドットのスタイル設定。
line_dash_dot_setting
: LineDashDotSetting or None, default None設定する一点鎖線のスタイル設定。
parent
: ChildMixIn or None, default Noneこのインスタンスを追加する親のインスタンス。もしもNoneが指定された場合、このインスタンスはステージのインスタンスへと追加されます。
variable_name_suffix
: str, default “”JavaScript上の変数のサフィックスの設定です。この設定はJavaScriptのデバッグ時に役立つことがあります。
[コードサンプル]
>>> import apysc as ap
>>> stage: ap.Stage = ap.Stage()
>>> polygon: ap.Polygon = ap.Polygon(
... points=[
... ap.Point2D(x=50, y=50),
... ap.Point2D(x=50, y=100),
... ap.Point2D(x=100, y=75),
... ],
... fill_color=ap.Color("#00aaff"),
... )
>>> polygon.fill_color
Color("#00aaff")