<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>