既存のコードは、(あなたがあなたの質問に言及していること)、このラインのために描き個々の点の数でなければなりません:
ラインは、主に垂直に配向されている場合、ある
l=max(abs(x2-x1), abs(y2-y1))+1
が、そこにあるべきポイントはすべての行に描画されます。そのほとんどが水平方向に向いている場合は、すべての列に点が描画されます。したがって、開始点と終了点のx/y座標の最大差をとって、描画された個々の点の総数はl
です。これはあなたの既存のコードがしなければならないものです。
したがって、あなたはl
点を描くことになることを事前に知っています。これは、それぞれのr
,g
,b
およびa
コンポーネントの間の単純な線形補間になります。 "R1"が(x1、y1)のR成分であり、 "R2"が(x2、y2)のR成分である場合:i
番目の点を描画するとき、(x1、y1)の場合は0で始まるi
で始まり、そして、(X2、Y2)でl
に到達し、直線補間Rは単純です:
これはR1である
i=0
ので
R1+i/l*(R2-R1)
、そしてときi=l
これはR2です。この線形補間を計算する必要があります。浮動小数点演算を使用するか、最初に整数の乗算を行い、次に整数の除算を行います(乗算時のオーバーフローを避けるには整数精度で十分です)。
G
、B
、およびA
コンポーネントについては、泡立ててすすぎ、そして同じプロセスを繰り返します。
線形補間の仕組みをご存知ですか? – usr2564301
もう何か試しましたか?また、どのような図ライブラリを使用していますか?これは標準的なC++のものではありません。 –
リニア補間の仕組みは大まかに考えていますが、まだ学習中です。図書館は、私に提供されたものです。私は成功して何も試していないが、再び、私はC++を初めて使っている。 – GilfoyMayhew