UNPKG

starling-framework

Version:

A fast, productive library for 2D cross-platform development.

103 lines (85 loc) 2.67 kB
// Class: starling.geom.Ellipse var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this $global.Object.defineProperty(exports, "__esModule", {value: true}); var __map_reserved = {}; // Imports var $hxClasses = require("./../../hxClasses_stub").default; var $import = require("./../../import_stub").default; var $extend = require("./../../extend_stub").default; function starling_geom_ImmutablePolygon() {return require("./../../starling/geom/ImmutablePolygon");} function Std() {return require("./../../Std");} function starling_rendering_IndexData() {return require("./../../starling/rendering/IndexData");} // Constructor var Ellipse = function(x,y,radiusX,radiusY,numSides) { if(numSides == null) { numSides = -1; } this.__x = x; this.__y = y; this.__radiusX = radiusX; this.__radiusY = radiusY; (starling_geom_ImmutablePolygon().default).call(this,this.getVertices(numSides)); } // Meta Ellipse.__name__ = ["starling","geom","Ellipse"]; Ellipse.__super__ = (starling_geom_ImmutablePolygon().default); Ellipse.prototype = $extend((starling_geom_ImmutablePolygon().default).prototype, { getVertices: function(numSides) { if(numSides < 0) { numSides = (Std().default)["int"](Math.PI * (this.__radiusX + this.__radiusY) / 4.0); } if(numSides < 6) { numSides = 6; } var vertices = []; var angleDelta = 2 * Math.PI / numSides; var angle = 0; var _g1 = 0; var _g = numSides; while(_g1 < _g) { var i = _g1++; vertices[i * 2] = Math.cos(angle) * this.__radiusX + this.__x; vertices[i * 2 + 1] = Math.sin(angle) * this.__radiusY + this.__y; angle += angleDelta; } return vertices; }, triangulate: function(indexData,offset) { if(offset == null) { offset = 0; } if(indexData == null) { indexData = new (starling_rendering_IndexData().default)((this.get_numVertices() - 2) * 3); } var from = 1; var to = this.get_numVertices() - 1; var _g1 = from; var _g = to; while(_g1 < _g) { var i = _g1++; indexData.addTriangle(offset,offset + i,offset + i + 1); } return indexData; }, contains: function(x,y) { var vx = x - this.__x; var vy = y - this.__y; var a = vx / this.__radiusX; var b = vy / this.__radiusY; return a * a + b * b <= 1; }, get_area: function() { return Math.PI * this.__radiusX * this.__radiusY; }, get_isSimple: function() { return true; }, get_isConvex: function() { return true; } }); Ellipse.prototype.__class__ = Ellipse.prototype.constructor = $hxClasses["starling.geom.Ellipse"] = Ellipse; // Init // Statics // Export exports.default = Ellipse;