bool Intersect(Polygon A, Polygon B) { for(I = 0; I < A.num_edges; I ++) { Vector N = Vector(-A.EdgeDir[I].y, A.EdgeDir[I].x); if (AxisSeparatePolygons(N, A, B)) return false; } for(I = 0; I < B.num_edges; I ++) { Vector N = Vector(-B.EdgeDir[i].y, B.EdgeDir[I].x); if (AxisSeparatePolygons (N, A, B)) return false; } return true; }
void CalculateInterval(Vector Axis, Polygon P, float& min, float& max) { float d = Axis dot P.vertex[0]; //从坐标原点开始计算向量 min = max = d; for(I = 0; I < P.num_vertices; I ++) { float d = P.vertex[I] dot Axis; if (d < min) min = d; else if(d > max) max = d; } }