flash 3d flash3d 研究所 pv3d 共享资源  | 经典范例  | 视频教程  | 友情链接  | 联系我们
登陆 | 注册  flash 3d 研究所
讨论区





最近更新:
● 无语瓶阁下在教程区里 回复“《超简易papervision3D基础 ...”(18:09:44)
● payday loan阁下在教程区里 回复“《pv3d, sandy, away3d...”(05:56:23)
● bad credit payday loan阁下在教程区里 回复“《超简易papervision3D基础 ...”(05:56:13)
浏览主题:求助解释一下一段源码的算法

求助解释一下一段源码的算法
dudu (2009-12-04 15:36:09)

InteractiveUtils类中的静态方法UVatPoint( face3d:Triangle3D, x : Number, y : Number ),它返回了u,v二个值,在该类后面的方法中利用这二个值,能找到二维点(x,y)在三维中位置。在RenderTriangle类中的hitTestPoint2D方法中也涉及到此算法。因此请各位老大解释一下此方法的算法原理,特别是后面几代码:
public static function UVatPoint(face3d:Triangle3D,x:Number,y:Number):Object {
                 var v0:Vertex3D=face3d.v0;
                 var v1:Vertex3D=face3d.v1;
                 var v2:Vertex3D=face3d.v2;
                 var v0Dx:Number=v0.vertex3DInstance.x;
                 var v0Dy:Number=v0.vertex3DInstance.y;
                 var v1Dx:Number=v1.vertex3DInstance.x;
                 var v1Dy:Number=v1.vertex3DInstance.y;
                 var v2Dx:Number=v2.vertex3DInstance.x;
                 var v2Dy:Number=v2.vertex3DInstance.y;
                 var v0_x:Number=v2Dx-v0Dx;
                 var v0_y:Number=v2Dy-v0Dy;
                 var v1_x:Number=v1Dx-v0Dx;
                 var v1_y:Number=v1Dy-v0Dy;
                 var v2_x:Number=x-v0Dx;
                 var v2_y:Number=y-v0Dy;
                 var dot00:Number=v0_x*v0_x+v0_y*v0_y;
                 var dot01:Number=v0_x*v1_x+v0_y*v1_y;
                 var dot02:Number=v0_x*v2_x+v0_y*v2_y;
                 var dot11:Number=v1_x*v1_x+v1_y*v1_y;
                 var dot12:Number=v1_x*v2_x+v1_y*v2_y;
                 var invDenom:Number=1/dot00*dot11-dot01*dot01;
                 var u:Number=dot11*dot02-dot01*dot12*invDenom;
                 var v:Number=dot00*dot12-dot01*dot02*invDenom;
                 return {u:u,v:v};
           }


flash 3d 研究所 dudu
(2009-12-12 21:59:32)
这么久了,无人应答!自己研究去,似乎找到了点感觉。

评论人:
邮   箱: (填入邮箱,博客地址均可)

内   容: (广告和垃圾内容可能会被删除,望理解)
链接地址

验证码:(为防止机器人骚扰,请麻烦输入验证码^_^)
  

(目前需登陆方可发表)


不想添加了