游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1953|回复: 1

[求助]怎样把一组数据分拆为R,G,B三原色?类似调

[复制链接]

2

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2007-11-29 16:45:00 | 显示全部楼层 |阅读模式
手里有一组数据,是电磁场的数据,想以颜色表示场强
所以需要把数据分拆为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

2

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2007-11-29 16:51:00 | 显示全部楼层

Re: [求助]怎样把一组数据分拆为R,G,B三原色?类似

传了12个时间步的数据上来

sf_20071129165046.rar

316.32 KB, 下载次数:

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-17 04:11

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表