Hi, 关于你的问题,我可能不能完全按照你的要求来回答,说下我的想法吧。
1, 如何绘制弹簧形变:
由于弹簧是无限长的,如果确实要按照无限长来计算的话,那么基本上就不会有形变了。
我提供的方案是:根据方块的质量和速度,可以计算出弹簧的形变长度。(就是方块速度为0的时候),这个动画过程怎么绘制呢?假设得到的形变长度是a, 那么在绘制上,我可以假设弹簧长度是10a(虽然这个和题目的无限长不符合,但是只是绘制一个变形过程。真的无限长的弹簧你也绘制不出来,是吧?)那么由于方块的压缩,弹簧从10a变成了9a,长度变化,就把图形在x轴方向缩小绘制就可以了吧?只是这个缩小是渐变的。
2. 关于拉镜头:
实际就是控制画面显示范围的问题,触控手机上的缩放操作我想你是了解的吧?
拉镜头就是为了让你显示更多的东西,更大的范围,那么对应的,之前看到的物体就会被缩小。
关于这个计算,你可以选择方块和弹簧的某个点之间的距离作为一个参考。比如这个距离是b。那么你画面控制显示范围为1.5倍b的长度。随着b的距离增加,来缩小画面,感觉上就是在拉镜头了。
ps:在算法上面可能帮不上你,算形变的公式都记不得了。这个靠2d计算应该是可以的出来的。