topical media & game development

talk show tell print

student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance.ax

student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance.ax [swf] [flash] flex


  /*
   *  PAPER    ON   ERVIS  NPAPER ISION  PE  IS ON  PERVI IO  APER  SI  PA
   *  AP  VI  ONPA  RV  IO PA     SI  PA ER  SI NP PE     ON AP  VI ION AP
   *  PERVI  ON  PE VISIO  APER   IONPA  RV  IO PA  RVIS  NP PE  IS ONPAPE
   *  ER     NPAPER IS     PE     ON  PE  ISIO  AP     IO PA ER  SI NP PER
   *  RV     PA  RV SI     ERVISI NP  ER   IO   PE VISIO  AP  VISI  PA  RV3D
   *  ______________________________________________________________________
   *  papervision3d.org � blog.papervision3d.org � osflash.org/papervision3d
   */
  
  /*
   * Copyright 2006 (c) Carlos Ulloa Matesanz, noventaynueve.com.
   *
   * Permission is hereby granted, free of charge, to any person
   * obtaining a copy of this software and associated documentation
   * files (the "Software"), to deal in the Software without
   * restriction, including without limitation the rights to use,
   * copy, modify, merge, publish, distribute, sublicense, and/or sell
   * copies of the Software, and to permit persons to whom the
   * Software is furnished to do so, subject to the following
   * conditions:
   *
   * The above copyright notice and this permission notice shall be
   * included in all copies or substantial portions of the Software.
   *
   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
   * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
   * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
   * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
   * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
   * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
   * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
   * OTHER DEALINGS IN THE SOFTWARE.
   */
  
  // ______________________________________________________________________
  //                                                               Vertex3D
  package org.papervision3d.core.geom.renderables
  {
          import org.papervision3d.core.math.Number3D;
          
  
          
The @ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance constructor lets you create 2D projected vertices.

  
          public class @ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance
          {
                  
An Number that sets the X coordinate of a object relative to the scene coordinate system.

  
                  public var x :Number;
          
                  
An Number that sets the Y coordinate of a object relative to the scene coordinates.

  
                  public var y :Number;
          
                  
An Number that sets the Z coordinate of a object relative to the scene coordinates.

  
                  public var z :Number;
          
                  
An object that contains user defined properties.

  
                  public var extra :Object;
          
          
                  
[internal-use] A Boolean value that indicates whether the vertex is visible after projection. If false, it indicates that the vertex is behind the camera plane.

  
                  public var visible :Boolean;
                  
                  //To be docced
                  public var normal:Number3D;
                  
                  private var persp:Number = 0;
          
                  
Creates a new Vertex2D object whose three-dimensional values are specified by the x, y and z parameters. @param x The horizontal coordinate value. The default value is zero. @param y The vertical coordinate value. The default value is zero. @param z The depth coordinate value. The default value is zero.

  
                  public function @ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance( x:Number=0, y:Number=0, z:Number=0 )
                  {
                          this.x = x;
                          this.y = y;
                          this.z = z;
          
                          this.visible   = false;
                          this.normal = new Number3D();
                  }
                  
                  public function clone():@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance
                  {
                          var clone:@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance = new @ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance(x,y,z);
                          clone.visible = visible;
                          clone.extra = extra; //TODO : FIX CLONING OF THE EXTRA OBJECT.
                          return clone;
                  }
                  
                  public static function dot(v0:@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance, v1:@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance):Number
                  {
                          return (v0.x * v1.x + v0.y * v1.y);
                  }
                  
                  public static function cross(v0:@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance,v1:@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance):Number
                  {
                          return (v0.x*v1.y-v1.x*v0.y);
                  }
                  
                  public static function sub( v0:@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance, v1:@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance ):@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance
                  {
                          return new @ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance
                          (
                                  v1.x - v0.x,
                                  v1.y - v0.y
                          );
                  }
                  
                  public static function subTo(v0:@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance, v1:@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance, o:@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance):void
                  {
                          o.x = v1.x - v0.x;
                          o.y = v1.y - v0.y;
                  }
                  
                  public function deperspective(focus:Number):Vertex3D
          {
             persp = 1 + z / focus;
  
              return new Vertex3D(x * persp, y * persp, z);
          }
                  
                  
Calculates the squared distance between two screen vertex objects. @param b The screen vertex object to use for the calcation. @return The squared scalar value of the vector between this and the given scren vertex.

  
          public function distanceSqr(b:@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance):Number
          {
              return (x - b.x)*(x - b.x) + (y - b.y)*(y - b.y);
          }
                  
                  
Calculates the distance between two screen vertex objects. @param b The second screen vertex object to use for the calcation. @return The scalar value of the vector between this and the given screen vertex.

  
          public function distance(b:@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance):Number
          {
              return Math.sqrt((x - b.x)*(x - b.x) + (y - b.y)*(y - b.y));
          }
          
           public static function median(a:@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance, b:@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance, focus:Number):@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance
          {
              var mz:Number = (a.z + b.z) / 2;
  
              var faz:Number = focus + a.z;
              var fbz:Number = focus + b.z;
              var ifmz:Number = 1 / (focus + mz) / 2;
  
              return new @ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3DInstance((a.x*faz + b.x*fbz)*ifmz, (a.y*faz + b.y*fbz)*ifmz, mz);
          }
                  
          }
  }


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.