r3-legacy/src/r3-d3-api-face-0.js

115 lines
2.6 KiB
JavaScript

/**
* R3.D3.API.Face
* @param apiComponent
*
* @property vertexIndices
* @property vertices
* @property normal
*
* @constructor
*/
R3.D3.API.Face = function(
apiComponent
) {
__DEREGISTER_COMPONENT__;
__API_COMPONENT__;
if (R3.Utils.UndefinedOrNull(apiComponent.vertexIndices)) {
apiComponent.vertexIndices = [0, 1, 2];
}
this.vertexIndices = apiComponent.vertexIndices;
if (R3.Utils.UndefinedOrNull(apiComponent.vertices)) {
apiComponent.vertices = [
new R3.D3.API.Vertex(
{
parent : this,
register : this.register
}
),
new R3.D3.API.Vertex(
{
parent : this,
register : this.register
}
),
new R3.D3.API.Vertex(
{
parent : this,
register : this.register
}
),
];
}
this.vertices = apiComponent.vertices;
if (R3.Utils.UndefinedOrNull(apiComponent.normal)) {
apiComponent.normal = null;
}
this.normal = apiComponent.normal;
};
R3.D3.API.Face.prototype = Object.create(R3.API.Component.prototype);
R3.D3.API.Face.prototype.constructor = R3.D3.API.Face;
/**
* Clone a Face
* @returns {R3.D3.API.Face}
*/
R3.D3.API.Face.prototype.clone = function(){
return new R3.D3.API.Face(
null,
this.vertexIndices,
this.vertices,
this.normal
);
};
/**
* Returns true if two triangles are equal (their vertex indices match in some order)
* @param face
* @returns {boolean}
*/
R3.D3.API.Face.prototype.equals = function(face) {
return (
(
(this.vertexIndices[0] === face.vertexIndices[0]) &&
(this.vertexIndices[1] === face.vertexIndices[1]) &&
(this.vertexIndices[2] === face.vertexIndices[2])
)
||
(
(this.vertexIndices[0] === face.vertexIndices[0]) &&
(this.vertexIndices[1] === face.vertexIndices[2]) &&
(this.vertexIndices[2] === face.vertexIndices[1])
)
||
(
(this.vertexIndices[0] === face.vertexIndices[1]) &&
(this.vertexIndices[1] === face.vertexIndices[0]) &&
(this.vertexIndices[2] === face.vertexIndices[2])
)
||
(
(this.vertexIndices[0] === face.vertexIndices[1]) &&
(this.vertexIndices[1] === face.vertexIndices[2]) &&
(this.vertexIndices[2] === face.vertexIndices[0])
)
||
(
(this.vertexIndices[0] === face.vertexIndices[2]) &&
(this.vertexIndices[1] === face.vertexIndices[0]) &&
(this.vertexIndices[2] === face.vertexIndices[1])
)
||
(
(this.vertexIndices[0] === face.vertexIndices[2]) &&
(this.vertexIndices[1] === face.vertexIndices[1]) &&
(this.vertexIndices[2] === face.vertexIndices[0])
)
);
};