私は256x256を持ってCanvas
おりPolyline
、最初Point
はX
座標= 0で、最後Point
はX
=255です。実行時にユーザーが入力したポイントの間にさらに多くのポイントがある可能性があります。レンダリングされた0〜255の範囲Y
のそれぞれの座標を取得するにはどうすればよいですか?X
Polyline
1 に答える
1
ポリラインのポイントが(x [i]、y [i])であり、i = 0からnの場合、x値は昇順であると仮定します。したがって、x [0]=0およびx[n]= 255がわかります。次に、0〜255の範囲のx値が与えられたとします。最初に、x [i] <x<=xとなるインデックスiを見つけます。 [i+1]。次に、対応するy値は次の式で与えられます。
y = y[i] + (y[i+1] - y[i])*(x - x[i])/(x[i+1] - x[i])
または、同等に
y = ( (x[i+1] - x)*y[i] + (x - x[i])*y[i+1] ) / (x[i+1] - x[i])
もちろん、x [i] = x [i + 1]の場合は問題が発生するため、この特殊なケースには特別な注意が必要です。
また、これらの式はyの非整数値を与えることに注意してください。これは、明らかにどのピクセル位置にも直接対応していません。正確にどのピクセルがレンダリングされるかは、線の幅とスキャン変換アルゴリズムの内部の詳細によって異なりますが、これはわかりません。ただし、y値を整数に丸めると、対応するピクセルがレンダリングされる可能性が非常に高くなります。
于 2013-03-02T13:50:54.947 に答える