1 /** 2 * com.sekati.geom.Point3D 3 * @version 1.0.5 4 * @author jason m horwitz | sekati.com 5 * Copyright (C) 2007 jason m horwitz, Sekat LLC. All Rights Reserved. 6 * Released under the MIT License: http://www.opensource.org/licenses/mit-license.php 7 */ 8 9 import com.sekati.geom.Point; 10 import com.sekati.geom.TrigoBase; 11 12 /** 13 * extend {@link com.sekati.geom.Point} with a Z-axis. 14 * 15 * {@code Usage: 16 * var Point:Point3D = new com.sekati.geom.Point3D(10,10,50); 17 * } 18 */ 19 // 20 21 class com.sekati.geom.Point3D extends Point { 22 23 public var x:Number; 24 public var y:Number; 25 public var z:Number; 26 27 /** 28 * Constructor 29 * @param nX (Number) 30 * @param nY (Number) 31 * @param nZ (Number) 32 */ 33 public function Point3D(nX:Number, nY:Number, nZ:Number) { 34 super( nX, nY ); 35 z = nZ; 36 } 37 38 /** 39 * check if two 3D points match 40 * @param p (Point3D) 41 * @return Boolean 42 */ 43 public function isEqual(p:Point3D):Boolean { 44 return (p.x == x && p.y == y && p.z == z); 45 } 46 47 /** 48 * get Z distance between two points 49 * @param p (Point3D) 50 * @return Number 51 */ 52 public function getZDistance(p:Point3D):Number { 53 return TrigoBase.getZDistance( this, p ); 54 } 55 56 /** 57 * Returns a new 3D point based on this point with x and y offset values 58 * @param nX (Number) 59 * @param nY (Number) 60 * @param nZ (Number) 61 * @return Point3D 62 */ 63 public function displace(nX:Number, nY:Number, nZ:Number):Point3D { 64 return new Point3D( x + nX, y + nY, z + nZ ); 65 } 66 67 /** 68 * Offset the Point3D object by a specified amount. 69 * @param x (Number) horizontal offset 70 * @param y (Number) vertical offset 71 * @param z (Number) z-axis offset 72 * @return Void 73 */ 74 public function offset(x:Number, y:Number, z:Number):Void { 75 super.offset( x, y ); 76 this.z += z; 77 } 78 79 /** 80 * Clone this Point3D. 81 * @return Point3D 82 */ 83 public function clone():Point3D { 84 return new Point3D( this.x, this.y, this.z ); 85 } 86 }