|
手里有一组数据,是电磁场的数据,想以颜色表示场强
所以需要把数据分拆为R,G,B三原色,取值范围0--1
不知道怎么设置会比较合理呢?
整个模块如下:
fmax = -10#
For i = 0 To 11
For x1 = 0 To 54
For y1 = 0 To 79
If Abs(xxy(x1, y1, i)) > fmax Then fmax = Abs(xxy(x1, y1, i)) '(取最大值)
Next y1
Next x1
Next i
For i = 0 To Ncolor 'Ncolor是个很大的数,这里取10万
Redcolor(i) = Sin(0.7 * i / Ncolor)
Greencolor(i) = 100 * Sin(0.01 * i / Ncolor)
Bluecolor(i) = Sin(2# * i / Ncolor)
Next i
For i = 0 To 11
For x1 = 0 To 54
For y1 = 0 To 79
AAAA = Abs(xxy(x1, y1, i)) * Ncolor / fmax 'xxy(x1,y1,i)是电磁场数据
bbb = Int(Log(1 + AAAA) * 500)
'r-aa,g-aa,b-aa是以后使用到的颜色函数,对应于R,G,B
r_aa(x1, y1, i) = Redcolor(bbb)
g_aa(x1, y1, i) = Greencolor(bbb)
b_aa(x1, y1, i) = Bluecolor(bbb)
Next y1
Next x1
Next i
这是我自己随便设的,使得R,G,B取值范围在0--1
For i = 0 To Ncolor '(Ncolor这里取了10万,整数)
Redcolor(i) = Sin(0.7 * i / Ncolor)
Greencolor(i) = 100 * Sin(0.01 * i / Ncolor)
Bluecolor(i) = Sin(2# * i / Ncolor)
Next i
以后就引用它来给物体付值.但是我这样的设置不是很合理
所以想大家给个更能表现和表现更丰富的函数哦
电磁场数值差别很大,但是我把他们取 log 后归到0---1里了,现在要做的是怎样把0---1分别付给R,G,B从而体现不同的颜色变化
因为我虽然用VB编程,但具体画图是用OpenGL画的,它使用的R,G,B值是从0到1 |
|