115 lines
2.6 KiB
JavaScript
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])
|
|
)
|
|
);
|
|
};
|