私はここで数学的な計算に失敗するようです...座標空間から(x、y)点を別の座標空間に変換する必要があります - 極座標ではなくデカルトやデカルトのようなものに...ただ一つのバインドから別のバインドまで。左下(-100、-100)と右上(100,100)の矩形内にある特定の(x、y)の場合、その点が左下の矩形のどこにあるのかを知る必要があります、0)、右上(500,500)の順である。座標をある空間から別の空間に変換する
それはJavaで書かれた小さなコンピュータグラフィックスプログラムにある
...これは単純な数学であるような気がしますが、私は右のそれを得る時間の一体を抱えています。基本的には、変更するクリップウィンドウがあり、そのクリップウィンドウはビューウィンドウ全体を満たす必要があります。クリップとビューの初期値は、この順番で上記の長方形によって与えられます。ただし、クリップは、たとえば、左下(-80、-65)および右上(75、65)の四角形に変更することができます。私はその後、その矩形内にあるポイントをビューウィンドウ内のポイントに変換する必要があります(左下(0,0)、右上(500,500))
ここに私が持っているものがあります今すぐ:
public int normalizeX(float x) {
float clipWidth = clipRight - clipLeft;
int viewWidth = viewRight - viewLeft;
x += 100; //Get x into range [0, 200] instead of [-100, 100]
//First convert x to value within clip width, then "scale" to viewport width
return (int)(((clipWidth*x)/200) * (viewWidth/clipWidth));
}
public int normalizeY(float y) {
float clipHeight = clipTop - clipBottom;
int viewHeight = viewTop - viewBottom;
y += 100; //Get y into range [0, 200] instead of [-100, 100]
//First convert y to value within clip height, then "scale" to viewport height
return (int)(((clipHeight*y)/200) * (viewHeight/clipHeight));
}
ありがとうございました!
ハードコードされた '[0、200]'と '[-100,100] 'はどこから来ますか? –
リマインダーJeanに感謝します。 James、これらの値は、すべての図形が(-100、-100)、(100,100)の範囲で定義されていたことに由来しています。 – user1028885