Se debe al matemático Austriaco Georg Alexander Pick, de ascendencia judía y victima del holocausto nazi, quien lo publicó en 1899. El teorema da una fórmula para determinar el área A de los polígonos simples (no se auto cruzan, es una región conexa) cuyos vértices tienen coordenadas enteras, determinando el número de puntos con coordenadas enteras en su frontera fr y en su interior int, la fórmula es:
A = int - 1 + fr/2
En Mathematica
Lo desarrollaré sobre una cuadrícula 10x10 que contiene sus bordes, los puntos fr (frontera) se pintan de azul y los puntos int (interiores) de verde.
La función RegionBoundary[ ] nos determina los puntos sobre la frontera del polígono y la función RegionMember[ ] nos dice si un punto pertenece o no a la región.
puntos = Flatten[Table[{i, j}, {i, 0, 10}, {j, 0, 10}], 1];
Manipulate[pts = Floor[pts];
pol = Polygon[pts]; int = {}; fr = {};
a = 0; Do[
Which[RegionMember[RegionBoundary[pol], puntos[[n]]],
AppendTo[fr, puntos[[n]]],
Head[RegionMember[pol, puntos[[n]]]] === RegionMember, a++,
RegionMember[pol, puntos[[n]]], AppendTo[int, puntos[[n]]]], {n,
121}];
Grid[{{Grid[{{"Puntos interiores", Length[int]}, {"Puntos frontera",
Length[fr]}, {"Area=int-1+fr/2",
If[a == 0, (Length[int] - 1 +
Length[fr]/2) "\!\(\*SuperscriptBox[\(Unid\), \(2\)]\)",
"El polígono no es simple"]}}],
Graphics[{PointSize[0.04], Blue, Point[fr], Green, Point[int],
Pink, Opacity[0.2], EdgeForm[Directive[Dashed, Thick, Red]],
pol}, Axes -> True, GridLines -> {Range[0, 10], Range[0, 10]},
PlotRange -> {{0, 10}, {0, 10}},
ImageSize -> Large]}}], {{pts, {{0, 0}, {5, 9}, {10, 0}}},
Locator, ContinuousAction -> False, LocatorAutoCreate -> True},
SaveDefinitions -> True]
Se pueden mover los vértices capturándolos con el Mouse, y crear nuevos vértices con Alt+Click en Windows y Command+Click en Mac.
Para aprender más sobre Mathematica ingrese aquí sitio de aprendizaje de Wolfram o en mi website ustamathematica.wixsite.com/basicas
No hay comentarios.:
Publicar un comentario