Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如果我有起点和终点以及颜色,如何线性插值线颜色?_C++_Linear Interpolation - Fatal编程技术网

C++ 如果我有起点和终点以及颜色,如何线性插值线颜色?

C++ 如果我有起点和终点以及颜色,如何线性插值线颜色?,c++,linear-interpolation,C++,Linear Interpolation,我有开始(x1,y1)和结束(x2,y2),以及它们的颜色存储在RGBA中 我需要在这两个点之间画一条渐变填充线,对于这条线上的每个点,我可以得到当前(x,y)的位置,因为它在一个递增的while循环中 起始颜色和结束颜色分别为point1.color和point2.color 然后,我使用DrawPoint(向量(x,y))绘制一个点,并在它再次通过循环之前使用SetColor(RGBA)设置颜色。现有代码(您在问题中提到的)为这条线绘制的单个点的数量必须是: l=max(abs(x2-x1)

我有开始(x1,y1)和结束(x2,y2),以及它们的颜色存储在RGBA中

我需要在这两个点之间画一条渐变填充线,对于这条线上的每个点,我可以得到当前(x,y)的位置,因为它在一个递增的while循环中

起始颜色和结束颜色分别为point1.color和point2.color


然后,我使用DrawPoint(向量(x,y))绘制一个点,并在它再次通过循环之前使用SetColor(RGBA)设置颜色。

现有代码(您在问题中提到的)为这条线绘制的单个点的数量必须是:

l=max(abs(x2-x1), abs(y2-y1))+1
也就是说,如果直线的方向基本上是垂直的,那么每一行都应该画一个点。如果它大部分是水平方向的,那么在每一列中都应该画一个点。因此,我们可以推导出绘制的单个点的总数,
l
,作为起点和终点x/y坐标之间的最大差值。这就是现有代码应该做的

因此,您提前知道您将绘制
l
点。这现在成为每个
r
g
b
a
组件之间的简单线性插值。如果“R1”是(x1,y1)处的R分量,“R2”是(x2,y2)处的R分量:那么当绘制
i
第th点时,对于(x1,y1)而言
i
从0开始,在(x2,y2)处到达
l
,线性插值的R仅为:

R1+i/l*(R2-R1)
所以,当i=0时,这是R1,当i=l时,这是R2。必须计算此线性插值:或者使用浮点数学;或者先进行整数乘法,然后进行整数除法(假定整数精度足以避免乘法过程中溢出)


G
B
A
组件进行起泡、冲洗并重复相同的过程。

现有代码(您在问题中提到的)为此线绘制的单个点数必须为:

l=max(abs(x2-x1), abs(y2-y1))+1
也就是说,如果直线的方向基本上是垂直的,那么每一行都应该画一个点。如果它大部分是水平方向的,那么在每一列中都应该画一个点。因此,我们可以推导出绘制的单个点的总数,
l
,作为起点和终点x/y坐标之间的最大差值。这就是现有代码应该做的

因此,您提前知道您将绘制
l
点。这现在成为每个
r
g
b
a
组件之间的简单线性插值。如果“R1”是(x1,y1)处的R分量,“R2”是(x2,y2)处的R分量:那么当绘制
i
第th点时,对于(x1,y1)而言
i
从0开始,在(x2,y2)处到达
l
,线性插值的R仅为:

R1+i/l*(R2-R1)
所以,当i=0时,这是R1,当i=l时,这是R2。必须计算此线性插值:或者使用浮点数学;或者先进行整数乘法,然后进行整数除法(假定整数精度足以避免乘法过程中溢出)


G
B
A
组件进行起泡、冲洗并重复相同的过程。

您知道线性插值是如何工作的吗?您已经尝试过了吗?另外,您使用什么特定的图形库?那不是标准C++的东西。我粗略地了解线性插值是如何工作的,但我还在学习。至于图书馆,它是提供给我的。我没有尝试任何成功的方法,但是我又一次对C++进行了新的尝试。GilfoyMayhew,你的问题是不太可能在第一的地方使用C++。我知道我要获取当前点的x,y点,然后用这个在开始和结束颜色之间选择RGB颜色。你知道线性插值是如何工作的吗?你已经试过了吗?另外,您使用什么特定的图形库?那不是标准C++的东西。我粗略地了解线性插值是如何工作的,但我还在学习。至于图书馆,它是提供给我的。我没有尝试任何成功的方法,但是我又一次对C++进行了新的尝试。GilfoyMayhew,你的问题是不太可能在第一的地方使用C++。我知道我要取当前点的x,y点,然后用这个来选择开始和结束颜色之间的RGB颜色。