Hallo Patrick,
Weiterhin faellt einem auf, dass die meisten Punkte egal sind. Nur die
Punkte, die die konvexe Huelle beschreiben sind ausschlaggebend.
Richtig.
Sei {x, y} eine Position des Stiftes. Die Vereinigung
Join[{{x, y}}, P] hat ebenfalls eine konvexe Hülle. Die Länge polyL des
Polygonzuges dieser konvexen Hülle ist l, sofern {x, y} an der richtigen
Stelle liegt, mit anderen Worten
Needs["ComputationalGeometry`"]
Remove[polyL, mzL]
polyL[p_] := Plus @@ Sqrt[(#.# &) /@ ((p[[#]] &) /@ # - (p[[#]] &) /@
RotateLeft[#]) &[ConvexHull[p]]]
mzL [pts_, l_?NumericQ] :=
ContourPlot[polyL[Join[pts, {{x, y}}]] == l,
{x, Min[pts\[Transpose][[1]]] - l/2, Max[pts\[Transpose][[1]]] + l/2},
{y, Min[pts\[Transpose][[2]]] - l/2, Max[pts\[Transpose][[2]]] + l/2},
Epilog -> Point[pts]
] /; VectorQ[pts, VectorQ[#, NumericQ && Length[#] == 2] &] &&
l > polyL[pts]
beinahe wäre es ein OneLiner geworden ...
Gruss
Udo.