mirror of
https://github.com/mitxela/clock4.git
synced 2025-12-05 23:20:26 -08:00
a dubiously helpful overlay for brightness curve
This commit is contained in:
@@ -3,9 +3,11 @@
|
|||||||
<canvas width=800 height=600 style='position:relative;'></canvas>
|
<canvas width=800 height=600 style='position:relative;'></canvas>
|
||||||
<br>
|
<br>
|
||||||
<textarea style="width:300px;height:100px" oninput='parse()'></textarea>
|
<textarea style="width:300px;height:100px" oninput='parse()'></textarea>
|
||||||
|
<span style='position:absolute;pointer-events:none;font-family:monospace;'></span>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
pre = document.querySelector('textarea')
|
pre = document.querySelector('textarea')
|
||||||
|
span = document.querySelector('span')
|
||||||
canvas = document.querySelector('canvas')
|
canvas = document.querySelector('canvas')
|
||||||
ctx = canvas.getContext('2d')
|
ctx = canvas.getContext('2d')
|
||||||
|
|
||||||
@@ -91,10 +93,25 @@ function clamp(x,y,i){
|
|||||||
return [Math.min(maxx,Math.max(minx,x)),Math.min(1,Math.max(0,y))]
|
return [Math.min(maxx,Math.max(minx,x)),Math.min(1,Math.max(0,y))]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function highlight(e){
|
||||||
|
let x = (e.pageX-gx-b.x)/gw;
|
||||||
|
let y = 1-(e.pageY-gy-b.y)/gh;
|
||||||
|
if (x<0.0 || x>1.0 || y<0.0 || y>1.0) {
|
||||||
|
span.textContent="";
|
||||||
|
} else {
|
||||||
|
let out = single(x)
|
||||||
|
span.textContent=Math.round(x*4095)+","+Math.round(out*4095);
|
||||||
|
span.style.left=e.pageX+"px"
|
||||||
|
span.style.top=((1-out)*gh+gy+b.y)+"px"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
document.onmousemove=highlight
|
||||||
|
|
||||||
canvas.onmousedown=function(e){
|
canvas.onmousedown=function(e){
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
let x = (e.pageX-gx-b.x)/gw;
|
let x = (e.pageX-gx-b.x)/gw;
|
||||||
let y = 1-(e.pageY-gy-b.y)/gh;
|
let y = 1-(e.pageY-gy-b.y)/gh;
|
||||||
|
span.textContent="";
|
||||||
|
|
||||||
let i = nearestPoint(x,y)
|
let i = nearestPoint(x,y)
|
||||||
|
|
||||||
@@ -106,7 +123,7 @@ canvas.onmousedown=function(e){
|
|||||||
draw()
|
draw()
|
||||||
}
|
}
|
||||||
document.onmouseup=function(e){
|
document.onmouseup=function(e){
|
||||||
document.onmousemove=null
|
document.onmousemove=highlight
|
||||||
document.onmouseup=null
|
document.onmouseup=null
|
||||||
}
|
}
|
||||||
draw()
|
draw()
|
||||||
@@ -150,33 +167,21 @@ function parse(){
|
|||||||
draw(1)
|
draw(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
draw()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function single(inp){
|
function single(inp){
|
||||||
|
|
||||||
|
|
||||||
inp /=4095.0
|
|
||||||
let i;
|
let i;
|
||||||
for (i=1; i< curve.length-1; i++){
|
for (i=1; i< curve.length-1; i++){
|
||||||
if (curve[i][0] > inp) break;
|
if (curve[i][0] > inp) break;
|
||||||
}
|
}
|
||||||
let factor = (inp - curve[i-1][0]) / (curve[i][0] - curve[i-1][0]);
|
let factor = (inp - curve[i-1][0]) / (curve[i][0] - curve[i-1][0]);
|
||||||
|
|
||||||
let out = curve[i-1][1]*(1.0-factor) + curve[i][1]*factor;
|
let out = curve[i-1][1]*(1.0-factor) + curve[i][1]*factor;
|
||||||
|
|
||||||
if (out>1.0 || isNaN(out)) out=1.0;
|
if (out>1.0 || isNaN(out)) out=1.0;
|
||||||
else if (out<0.0) out=0.0;
|
else if (out<0.0) out=0.0;
|
||||||
|
|
||||||
console.log(Math.round(out*4095,2))
|
return out
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
draw()
|
||||||
[1500,1550,1430,3560,3470,2920,2050,2015,1980,900,580,350,450,230].forEach(single)
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user