サイズ (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) に変換するにはどうすればよいですか?
サイズ (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) に変換するにはどうすればよいですか?
画面座標をワールド座標に変換するには、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 がビューポート内の適切なポイントになるはずです。