|
|
|
|
|
|
|
function Point(x, y, p) {
|
|
this.x = null;
|
|
this.y = null;
|
|
if (x == null && y == null && p == null) {
|
|
this.x = 0;
|
|
this.y = 0;
|
|
}
|
|
else if (typeof x == 'number' && typeof y == 'number' && p == null) {
|
|
this.x = x;
|
|
this.y = y;
|
|
}
|
|
else if (x.constructor.name == 'Point' && y == null && p == null) {
|
|
p = x;
|
|
this.x = p.x;
|
|
this.y = p.y;
|
|
}
|
|
}
|
|
|
|
Point.prototype.getX = function () {
|
|
return this.x;
|
|
}
|
|
|
|
Point.prototype.getY = function () {
|
|
return this.y;
|
|
}
|
|
|
|
Point.prototype.getLocation = function () {
|
|
return new Point(this.x, this.y);
|
|
}
|
|
|
|
Point.prototype.setLocation = function (x, y, p) {
|
|
if (x.constructor.name == 'Point' && y == null && p == null) {
|
|
p = x;
|
|
this.setLocation(p.x, p.y);
|
|
}
|
|
else if (typeof x == 'number' && typeof y == 'number' && p == null) {
|
|
|
|
if (parseInt(x) == x && parseInt(y) == y) {
|
|
this.move(x, y);
|
|
}
|
|
else {
|
|
this.x = Math.floor(x + 0.5);
|
|
this.y = Math.floor(y + 0.5);
|
|
}
|
|
}
|
|
}
|
|
|
|
Point.prototype.move = function (x, y) {
|
|
this.x = x;
|
|
this.y = y;
|
|
}
|
|
|
|
Point.prototype.translate = function (dx, dy) {
|
|
this.x += dx;
|
|
this.y += dy;
|
|
}
|
|
|
|
Point.prototype.equals = function (obj) {
|
|
if (obj.constructor.name == "Point") {
|
|
var pt = obj;
|
|
return (this.x == pt.x) && (this.y == pt.y);
|
|
}
|
|
return this == obj;
|
|
}
|
|
|
|
Point.prototype.toString = function () {
|
|
return new Point().constructor.name + "[x=" + this.x + ",y=" + this.y + "]";
|
|
}
|
|
|
|
module.exports = Point;
|
|
|