YouTubeExploereで使用している マウスの位置を変えないズーム (視点の位置を変えないズーム)のメモです。
絵や線は下図のようにワールド座標系で管理し、それを画面表示するときにView座標系に変換して表示するということを行っています。これは、ゲームやロボット工学でよく使われる手法ですが、『座標変換』でググると詳しい解説ページが見つかります。
View1倍率(B1) → View2倍率(B2)に変更する場合にワールド座標PwがP1=P2となるようにズームずるときは、View 座標系の原点をO1からO2に移動してやる必要があります。
そこで、ワールド座標系→Veiw座標系へ変換す式より
①P1 = (Pw-O1)*B1
②P2 = (Pw-O2)*B2
P1,P2 : View座標系での点(x,y) (ベクトルなので一応太字にしてますが見えるかな?)
図の●の点です。
O1, O2 : View座標系の原点(0,0)
Pw : World座標系での点(x,y)
ここでP1 = P2としたいので ①,②より
(Pw-O1)*B1 = (Pw-O2)*B2
Pw*B1-O1*B1 = Pw*B2-O2*B2
O2*B2 = Pw*B2-Pw*B1+O1*B1
なので結局
O2 = ( Pw*(B2-B1)+O1*B1)/B2
0 件のコメント:
コメントを投稿