修复相交选择时未使用 对象矩阵导致的相交错误的问题

pull/7/head
ChenX 7 years ago
parent 05e0c3fbbd
commit e7a8cb7a04

@ -92,7 +92,7 @@ export class SelectBox extends SelectSetBase
}
}
}
IntersectLine(p1: THREE.Vector3, p2: THREE.Vector3, index1: number, index2: number, pts: Array<THREE.Vector3>)
IntersectLine(p1: THREE.Vector3, p2: THREE.Vector3, index1: number, index2: number, pts: Array<THREE.Vector3>, objMatrix: THREE.Matrix4)
{
let line = new verb.core.PolylineData([[p1.x, p1.y, 0], [p2.x, p2.y, 0]], [0, 1]);
@ -100,8 +100,8 @@ export class SelectBox extends SelectSetBase
{
let nearPlan = this.m_Frustom.planes[5];
let px1 = pts[index1];
let px2 = pts[index2];
let px1 = pts[index1].clone().applyMatrix4(objMatrix);
let px2 = pts[index2].clone().applyMatrix4(objMatrix);
let px1InFrusum = nearPlan.distanceToPoint(px1) > 0;
let px2InFrusum = nearPlan.distanceToPoint(px2) > 0;
@ -160,7 +160,7 @@ export class SelectBox extends SelectSetBase
if (this.ContainerScreenPoint(p1) ||
this.ContainerScreenPoint(p2) ||
this.IntersectLine(p1, p2, index, index + 1, geo.vertices))
this.IntersectLine(p1, p2, index, index + 1, geo.vertices, obj.matrix))
return true;
}
}
@ -180,9 +180,9 @@ export class SelectBox extends SelectSetBase
return true;
}
if (
this.IntersectLine(p1, p2, face.a, face.b, geo.vertices) ||
this.IntersectLine(p2, p3, face.b, face.c, geo.vertices) ||
this.IntersectLine(p3, p1, face.c, face.a, geo.vertices))
this.IntersectLine(p1, p2, face.a, face.b, geo.vertices, obj.matrix) ||
this.IntersectLine(p2, p3, face.b, face.c, geo.vertices, obj.matrix) ||
this.IntersectLine(p3, p1, face.c, face.a, geo.vertices, obj.matrix))
{
return true;
}

Loading…
Cancel
Save