FindShortestCurve[reg,s,t]
領域 reg 上の2点 s と t 間の最短曲線を求める.
FindShortestCurve
FindShortestCurve[reg,s,t]
領域 reg 上の2点 s と t 間の最短曲線を求める.
詳細とオプション
- FindShortestCurveは,測地線の最小化,最短経路あるいは最短直線としても知られている.
- FindShortestCurveは,通常,最も効率的な経路を見付けるためのナビゲーション,経路決定,ロジスティックに使用さる.
- FindShortestCurve[reg,s,t]は,reg 上の s と t の間にあるすべての曲線の中でArcLengthが最小のものを返す.
- 次は,使用可能なオプションである.
-
AccuracyGoal Automatic 目標絶対確度の桁数 Assumptions $Assumptions パラメータについての仮定 GenerateConditions Automatic パラメータについての条件を生成するかどうか PerformanceGoal $PerformanceGoal パフォーマンスのどの面について最適化するか PrecisionGoal Automatic 目標精度の桁数 WorkingPrecision Automatic 内部計算精度
例題
すべて開く すべて閉じる例 (3)
FindShortestCurve[Circle[], {1, 0}, {0, 1}]HighlightRegion[Circle[], %]path = FindShortestCurve[Sphere[], {0, 0, 1}, {0, 1, 0}];HighlightRegion[Sphere[], path]ArcLength[path]FindShortestCurve[[image], {0.11, 0.11}, {0.89, 0.555}]HighlightRegion[[image], %]スコープ (14)
特殊領域 (5)
FindShortestCurve[[image], {1, 0}, {3, 0}]HighlightRegion[[image], %]FindShortestCurve[Circle[], {1, 0}, {0, 1}]HighlightRegion[Circle[], %]FindShortestCurve[Sphere[], {0, 0, 1}, {0, 1, 0}];HighlightRegion[Sphere[], %]{s, t} = RandomPoint[Torus[], 2];FindShortestCurve[Torus[], s, t];HighlightRegion[Torus[], %]FindShortestCurve[Annulus[], {1, 0}, {-0.8, 0.4}];HighlightRegion[Annulus[], %]数式定義領域 (2)
g = ImplicitRegion[x^2 + y^2 ≤ 1, {x, y}];FindShortestCurve[g, {1, 0}, {1 / 10, 4 / 5}];HighlightRegion[g, %]g = ParametricRegion[{{s, (1 + t) s ^ 2 - t}, -1 <= s <= 1 && 0 <= t <= 1}, {s, t}];FindShortestCurve[g, {-2 / 5, 1 / 10}, {2 / 5, 1 / 20}];HighlightRegion[g, %]メッシュ領域 (2)
1D BoundaryMeshRegion上の最短距離を求める:
ℛ = BoundaryMeshRegion[{{0}, {1}}, Point[{{1}, {2}}]]FindShortestCurve[ℛ, {0}, {1}]ℛ = BoundaryMeshRegion[{{0, 0}, {3, 0}, {3, 3}, {0, 3}, {1, 1}, {2, 1}, {2, 2}, {1, 2}}, Line[{1, 2, 3, 4, 1}], Line[{5, 6, 7, 8, 5}]];FindShortestCurve[ℛ, {3, 3}, {1.5, 1}]HighlightRegion[ℛ, %]ℛ = ConvexHullMesh[RandomReal[1, {20, 3}]];{s, t} = RandomPoint[ℛ, 2];FindShortestCurve[ℛ, s, t]1D MeshRegion上の最短距離を求める:
ℛ = MeshRegion[{{0}, {1}, {2}, {3}}, {Line[{1, 2}], Line[{3, 4}]}]FindShortestCurve[ℛ, {0}, {1}]FindShortestCurve[MengerMesh[2], {0.11, 0.11}, {0.89, 0.55}];HighlightRegion[MengerMesh[2], %]ℛ = [image];FindShortestCurve[ℛ, {-0.79, -0.9, 0.}, {0.33, 0.94, 0.5}];HighlightRegion[ℛ, %]派生領域 (3)
RegionIntersection上の最短曲線を求める:
ℛ = RegionIntersection[Disk[{0, 0}, 1], Disk[{0, 1}, 1]];FindShortestCurve[ℛ, {0.2, 0.4}, {-0.3, 0.5}];HighlightRegion[ℛ, %]TransformedRegion上の最短曲線を求める:
ℛ = TransformedRegion[Disk[{1, 1}, 4], {Indexed[#, 1] Indexed[#, 2], Indexed[#, 1] + Indexed[#, 2]}&];FindShortestCurve[ℛ, {2.8, 4.9}, {-3.3, -0.2}];HighlightRegion[ℛ, %]RegionBoundary上の最短曲線を求める:
ℛ = RegionBoundary[MengerMesh[1, 3]];FindShortestCurve[ℛ, {0, 0, 0}, {1, 1, 1}];HighlightRegion[ℛ, %]地理領域 (2)
GeoPositionによる多角形:
ℛ = Polygon[GeoPosition[{{{40.083441, -88.235716}, {40.083607, -88.257488}, {40.082603, -88.257149},
{40.076136999999996, -88.25740499999999}, {40.076178, -88.270888}, {40.076516, -88.271558},
{40.083686, -88.271512}, {40.083659999999995, -88.267046}, ... 33323}, {40.098112, -88.228687},
{40.095216, -88.228627}, {40.095179, -88.238547}, {40.094480999999995, -88.238546},
{40.094508999999995, -88.23267}, {40.094106, -88.232556}, {40.090666999999996, -88.232477},
{40.090741, -88.235745}}}]];{s, t} = RandomPoint[DiscretizeRegion@ℛ, 2];FindShortestCurve[ℛ, s, t]GeoGridPositionによる多角形:
ℛ = Polygon[GeoGridPosition[{{{-0.9950503945490105, 1.2366760550756015},
{-0.9952074890903578, 1.2369207053693891}, {-0.9952196732768064, 1.2369073327446167},
{-0.9953160063787643, 1.236848436956935}, {-0.9954141759436825, 1.2369993898475449},
{-0. ... 197645333103}, {-0.9949098578570917, 1.2368130881428654},
{-0.9948663952535768, 1.2367477711687371}, {-0.9948714472169538, 1.2367426500757825},
{-0.9949211061652593, 1.2367089232486177}, {-0.9949439717990124, 1.236746107097628}}}, "Bonne"]];{s, t} = First[ RandomPoint[ℛ, 2]];FindShortestCurve[ℛ, s, t];HighlightRegion[ℛ, %]アプリケーション (6)
HighlightRegion[Sphere[], FindShortestCurve[Sphere[], {0, 0, 1}, {0, 1, 0}]]RegionIntersection[Sphere[], InfinitePlane[{{0, 0, 1}, {0, 1, 0}, {0, 0, 0}}]]Show[{%%, %}]オーストリアのインスブルックからウィーンまでの最短ツアーを求める:
g = DiscretizeGraphics[CountryData["Austria", {"FullPolygon", "Mercator"}]];cities = {Entity["City", {"Innsbruck", "Tirol", "Austria"}], Entity["City", {"Vienna", "Vienna", "Austria"}]};都市のGeoGridPosition:
{Innsbruck, Vienna} = First[GeoGridPosition[GeoPosition[#], "Mercator"]]& /@ citiespath = FindShortestCurve[g, Innsbruck, Vienna];HighlightRegion[g, path]GeoPathと比較する:
GeoGraphics[{Polygon[Entity["Country", "Austria"]], Red, GeoPath[cities, "Geodesic"]}]地球上の航空機の飛行経路としての2都市間の最短距離を求める:
a = 6378;
b = 6357;
earth = RegionBoundary@Ellipsoid[{0, 0, 0}, {a, a, b}];cities = {Entity["City", {"Seattle", "Washington", "UnitedStates"}], Entity["City", {"Paris", "IleDeFrance", "France"}]};pos = First@GeoPositionXYZ[cities]{seattle, paris} = RegionNearest[earth, #]& /@ pospath = FindShortestCurve[earth, seattle, paris];Graphics3D[{Texture[GeoGraphics[GeoBackground -> "Satellite", ImageSize -> Large, GeoProjection -> "Equirectangular"], "Spherical"], Black, Ellipsoid[{0, 0, 0}, {a, a, b}], Red, Dashed, Thickness[0.005], path}, Boxed -> False, ViewPoint -> Front]g = DiscretizeGraphics[ParametricPlot3D[{Sin[t - (π/2)], 1.5Cos[(t/2) + (π/4)], Sin[t - π]}, {t, 0, 4 π}, PlotStyle -> Orange, Axes -> -None, Boxed -> False] /. Line[pts_, rest___] :> Tube[pts, 0.1, rest]];{s, t} = RandomPoint[g, 2];FindShortestCurve[g, s, t];HighlightRegion[g, %]body = \!\(\*Graphics3DBox[«8»]\);{s, t} = RandomPoint[body, 2];FindShortestCurve[body, s, t];HighlightRegion[body, %]移動ロボットが,障害物を回避しながらある地点から別の地点に移動するための効率的な経路を決定する:
{robot, furniture} = { [image], \!\(\*Graphics3DBox[«6»]\)};この例では,ロボットの作業スペースに障害物,具体的には家具が含まれる:
Show[robot, furniture, Boxed -> True]workspace = [image];{a, b} = {Most[RegionCentroid[robot]], {20, 18}};path = FindShortestCurve[workspace, a, b];HighlightRegion[workspace, path]特性と関係 (1)
ShortestCurveDistanceはFindShortestCurveの弧の長さである:
c = Circle[];{s, t} = {{-1, 0}, {0, 1}};ArcLength[FindShortestCurve[c, s, t]] == ShortestCurveDistance[c, s, t]テキスト
Wolfram Research (2025), FindShortestCurve, Wolfram言語関数, https://reference.wolfram.com/language/ref/FindShortestCurve.html.
CMS
Wolfram Language. 2025. "FindShortestCurve." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/FindShortestCurve.html.
APA
Wolfram Language. (2025). FindShortestCurve. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/FindShortestCurve.html
BibTeX
@misc{reference.wolfram_2026_findshortestcurve, author="Wolfram Research", title="{FindShortestCurve}", year="2025", howpublished="\url{https://reference.wolfram.com/language/ref/FindShortestCurve.html}", note=[Accessed: 10-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_findshortestcurve, organization={Wolfram Research}, title={FindShortestCurve}, year={2025}, url={https://reference.wolfram.com/language/ref/FindShortestCurve.html}, note=[Accessed: 10-August-2026]}