2011-10-21 22 views
0

ビットマップグリッドの上に線を描画する一連の座標を含むcsvファイルが渡されました。私は値を取得し、DrawLine関数などのintに変換することができます。座標変換の問題

問題は、これらの座標は基本的にパーセンテージであることです。 x:0.5とy:0.5はデッドセンタ(Xの50%とYの50%)を表し、x:1.0/y:1.0はプロットされているものの絶対寸法に関係なく右上にありますこのインスタンスは1000x1500ビットマップです)。さらに、スクリーン/ウィンドウの座標は左上から始まりますが、x軸には影響しませんが、y軸は何らかの形で反転させる必要があります。

座標を正しくプロットするには、座標に何をする必要がありますか?正直言って私はX軸が正常に動作している、それは私に問題を与えるY軸です。

(ビットマップを含むウィンドウが1600x1600、FWIWである。)

+4

あなたはどれくらい離れていますか、どのような問題に遭遇しましたか? –

+0

あなたは何をすべきかを述べています:1. xとyを必要な 'ビューポート'にスケールします。 2. Y座標を反転する。3.あなたの 'vierport'の起点を翻訳する。 – mozillanerd

答えて

0

まあ素朴な方法は、単に最も近い1つの画素すなわちround(WIDTH*x)

を計算することである。しかし、いくつかのピクセルは空白のままにすることになるため、一般的に悪いのthatsいくつかは複数回マッピングされます。

私は、ポイントごとにカバーする割合を計算します。つまり、あるポイントが1ピクセルの75%をカバーし、その25%が隣接ピクセルであり、それに応じてピクセルの色が塗りつぶされます。

0

何が間違っているかの詳細がなければ、私は推測し、あなたはY値を逆さまに計算していると言います。次のように試してください。

round(HEIGHT*(1.0-y)) 

次に、問題が発生していることの詳細をお知らせください。

+0

私はそれをまったく計算していない。それはファイルからまっすぐに来ている。私はStreamReaderを使ってそれを取り出し、Regex Replaceを実行して生の数値を取得し、int.Parseを使用してDrawLine関数に渡します。問題は、私が述べたように、コンピュータが単にその形式を理解していないことです。ウィンドウの座標は右下ではなく左上から始まり、それは私の問題です。 – user1006221

+0

私が書いたことがy値を逆転させる方法を理解できなければ、私はあなたを助けることができないと思います。 – BoltBait