求地形图颜色渐变算法
eifheowvd2012/08/28软件综合 IP:广东
获取了各点的海拔高度值,现在我是用最原始的方法将它们显示出来的

就是用高度平均分成3段,第一段用红色,第二段用绿色,第三段用蓝色。再把每一段分为256份。

以上描述估计各位看了不太明白,下面举个例子:
比如说我的数据的范围是-12000m~9000m(最深处马里亚纳海沟,最高处珠穆朗玛峰)

我就把这21000m的长度分为三段,每段7000m

2000m~9000m的颜色为RGB(X,0,0)
-5000m~2000m的颜色为RGB(0,X,0)
-12000m~-5000m的颜色为RGB(0,0,X)

X的取值范围为0~255

7000m / 256 ≈ 27.3m

拿8844m来说
8844m - 2000m = 6844m
6844m / 27.3m ≈ 251
那么海拔8844m的点显示出来的颜色就是RGB(251,0,0)


这个就是我的笨拙方法了,看是能看,就是效果太烂,求精美一点的算法

附上效果图
a.png
+1  科创币    yanli12321    2012/08/28 格陵兰岛怎么黑了?
来自:计算机科学 / 软件综合
22
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
eifheowvd 作者
12年4个月前 IP:未同步
445669
在网上搜了不少关于地形图方面的,只发现了下面这张图,这个我感觉很不错,不过这图是05年的,原作者的资料什么的都找不到
b.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
.........
12年4个月前 IP:未同步
445680
好像是数据的问题吧,试试更精确的数据吧
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
eifheowvd作者
12年4个月前 IP:未同步
445681
回 2楼(.........) 的帖子
不是数据的问题,纯粹是因为算法太SB了,数据可以精确到小数点后7位(我把小数四舍五入成整数了,不过单纯整数精度也是足够的) [s:247]
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
拔刀斋
12年4个月前 IP:未同步
445688
用Tecplot软件画渐变颜色的等值线图效果很好
+2
科创币
eifheowvd
2012-09-01
效果不错,不过研究这个软件的用法以及数据的写法花了好长时间,过几天要开学了,等有空再输出完整图像
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
celeron533
12年4个月前 IP:未同步
445703
你的颜色过渡选的不太对。。。
我先用PS试试看,稍后。

---------------------

PS的选色器正好有个很接近的色条,所以我直接拖拉了一段看了看结果
color.png

三个主要色段:R --> G --> B
一开始先是RGB[255,0,0]
然后绿色增长,红色不变,一直增长到黄色[255,255,0]
然后红色减少,变成绿色[0,255,0]
然后蓝色增加,变成青色[0,255,255]
最后绿色消失,变成蓝色[0,0,255]
(还能再增加一个阶段,添加红色变成紫色,或者同时添加红色和绿色最终变成黑色)

由于255全色过于鲜艳,可以把最大值限制在200,这样不刺眼

#RRGGBB

#FF0000
#FF8000
#FFFF00
#80FF00
#00FF00
#00FF80
#00FFFF
#0080FF
#0000FF

___

___

___

___

___

___

___

___

___



修正最大值为C8,中间值64

___

___

___

___

___

___

___

___

___


效果不错啊

注意有的图还是用了非线性的分配方法,比如我贴的这张图,低海拔地区颜色变化强烈
+20
科创币
eifheowvd
2012-08-29
大赞,马上动手!
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
eifheowvd作者
12年4个月前 IP:未同步
445755
Re:yanli12321
格陵兰岛RGB三个值都接近0,所以看起来黑
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
celeron533
12年4个月前 IP:未同步
445792
java



为了提高效率,在C里面可以用求模、取反(或者故意让255容量的char溢出)来提高运算速度(个人感觉,没有细想)
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh
12年4个月前 IP:未同步
445826
因当是这样的

RGB   由 R向G 向B

只要 255/256

由000(R)000(G)000(B) 或 255 255 255 开始    +1/减1 就好了   255进制 或 16进   色彩值刚好对应    

一伙装个软件试试一下方法 刚好按精灵能试试这么玩
+2
科创币
eifheowvd
2012-09-01
参与奖
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh
12年4个月前 IP:未同步
445836
RGB()
{
BBB++;
if(BBB>255)
{
BBB=255;
GGG++;
if(GGG>255)
{
GGG=255;
RRR++;
if(RRR>255)
{
RRR=255;
}

}



}



}
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
celeron533
12年4个月前 IP:未同步
445839
回 9楼(jrcsh) 的帖子
你这个完全悲剧,极端情况下会出现白色
而且纯红不会出现。
蓝 青 白。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
我说要有光
12年4个月前 IP:未同步
445843
2000m -5000m -12000m  这3个颜色都有可能是黑的,所以效果会不好

LZ不如尝试下把颜色按位排列,FFFFFF为最高,000000为最低,算好具体的值再按RGB的顺序拆了放进RGB(X,X,X)里面
+2
科创币
eifheowvd
2012-09-01
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
hx
12年4个月前 IP:未同步
445846
回 10楼(celeron533) 的帖子
思路 麻 [s:274]

可以调整改良, 我只给出了一个刷出 RGB 色的方法  

还得下载一个软件来,实走一下,

RGB刷出来了, 就是数据转RGB 值的对应转换了, 最简单的就是按比例分配,把尾巴数扔了   最高值 /3  分8级   这样变化就很明显了
+2
科创币
eifheowvd
2012-09-01
你写的程序用的是什么语言?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
hx
12年4个月前 IP:未同步
445850
先刷一下单色 ~~~~ (我反客为主~~~~ 我光荣~~~~[s:178])




1.png
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
hx
12年4个月前 IP:未同步
445852
发现上边的 刷法不好看 , 看来还是要用过度的方法  000000  0000FF  00FF00 FF0000  这样会试试


发现上边的 刷法不好看 , 看来还是要用2色混合的方法  000000  0000FF  00FFFF FFFF00  这样会试试   用FF可能有些极端~~~玩完后在取值
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
hx
12年4个月前 IP:未同步
445856





有点混乱了~~~·因当先确定    色彩的变化是 由蓝向绿 在向红  

哪么确定  三元色的 值  在让他们过度起来因当可以收工了


拿出画图~~~~ 点开来看看色值

u=BBB
红       R255 G0 U0       红+绿     R255 G255 U         绿   R0 G255  U0           绿+蓝     R0  G255 U  255          蓝  R0 G0  U255
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
虎哥
12年4个月前 IP:未同步
445864
分层设色地形图是有规矩的,世界上6000米以上的地方,-6000以下的地方,少得可怜。大尺度地形图应尽可能反映最大面积的细节。颜色选择上面,也要选人眼对变化最敏感的颜色,放在尽可能大的面积上。一般来说不宜平滑渐变,人眼对平滑渐变不敏感。以分层设色为好。
+2
科创币
eifheowvd
2012-09-01
学习了
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
锦瑟听弦
12年4个月前 IP:未同步
445866
可以找出标注经纬度效果比较好的地形图,把这个数据的高度作为变量,颜色做输出进行二项式拟合。拟合出的参数就可以拿来用啦:)
+2
科创币
eifheowvd
2012-09-01
拟合可以办到,不过还是思路重要
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon
12年4个月前 IP:未同步
447287
请允许我指出楼主的严重错误
按照楼主的设计,颜色的过渡是这样的:

最深处 黑→蓝→突然变黑→绿→突然变黑→红 最高处

这显然是楼主思考问题不全面的结果。正确的过渡是

最高处 红RGB(255,0,0)-黄RGB(255,255,0)-绿RGB(0,255,0)-青RGB(0,255,255)......
+1
科创币
celeron533
2012-08-31
对色彩认知不足的结果
+2
科创币
eifheowvd
2012-09-01
完全是小白,不是色盲的“色盲”,O(∩_∩)O
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
eifheowvd作者
12年4个月前 IP:未同步
447834
好几天没来,现在上个图[s:274]

a.png
+100
科创币
novakon
2012-09-01
赞扬您
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
celeron533
12年4个月前 IP:未同步
448415
回 19楼(xp200798) 的帖子
智利海边出现彩虹线~~~

你直接把陆地海拔忽略了?

紫色区域很少,所以可以把那一段搞成非线性的
+1
科创币
eifheowvd
2012-09-03
恩,陆地直接用绿色,紫色区域是深度6000米以上的
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
hx
12年4个月前 IP:未同步
448421
xp200798    科创币    +2    前天 23:18    你写的程序用的是什么语言?


按键精灵9.0 +[s:178]   一个二流都排不上的~~~~  混搭语言,有点C 又支持VB   效率又不如VB
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
eifheowvd
学者 笔友
文章
21
回复
643
学术分
1
2011/11/22注册,6年5个月前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}