tool - draw angle
HTML[Edit]
+
0
-
0
Tool - draw angle
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<!doctype html> <html> <head> <style> .field { width: 300px; display: flex; } .label { flex: 0; } .value { flex: 1; } .block { width: 100%; display: block; } .canvas { border: 1px solid gray; } </style> </head> <body> <div class="field"> <div class="label">Angle: </div> <div class="value"> <input class="block" id="value" type="number" min="0" max="360" oninput="handleValueChange()" /> <input class="block" id="range" type="range" min="0" max="360" oninput="handleRangeChange()" /> </div> <div class="label">[degrees]</div> </div> <canvas class="canvas" id="canvas" width="300" height="300"></canvas> <script> const angle = 30; // initial angle const hValue = document.querySelector('#value'); const hRange = document.querySelector('#range'); const hCanvas = document.querySelector('#canvas'); const context = hCanvas.getContext('2d'); const RADIAN = Math.PI / 180.0; const X = 0.5 * canvas.width; const Y = 0.5 * canvas.height; const RADIUS = 0.24 * canvas.width + 0.24 * canvas.height; hValue.value = angle; hRange.value = angle; const redrawAngle = (angle) => { const tmp = -RADIAN * angle; context.beginPath(); context.clearRect(0, 0, canvas.width, canvas.height); context.fill(); context.beginPath(); context.strokeStyle = '#0000ff'; context.moveTo(X + RADIUS, Y); context.lineTo(X, Y); context.lineTo(X + RADIUS * Math.cos(tmp), Y + RADIUS * Math.sin(tmp)); context.stroke(); context.beginPath(); context.strokeStyle = '#ff0000'; context.arc(X, Y, 0.2 * RADIUS, tmp, 0); context.stroke(); }; redrawAngle(angle); const handleValueChange = () => { const angle = parseFloat(hValue.value); hRange.value = angle; redrawAngle(angle); }; const handleRangeChange = () => { const angle = parseFloat(hRange.value); hValue.value = angle; redrawAngle(angle); }; </script> </body> </html>
Reset