papervision3d 中的坐标(3) 3D物体与坐标

来源:互联网 发布:雍正知乎 编辑:程序博客网 时间:2024/05/17 02:36

在平面上按住鼠标左键可以拉框:

 

原理是获取坐标的坐标,实时绘制一个立方体,这个例子是想说明:3d物体也没什么神奇的,就是定义几个顶点的

 

坐标就可以了,要想使物体形变,也可以通过修改坐标来实现。

 

主要代码如下:

   /* 注册事件*/
           addEventListener(MouseEvent.MOUSE_UP, removeDragListener);
           addEventListener(MouseEvent.MOUSE_DOWN, setDragListener);

 

 
      private function setDragListener(evt:MouseEvent=null):void
       {  
           
               pt1=getMousePointOnFloor();//使用方法一
            //   var intersect:Number3D=getMousePointOnFloor2();//使用方法二
                 addEventListener(MouseEvent.MOUSE_MOVE, move3DMap);
       }
      private function move3DMap(evt:MouseEvent=null):void{
          pt2=getMousePointOnFloor();//使用方法一
        //  cube.position=new Number3D((pt2.x+pt1.x)/2,(pt2.y+pt1.y)/2,0);
          var v4:Vertex3D = cube.geometry.vertices[4];
          var v5:Vertex3D = cube.geometry.vertices[5];
          var v6:Vertex3D = cube.geometry.vertices[6];
          var v7:Vertex3D = cube.geometry.vertices[7];
           v6.x =pt2.x;  v6.y =pt2.y  ;
           v5.x =pt1.x;  v5.y =pt1.y  ;
           v4.x=v5.x;  v4.y=v6.y;
           v7.x=v6.x;  v7.y=v5.y;
          
          var v0:Vertex3D = cube.geometry.vertices[0];
          var v1:Vertex3D = cube.geometry.vertices[1];
          var v2:Vertex3D = cube.geometry.vertices[2];
          var v3:Vertex3D = cube.geometry.vertices[3];
          v0.x=v6.x;v0.y=v6.y;v0.z=-v6.z;
          v1.x=v7.x;v1.y=v7.y;v1.z=-v7.z;
          v2.x=v4.x;v2.y=v4.y;v2.z=-v4.z;
          v3.x=v5.x;v3.y=v5.y;v3.z=-v5.z;
          cube.visible=true;
         
      }
      private function removeDragListener(evt:MouseEvent=null):void
     {
        removeEventListener(MouseEvent.MOUSE_MOVE, move3DMap);
     }

原创粉丝点击