编写一款2D CAD/CAM软件(九)视图缩放

用户通过视图缩放能够查看几何图形的精细结构、局部细节或者查看全局构成。

视图缩放最友好和最方便的操作方式一般是通过鼠标滚轮的转动来实现的。

数学推理

  1. 假设鼠标位置(缩放中心)在视图中坐标为Pcenter(Xcenter, Ycenter), 对应几何坐标为Pgeo(Xgeo, Ygeo);
  2. 当前,几何坐标系原点在视图坐标系下位置坐标为P_orig_geo(Xorig_geo, Yorig_geo), 缩放倍率为Rcur;
  3. 已知鼠标滚动转动导致缩放R倍;
  4. 求:缩放后几何图形坐标系原点在视图坐标系下的坐标P_geo_new(Xgeo_new, Ygeo_new) 和新的缩放倍率Rnew.
  5. 视图缩放的潜在条件:缩放前后,鼠标位置点的视图坐标系坐标不变,鼠标位置点对应的几何坐标系坐标不变。
  6. 之前已封装的视图坐标系和几何坐标系转换关系。
通过以上条件,可推出:
    
    Rnew = Rcur * R;

    Xgeo_new = Xcenter - (Xcenter - Xorig_geo) / R;
    
    Ygeo_new = Ycenter - (Ycenter - Yorig_geo) / R;

缩放后更新:

    Rcur = Rcur*R;

    Xorig_geo = Xcenter - (Xcenter - Xorig_geo) / R;

你可能感兴趣的:(CAD/CAM,Software,Development,c++,qt)