【发布时间】:2019-10-03 15:26:31
【问题描述】:
不知道下面两个公式是怎么推导出来的。请解释。我的声望点太低了,不能问写公式的人。
var sat = (1 - 2*y1) / (sqrt3*x1 - y1 + 2);
var val = (sqrt3*x1 - y1 + 2) / 3;
【问题讨论】:
-
我已经为你问了这个问题:)
-
@0009laH 谢谢! :'-)
不知道下面两个公式是怎么推导出来的。请解释。我的声望点太低了,不能问写公式的人。
var sat = (1 - 2*y1) / (sqrt3*x1 - y1 + 2);
var val = (sqrt3*x1 - y1 + 2) / 3;
【问题讨论】:
转换后,我需要三角形的角在点<0,-1>“top”、<-√3/2,1/2>“bottom-left”和<√3/2,1/2>“bottom-right”处接触单位圆。我选择左下角为黑点(val = 0),当val = 1时,顶部为色点(val em> = 1 和 sat = 1),右下角是白点(val = 1 和 sat = 0) .
为了实现这一点,我首先将右边缘定义为方程
<x,y> = <0,-1>*sat + <√3/2,1/2>*(1-sat)
^ ^-- When sat = 0, the result is this point
'-- When sat = 1, the result is this point
然后,当 val 变为零时,我将这条线向<-√3/2,1/2> 缩放
<x,y> = ( <0,-1>*sat + <√3/2,1/2>*(1-sat) )*val + <-√3/2,1/2>*(1-val)
<x,y> = <0,-1>*sat*val + <√3/2,1/2>*(1-sat)*val + <-√3/2,1/2>*(1-val)
^ ^ ^-- When val = 0, the result is this point
| '-- When val = 1 and sat = 0, the result is this point
'-- When val = 1 and sat = 1, the result is this point
从向量形式转换:
x = 0*sat*val + √3/2*(1-sat)*val + -√3/2*(1-val)
y = -1*sat*val + 1/2*(1-sat)*val + 1/2*(1-val)
扩展:
x = -√3/2*val*sat + √3*val - √3/2
y = -3/2*val*sat + 1/2
重新排列:
(√3*x - y + 2)/3 = val
(1 - 2*y)/3 = sat*val
求解sat和val:
sat = (1 - 2*y)/(√3*x - y + 2)
val = (√3*x - y + 2)/3
【讨论】: