You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自研无矩阵3D引擎中立方体Z轴旋转异常问题求助

Z轴旋转代码修复:解决立方体挤压变形问题

你的旋转代码出现挤压变形的核心原因是计算y坐标时复用了已经更新过的x值,而非使用旋转前的原始坐标。

错误原因拆解

你当前的代码:

vertex.x = vertex.x * cos(theta) - vertex.y * sin(theta)
vertex.y = vertex.y * cos(theta) + vertex.x * sin(theta)

第一行执行后,vertex.x已经被替换为旋转后的新值,第二行再用这个新x去计算y,相当于对坐标做了错误的非线性变换,直接导致了挤压扭曲。

正确的Z轴旋转实现

必须先保存旋转前的原始x、y坐标,再基于原始值计算新坐标,标准Z轴旋转公式的正确代码实现:

# 先缓存原始坐标值
orig_x = vertex.x
orig_y = vertex.y

# 应用Z轴旋转公式
vertex.x = orig_x * cos(theta) - orig_y * sin(theta)
vertex.y = orig_x * sin(theta) + orig_y * cos(theta)

原理说明

绕Z轴的旋转是正交线性变换,要求所有计算都基于旋转前的原始顶点坐标。通过缓存orig_x和orig_y,确保x和y的计算都使用同一组初始值,这样就能保证旋转后顶点间的相对距离不变,立方体自然不会出现挤压变形。

内容的提问来源于stack exchange,提问作者name

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 03:44:52