ActionScript3游戏中的图像编程(连载十七)
总文件夹:http://blog.csdn.net/iloveas2014/article/details/38304477
1.3.3 HSB与RGB之间的互转公式及HSL和HSV对色彩属性理解的异同
首先,HSL和HSV对H的定义一致,公式例如以下:
max=min意味着R,G,B三个值始终相等,仅仅能是白,灰,黑这三类颜色了,色相值在这样的情况下没有不论什么意义,所以让它等于0。
然后,HSB模式将色相环等分成三个120度的区间(图 1.28)。
图 1.28色相环的区间分布
[0,60]U[300,360]为红色区间,[60,180]为绿色区间,[180,300]为蓝色区间。推断RGB颜色的H值位于哪个颜色区间也很easy,只要看哪个通道反射的色光最大就可以。红色被划分到了两側,所以当色相位于红色区间时要多加一个条件,但它并不复杂,由于H轴本身是环状结构,左側跟右側实际上是重合的,所以这一步的推断不过为了将计算出来的角度标准化了一下,使它落在[0, 360]的区间内而不至于出现负数。因此当max=r时,公式能够合并例如以下:
(60*(g-b)/(max-min)+360)%360。
可是敲代码的时候一般都还是用推断来处理,由于取余数的运行效率比較差。
然后看看HSL里面的L和S的计算方法:
可见,仅仅有max和min都取到通道的最大值,即要求R=G=B=255时,亮度才达到最大,换而言之,HSL模式里,仅仅有白色才是亮度最大的,这跟HSL的色彩空间示意图不谋而合。
max=min or l=0意味着R=G=B,这时候的颜色仅仅有白,灰,黑,自然就没有饱和度了。
而HSV中V和S的计算公式例如以下:
作为物理意义是亮度的V,它达到最大值的要求比HSL模式低,RGB三个通道中仅仅要有一个取到了255,亮度就达到最大值。这种差异,可能导致两种颜色的明暗差异在不同的模式描写叙述下出现不同的结果。即颜色A和颜色B出现 L(A)>L(B),可是V(A)<V(B)的现象。
饱和度为0的定义,两种模式没有区别,而饱和度的计算规则,也都以R,G,B通道值的差作为基本的决定因素,然后除以亮度来对结果进行标准化。然后,由于亮度计算的差异,L的色彩变化范围比V要大一倍,所以HSL模式的除数必须等于亮度的2倍才干够抵消,加上较明亮的颜色,HSV和HSL在饱和度方面没有达成共识,HSL模式的S公式就要写成分段函数了。
而HSV/HSL转RGB则是RGB转HSV/HSL的逆运算,尽管在一些极端条件下,这样的运算并不可逆,可是放心,这些问题不会影响到您对色彩的使用。
比方H250,S60,L100和H300,S50,L100,转到RGB都是R255,G255,B255,这时候转回HSL就是H0,S0,L100,值是变了,只是结果值始终都是白色。这跟地球在极点位置的经纬度处理很相似。
ActionScript3游戏中的图像编程(连载十七)的更多相关文章
- ActionScript3游戏中的图像编程(连载二十四)
总文件夹:http://blog.csdn.net/iloveas2014/article/details/38304477 2.1.1 投影样式的制作 点击左側列表的"投影"系列 ...
- 原创教程“ActionScript3.0游戏中的图像编程”開始连载啦!
经过近两年的不懈努力,笔者的原创教程"ActionScript3游戏中的图像编程"最终在今日划上了完美的句号!这其中记录着笔者多年来在游戏制作,尤其是其中图像处理方 ...
- 洗礼灵魂,修炼python(41)--巩固篇—从游戏《绝地求生-大逃杀》中回顾面向对象编程
声明:本篇文章仅仅以游戏<绝地求生>作为一个参考话题来介绍面向对象编程,只是作为学术引用,其制作的非常简易的程序也不会作为商业用途,与蓝洞公司无关. <绝地求生>最近很火,笼络 ...
- Unity3D游戏开发之C#编程中常见数据结构的比较
一.前言 Unity3D是如今最火爆的游戏开发引擎,它可以让我们能轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型的互动内容.它支持2D/3D游戏开发,据不完全统计,目前国内80%的手机游戏都 ...
- JavaScript游戏中的面向对象的设计
简介: 从程序角度考虑,许多 JavaScript 都基于循环和大量的 if/else 语句.在本文中,我们可了解一种更聪明的做法 — 在 JavaScript 游戏中使用面向对象来设计.本文将概述原 ...
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(11)-高级编程技巧 Box2d和Shader
高级编程技巧只是相对的,其实主要是讲物理模拟和着色器程序的使用. 本章主要讲解利用Box2D并用它来实现萝卜雨,然后是使用单色着色器shader让画面呈现单色状态:http://files.cnblo ...
- 超全面的.NET GDI+图形图像编程教程
本篇主题内容是.NET GDI+图形图像编程系列的教程,不要被这个滚动条吓到,为了查找方便,我没有分开写,上面加了目录了,而且很多都是源码和图片~ (*^_^*) 本人也为了学习深刻,另一方面也是为了 ...
- 网游中的网络编程系列1:UDP vs. TCP
原文:UDP vs. TCP,作者是Glenn Fiedler,专注于游戏网络编程相关工作多年. 目录 网游中的网络编程系列1:UDP vs. TCP 网游中的网络编程2:发送和接收数据包 网游中的网 ...
- C#_GDI+详细教程(图形图像编程基础)
第7章 C#图形图像编程基础 本章主要介绍使用C#进行图形图像编程基础,其中包括GDI+绘图基础.C#图像处理基础以及简单的图像处理技术. 7.1 GDI+绘图基础 编写图形程序时需要使用GDI( ...
随机推荐
- Spring学习之Jar包功能介绍(转)
spring.jar 是包含有完整发布模块的单个jar 包.但是不包括mock.jar, aspects.jar, spring-portlet.jar, and spring-hibernate2. ...
- R与数据分析旧笔记(十五) 基于有代表性的点的技术:K中心聚类法
基于有代表性的点的技术:K中心聚类法 基于有代表性的点的技术:K中心聚类法 算法步骤 随机选择k个点作为"中心点" 计算剩余的点到这个k中心点的距离,每个点被分配到最近的中心点组成 ...
- linux杂记(十)what is BASH Shell
first,what is shell?其实只要是碰过计算机的,对于OS(Operation System操作系统,不管是linux.unix.windows)有点概念的人大多都听过这个名词,因为只要 ...
- UVALive 6709 - Mosaic 二维线段树
题目链接 给一个n*n的方格, 每个方格有值. 每次询问, 给出三个数x, y, l, 求出以x, y为中心的边长为l的正方形内的最大值与最小值, 输出(maxx+minn)/2, 并将x, y这个格 ...
- poj 3469 Dual Core CPU 最小割
题目链接 好裸的题....... 两个cpu分别作为源点和汇点, 每个cpu向元件连边, 权值为题目所给的两个值, 如果两个元件之间有关系, 就在这两个元件之间连边, 权值为消耗,这里的边应该是双向边 ...
- [LeetCode]题解(python):139-Word Break
题目来源: https://leetcode.com/problems/word-break/ 题意分析: 给定一个字符串s和一个字典dict,判断s是不是由字典dict里面的元素组成的. 题目思路: ...
- issues about Facebook Login
在学习The complete iOS 9 Developer Course - Build 18 Apps 中的Letture134-Facebook Login,需要整合(integrate)Pa ...
- STL内存配置器
一.STL内存配置器的总体设计结构 1.两级内存配置器:SGI-STL中设计了两级的内存配置器,主要用于不同大小的内存分配需求,当需要分配的内存大小大于128bytes时, 使用第一级配置器,否则使用 ...
- web前端的发展态势
以前 作为一个java程序员写的代码主要还是后台的代码,虽然开始的时候前后端都写,但是也是用别人造好的轮子来用,学学html,css,js,jquery,再找一个前端ui框架学学,上手之后我们就可以 ...
- App引导页面源代码的实现
一.页面效果图