Wymaga dodania skryptu figures.js, który znajduje się tutaj:
Skrypty JavaScript do części 2

Klasa opisująca trójkąt. Dziedziczy po Figure.

Konstruktor

0, 1, 3 albo 6 argumentów.

var triangle = new Triangle(). Tworzy trójkąt zerowy o współrzędnych P1(0.0, 0.0), P2(0.0, 0.0) oraz P3(0.0, 0.0).

var Triangle = new Triangle(new Array(new Point(x1,y1), new Point(x2,y2), new Point(x3, y3))). Przyjmuje tablicę zawierającą trzy punkty Point. Tworzy trójkąt między tymi punktami.

var Triangle = new Trianglet(new Point(x1,y1), new Point(x2,y2), new Point(x3, y3)).
Przyjmuje trzy punkty Point. Tworzy trójkąt między tymi punktami.

var Triangle = new Triangle(x1, y1, x2, y2, x3, y3).

Przyjmuje sześć współrzędnych trzech punktów. Tworzy trzy punkty Point i trójkąt między tymi punktami.

Właściwości

Właściwości
Właściwość Opis Wartość lub klasa obiektu Wartość
domyślna
points tablica zawierająca trzy punkty Point tworzące ten trójkąt Array []

Funkcje

Funkcje
Typ zwracany Nazwa Opis Przykład
boolean isTriangle() Sprawdza czy trzy punkty tworzą trójkąt. Rysowanie
trójkąta
liczba rzeczywista area() Oblicza i zwraca pole powierzchni tego trójkąta.
liczba rzeczywista perimeter() Oblicza i zwraca obwód tego trójkąta.
Triangle deepclone() Tworzy głęboką kopię tego trójkąta.
Point barycenter() Zwraca punkt Point będący środkiem (ciężkości) tego trójkąta.
void draw(context) Odrysowuje ten trójkąt na kontekście context
podanym jako argument.

Listing

var Triangle = function() {
	this.points = [];
	var len = arguments.length;
	if (len == 0) {
		this.points[0] = new Point(0.0, 0.0);
		this.points[1] = new Point(0.0, 0.0);
		this.points[2] = new Point(0.0, 0.0);
	} else if (len == 1) {
		for (var i = 0; i <3; i++) {
			this.points[i] = new Point(arguments[0][i].x, 
                        arguments[0][i].y);
		}
	} else if (len == 3) {
		this.points[0] = new Point(arguments[0].x, arguments[0].y);
		this.points[1] = new Point(arguments[1].x, arguments[1].y);
		this.points[2] = new Point(arguments[2].x, arguments[2].y);
	} else if (len == 6) {
		this.points[0] = new Point(arguments[0], arguments[1]);
		this.points[1] = new Point(arguments[2], arguments[3]);
		this.points[2] = new Point(arguments[4], arguments[5]);
	}
};
Triangle.prototype = new Figure();
Triangle.prototype.isTriangle = function() {
	var d1 = distance(this.points[0], this.points[1]);
	var d2 = distance(this.points[0], this.points[2]);
	var d3 = distance(this.points[1], this.points[2]);
	var tab = new Array(d1, d2, d3);
	tab.sort(comparison);
	if (tab[0] < tab[1] + tab[2]) {
		return true;
	}
	return false;
};
Triangle.prototype.area = function() {
	var a = distance(this.points[0], this.points[1]);
	var b = distance(this.points[0], this.points[2]);
	var c = distance(this.points[1], this.points[2]);
	var p = (a + b + c) / 2.0;
	return Math.sqrt(p * (p - a) * (p - b) * (p - c));
};
Triangle.prototype.perimeter = function() {
	var a = distance(this.points[0], this.points[1]);
	var b = distance(this.points[0], this.points[2]);
	var c = distance(this.points[1], this.points[2]);	
	return a + b + c;
};
Triangle.prototype.deepclone = function() {
	var figure = new Triangle();
	figure.globalAlpha = this.globalAplpha;
	figure.globalCompositeOperation = this.globalCompositeOperation;
	figure.strokeStyle = this.strokeStyle;
	figure.fillStyle = this.fillStyle;
	figure.shadowOffsetX = this.shadowOffsetX;
	figure.shadowOffsetY = this.shadowOffsetY;
	figure.shadowBlur = this.shadowBlur;
	figure.shadowColor = this.shadowColor;
	figure.lineWidth = this.lineWidth;
	figure.lineCap = this.lineCap;
	figure.lineJoin = this.lineJoin;
	figure.miterLimit = this.miterLimit;
	figure.lineDashOffset = this.lineDashOffset;
	figure.lineDashSegments = [];
	for(var i=0; i<this.lineDashSegments.length;i++){
		figure.lineDashSegments[i] = this.lineDashSegments[i];
	}
	figure.fill = this.fill;
	figure.stroke = this.stroke;
	figure.points = [];
	for (var i = 0; i < this.points.length; i++) {
		figure.points[i] = new Point(this.points[i].x, this.points[i].y);
	}
	return figure;
};
Triangle.prototype.barycenter = function() {
	var x = (this.points[0].x + this.points[1].x + this.points[2].x) / 3.0;
	var y = (this.points[0].y + this.points[1].y + this.points[2].y) / 3.0;
	return new Point(x, y);
};
Triangle.prototype.draw = function(context) {
	context.save();
	context.beginPath();
	this.lineCap = "square";
	this.setProps(context);
	context.moveTo(this.points[0].x, this.points[0].y);
	context.lineTo(this.points[1].x, this.points[1].y);
	context.lineTo(this.points[2].x, this.points[2].y);
	context.closePath();
	if (this.stroke == true) {
		context.stroke();
	}
	if (this.fill == true) {
		context.fill();
	}
	context.restore();
};
            

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *