最近在看javascript高效图形编程这本书。
其中的旋转木马那一章中P82页上的这句代码:
ang += angle;
sinVal = Math.sin(ang);
scale = ((sinVal + 1) * sizeRange) + options.minScale;
x = ((Math.cos(ang) * options.radiusX) * scale) + options.width / 2;
y = ((sinVal * options.radiusY) * scale) + options.height / 2;
这些代码是如何实现那种旋转木马的旋转效果的呢?完全看不懂其公式来源啊。望高手指点。 还有就是为了实现某种视觉效果的那些变换公式是怎么得出来的?
是不是需要去看看计算机图形学啊?
附(旋转木马完整代码):
Carousel







Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
scale是近大远小的过程,按照角度以正弦呈周期变化。
x和y是椭圆参数方程的:
x=acosθ,y=bsinθ
考虑一下,以某个角度看一个圆形的东西,那不就是个椭圆吗。。
而后面的一系数是为了保证缩放之后保持居中……