数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 2932|回复: 4

[讨论]3D变换中的变形问题

[复制链接]
发表于 2004-12-2 11:02:02 | 显示全部楼层 |阅读模式
<>//这是一段将空间点集绕x轴旋转的代码,在理论上它是绝对正确的
//但是由于计算精度的问题,每作一次运算都会产生一些误差,
//当计算次数足够多,累积的误差就变得很大,使物体变形。。。
for(var i in vertexList){
  out.y = cosRad* vertexList.y - sinRad* vertexList.z;
  out.z = sinRad* vertexList.y + cosRad* vertexList.z;
  out.x = vertexList.x;
}
___________________________________________________________</P>
<><FONT color=#ff3300>//下面这个函数实现绕x和y轴旋转,为什么不会产生累积误差变形呢?????</FONT>
// 单个空间点旋转变换,xa,ya均为角度值,dotArray为存储点集的数组名,num为需要操作的空间点的编号
function dot_rotate(xa, ya,dotArray,num) {
var i;
var rad = Math.PI/180;
xa *= rad;
ya *= rad;
var sin_xa = Math.sin(xa);
var cos_xa = Math.cos(xa);
var sin_ya = Math.sin(ya);
var cos_ya = Math.cos(ya);
var px, py, pz, tempz;
px = dotArray[num].x;
py = dotArray[num].y;
pz = dotArray[num].z;
tempz = (pz*cos_ya)-(px*sin_ya);
dotArray[num].x = (pz*sin_ya)+(px*cos_ya);
dotArray[num].y = (py*cos_xa)-(tempz*sin_xa);
dotArray[num].z = (py*sin_xa)+(tempz*cos_xa);
}
____________________________________________________</P>
<>我的数学学得不好,难以理解其原理,各位大哥能解答我的疑惑吗?</P>
 楼主| 发表于 2004-12-4 03:52:26 | 显示全部楼层
 楼主| 发表于 2004-12-8 04:28:06 | 显示全部楼层
晕啊~
我发现这里只有问问题的,没有答问题的。。。难怪这么冷清
斑竹们都是干什么去了??
 楼主| 发表于 2004-12-17 22:59:35 | 显示全部楼层
[em06][em03]
 楼主| 发表于 2005-5-6 01:23:37 | 显示全部楼层
<>顶</P>
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-11-27 16:44 , Processed in 0.049704 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表