Graphics 径向梯度方程

Graphics 径向梯度方程,graphics,modeling,Graphics,Modeling,鉴于: 点p、圆1和圆2的位置和半径 什么是: T的方程式,颜色1和2之间的“混合级别”(0到1之间的值) 许多径向梯度方程仅适用于同心圆或共享位置的圆。我正在寻找与下面的图片相匹配的东西,使用石英(核心图形)创建。我正在写一个GLSL着色器,但我需要先理解数学 如果这是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 您可以

鉴于:

点p、圆1和圆2的位置和半径

什么是:

T的方程式,颜色1和2之间的“混合级别”(0到1之间的值)

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


如果这是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)

我知道这有点难理解,但从数学上来说,它并没有那么糟糕。它只是加法、乘法和平方运算(实际上就是乘法)。

你怎么知道p在形状上?在我看来,如果你有一个关于形状本身的方程,梯度应该很容易消失。我们在这里看什么?这是用2D还是3D绘制的?你说你用的是石英,但写的是GLSL着色器。由于Quartz不直接支持GLSL着色器,您将该着色器应用于什么?Quartz受CPU限制(速度慢),因此我希望为此编写一个GLSL片段着色器来替换Quartz,但其行为必须相同。它是在2D中绘制的。一旦我让它工作起来,它可能会被实现为一个GPUImage过滤器。尝试在这里使用这个公式:没有成功。我通过alpha运行sqrt的内容以生成一个简化版本:+x3%5E2+-+2+*+r1+*+r2+*+x3%5E2+%2B+r2%5E2+*+x3%5E2+%2B+r1%5E2+*+y3%5E2+*+r2+*+y3%5E2+%2B+r2%5E2+*+y3%5E2您忘记了整个分子周围的括号(从最开始开始到平方根结束。啊,没错。一个梯度出现了!我认为圆的位置在方程中丢失了,尽管(困难的部分)这是令人惊讶的!+/-似乎影响了圆的“绘制顺序”。我认为这是关键部分,其余部分将跟随(掩蔽等)完成了。我会在我的GPUImage叉子中使用这个@