-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathtriang_pnltri_js.html
113 lines (93 loc) · 4.21 KB
/
triang_pnltri_js.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'/>
<title>Triangulation of simple polygons in near-linear time [Sei91]</title>
<script type="text/javascript" src="PolygonTestdata.js"></script>
<!-- script type="text/javascript" src="../build/pnltri.min.js"></script -->
<script type="text/javascript" src="../src/Pnltri.js"></script>
<script type="text/javascript" src="../src/PnltriMath.js"></script>
<script type="text/javascript" src="../src/PolygonData.js"></script>
<script type="text/javascript" src="../src/EarClipTriangulator.js"></script>
<script type="text/javascript" src="../src/Trapezoider.js"></script>
<script type="text/javascript" src="../src/MonoSplitter.js"></script>
<script type="text/javascript" src="../src/MonoTriangulator.js"></script>
<script type="text/javascript" src="../src/Triangulator.js"></script>
<!-- just to display results graphically - ->
<script type="text/javascript" src="PolygonDataTest.js"></script>
<script type="text/javascript" src="TestHelpers.js"></script -->
</head>
<body>
<h2><div id="version"></div></h2>
<script type="text/javascript">
var versionTarget = document.getElementById( "version" );
versionTarget.innerHTML = 'PnlTri.js Version: <em>' + PNLTRI.REVISION + '</em>';
</script>
<p><div onclick="perfTriang()">Klick fuer Performance Test</div><div id="performance tests"></div></p>
<script type="text/javascript">
// "squares_perftest_max", 10
// "squares_perftest_mid", 50
// "tree_full", 50
var perfDataName = "squares_perftest_max";
var perfRuns = 10;
var perfTarget = document.getElementById( "performance tests" );
var perfStr='';
</script>
<h4>Triangulator for Simple Polygons with Holes</h4>
<div id="simple polygon with holes"></div>
<script type="text/javascript">
var testData = new PolygonTestdata();
var polyDataNames = [ "article_poly", "trap_2up_2down", "pt_3_diag_max",
"xy_bad_saw", "tree_full", "squares_perftest_max",
];
var myTriangulator = new PNLTRI.Triangulator();
var durationTriang, startSection = new Date();
var resultStr='', dataName, example_data, triangList;
for ( var dataIdx in polyDataNames ) {
dataName = polyDataNames[dataIdx];
example_data = testData.get_polygon_with_holes( dataName );
durationTriang = new Date().getTime();
triangList = myTriangulator.triangulate_polygon( example_data );
durationTriang -= new Date().getTime();
// alert("Vertices: " + example_data.length + "/" + example_data[0].length + "/" + myTriangulator.lastPolyData.vertices.length );
resultStr += '<p/><p/>' + dataName + ':<br/>';
resultStr += ( triangList ) ?
triangList.map( function(tri) { return "[ "+tri.join(", ")+" ]" } ).join(", ") :
'NO Triangle-List!';
var endSection = new Date();
resultStr += '<p/> Number of Triangles: ' + triangList.length;
resultStr += ' milliseconds: ' + -durationTriang + '/' + ( endSection.getTime()-startSection.getTime() );
startSection = endSection;
}
var resultTarget = document.getElementById( "simple polygon with holes" );
resultTarget.innerHTML = resultStr;
// display last result
// drawPolygonLayers( { "poly": example_data, "triang": myTriangulator.lastPolyData.triangles_2_polygons() }, 2 );
function perfTriang() {
var idx;
var perf_test_data = [];
for ( idx = 0; idx < perfRuns; idx++ ) {
perf_test_data.push( testData.get_polygon_with_holes( perfDataName ) );
}
console.profile();
for ( idx = 0; idx < perfRuns; idx++ ) {
myTriangulator.triangulate_polygon( perf_test_data[idx] );
perfStr += ' '+idx;
}
console.profileEnd();
// free memory
myTriangulator.clear_lastData();
perf_test_data = [];
perfStr += ';';
perfTarget.innerHTML = perfStr;
}
</script>
<!-- h2><div id="counter"></div></h2>
<script type="text/javascript">
var counterTarget = document.getElementById( "counter" );
counterTarget.innerHTML = 'Counter: 0: ' + PNLTRI.cnt_0 + ', 1: ' + PNLTRI.cnt_1 + ', 2: ' + PNLTRI.cnt_2 +
', 3: ' + PNLTRI.cnt_3 + ', 4: ' + PNLTRI.cnt_4 + ', 5: ' + PNLTRI.cnt_5 +
', 6: ' + PNLTRI.cnt_6;
</script -->
</body>
</html>