0

glut を使用する私の .c プログラムは、オブジェクトを作成し、そのオブジェクトにテクスチャをマップします。その後、このオブジェクトはユーザーが操作できます。オブジェクトを拡大してから縮小すると、ウィンドウの外に移動して見えなくなります。スケーリングまたは代替カントがウィンドウの外に移動するときに、オブジェクトが中央に留まるようにするにはどうすればよいですか? 必要に応じてコードを含めることができます。

常にオブジェクトの中心からスケーリングするとこれは役立つと思いますが、常にコーナーからスケーリングするように見えるため、これを行う方法がわかりません。これにより、オブジェクトが画面の外に移動します

わかりましたので、画像は最初は中心から拡大縮小されているように見えますが、画像が変換されると、その後の拡大縮小によって画像が移動しますか?

4

3 に答える 3

0

オブジェクトはポイントのセットです。たとえば、すべての座標が正の場合、スケーリングはコーナーから行われているように見えます。これを防ぐには、自分で翻訳する必要があります。

glScaled(...);
glTranslated(/*-1 * center coordinates relative to the object*/);
//draw the object

オブジェクトを中央に配置する方法は複数あることに注意してください。最も簡単な方法は、バウンディングボックスの中心を見つけることです。

于 2012-04-22T13:45:19.757 に答える
0

そのためには、オブジェクトとウィンドウの端の間の衝突検出アルゴリズムを作成する必要があります。画面上のオブジェクトの端またはピクセルがウィンドウの端に当たった場合、それ以上進むべきではありません。

これに関してはウェブ上にたくさんの資料があります。いくつかの例を見つけることができると確信しています。

于 2012-04-22T13:18:16.837 に答える
0

スケーリング操作がオブジェクトの中心位置からオブジェクトをスケーリングしていないかのように聞こえます。これにより、オブジェクトが原点から離れます。

変換の前に必ずスケーリング操作を実行してください。

于 2012-04-22T13:21:00.517 に答える