Newer
Older
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
<html>
<head>
<title>svg line test</title>
</head>
<body>
<svg id="svg" xmlns="http://www.w3.org/2000/svg" version="1.1"
viewBox="0 0 1 1"
style="width:100%;height:100%;">
</svg>
<script type="application/javascript">
var nlines = 1000;
var linewidth = 0.002;
var svgns = "http://www.w3.org/2000/svg"
svg = document.getElementById("svg")
var d = new Date();
t0 = d.getTime();
var x1 = new Array(nlines);
var x2 = new Array(nlines);
var dx1 = new Array(nlines);
var dx2 = new Array(nlines);
var y1 = new Array(nlines);
var y2 = new Array(nlines);
var dy1 = new Array(nlines);
var dy2 = new Array(nlines);
for (i = 0; i < nlines; ++i) {
x1[i] = Math.random();
x2[i] = Math.random();
dx1[i] = 0.02*(Math.random()-.5);
dx2[i] = 0.02*(Math.random()-.5);
y1[i] = Math.random();
y2[i] = Math.random();
dy1[i] = 0.02*(Math.random()-.5);
dy2[i] = 0.02*(Math.random()-.5);
}
var lines = new Array(nlines);
var circles = new Array(nlines);
for (i = 0; i < nlines; ++i) {
line = document.createElementNS(svgns, "line");
line.setAttribute("x1", x1[i]);
line.setAttribute("y1", y1[i]);
line.setAttribute("x2", x2[i]);
line.setAttribute("y2", y2[i]);
line.setAttribute("stroke-width",linewidth);
line.setAttribute("stroke","black");
lines[i] = line;
svg.appendChild(lines[i]);
/*
circ = document.createElementNS(svgns, "circle");
circ.setAttribute("cx", x1[i]);
circ.setAttribute("cy", y1[i]);
circ.setAttribute("r", 4*linewidth);
circ.setAttribute("fill","black");
circles[i] = circ;
svg.appendChild(circles[i]);
*/
}
var data = document.createTextNode("");
var text = document.createElementNS(svgns, "text");
text.setAttributeNS(null, "x", "0.05");
text.setAttributeNS(null, "y", ".98");
text.setAttributeNS(null, "font-size", ".05");
text.setAttributeNS(null, "fill", "red");
text.setAttributeNS(null, "text-anchor", "start");
text.appendChild(data);
svg.appendChild(text);
var told = 0;
var tnew = 0;
function animate() {
for (i = 0; i < nlines; ++i) {
x1[i] = x1[i]+dx1[i];
if ((x1[i] < 0) || (x1[i] > 1))
dx1[i] = -dx1[i];
y1[i] = y1[i]+dy1[i];
if ((y1[i] < 0) || (y1[i] > 1))
dy1[i] = -dy1[i];
x2[i] = x2[i]+dx2[i];
if ((x2[i] < 0) || (x2[i] > 1))
dx2[i] = -dx2[i];
y2[i] = y2[i]+dy2[i];
if ((y2[i] < 0) || (y2[i] > 1))
dy2[i] = -dy2[i];
lines[i].setAttribute("x1", x1[i]);
lines[i].setAttribute("y1", y1[i]);
lines[i].setAttribute("x2", x2[i]);
lines[i].setAttribute("y2", y2[i]);
//circles[i].setAttribute("cx",x1[i]);
//circles[i].setAttribute("cy",y1[i]);
}
var d = new Date();
tnew = d.getTime();
update = tnew - told;
told = tnew;
data.textContent = "lines: "+nlines+" frame (ms): "+update;
}
window.setInterval("animate()",0);
</script>
</body>
</html>