51 lines
1.5 KiB
Plaintext
51 lines
1.5 KiB
Plaintext
polys:=T( //(name,( ((a,b),(c,d)),((a,b),(c,d))... ), ... )==(nm,(ln,ln..) ..)
|
|
T("squared",
|
|
T(T(T( 0.0, 0.0), T(10.0, 0.0)),
|
|
T(T(10.0, 0.0), T(10.0, 10.0)),
|
|
T(T(10.0, 10.0), T( 0.0, 10.0)),
|
|
T(T( 0.0, 10.0), T( 0.0, 0.0)))),
|
|
T("squaredhole",
|
|
T(T(T( 0.0, 0.0), T(10.0, 0.0)),
|
|
T(T(10.0, 0.0), T(10.0, 10.0)),
|
|
T(T(10.0, 10.0), T( 0.0, 10.0)),
|
|
T(T( 0.0, 10.0), T( 0.0, 0.0)),
|
|
T(T( 2.5, 2.5), T( 7.5, 2.5)),
|
|
T(T( 7.5, 2.5), T( 7.5, 7.5)),
|
|
T(T( 7.5, 7.5), T( 2.5, 7.5)),
|
|
T(T( 2.5, 7.5), T( 2.5, 2.5)))),
|
|
T("strange",
|
|
T(T(T( 0.0, 0.0), T( 2.5, 2.5)),
|
|
T(T( 2.5, 2.5), T( 0.0, 10.0)),
|
|
T(T( 0.0, 10.0), T( 2.5, 7.5)),
|
|
T(T( 2.5, 7.5), T( 7.5, 7.5)),
|
|
T(T( 7.5, 7.5), T(10.0, 10.0)),
|
|
T(T(10.0, 10.0), T(10.0, 0.0)),
|
|
T(T(10.0, 0.0), T( 2.5, 2.5)),
|
|
T(T( 2.5, 2.5), T( 0.0, 0.0)))), # conjecturally close polygon
|
|
T("exagon",
|
|
T(T(T( 3.0, 0.0), T( 7.0, 0.0)),
|
|
T(T( 7.0, 0.0), T(10.0, 5.0)),
|
|
T(T(10.0, 5.0), T( 7.0, 10.0)),
|
|
T(T( 7.0, 10.0), T( 3.0, 10.0)),
|
|
T(T( 3.0, 10.0), T( 0.0, 5.0)),
|
|
T(T( 0.0, 5.0), T( 3.0, 0.0)))),
|
|
);
|
|
|
|
testPoints:=T(
|
|
T( 5.0, 5.0),
|
|
T( 5.0, 8.0),
|
|
T(-10.0, 5.0),
|
|
T( 0.0, 5.0),
|
|
T( 10.0, 5.0),
|
|
T( 8.0, 5.0),
|
|
T( 10.0, 10.0)
|
|
);
|
|
|
|
foreach name,polywanna in (polys){
|
|
name.println();
|
|
foreach testPoint in (testPoints){
|
|
println("\t(%6.1f,%6.1f)\t".fmt(testPoint.xplode()),
|
|
pointInPoly(testPoint,polywanna) and "IN" or "OUT");
|
|
}
|
|
}
|