This repository has been archived on 2025-01-25. You can view files and clone it, but cannot push or open issues or pull requests.
labvoeding-front/corner radius simulation.html
Mats van Reenen 5031e5f2b6 first comit
2020-07-22 11:05:57 +02:00

80 lines
2.4 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>sqare round inside corner</title>
</style>
</head>
<body>
<div id='fps'></div>
<svg viewbox="0 0 15 15">
<rect width="10" height="10" x="0" y="0" stroke="green" stroke-width="0.1" fill="none" />
<circle cx='0' cy='0', r='1' />
<line y1="0" x1="5" y2="10" x2="5" stroke="red" stroke-width="0.05" />
<line y1="0" x1="5" y2="10" x2="10" stroke="red" stroke-width="0.05" />
<circle cx="10" cy="0" r="0.05" fill="blue" />
</svg>
<script>
var drow = function(){
a.drow(a)
}
class corner{
grow = 0.1;
fpsSlower = 0;
radius = 1;
constructor(svg){
this.last = new Date().getTime();
this.svg = svg;
this.circle = svg.getElementsByTagName('circle')[0]
this.dot = svg.getElementsByTagName('circle')[1]
this.line = svg.getElementsByTagName('line')[0]
this.line2 = svg.getElementsByTagName('line')[1]
this.fps = document.getElementById('fps')
this.drow(this)
}
drow(self){
if(typeof self != 'object'){
self = a
}
requestAnimationFrame(self.drow)
//setTimeout(self.drow, 100)
if(self.fpsSlower == 10){
var last = new Date().getTime()
self.fps.innerHTML = Math.round(10*100*1000/(last - self.last))/100 + " fps"
self.last = last
self.fpsSlower = 0
}
self.fpsSlower += 1;
self.circle.r.baseVal.value = self.radius;
self.circle.cx.baseVal.value = self.circle.cy.baseVal.value = 10 - (Math.SQRT2/2 * self.radius);
self.line.x1.baseVal.value = self.line.y1.baseVal.value = 10 - (Math.SQRT2/2 * self.radius);
self.line2.x1.baseVal.value = self.line2.y1.baseVal.value = 10 - (Math.SQRT2/2 * self.radius);
self.line.x2.baseVal.value = 10 - (self.radius * 1.414);
self.dot.cy.baseVal.value = 10 - (self.radius * 1.414);
self.radius += self.grow
if((self.radius >= 7.07 && self.grow > 0)|| (self.radius <= 0.01 && self.grow < 0))
self.grow = -self.grow
}
}
window.onload = function() {
a = new corner(document.getElementsByTagName('svg')[0])
var gui = new dat.GUI();
gui.add(a, 'radius', 0.01, 7.07).step(0.001).listen();
gui.add(a, 'grow', 0, 4)
};
</script>
<script type="text/javascript" src="dat.gui.min.js"></script>
</body>
</html>