starling-framework
Version:
A fast, productive library for 2D cross-platform development.
103 lines (85 loc) • 2.67 kB
JavaScript
// 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;