topical media & game development
student-ar-org-papervision3d-core-geom-renderables-Vertex3D.ax
student-ar-org-papervision3d-core-geom-renderables-Vertex3D.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.
*/
// ______________________________________________________________________
// @ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3D
package org.papervision3d.core.geom.renderables
{
import flash.utils.Dictionary;
import org.papervision3d.core.math.Number3D;
import org.papervision3d.core.render.command.IRenderListItem;
The @ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3D constructor lets you create 3D vertices.
public class @ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3D extends AbstractRenderable implements IRenderable
{
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;
Used for removing duplicates in clipping procedures
public var timestamp:Number;
Vertex2D instance
public var vertex3DInstance:@fileInstance;
//To be docced
public var normal:Number3D;
public var connectedFaces:Dictionary;
private var persp:Number=0;
protected var position:Number3D = new Number3D();
Creates a new @ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3D 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-Vertex3D( x:Number=0, y:Number=0, z:Number=0 )
{
this.x = position.x = x;
this.y = position.y = y;
this.z = position.z = z;
this.vertex3DInstance = new @fileInstance();
this.normal = new Number3D();
this.connectedFaces = new Dictionary();
}
public function getPosition():Number3D
{
position.x = x;
position.y = y;
position.z = z;
return position;
}
public function toNumber3D():Number3D
{
return new Number3D(x,y,z);
}
public function clone():@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3D
{
var clone:@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3D = new @ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3D(x,y,z);
clone.extra = extra;
clone.vertex3DInstance = vertex3DInstance.clone();
clone.normal = normal.clone();
return clone;
}
public function calculateNormal():void
{
var face:Triangle3D;
var count:Number = 0;
normal.reset();
for each(face in connectedFaces)
{
if(face.faceNormal){
count++;
normal.plusEq(face.faceNormal);
}
}
//normal.x/=count;
//normal.y/=count;
//normal.z/=count;
var p:Number3D = getPosition();
p.x /= count;
p.y /= count;
p.z /=count;
p.normalize();
normal.plusEq(p);
normal.normalize();
}
override public function getRenderListItem():IRenderListItem
{
return null;
}
public static function weighted(a:@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3D, b:@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3D, aw:Number, bw:Number):@ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3D
{
var d:Number = aw + bw;
var ak:Number = aw / d;
var bk:Number = bw / d;
return new @ax-student-ar-org-papervision3d-core-geom-renderables-Vertex3D(a.x*ak+b.x*bk, a.y*ak + b.y*bk, a.z*ak + b.z*bk);
}
public function perspective(focus:Number):@fileInstance
{
persp = 1 / (1 + z / focus);
return new @fileInstance(x * persp, y * persp, z);
}
}
}
(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.