2016-10-22 8 views
0

私は開始(x1、y1)と終了(x2、y2)とその色をRGBAに保存しました。開始点と終了点と色がある場合、線の色を線形補間するにはどうすればよいですか?

これら2つの点の間にグラデーションの塗りつぶし線を描画する必要があります。線に沿った各点について、現在の(x、y)位置をインクリメント中のループとして取得できます。

開始と終了の色は、point1.color & point2.colorとして利用できます。

次に、DrawPoint(Vector(x、y))を使用して点を描画し、再度ループを通過する前にSetColor(RGBA)で色を設定します。

+2

線形補間の仕組みをご存知ですか? – usr2564301

+1

もう何か試しましたか?また、どのような図ライブラリを使用していますか?これは標準的なC++のものではありません。 –

+0

リニア補間の仕組みは大まかに考えていますが、まだ学習中です。図書館は、私に提供されたものです。私は成功して何も試していないが、再び、私はC++を初めて使っている。 – GilfoyMayhew

答えて

3

既存のコードは、(あなたがあなたの質問に言及していること)、このラインのために描き個々の点の数でなければなりません:

ラインは、主に垂直に配向されている場合、ある
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です。この線形補間を計算する必要があります。浮動小数点演算を使用するか、最初に整数の乗算を行い、次に整数の除算を行います(乗算時のオーバーフローを避けるには整数精度で十分です)。

GB、およびAコンポーネントについては、泡立ててすすぎ、そして同じプロセスを繰り返します。

関連する問題