2011年5月14日土曜日

マウスの位置を変えないズーム (視点の位置を変えないズーム)

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 件のコメント:

コメントを投稿