@daign/2d-graphics
Version:
Two dimensional graphics library that implements the daign-2d-pipeline.
91 lines (90 loc) • 3.46 kB
JavaScript
;
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.TwoPointCircle = void 0;
var math_1 = require("@daign/math");
var styledGraphicNode_1 = require("../styledGraphicNode");
/**
* Class for a circle element defined by two points: the center and a point on the circle.
*/
var TwoPointCircle = /** @class */ (function (_super) {
__extends(TwoPointCircle, _super);
/**
* Constructor.
*/
function TwoPointCircle() {
var _this = _super.call(this) || this;
_this.baseClass = 'circle';
_this.points.initializeElements(2);
_this.points.assignName('center', 0);
_this.points.assignName('circlePoint', 1);
return _this;
}
Object.defineProperty(TwoPointCircle.prototype, "center", {
get: function () {
return this.points.getByName('center');
},
set: function (position) {
this.points.getByName('center').copy(position);
},
enumerable: false,
configurable: true
});
Object.defineProperty(TwoPointCircle.prototype, "circlePoint", {
get: function () {
return this.points.getByName('circlePoint');
},
set: function (position) {
this.points.getByName('circlePoint').copy(position);
},
enumerable: false,
configurable: true
});
/**
* Calculate the radius after a given transformation.
* @param transformation - The transformation to apply.
* @returns The transformed radius.
*/
TwoPointCircle.prototype.getRadiusTransformed = function (transformation) {
var centerPoint = this.center.clone().transform(transformation);
var circlePoint = this.circlePoint.clone().transform(transformation);
var radius = centerPoint.distanceTo(circlePoint);
return radius;
};
/**
* Calculate the center after a given transformation.
* @param transformation - The transformation to apply.
* @returns The transformed center position.
*/
TwoPointCircle.prototype.getCenterTransformed = function (transformation) {
var centerPoint = this.center.clone().transform(transformation);
return centerPoint;
};
/**
* Get the bounding box of the circle.
* @returns The bounding box.
*/
TwoPointCircle.prototype.getBox = function () {
var box = new math_1.Box2();
var radius = this.center.distanceTo(this.circlePoint);
box.expandByPoint(this.center);
box.expandByScalar(radius);
return box;
};
return TwoPointCircle;
}(styledGraphicNode_1.StyledGraphicNode));
exports.TwoPointCircle = TwoPointCircle;