【问题标题】:The formulars in HSV triangleHSV三角形中的公式
【发布时间】:2019-10-03 15:26:31
【问题描述】:

不知道下面两个公式是怎么推导出来的。请解释。我的声望点太低了,不能问写公式的人。

HSV triangle in C#

var sat = (1 - 2*y1) / (sqrt3*x1 - y1 + 2);
var val = (sqrt3*x1 - y1 + 2) / 3;

【问题讨论】:

  • 我已经为你问了这个问题:)
  • @0009laH 谢谢! :'-)

标签: math hsv


【解决方案1】:

转换后,我需要三角形的角在点<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 变为零时,我将这条线向&lt;-√3/2,1/2&gt; 缩放

<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

求解satval

sat = (1 - 2*y)/(√3*x - y + 2)
val = (√3*x - y + 2)/3

【讨论】:

  • 谢谢大家!这对我有很大帮助。一个月以来,我一直在努力理解这个公式。虽然这仍然不容易:-),但我会努力完成它。
  • 终于明白那些公式了。你的解释很清楚也够了。我的数学知识还不够,所以我能够再次研究它,感谢您的公式。为软件程序员上一堂数学课怎么样? :-) 再次感谢!
猜你喜欢
  • 2017-07-20
  • 1970-01-01
  • 1970-01-01
  • 2019-09-08
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多