我正在研究一种有两种形状的程序:三角形表示为三个顶点的数组;四边形作为六个数组(它们是粘在一起的两个三角形)。为了确定我是否处于给定的形状,我需要首先检查三角形,然后通过检查它们的两个三角形来检查四边形。
我的问题是,即使我点击三角形,也会遇到else if
条件。这意味着我可以影响我的四边形而不会影响我的三角形(如果移动它们它们都移动,但这是另一个问题),但旋转三角形也会旋转所有四边形。
以下是代码:
for(var i = shapes.length - 1; i >= 0; i--){
/* Check triangles */
if( shapes[i].length == 3 &&
mouseIsInTriangle( mousePos, shapes[i] ) ){
/* Update flag to reflect the shape that has been clicked in */
selectedShape = i;
/* And update theta if necessary */
if(shift || ctrl) {
theta[selectedShape] += thetaStep;
}
}
/* Check quads */
else if(shapes[i].length == 6){
var triangleA = [shapes[i][0],shapes[i][1],shapes[i][2]];
var triangleB = [shapes[i][3],shapes[i][4],shapes[i][5]];
if( (mouseIsInTriangle, mousePos, triangleA) ||
(mouseIsInTriangle, mousePos, triangleB)){
// console.log("A");
// console.log(triangleA);
// console.log("B");
// console.log(triangleB);
/* Update flag to reflect the shape that has been clicked in */
selectedShape = i;
/* And update theta if necessary */
if(shift || ctrl) {
theta[selectedShape] += thetaStep;
}
}
}
}