- 436 名前:423 mailto:sage [2006/03/10(金) 18:01:03 ]
- みなさん、どうもありがとうございます。
>>432 >>433 座標変換のための設定は以下の通りです。 // マッピングモード設定 ::SetMapMode(hDc, MM_ANISOTROPIC); // ウィンドウ領域 (0, 0) - (1000, 1000) ::SetWindowExtEx(hDc, 1000, 1000, NULL); ::SetWindowOrgEx(hDc, 0, 0, NULL); // ビューポート設定 (0, 0) - (10, 10) ::SetViewportExtEx(hDc, 10, 10, NULL); ::SetViewportOrgEx(hDc, 0, 0, NULL); 単純にウィンドウからビューポートへ(1/100)倍する変換です。 ウィンドウ、ビューポートのx座標をそれぞれ wx, vx として -1000 <= wx <= 1000 の範囲で変換してます。 変換式は憶測ですが vx = wx * (10 / 1000) で求めていると思われます。 四捨五入の「入」、「捨」の境界は以下のとおり 0.46〜0.47 です。 (これ以外の146, 246, ...、-154, -254, ... でも同様の結果です) wx = -54 → vx = -1 (-54/100 → -0.54 → -1 + 0.46 → -1) wx = -53 → vx = 0 (-53/100 → -0.53 → -1 + 0.47 → 0) wx = 46 → vx = 0 (46/100 → 0.46 → 0 + 0.46 → 0) wx = 47 → vx = 1 (47/100 → 0.47 → 0 + 0.47 → 1) >>434 その方法だと>>423のバージョンAと同じになってしまうんです。 今は>>424のバージョンB方式の四捨五入の実装方法で迷ってるんです。
|

|