lisp xy轴不等比缩放_双指缩放的计算

本文探讨了在LISP中实现xy轴不等比缩放的问题,特别是在双指操作中如何确保固定手指位置不变,以及在手指间距不变时场景能正确跟随移动。文章涉及了关键的数学公式来描述这一过程。
摘要由CSDN通过智能技术生成
问题描述 在支持触屏的设备中,我们经常会用到双指缩放的功能。 这里我们不讨论双指缩放的触发逻辑,我们假设双指缩放已经发生了,而且我们知道上一次两个触摸点的坐标(p0, p1),以及当前两个触摸点的坐标(p0’,p1’),我们讨论一下缩放的相关参数应该怎么计算。 常见解法 最常见的方法是,计算上一次两个点(p0, p1)之间的距离d0,以及当前两点(p0’,p1’)之间的距离d1,然后计算缩放值s = d1/d0。我们知道,当我们对一个可视对象进行缩放时,默认是以对象的本地坐标系的坐标原点进行缩放的,所以,我们还要计算缩放的中心点,否则缩放结果并不是我们预期的效果。缩放中心点也很好算,我们可以取当前两个点的中心点作为缩放的中心点,p = (p0’ + p1’) / 2。 常见解法中的问题 场景1

当我们固定一个一个手指,只移动另一个手指的时候,我们想要的结果是:固定的手指处应该是不动的。上面的方法是以两个手指的中心点为缩放中心,显然是达不到预期的效果的。

场景2

当我们将两个手指同时移动,并保持两个手指之间的间距不变时,场景跟随手指移动才比较合理。按照上面的方法,场景不会有任何变化,显然不是我们想要的效果。

对于第一种,可能会提出这样一种方法,判断如果一个手指不动,就以不动的手指为中心进行缩放。 对于第二种,可能会提出这样一种方法,先提取两个手指的公共偏移量,用作平移,减去公共偏移量之后,再计算缩放。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值