AnglePath[{θ1,θ2,θ3,…}]
{0,0}から始まり,連続する相対角度 θiにおいて連続する単位長のステップを取る,経路に対応する2D座標のリストを与える.
AnglePath[{{r1,θ1},{r2,θ2},{r3,θ3},…}]
長さ riの連続するステップを取る.
AnglePath[θ0,{step1,step2,…}]
軸に対して角度 θ0から始まる.
AnglePath[{x,y},{step1,step2,…}]
軸に対して初期角0で,点{x,y}から始まる.
AnglePath[{{x,y},θ0},{step1,step2,…}]
軸に対して初期角 θ0で{x,y}から始まる.
AnglePath[{{x,y},{dx,dy}},{step1,step2,…}]
{x,y}から{x+dx,y+dy}へ行く最初のステップを取る.
AnglePath[init,steps,form]
各ステップのデータを form で指定された形式で返す.
AnglePath
AnglePath[{θ1,θ2,θ3,…}]
{0,0}から始まり,連続する相対角度 θiにおいて連続する単位長のステップを取る,経路に対応する2D座標のリストを与える.
AnglePath[{{r1,θ1},{r2,θ2},{r3,θ3},…}]
長さ riの連続するステップを取る.
AnglePath[θ0,{step1,step2,…}]
軸に対して角度 θ0から始まる.
AnglePath[{x,y},{step1,step2,…}]
軸に対して初期角0で,点{x,y}から始まる.
AnglePath[{{x,y},θ0},{step1,step2,…}]
軸に対して初期角 θ0で{x,y}から始まる.
AnglePath[{{x,y},{dx,dy}},{step1,step2,…}]
{x,y}から{x+dx,y+dy}へ行く最初のステップを取る.
AnglePath[init,steps,form]
各ステップのデータを form で指定された形式で返す.
詳細とオプション
- AnglePathは,経路の形成で達した各点で,事実上,まず指定された相対角度で回転し,次に指定された距離を進む.
- Quantityオブジェクトとして明示的に与えられない限り,角度 θiは,ラジアン単位で反時計回りに大きくなるとみなされる(Degreeをかけて度から変換することができる).
- AnglePath[{θ1,θ2,θ3,…}]では,角度 θ1は
軸と相対的であるとみなされる. - AnglePath[…,form]の form には以下を使うことができる.
-
"Position" 直交座標{xi,yi}(デフォルト) "FrameMatrix" 現行フレームの初期フレームに対する回転行列 "RelativeMatrix" 現行フレームの以前のフレームに対する回転行列 "FrameAngle" 初期ステップに対する回転角 "RelativeAngle" 以前のステップに対する回転角 "Translation" 初期ステップからの平行移動変換 "Rotation" 初期ステップからの回転変換 "RotationTranslation" 初期ステップからの回転平行移動変換 {form1,form2,…} 形のリスト - AnglePathの引数は記号的なものでよい.また,Quantityオブジェクトでもよい.
- AnglePathには,生成された数の精度を決定するWorkingPrecisionオプションが使える.
- デフォルト設定のWorkingPrecisionAutomaticでは,比較的パスが短い場合にのみ,厳密な入力に対しては厳密数が生成される.パスが長い場合には機械精度が使われる.
例題
すべて開く すべて閉じる例 (5)
{0,0}から始め,
軸に沿って,各ステップの前に90°回転しながら数単位ステップ進む:
AnglePath[{90°, 90°, 90°}]Graphics[Line[AnglePath[{{1.2, 90.°}, {2.1, 130.°}, {0.7, -85.°}}]]]Graphics[Line[AnglePath[ConstantArray[110°, 20]]]]transformations = AnglePath[{0, 0}, {{4, 45°}, {3Sqrt[2], -45°}}, "RotationTranslation"]turtle = [image];
Graphics[GeometricTransformation[turtle[[1]], transformations]]AnglePath[{x, y}, {{Subscript[r, 1], Subscript[θ, 1]}, {Subscript[r, 2], Subscript[θ, 2]}}]スコープ (13)
ステップ指定 (3)
AnglePath[{90Degree, Pi / 3, -Pi / 4}]AnglePath[{{0.7, 90Degree}, {2.3, Pi / 3}, {3.5, -Pi / 4}}]入力でQuantityオブジェクトを使う:
AnglePath[Quantity[{20., 30., -45., 120.}, "AngularDegrees"]]AnglePath[{{Quantity[4, "Feet"], Quantity[2, "Radians"]}, {Quantity[2, "Meters"], Quantity[40, "AngularDegrees"]}}]経路の初期化 (4)
AnglePath[{100, 200}, {90Degree, Pi / 3, -Pi / 4}]AnglePath[{100, 200}, {{0.7, 90Degree}, {2.3, Pi / 3}, {3.5, -Pi / 4}}]AnglePath[π / 6, {90Degree, Pi / 3, -Pi / 4}]AnglePath[π / 6, {{0.7, 90Degree}, {2.3, Pi / 3}, {3.5, -Pi / 4}}]AnglePath[{{100, 200}, Pi / 6}, {90Degree, Pi / 3, -Pi / 4}]AnglePath[{{100, 200}, Pi / 6}, {{0.7, 90Degree}, {2.3, Pi / 3}, {3.5, -Pi / 4}}]AnglePath[{{100, 200}, {Sqrt[3], 1}}, {{0.7, 90Degree}, {2.3, Pi / 3}, {3.5, -Pi / 4}}]出力形式 (6)
デフォルトで,AnglePathは各ステップで達した位置を返す:
pos1 = AnglePath[{0, 0}, {Subscript[θ, 1], Subscript[θ, 2], Subscript[θ, 3]}];
pos2 = AnglePath[{0, 0}, {Subscript[θ, 1], Subscript[θ, 2], Subscript[θ, 3]}, "Position"];pos1 === pos2AnglePath[{1, 1}, {π / 3, π / 2, -2π / 3}, "RelativeMatrix"];Map[MatrixForm, %]AnglePath[{1, 1}, {π / 3, π / 2, -2π / 3}, "FrameMatrix"];Map[MatrixForm, %]大域的フレーム内の各局所フレームの方向を決定する角度を計算する:
AnglePath[{1, 1}, {π / 3, π / 2, -2π / 3}, "FrameAngle"]transformations = AnglePath[{1, 1}, {{1, π / 2}, {3, -π / 4}}, "RotationTranslation"]triangle = Triangle[{{-1, 0}, {1, 0}, {0, 10}}];
Graphics[{Opacity[0.3], GeometricTransformation[triangle, transformations]}]1回のAnglePathの呼出しでさまざまなタイプの出力を生成する:
types = {"RelativeMatrix", "Position", "RotationTranslation"};
path = AnglePath[{1, 1}, {{1, π / 2}, {3, -π / 4}}, types];Map[MatrixForm, path[[All, 1]]]path[[All, 2]]path[[All, 3]]オプション (1)
WorkingPrecision (1)
デフォルトで,AnglePathは,厳密な入力に対しては,パスが短い場合には厳密数を返し,パスが長い場合には機械数を返す:
AnglePath[Range[10]Pi]//LastAnglePath[Range[10000]Pi]//Last作業精度を無限大に設定して厳密計算を実行する.計算速度は遅くなる:
AnglePath[Range[10000]Pi, WorkingPrecision -> Infinity]//LastAnglePath[Range[10000]Pi, WorkingPrecision -> 50]//Lastアプリケーション (3)
連続するステップが最大で20°方向を変えるランダムウォークを生成する:
Graphics[Line[AnglePath[RandomReal[{-20°, 20°}, 1000]]]]Graphics[Line[AnglePath[{90°, -90°}[[1 + Nest[Join[#, {0}, Reverse[1 - #]]&, {0}, 10]]]]]]Graphics[Line[AnglePath[Array[ThueMorse, 4096]2 Pi / 3]]]Graphics[Line[AnglePath[Array[ThueMorse, 4096]2 Pi / 5]]]特性と関係 (6)
AnglePath[{{0, 0}, Subscript[θ, 0]}, Array[Subscript[θ, #]&, {6}]]AnglePath[{{x, y}, Subscript[θ, 0]}, {{Subscript[r, 1], Subscript[θ, 1]}, {Subscript[r, 2], Subscript[θ, 2]}}]% === Rest@AnglePath[{x, y}, {{0, Subscript[θ, 0]}, {Subscript[r, 1], Subscript[θ, 1]}, {Subscript[r, 2], Subscript[θ, 2]}}]angles = RandomReal[{-Pi / 2, Pi / 2}, 100];絶対角度とみなされるこれらの角度は,平均して,右側へ進むステップ集合を表す:
Graphics[Line[FoldList[AngleVector, {0, 0}, angles]]]相対角度とみなされるこの経路は,任意の可能な方向へ進化することができる.総延長は等しい:
Graphics[Line[AnglePath[{0, 0}, angles]]]大域的フレームの回転はそれ以前のすべての相対的回転の乗算で得ることができる:
angles = N@{{π / 3, 0}, {π / 2, -π / 6}};framematrices = AnglePath[{1, 1}, angles, "FrameMatrix"];
Map[MatrixForm, %]framematrices == FoldList[Dot, AnglePath[{1, 1}, angles, "RelativeMatrix"]]p0 = {x0, y0};
angles = Array[θ, 10];positions = AnglePath[p0, angles];各新規位置は初期 x 軸の回転に沿った移動として計算することができる:
framematrices = AnglePath[p0, angles, "FrameMatrix"];positions == FoldList[#1 + #2.{1, 0}&, p0, Rest[framematrices]]いくつかの角度の集合を用い,それに対応する角度パスを計算する:
angles = RandomReal[{-Pi, Pi}, 5]path = AnglePath[angles]この公式は,同一の経路を生成するが,逆順に通過する角度を計算する:
iangles = Prepend[Reverse[Rest[-angles]], Mod[Pi + Total[angles], 2Pi, -Pi]]ipath = AnglePath[Last[path], iangles]Reverse[path] - ipath//Chop両方の経路を描画し,Arrowを用いて運動の方向を示す:
{Graphics@Arrow[path], Graphics@Arrow[ipath]}考えられる問題 (1)
インタラクティブな例題 (1)
DynamicModule[{turtle, steps = {}, path, points},
turtle = [image];
Manipulate[
path = AnglePath[{0., 0.}, steps, {"Position", "FrameMatrix"}];
points = path[[All, 1]];
Graphics[{
Line[points], GeometricTransformation[turtle[[1]], AffineTransform[{path[[-1, 2]].RotationMatrix[θ], Last[points]}]],
Point[points],
White, Point[{{-8, -8}, {8, 8}}]},
Axes -> True,
PlotRange -> All,
ImageSize -> {420, 420}
],
Row[{Control[{{r, 1}, 0, 10}], Spacer[23], Control[{{fixr, True, "Fixed"}, {True, False}}]}],
Row[{Control[{{θ, 0}, -Pi, Pi}], Spacer[20], Control[{{fixθ, False, "Fixed"}, {True, False}}]}],
Button["Next step", AppendTo[steps, {r, θ}];If[Not[fixr], r = 1.];If[Not[fixθ], θ = 0.]],
Button["Restart", {steps = {}, r = 1., θ = 0.}]
]
]おもしろい例題 (4)
Graphics[Line[AnglePath[Range[0, 10, .01]]]]Graphics[Line[AnglePath[Range[0, 100, .01]]]]Graphics[Line[AnglePath[N@Range[10000]]]]Graphics[Line[AnglePath[N@Range[100000]]]]連続する相対角度が増加しSin関数によって変調される線を描く:
Graphics[Line[AnglePath[Table[t Sin[t], {t, 0, 50, .01}]]]]Graphics[Line[AnglePath@N[Table[{i, 8}, {i, 1000}]], VertexColors -> Map[Hue, Subdivide[0, 0.8, 1000]]]]関連するガイド
-
▪
- 反復写像とフラクタル ▪
- 計算系 ▪
- 角度と極座標
テキスト
Wolfram Research (2015), AnglePath, Wolfram言語関数, https://reference.wolfram.com/language/ref/AnglePath.html (2019年に更新).
CMS
Wolfram Language. 2015. "AnglePath." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2019. https://reference.wolfram.com/language/ref/AnglePath.html.
APA
Wolfram Language. (2015). AnglePath. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/AnglePath.html
BibTeX
@misc{reference.wolfram_2026_anglepath, author="Wolfram Research", title="{AnglePath}", year="2019", howpublished="\url{https://reference.wolfram.com/language/ref/AnglePath.html}", note=[Accessed: 16-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_anglepath, organization={Wolfram Research}, title={AnglePath}, year={2019}, url={https://reference.wolfram.com/language/ref/AnglePath.html}, note=[Accessed: 16-August-2026]}