-3

サイズ (475,574) のウィンドウがあります。マウスクリックイベントを使用して画面上の位置を取得すると、(0-475,0-574) の範囲になります。私は glOrthof(-1.5, +1.5, -1.5, +1.5, 4.0, 15.0) を使用しているので、マウス イベントで取得したポイントを 3D openGL ポイントに変換する方法を質問します。

例- (100,200) を (-1.2,0.234,6) に変換するにはどうすればよいですか?

4

1 に答える 1

1

画面座標をワールド座標に変換するには、2 つの座標系の間で変換する必要があります。

//calculate ratio
widthRatio = 3.0 / width; // 3.0 = total width of viewport
heightRatio = 3.0 / height; // 3.0 = total height of viewport

worldX = (screenX * widthRatio) - 1.5; // subtract 1.5 (half of viewport width) to get origin
worldY = (screenY * heightRatio) - 1.5;

worldX と worldY がビューポート内の適切なポイントになるはずです。

于 2013-06-25T09:14:43.700 に答える