MATLAB如何根据两个颜色(RGB值)产生任意多个中间的过渡色?
近期做文章的时候想在两个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值)产生任意多个中间的过渡色?相关推荐
- Android常用颜色RGB值以及中英文名称
Android常用颜色RGB值以及中英文名称 颜色 RGB值 英文名 中文名 #FFB6C1 LightPink 浅粉红 #FFC0CB Pink 粉红 #DC143C Crimson 深 ...
- 常用icon以及color颜色RGB值和对应颜色效果图
Android谷歌官方扁平化设计常用icon集合 Android谷歌官方扁平化设计color颜色RGB值和对应颜色效果图.
- 最让人舒服的11种颜色RGB值和十六进制值
最让人舒服的11种颜色RGB值和十六进制值 序号 名称 RGB 十六进制 1 豆沙绿 (199, 237, 204) #C7EDCC 2 银河白 (255, 255, 255) #FFFFFF 3 杏 ...
- 常见颜色RGB值,有图。
常见颜色RGB值 #FFB6C1 LightPink 浅粉红 #FFC0CB Pink 粉红 #DC143C Crimson 深红/猩红 #FFF0F5 LavenderBlush 淡紫红 #DB70 ...
- java获取鼠标在屏幕位置的颜色RGB值
java获取鼠标在屏幕位置的颜色RGB值 import java.awt.AWTException; import java.awt.AWTKeyStroke; import java.awt.Col ...
- 各种颜色RGB值【附c#中获取颜色的argb值】
各种颜色RGB值 ■RGB(255,192,203)■★●◆pink(粉红) ■RGB(220,20,60)■★●◆crimson(腥红) ■RGB(255,240,245)■★●◆lavenderb ...
- Mac技巧之苹果电脑Mac OS X系统自带的鼠标所在点颜色RGB值查看工具:数码测色计...
Mac技巧之苹果电脑Mac OS X系统自带的鼠标所在点颜色RGB值查看工具:数码测色计 转自http://www.mac52ipod.cn/post/show-mouse-point-rgb-col ...
- java提取屏幕颜色,各种颜色的rgb值-Mac中怎么使用自带的数码测色计提取屏幕颜色RGB值?...
一 : Mac中怎么使用自带的数码测色计提取屏幕颜色RGB值? 开发人员和设计人员经常会在互联网上看到喜欢的配色方案,但是肉眼并不能辨识颜色的具体色号.这时就需要借助工具来帮我们完成屏幕取色的工作,再 ...
- 颜色名、颜色16进制值、颜色rgb值对应表
颜色名.颜色16进制值.颜色RGB值对应表 颜色名 颜色16进制值 颜色RGB值 AliceBlue #F0F8FF RGB(240, 248, 255) AntiqueWhite #FAEBD7 R ...
最新文章
- 快速完整的基于点云闭环检测的激光SLAM系统
- JavaScript字符串数组拼接的性能测试及优化方法
- os.clock()导致的bug
- 「土行孙」机器人登上Science子刊封面,用气流在地下穿梭自如,速度达每秒4.8米...
- vue --- 动画执行的周期(动画的钩子函数)
- java util logging_简单日志记录,使用java.util.logging
- 设计模式杂谈(一)——设计模式概述
- vim高级技巧(split)_小花_新浪博客
- 03. Java NIO Channel 通道
- Spring Tool Suite(STS)启动时出现错误:Java was started but returned exit code=13问题解决
- python之解析csv
- LeetCode刷题笔记- 845.数组中的最长山脉
- ks 曲线_Ks密度曲线分布图绘图
- CORBA Programming with TAO - 3.IDL Data Type(数据类型与Mapping)例子常见问题篇
- [Android Studio]掌握Android Studio的五种常见控件和五种常见布局
- 信息学奥赛一本通(c++):1413:确定进制
- 编译安装nginx并实现反向代理负载均衡和缓存功能
- MIPI通讯的初理解
- 遥感图像的空间分辨率,光谱分辨率等
- 马云、周鸿祎高调宣布:清退『小白兔员工』,绝不手软!