繁体   English   中英

将页面沿其边缘旋转180度

[英]Rotating a page 180 degrees along its edge

我正在尝试通过以下方法实现此目的:

mat4.translate(mvMatrix, XYZ);  
mat4.rotate(mvMatrix,degToRad(90),[1,0,0]);
mat4.rotate(mvMatrix,-pageTurn,[0,1,0]);
mat4.rotate(mvMatrix,degToRad(-90),[1,0,0]);
mat4.translate(mvMatrix, inverseXYZ);   

第一个移动到绘制的左上角,第二个垂直于X旋转,第三个实际上进行旋转。 它可以正确旋转,但这就像绕着“书本”的中心旋转,而不是使其边缘保持稳定。 pageTurn是由动画更新的弧度角。 我认为这可能是我对inverseXYZ使用。 我在mat4上找不到相反的方法。 (我知道它是相反的,但是找不到关于它的文档)

我以为它也可以是透视矩阵...

您可以围绕对象p旋转对象(在本例中为沿其边缘上的点的页面),方法是先通过-p转换矩阵,然后进行旋转,最后通过p转换矩阵。 在视觉上,移动对象,使旋转点位于原点,然后旋转对象,最后将其放回原处。

mat4.translate(mvMatrix, vec3.negate(edgePoint, tmpVec));
mat4.rotate(mvMatrix, turnAngle, [0, 1, 0]);
mat4.translate(mvMatrix, edgePoint);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM