gpt4 book ai didi

c++ - Qt:如何制作二维插值颜色的字段?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:25:00 25 4
gpt4 key购买 nike

我是 C++ 的初学者,尤其是图形相关的。我想为我的 graphicsview 制作一个动画背景,看起来有点像这样:

Gradient Field Airflow

图片表示气流在物体上的湍流。颜色必须基于值矩阵。

我只能找到如何使用 QT 进行单向渐变。

我该如何设置?如何获得双向渐变?

/*编辑已经很好地指出,从技术上讲,这不是渐变,而是二维节点数组上的颜色插值。*/

最佳答案

好吧,你还没有提供输入数据,所以没有人知道你真正想要实现什么!

  1. 如果您有流动轨迹和质量

    然后你可以使用一些粒子系统+重度模糊/平滑过滤来实现这一点。对于轨迹上的任何已知点,绘制一个抖动的圆圈,其颜色取决于质量/温度/速度……和色标。它应该在中间是实心的,在边缘是透明的。渲染后只需模糊/平滑图像几次,就可以了。使用的点越少,圆圈必须越大才能很好地覆盖区域也可以在多 channel 中完成并随机更改点坐标以提高图像的随机性......

  2. 如果您有场强/速度/温度或任何网格值

    然后它类似于#1,您也可以通过 QUADs/Squares 代替粒子系统进行渲染。二维线性梯度称为Bilinear Filtering

        c00   -- x -->  c01

    |
    |
    y c(x,y)
    |
    |
    V

    c10 c11

哪里:

  • c00,c01,c10,c11是角色
  • c(x,y) x,y 上有颜色吗?广场内的位置
  • x,y<0,1> 范围内为简单起见(但您可以使用任何具有适当缩放比例的方程)

双线性插值3倍线性插值:

        c0=c(x,0)=c00+((c01-c00)*x)
c1=c(x,1)=c10+((c11-c10)*x)
c(x,y) =c0 +((c1 -c0 )*y)

所以用上面计算的颜色渲染正方形的所有像素,这就是你要找的。这种过滤通常会在正方形之间的边缘或对角线上产生伪影,以避免使用非线性过滤或模糊/平滑最终图像

关于c++ - Qt:如何制作二维插值颜色的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20655174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com