package away3d.primitives { import away3d.arcane; import away3d.core.base.*; import away3d.core.math.*; import away3d.core.utils.*; use namespace arcane; /** * Creates a regular polygon. */ public class RegularPolygon extends AbstractPrimitive { private var _radius:Number; private var _sides:Number; private var _subdivision:Number; private var _yUp:Boolean; private function buildRegularPolygon(radius:Number, sides:int, subdivision:int, yUp:Boolean):void { var tmpPoints:Array = new Array(); var i:int = 0; var j:int = 0; var innerstep:Number = radius/subdivision; var radstep:Number = 360/sides; var ang:Number = 0; var ang_inc:Number = radstep; var uva:UV; var uvb:UV; var uvc:UV; var uvd:UV; var facea:Vertex; var faceb:Vertex; var facec:Vertex; var faced:Vertex; for (i; i <= subdivision; i++) { tmpPoints.push(new Number3D(i*innerstep, 0, 0)); } var base:Number3D = new Number3D(0,0,0); var zerouv:UV = createUV(0.5, 0.5); for (i = 0; i < sides; i++) { for (j = 0; j RegularPolygon object. * * @param init [optional] An initialisation object for specifying default instance properties. */ public function RegularPolygon(init:Object = null) { super(init); _radius = ini.getNumber("radius", 100, {min:0}); _sides = ini.getInt("sides", 8, {min:3}); _subdivision = ini.getInt("subdivision", 1, {min:1}); _yUp = ini.getBoolean("yUp", true); buildRegularPolygon(_radius, _sides, _subdivision, _yUp); type = "RegularPolygon"; url = "primitive"; } /** * @inheritDoc */ public override function buildPrimitive():void { super.buildPrimitive(); buildRegularPolygon(_radius, _sides, _subdivision, _yUp); } } }