径向梯度方程

时间:2012-12-21 23:00:06

标签: graphics modeling

鉴于:

点P,圆圈1和圆圈2的位置和半径

什么是:

T的等式,'混合等级'颜色1和2之间(0到1之间的值)

许多径向梯度方程仅适用于共享位置的同心圆或圆。我正在寻找与下图相匹配的东西,使用Quartz(Core Graphics)创建。我正在编写一个GLSL着色器,但我需要先理解数学。

enter image description here

1 个答案:

答案 0 :(得分:1)

如果这是2D,那么您可以将您的点所在的圆的参数写为:

x3=T*x1+(1-T)*x2
y3=T*y1+(1-T)*y2
r3=T*r1+(1-T)*r2

编辑:当然,该圈子可以表示为:

(x3-xP)^2+(y3-yP)^2=r3^2

你可以将前3个方程代入最后(并记住(xP,yP)是你的点)得到1个方程,只有T作为T中的二次变量,所以很容易求解T这样做给了我们:

T=(-r2*(r1-r2)+(x1-x2)*(x2-xP)+(y1-y2)(y2-yP)
    {+-}sqrt(r2^2*((x1-xP)^2+(y1-yP)^2)-2*r1*r2*((x1-xP)*(x2-xP)
               +(y1-yP)*(y2-yP))+r1^2*((x2-xP)^2+(y2-yP)^2)
               -(x2*y1-xP*y1-x1*y2+xP*y2+x1*yP-x2*yP)^2))
 /((r1-r2)^2-(x1-x2)^2-(y1-y2)^2)

我知道这有点难以阅读,但实际上数学上并不是那么糟糕。它只是加法,乘法和平方(实际上只是乘法)。

相关问题