(接続されていない場合も含む)無限に細い、方向性を持った 2 次元の曲線として
説明
プログラミング注意事項
例
例: Path の作成 | |
{define-class ExampleGraphic {inherits Fill} {constructor {default ...} {construct-super ...} } {method public {draw renderer2d:Renderer2d}:void let bounds:GRect = {self.layout.get-bounds} {with-render-properties || make the top-left of the Fill the origin translation = {Distance2d -bounds.lextent, -bounds.ascent} on renderer2d do || Here's the Path we're building: let path:Path = {Path {Distance2d 0.5in, 0.3in}, PathOperation.line-to, {Distance2d 2in, 1.5in}, PathOperation.move-to, {Distance2d 2in, 1.9in}, PathOperation.curve-to, {Distance2d 3in, 1.7in}, {Distance2d 3in, 0.7in}, {Distance2d 2in, 0.2in} } {renderer2d.render-path path, fill-pattern = {FillPattern.get-cyan} } } } } {ExampleGraphic width = 4in, height = 2in, background = {FillPattern.get-gray} } |
Path を初期化します。 |
true を、それ以外は false を返します。 | が閉じたループの場合は
Path.get および Path.for-loop-count の使い方の説明については、 |
この Path 内に曲線が存在する場合、true を返します。 |
この |
この |
この |
other から self にパスを追加します。other の最初のポイントが self の最後のポイントの tolerance 内にある場合、そのポイントは同じものとみなされ、それ以外の場合はパスは開いた状態になります。tolerance を 0 に設定して強制的に開いた状態にします。 |
楕円弧のセグメントを |
前の端点と相対的に楕円弧のセグメントを |
このメソッドは、その内部データすべての |
この Path のコピーである新しい Path を返します。 |
PathOperation.line-to を PathOperation.move-to の直前に挿入することにより、この Path を閉じます。こうして閉じてない開いたセクションを閉じます。 |
3 つの Distance2d を取り 3 次元ベジエ曲線を追加します self にベジエ曲線を追加します。 |
前の端点と相対的な 3 次元ベジエ曲線を追加します。 |
メソッド get およびアクセッサ for-loop-count により、 |
この Path の境界点を計算し返します。 |
線セグメントが Path と交差するポイントを計算します。 |
線セグメントを Path に追加します。 |
線セグメントを |
Path にブレークを作成します。 |
前の端点から新しい端点まで 2 次元のベジエ曲線を追加します。 |
前の端点から新しい端点まで 2 次元のベジエ曲線を追加します。 |
前の端点から新しい端点まで 3 次元のベジエ曲線を追加し、2 つの曲線をスムーズに結合します。 |
前の端点から新しい端点まで 3 次元のベジエ曲線を追加し、2 つの曲線をスムーズに結合します。 |
前の端点から新しい端点まで 2 次元のベジエ曲線を追加し、2 つの曲線をスムーズに結合します。 |
前の端点から新しい端点まで 2 次元のベジエ曲線を追加し、2 つの曲線をスムーズに結合します。 |
この Path の各要素をイテレートすることができるオブジェクトを返します。 |
この |
パスの中心の回りに太いラインを形成する一連の領域を作成します。 |
この |
transformation で |
Path を初期化します。
説明
注意事項
true を、それ以外は false を返します。
が閉じたループの場合は注意事項
Path.get および Path.for-loop-count の使い方の説明については、
この Path 内に曲線が存在する場合、true を返します。
この
注意事項
この
説明
この
説明
other から self にパスを追加します。other の最初のポイントが self の最後のポイントの tolerance 内にある場合、そのポイントは同じものとみなされ、それ以外の場合はパスは開いた状態になります。tolerance を 0 に設定して強制的に開いた状態にします。
楕円弧のセグメントを
注意事項
例
例: arc-to 操作 | |
{import * from PATH-DOC, location = "../docstring-support/gfx/Path-doc.scurl"} {value let start-point:Distance2d = {Distance2d 150pt, 200pt} let end-point:Distance2d = {Distance2d 450pt, 200pt} let path:Path = {Path} {path.move-to start-point} {path.arc-to 150pt, 100pt, 0deg, false, true, end-point} || External Graphic used to help demonstrate the use || of Path operations by labeling points. {PathDocGraphic width = 6cm, height = 4cm, 600pt, 400pt, {proc {r:Renderer2d, doc:PathDocGraphic}:void {r.render-path path, fill-pattern = {FillPattern.get-red}, stroke-thickness = 2pt} {doc.end-point r, start-point} {doc.end-point r, end-point} } } } |
前の端点と相対的に楕円弧のセグメントを
説明
注意事項
{Path.arc-to radius, x-axis-rotation, large-arc?, sweep-clockwise?, end-delta + path.last-point, max-angle = max-angle }
例
例: arc-to-relative 操作 | |
{import * from PATH-DOC, location = "../docstring-support/gfx/Path-doc.scurl"} {value let start-point:Distance2d = {Distance2d 150pt, 200pt} let end-point-delta:Distance2d = {Distance2d 300pt, 0pt} let path:Path = {Path} {path.move-to start-point} {path.arc-to-relative 150pt, 100pt, 0deg, false, true, end-point-delta} || External Graphic used to help demonstrate the use || of Path operations by labeling points. {PathDocGraphic width = 6cm, height = 4cm, 600pt, 400pt, {proc {r:Renderer2d, doc:PathDocGraphic}:void {r.render-path path, fill-pattern = {FillPattern.get-red}, stroke-thickness = 2pt} {doc.end-point r, start-point} {doc.end-point r, end-point-delta + start-point} } } } |
このメソッドは、その内部データすべての
注意事項
この Path のコピーである新しい Path を返します。
PathOperation.line-to を PathOperation.move-to の直前に挿入することにより、この Path を閉じます。こうして閉じてない開いたセクションを閉じます。
例
例: close 操作 | |
{import * from PATH-DOC, location = "../docstring-support/gfx/Path-doc.scurl"} {value let open-path:Path = {Path} {open-path.move-to {Distance2d 1cm, 1cm}} {open-path.line-to {Distance2d 1cm, 2cm}} {open-path.line-to {Distance2d 2cm, 2cm}} {open-path.line-to {Distance2d 2cm, 1cm}} let closed-path:Path = {open-path.clone} {closed-path.close} || External Graphic used to help demonstrate the use || of Path operations. {PathDocGraphic width = 5cm, height = 3cm, 5cm, 3cm, {proc {r:Renderer2d, doc:PathDocGraphic}:void {r.render-path open-path, fill-pattern = {FillPattern.get-red}, stroke-thickness = 2pt} {with-render-properties translation-x = 2cm on r do {r.render-path closed-path, fill-pattern = {FillPattern.get-blue}, stroke-thickness = 2pt} } } } } |
3 つの Distance2d を取り 3 次元ベジエ曲線を追加します self にベジエ曲線を追加します。
注意事項
注意事項
例
例: curve-to 操作 | |
{import * from PATH-DOC, location = "../docstring-support/gfx/Path-doc.scurl"} {value let start-point:Distance2d = {Distance2d 100pt, 50pt} let control-point1:Distance2d = {Distance2d 400pt, 50pt} let control-point2:Distance2d = {Distance2d 100pt, 250pt} let end-point:Distance2d = {Distance2d 400pt, 250pt} let path:Path = {Path} {path.move-to start-point} {path.curve-to control-point1, control-point2, end-point } || External Graphic used to help demonstrate the use || of Path operations by labeling points. {PathDocGraphic width = 5cm, height = 4cm, 500pt, 400pt, {proc {r:Renderer2d, doc:PathDocGraphic}:void {doc.line r, start-point, control-point1} {doc.line r, end-point, control-point2} {r.render-path path, fill-pattern = {FillPattern.get-red}, stroke-thickness = 2pt} {doc.end-point r, start-point} {doc.control-point r, control-point1} {doc.control-point r, control-point2} {doc.end-point r, end-point} } } } |
前の端点と相対的な 3 次元ベジエ曲線を追加します。
注意事項
{Path.curve-to control-point1-delta + path.last-point, control-point2-delta + path.last-point, end-point-delta + path.last-point }
例
例: curve-to-relative 操作 | |
{import * from PATH-DOC, location = "../docstring-support/gfx/Path-doc.scurl"} {value let start-point:Distance2d = {Distance2d 100pt, 50pt} let control-point1-delta:Distance2d = {Distance2d 300pt, 0pt} let control-point2-delta:Distance2d = {Distance2d 0pt, 200pt} let end-point-delta:Distance2d = {Distance2d 300pt, 200pt} let path:Path = {Path} {path.move-to start-point} {path.curve-to-relative control-point1-delta, control-point2-delta, end-point-delta } || External Graphic used to help demonstrate the use || of Path operations by labeling points. {PathDocGraphic width = 5cm, height = 4cm, 500pt, 400pt, {proc {r:Renderer2d, doc:PathDocGraphic}:void {doc.line r, start-point, control-point1-delta + start-point} {doc.line r, end-point-delta + start-point, control-point2-delta + start-point} {r.render-path path, fill-pattern = {FillPattern.get-red}, stroke-thickness = 2pt} {doc.end-point r, start-point} {doc.control-point r, control-point1-delta + start-point} {doc.control-point r, control-point2-delta + start-point} {doc.end-point r, end-point-delta + start-point} } } } |
メソッド get およびアクセッサ for-loop-count により、
説明
戻り値
改訂
例
例: get メソッド | |
{import * from CURL.GUI.SHAPES} {let vbox:VBox = {VBox spacing = 12pt, font-size = .85em}} {let path:Path = {Path}} {do {path.move-to {Distance2d .5cm, 0cm}} {path.line-to {Distance2d 5cm, 1cm}} {path.line-to {Distance2d 4cm, 2cm}} {path.curve-to {Distance2d 3cm, 3cm}, {Distance2d 0cm, 0cm}, {Distance2d 1cm, 3cm} } {path.move-to {Distance2d 2cm, 2cm}} {vbox.add {PathShape path, stroke-thickness = 3pt}} } {for (point-0:Distance2d, op:PathOperation, point-1:Distance2d, control-point-1:Distance2d, control-point-2:Distance2d) in path do {vbox.add {format "A point (%f, %f) with control points (%s, %s)", point-0.x, point-0.y, control-point-1, control-point-2 } } } {value vbox} |
この Path の境界点を計算し返します。
説明
線セグメントが Path と交差するポイントを計算します。
説明
線セグメントを Path に追加します。
説明
注意事項
線セグメントを
説明
注意事項
{Path.line-to delta + path.last-point}
例
例: line-to-relative 操作 | |
{import * from PATH-DOC, location = "../docstring-support/gfx/Path-doc.scurl"} {value let start-point:Distance2d = {Distance2d 100pt, 100pt} let delta:Distance2d = {Distance2d 200pt, 100pt} let path:Path = {Path} {path.move-to start-point} {path.line-to-relative delta} || External Graphic used to help demonstrate the use || of Path operations by labeling points. {PathDocGraphic width = 5cm, height = 4cm, 500pt, 400pt, {proc {r:Renderer2d, doc:PathDocGraphic}:void {r.render-path path, fill-pattern = {FillPattern.get-red}, stroke-thickness = 2pt} {doc.end-point r, start-point} {doc.end-point r, delta + start-point} } } } |
Path にブレークを作成します。
説明
注意事項
注意事項
{Path.move-to delta + path.last-point}
前の端点から新しい端点まで 2 次元のベジエ曲線を追加します。
説明
例
例: quadratic-curve-to 操作 | |
{import * from PATH-DOC, location = "../docstring-support/gfx/Path-doc.scurl"} {value let start-point:Distance2d = {Distance2d 100pt, 250pt} let control-point:Distance2d = {Distance2d 250pt, 50pt} let end-point:Distance2d = {Distance2d 400pt, 250pt} let path:Path = {Path} {path.move-to start-point} {path.quadratic-curve-to control-point, end-point } || External Graphic used to help demonstrate the use || of Path operations by labeling points. {PathDocGraphic width = 5cm, height = 4cm, 500pt, 400pt, {proc {r:Renderer2d, doc:PathDocGraphic}:void {doc.line r, start-point, control-point} {doc.line r, end-point, control-point} {r.render-path path, fill-pattern = {FillPattern.get-red}, stroke-thickness = 2pt} {doc.end-point r, start-point} {doc.control-point r, control-point} {doc.end-point r, end-point} } } } |
前の端点から新しい端点まで 2 次元のベジエ曲線を追加します。
説明
注意事項
{Path.quadratic-curve-to control-point + path.last-point, end-point-delta + path.last-point }
例
例: quadratic-curve-to-relative 操作 | |
{import * from PATH-DOC, location = "../docstring-support/gfx/Path-doc.scurl"} {value let start-point:Distance2d = {Distance2d 100pt, 250pt} let control-point-delta:Distance2d = {Distance2d 150pt, -200pt} let end-point-delta:Distance2d = {Distance2d 300pt, 0pt} let path:Path = {Path} {path.move-to start-point} {path.quadratic-curve-to-relative control-point-delta, end-point-delta } || External Graphic used to help demonstrate the use || of Path operations by labeling points. {PathDocGraphic width = 5cm, height = 4cm, 500pt, 400pt, {proc {r:Renderer2d, doc:PathDocGraphic}:void {doc.line r, start-point, control-point-delta + start-point} {doc.line r, end-point-delta + start-point, control-point-delta + start-point} {r.render-path path, fill-pattern = {FillPattern.get-red}, stroke-thickness = 2pt} {doc.end-point r, start-point} {doc.control-point r, control-point-delta + start-point} {doc.end-point r, end-point-delta + start-point} } } } |
前の端点から新しい端点まで 3 次元のベジエ曲線を追加し、2 つの曲線をスムーズに結合します。
説明
注意事項
例
例: smooth-curve-to 操作 | |
{import * from PATH-DOC, location = "../docstring-support/gfx/Path-doc.scurl"} {value let start-point:Distance2d = {Distance2d 100pt, 150pt} let control-point1:Distance2d = {Distance2d 100pt, 50pt} let control-point2:Distance2d = {Distance2d 250pt, 50pt} let end-point1:Distance2d = {Distance2d 250pt, 150pt} let implicit-control-point:Distance2d = {Distance2d 250pt, 250pt} let control-point3:Distance2d = {Distance2d 400pt, 250pt} let end-point2:Distance2d = {Distance2d 400pt, 150pt} let path:Path = {Path} {path.move-to start-point} {path.curve-to control-point1, control-point2, end-point1 } {path.smooth-curve-to control-point3, end-point2 } || External Graphic used to help demonstrate the use || of Path operations by labeling points. {PathDocGraphic width = 5cm, height = 4cm, 500pt, 400pt, {proc {r:Renderer2d, doc:PathDocGraphic}:void {doc.line r, start-point, control-point1} {doc.line r, end-point1, control-point2} {doc.line r, end-point1, implicit-control-point} {doc.line r, end-point2, control-point3} {r.render-path path, fill-pattern = {FillPattern.get-red}, stroke-thickness = 2pt} {doc.end-point r, start-point} {doc.end-point r, end-point1} {doc.end-point r, end-point2} {doc.control-point r, control-point1} {doc.control-point r, control-point2} {doc.control-point r, control-point3} {doc.implicit-control-point r, implicit-control-point} } } } |
前の端点から新しい端点まで 3 次元のベジエ曲線を追加し、2 つの曲線をスムーズに結合します。
説明
注意事項
{Path.smooth-curve-to control-point2-delta + path.last-point, end-point-delta + path.last-point }
例
例: smooth-curve-to-relative 操作 | |
{import * from PATH-DOC, location = "../docstring-support/gfx/Path-doc.scurl"} {value let start-point:Distance2d = {Distance2d 100pt, 150pt} let control-point1-delta:Distance2d = {Distance2d 0pt, -100pt} let control-point2-delta:Distance2d = {Distance2d 150pt, -100pt} let end-point1-delta:Distance2d = {Distance2d 150pt, 0pt} let control-point3-delta:Distance2d = {Distance2d 150pt, 100pt} let end-point2-delta:Distance2d = {Distance2d 150pt, 0pt} let path:Path = {Path} {path.move-to start-point} {path.curve-to-relative control-point1-delta, control-point2-delta, end-point1-delta } {path.smooth-curve-to-relative control-point3-delta, end-point2-delta } || External Graphic used to help demonstrate the use || of Path operations by labeling points. {PathDocGraphic width = 5cm, height = 4cm, 500pt, 400pt, {proc {r:Renderer2d, doc:PathDocGraphic}:void let implicit-control-point:Distance2d = {Distance2d 250pt, 250pt} {doc.line r, start-point, control-point1-delta + start-point} {doc.line r, end-point1-delta + start-point, control-point2-delta + start-point} {doc.line r, end-point1-delta + start-point, implicit-control-point} {doc.line r, end-point2-delta + end-point1-delta + start-point, control-point3-delta + end-point1-delta + start-point} {r.render-path path, fill-pattern = {FillPattern.get-red}, stroke-thickness = 2pt} {doc.end-point r, start-point} {doc.end-point r, end-point1-delta + start-point} {doc.end-point r, end-point2-delta + end-point1-delta + start-point} {doc.control-point r, control-point1-delta + start-point} {doc.control-point r, control-point2-delta + start-point} {doc.control-point r, control-point3-delta + end-point1-delta + start-point} {doc.implicit-control-point r, implicit-control-point} } } } |
前の端点から新しい端点まで 2 次元のベジエ曲線を追加し、2 つの曲線をスムーズに結合します。
説明
注意事項
例
例: smooth-quadratic-curve-to 操作 | |
{import * from PATH-DOC, location = "../docstring-support/gfx/Path-doc.scurl"} {value let start-point:Distance2d = {Distance2d 100pt, 150pt} let control-point:Distance2d = {Distance2d 175pt, 50pt} let end-point1:Distance2d = {Distance2d 250pt, 150pt} let implicit-control-point:Distance2d = {Distance2d 325pt, 250pt} let end-point2:Distance2d = {Distance2d 400pt, 150pt} let path:Path = {Path} {path.move-to start-point} {path.quadratic-curve-to control-point, end-point1 } {path.smooth-quadratic-curve-to end-point2 } || External Graphic used to help demonstrate the use || of Path operations by labeling points. {PathDocGraphic width = 5cm, height = 4cm, 500pt, 400pt, {proc {r:Renderer2d, doc:PathDocGraphic}:void {doc.line r, start-point, control-point} {doc.line r, end-point1, control-point} {doc.line r, end-point1, implicit-control-point} {doc.line r, end-point2, implicit-control-point} {r.render-path path, fill-pattern = {FillPattern.get-red}, stroke-thickness = 2pt} {doc.end-point r, start-point} {doc.end-point r, end-point1} {doc.end-point r, end-point2} {doc.control-point r, control-point} {doc.implicit-control-point r, implicit-control-point} } } } |
前の端点から新しい端点まで 2 次元のベジエ曲線を追加し、2 つの曲線をスムーズに結合します。
説明
注意事項
{Path.smooth-quadratic-curve-to end-point-delta + path.last-point }
例
例: smooth-quadratic-curve-to-relative 操作 | |
{import * from PATH-DOC, location = "../docstring-support/gfx/Path-doc.scurl"} {value let start-point:Distance2d = {Distance2d 100pt, 150pt} let control-point-delta:Distance2d = {Distance2d 75pt, -100pt} let end-point1-delta:Distance2d = {Distance2d 150pt, 0pt} let end-point2-delta:Distance2d = {Distance2d 150pt, 0pt} let path:Path = {Path} {path.move-to start-point} {path.quadratic-curve-to-relative control-point-delta, end-point1-delta } {path.smooth-quadratic-curve-to-relative end-point2-delta } || External Graphic used to help demonstrate the use || of Path operations by labeling points. {PathDocGraphic width = 5cm, height = 4cm, 500pt, 400pt, {proc {r:Renderer2d, doc:PathDocGraphic}:void let implicit-control-point:Distance2d = {Distance2d 325pt, 250pt} {doc.line r, start-point, control-point-delta + start-point} {doc.line r, end-point1-delta + start-point, control-point-delta + start-point} {doc.line r, end-point1-delta + start-point, implicit-control-point} {doc.line r, end-point2-delta + end-point1-delta + start-point, implicit-control-point} {r.render-path path, fill-pattern = {FillPattern.get-red}, stroke-thickness = 2pt} {doc.end-point r, start-point} {doc.end-point r, end-point1-delta + start-point} {doc.end-point r, end-point2-delta + end-point1-delta + start-point} {doc.control-point r, control-point-delta + start-point} {doc.implicit-control-point r, implicit-control-point} } } } |
この Path の各要素をイテレートすることができるオブジェクトを返します。
戻り値
説明
例
例: to-Iterator を使用した Path のイテレーション | |
{import * from CURL.GUI.SHAPES} {def path = {Path {Distance2d 0.5in, 0.3in}, PathOperation.line-to, {Distance2d 2in, 1.5in}, PathOperation.move-to, {Distance2d 2in, 1.9in}, PathOperation.curve-to, {Distance2d 3in, 1.7in}, {Distance2d 3in, 0.7in}, {Distance2d 2in, 0.2in} } } {PathShape path, stroke-thickness = 3pt} {def table = {Table cell-border-width = 1pt, cell-border-color = FillPattern.silver, font-size = .8em, {row-prototype font-style = FontStyle.italic, {text Previous}, {text Operation}, {text Control point 1}, {text Control point 2}, {text End\ } } } } {for item in {path.to-Iterator} do {table.add {row-prototype item.previous, item.operation.name, item.control-1, item.control-2, item.end } } } {value table} |
この
注意事項
パスの中心の回りに太いラインを形成する一連の領域を作成します。
説明
transformation で
注意事項
プログラミング注意事項
let result:Path = {Path} set result = {original-path.transform-clone, out=result}