-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
119 lines (96 loc) · 3.4 KB
/
index.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
114
115
116
117
118
119
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="d3.v3.min.js"></script>
<script type="text/javascript" src="cgutils.js"></script>
<script type="text/javascript" src="dcel.js"></script>
<script type="text/javascript" src="dsutils.js"></script>
<script type="text/javascript" src="linearrang.js"></script>
<script type="text/javascript" src="layout.js"></script>
<link type="text/css" rel="stylesheet" href="style.css"></script>
</head>
<body>
<br/>
<center>
<h1>Line Arrangement</h1>
</center>
<h2>Instructions</h2>
<p>
The application below demonstrates how to build a line arrangement by walking around the zone of the new line [1].<br/>
Click the canvas to add a new line to the arrangement, and use the buttons to see the traversal of the zone of the new line as it happens.
</p>
<h2>Summary</h2>
<p>
This implementation uses a data structure similar to a DCEL (doubly-connected edge list) to maintain a line arrangement. After one line is added, its zone is traversed from the left-most intersected edge to right, and the DCEL structure is updated: faces, edges and vertices are created to incorporate the new line.
</p>
<center>
<div id="vis">
<div id="canvas"></div>
<div id="statusdiv">
<table id='statustable' style="width: 100%;">
<thead>
<tr>
<th>Algorithm step</th>
</tr>
</thead>
<tbody>
</tbody>
</table> <!-- statustable -->
<span id='Next' onclick='lineArrangementNext()'>
<img src="imgs/forwardbutton.png" style="padding: 50px;" alt="Forward" width="40" height="40"></img>
</span>
</div>
<div id="dceldiv">
<table id="verticestable" class='dceltable' style="width: 230px;height:300px;">
<thead>
<tr>
<th>Vertex</th>
<th>X</th>
<th>Y</th>
<th>Incident Edge</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<table id="facestable" class='dceltable' style="width: 290px;height:300px;">
<thead>
<tr>
<th>Face</th>
<th>OuterComponent</th>
<th>InnerComponents</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<table id="edgestable" class='dceltable' style="width: 400px;height:300px;">
<thead>
<tr>
<th>Half-edge</th>
<th>Origin</th>
<th>Twin</th>
<th>Incident Face</th>
<th>Next</th>
<th>Prev</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</center>
<h2>Authors</h2>
<p>
Bowen Yu, Cesar Palomo, Fabio Markus Miranda
<br/>
This demo was made as part of the requirements for the discipline Computation Geometry, taught by professor Boris Aronov at NYU-Poly during Spring of 2013.
</p>
<h2>References</h2>
[1] Mark de Berg, Otfried Cheong, Marc van Kreveld, and Mark Overmars. 2008. Computational Geometry: Algorithms and Applications (3rd ed.). TELOS, Santa Clara, CA, USA.
<br/>
<br/>
<img src="imgs/nyupolylogo.png" alt="NYU-Poly" width="175" height="47" style="float:left"></img>
</body>
</html>