我写了下面的代码,在我看来很好,但是我得到了一个编译错误:
error: invalid operands of types 'double' and 'int' to binary
我的代码:
#include <iostream>
#include <cmath>
using namespace std;
class ColourChecking
{
private:
double r, g, b;
public:
void hsb(double a, double c, double d)
{
r = a/255.0; g = c/255.0; b = d/255.0;
double cmax = max(r, max(g, b));
double cmin = min(r, min(g, b));
double diff = cmax - cmin;
double h, s, b;
// Hue Calculation
if (cmax == cmin)
h = 0;
else if (cmax == r)
h = (60 * ((g-b) / diff) + 360) % 360;
else if (cmax == g)
h = (60 * ((b-r) / diff) + 120) % 360;
else if (cmax == b)
h = (60 * ((r-g) / diff) + 240) % 360;
// Saturation Calculation
if (cmax == 0)
s = 0;
else
s = (diff / cmax) * 100.0;
// Brightness Calculation
b = cmax * 100;
cout << "Hue: " << h << endl;
cout << "Saturation: " << s << endl;
cout << "Brightness: " << b << endl;
}
};
int main()
{
ColourChecking Calculate;
// Calculate.hsb(31, 52, 29);
Calculate.hsb(45, 215, 0);
return 0;
}
如何解决此错误?
当我将“%”运算符更改为“/”运算符时,饱和度和亮度的值是正确的,但h的值是错误的。
不能对浮点变量使用模运算符。模和除也不等价。
您可以使用math.h
中的fmod
函数:
#include <math.h>
h = std::fmod(60 * ((g-b) / diff) + 360, 360);
问题内容: 我需要准确地将HSB转换为RGB,但是我不确定如何解决将小数转换为整数而不四舍五入的问题。这是我从colorpicker库中获得的当前函数: 如您所见,此函数的不准确性来自Math.round 问题答案: / accepts parameters * h Object = {h:x, s:y, v:z} * OR * h, s, v / function HSVtoRGB(h, s,
我正在制作一个音乐播放器来处理学校的作业。飞利浦色调灯将产生一些相应的视觉效果。我想让每首歌的视觉效果都与众不同。因此,我获取了播放曲目的封面艺术(使用LastFM API)以获得最常用的颜色,并将其用作创建其他颜色的基础。飞利浦色调有一种不同的显示颜色的方式,即HSB。所以我通过
问题内容: 我想我应该发布这个问题,即使我已经找到了解决方案,因为当我搜索它时,Java实现也不容易获得。 使用HSV代替RGB可以生成具有相同饱和度和亮度(我想要的东西)的颜色。 Google App Engine不允许使用java.awt.Color,因此不能在HSV和RGB之间进行以下转换: 编辑:我按照尼克·约翰逊的评论中所述移动了答案。 前animo,-亚历山大。 问题答案: 我对颜色数
问题内容: 是否可以将Python程序转换为C / C ++? 我需要实现一些算法,而且我不确定性能差距是否足够大,足以证明我在C / C 中做的所有痛苦(我不擅长)。我考虑过要编写一种简单的算法,并针对这种转换后的解决方案进行基准测试。如果仅此一项比Python版本要快得多,那么除了在C / C 中做到这一点,我别无选择。 问题答案: 是。看看赛顿。它就是这样做的:将Python转换为C以加快速
问题内容: 我在互联网上找到了一种将RGB值转换为HSV值的方法。不幸的是,当值是R = G = B时,由于0/0操作,我得到的是NaN。 您是否知道Java中是否存在用于此转换的实现方法,或者当我获得0/0除法以获取正确的HSV值时该怎么办? 这是我的方法,它是根据Internet上的一些代码改编而成的: 问题答案: 我很确定您想要的是RGBtoHSB
所以,我创建一个图形Bash PS1生成器使用Javascript。用户可以从调色板(jsColor库)中为他们想要的任何元素选择任何颜色。我得到的值是该颜色的RGB代表。我想将该值转换为0-255之间的数字,以便在Bash中表示。 示例: 输入:#000000 输出:0 输入:#FFFFFF 输出: 255 转换为最接近的8位表示形式的任何其他输入 **我检查了这篇文章,但答案不太起作用(我得到