2

だから私は翻訳することを理解しています:

x = x' + x0     or     x' = x - x0
y = y' + y0     or     y' = y - y0

ここで、(x,y) は xy 系に対する古い座標、(x',y') は x'y' 系に対する新しい座標、(x0,y0) は古い xy 系に対する座標です。

境界を変更しながらシステムを翻訳しようとしています。固定ウィンドウ内のグラフの特定のセクションを「ズームイン」したいと思います。これにより、原点と境界が変更されます。

参考までに、こちらでも同様の質問をしましたが、少しわかりにくかったと思います。

4

1 に答える 1

0

うまくいけば、これはあなたの質問に答えます:

(ピクセル座標で) プロットしているウィンドウが、左下隅が(p_ll, q_ll)で、右上隅が であると仮定しましょう(p_ur, q_ur)

ただし、デカルト座標では、同じ場所は(x_ll, y_ll)(x_ur, y_ur)です。次に、必要な変換は次のとおりです。

p(x) = p_ll + (p_ur - p_ll) * (x - x_ll) / (x_ur - x_ll)
q(y) = q_ll + (q_ur - q_ll) * (y - y_ll) / (y_ur - y_ll)

したがって、たとえば、ウィンドウがx from 0 to 600 and y from 0 to 600で、プロットの境界が である場合x from -2 to 2 and y from -1 to 1、 の座標を持つ点(0.0, 0.0)(p(0), q(0))または

p(0.0) = 0 + (600 - 0) * (0 -(-2)) / (2 - (-2)) = 300
q(0.0) = 600 + (0 - 600) * (0 - (-1)) / (1 - (-1)) = 300

他の点についても同様です。p(-2) = 0方程式を試すことができ、 、p(2) = 600q(-1) = 600、およびが見つかるはずですq(1) = 0

ここでは、デカルト座標の y が上を指している間、ピクセルの y 座標が下を向いていると仮定していることに注意してください (ほとんどすべてのモニター座標がそうであるように)。

画面座標からプロット座標に移動する場合 (たとえば、マウス クリックの位置をデカルト座標に変換する場合)、次の逆変換を使用します。

x(p) = x_ll + (x_ur - x_ll) * (p - p_ll) / (p_ur - p_ll)
y(q) = y_ll + (y_ur - y_ll) * (q - q_ll) / (q_ur - q_ll)
于 2015-08-12T19:02:51.590 に答える