鉴于:
点P,圆圈1和圆圈2的位置和半径
什么是:
T的等式,'混合等级'颜色1和2之间(0到1之间的值)
许多径向梯度方程仅适用于共享位置的同心圆或圆。我正在寻找与下图相匹配的东西,使用Quartz(Core Graphics)创建。我正在编写一个GLSL着色器,但我需要先理解数学。
答案 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)
我知道这有点难以阅读,但实际上数学上并不是那么糟糕。它只是加法,乘法和平方(实际上只是乘法)。