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

本文介绍了如何在2D CAD/CAM软件中实现视图缩放功能,主要涉及数学推理、接口封装和事件传递。通过鼠标滚轮操作,用户可以方便地查看几何图形的细节或整体结构。在数学推理部分,解释了缩放中心、缩放倍率的计算,保持鼠标位置点坐标不变。接口封装中,设定了放大和缩小的比例,并在滚轮事件结束后更新绘图。
摘要由CSDN通过智能技术生成

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

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

数学推理

  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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arthur...J

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值