近期做文章的时候想在两个RGB颜色之间找到N个过渡颜色,进行相应的曲线颜色填充。但是一直没有找到合适的程序,所以按照个人理解简单的写了一下。仅供各位参考,如果不当之处请指正。

原理:

1.两种[R1, G1, B1]、[R2, G2, B2]颜色对应三维RGB空间中的两个点;

2.两点坐标之差[R2-R1, G2-G1, B2-B1]即为一向量V;

3.通过将向量V分为N-1段,V/(N-1);

4.则颜色[R1, G1, B1]+(i-1)*V/(N-1)表示将两个颜色间分为N个过渡色的第i个颜色;

5.上式当i=1,即为[R1, G1, B1]。当i=N,即为[R2, G2, B2]。

计算过渡颜色子函数


%Matlab codes
%function ResultColor=Transition_Two_Color(Color1,Color2,N)
%Transition_Two_Color()
%    This function is used to calculate the linear transition color between two colors.
%    The generated color gradually changes from the first color to the second color.
%Input:
%    Color1,
%          initial color, 1x3 matrix,RGB or HSV, such as [55,130,189]
%    Color2,
%          end color, 1x3 matrix,RGB or HSV, such as [235,25,28]
%    N,
%          positive integer, number of transition,such as 4
%Output:
%    ResultColor,
%         Nx3 matrix, the first line is the initial color, the last line is the end color
%
%quiverC1C2=(Color2-Color1)/(N-1);%每一小段的增量ResultColor=zeros(N,3);%每一行代表一个过渡颜色,第一行代表初始颜色,最后一行代表末端颜色for i=1:NResultColor(i,:)=Color1+quiverC1C2*(i-1);%所有颜色end
end

使用方法如一下两个实例:

  • 实例1:输出不同相位下的sin(x)
%Example 1:
%
clc;
x=1:0.1:20;
phase=[0,0.5*pi,pi,1.5*pi];
Color1=[55,130,189];
Color2=[235,25,28];
ResultColor=Transition_Two_Color(Color1,Color2,length(phase));%Get the transition color
figure;
subplot(1,2,1)%sin
for iPhase=1:length(phase)y=sin(x+phase(iPhase));plot(x,y,'linewidth',1.5,'color',ResultColor(iPhase,:)/256);%[R,G,B] in plot.m should convert to range 0 to 1hold on;
end
legend({'phase=0','phase=0.5*pi','phase=pi','phase=1.5*pi'},'FontName','Times New Roman','Fontsize',16);
set(gca,'linewidth',1.5,'FontName','Times New Roman','FontSize',16);
xlabel('x');ylabel('sin(x+Phase)');
title('sin(x+Phase)');
  • 实例1结果如图所示:

  • 实例2:输出不同底数的指数函数
%Example 2:
x=-5:0.1:5;
BaseNum=[-2,-1,1,2];
Color1=[55,130,189];
Color2=[235,25,28];
ResultColor=Transition_Two_Color(Color1,Color2,length(BaseNum));
for iBaseNum=1:length(BaseNum)y=BaseNum(iBaseNum).^x;plot(x,y,'linewidth',1.5,'color',ResultColor(iBaseNum,:)/256);%[R,G,B] in plot.m should convert to range 0 to 1hold on;
end
set(gca,'linewidth',1.5,'FontName','Times New Roman','FontSize',16);
legend({'BaseNum=-2','BaseNum=-1','BaseNum=1','BaseNum=2'},'FontName','Times New Roman','Fontsize',16);
xlabel('x');ylabel('BaseNum\^x');
title('BaseNum\^x');
  • 实例2结果如图所示

MATLAB如何根据两个颜色(RGB值)产生任意多个中间的过渡色?相关推荐

  1. Android常用颜色RGB值以及中英文名称

    Android常用颜色RGB值以及中英文名称 颜色 RGB值 英文名 中文名   #FFB6C1 LightPink 浅粉红   #FFC0CB Pink 粉红   #DC143C Crimson 深 ...

  2. 常用icon以及color颜色RGB值和对应颜色效果图

    Android谷歌官方扁平化设计常用icon集合   Android谷歌官方扁平化设计color颜色RGB值和对应颜色效果图.

  3. 最让人舒服的11种颜色RGB值和十六进制值

    最让人舒服的11种颜色RGB值和十六进制值 序号 名称 RGB 十六进制 1 豆沙绿 (199, 237, 204) #C7EDCC 2 银河白 (255, 255, 255) #FFFFFF 3 杏 ...

  4. 常见颜色RGB值,有图。

    常见颜色RGB值 #FFB6C1 LightPink 浅粉红 #FFC0CB Pink 粉红 #DC143C Crimson 深红/猩红 #FFF0F5 LavenderBlush 淡紫红 #DB70 ...

  5. java获取鼠标在屏幕位置的颜色RGB值

    java获取鼠标在屏幕位置的颜色RGB值 import java.awt.AWTException; import java.awt.AWTKeyStroke; import java.awt.Col ...

  6. 各种颜色RGB值【附c#中获取颜色的argb值】

    各种颜色RGB值 ■RGB(255,192,203)■★●◆pink(粉红) ■RGB(220,20,60)■★●◆crimson(腥红) ■RGB(255,240,245)■★●◆lavenderb ...

  7. Mac技巧之苹果电脑Mac OS X系统自带的鼠标所在点颜色RGB值查看工具:数码测色计...

    Mac技巧之苹果电脑Mac OS X系统自带的鼠标所在点颜色RGB值查看工具:数码测色计 转自http://www.mac52ipod.cn/post/show-mouse-point-rgb-col ...

  8. java提取屏幕颜色,各种颜色的rgb值-Mac中怎么使用自带的数码测色计提取屏幕颜色RGB值?...

    一 : Mac中怎么使用自带的数码测色计提取屏幕颜色RGB值? 开发人员和设计人员经常会在互联网上看到喜欢的配色方案,但是肉眼并不能辨识颜色的具体色号.这时就需要借助工具来帮我们完成屏幕取色的工作,再 ...

  9. 颜色名、颜色16进制值、颜色rgb值对应表

    颜色名.颜色16进制值.颜色RGB值对应表 颜色名 颜色16进制值 颜色RGB值 AliceBlue #F0F8FF RGB(240, 248, 255) AntiqueWhite #FAEBD7 R ...

最新文章

  1. 快速完整的基于点云闭环检测的激光SLAM系统
  2. JavaScript字符串数组拼接的性能测试及优化方法
  3. os.clock()导致的bug
  4. 「土行孙」机器人登上Science子刊封面,用气流在地下穿梭自如,速度达每秒4.8米...
  5. vue --- 动画执行的周期(动画的钩子函数)
  6. java util logging_简单日志记录,使用java.util.logging
  7. 设计模式杂谈(一)——设计模式概述
  8. vim高级技巧(split)_小花_新浪博客
  9. 03. Java NIO Channel 通道
  10. Spring Tool Suite(STS)启动时出现错误:Java was started but returned exit code=13问题解决
  11. python之解析csv
  12. LeetCode刷题笔记- 845.数组中的最长山脉
  13. ks 曲线_Ks密度曲线分布图绘图
  14. CORBA Programming with TAO - 3.IDL Data Type(数据类型与Mapping)例子常见问题篇
  15. [Android Studio]掌握Android Studio的五种常见控件和五种常见布局
  16. 信息学奥赛一本通(c++):1413:确定进制
  17. 编译安装nginx并实现反向代理负载均衡和缓存功能
  18. MIPI通讯的初理解
  19. 遥感图像的空间分辨率,光谱分辨率等
  20. 马云、周鸿祎高调宣布:清退『小白兔员工』,绝不手软!

热门文章

  1. 家政公司小程序开发,家政服务如何利用多端小程序,实现转型拓客
  2. OSChina 周六乱弹 —— 科学面对神话
  3. 王者荣耀崩溃解决记录
  4. 物联网研究框架与投资机会 附下载地址
  5. IE6图片有白底解决办法
  6. ios 仿苹果闹钟_苹果片状iOS闹钟的三种选择
  7. SpringBoot项目使用通用Mapper
  8. 单元格内多个姓名拆分成一列_excel将一列数据拆为多个表格-excel:如何将一个单元格拆分成多行或多列?...
  9. 【自动化】【autojs】01 autojs前世今生和最全脚本资料
  10. 关键字explicit的作用(转)