00001 
00002 
00003 
00004 
00005 #pragma once
00006 
00007 namespace Flatland
00008 {
00009     class Geometry;
00010     class ContactList;
00011     class Quad;
00012     class Circle;
00013     class Terrain;
00014 
00015     namespace Intersection
00016     {
00017         
00018         void Find(const Geometry &g1, const Geometry &g2, ContactList &contacts);
00019 
00020         void FindQuadQuad(const Geometry &g1, const Geometry &g2, ContactList &contacts);
00021         void FindQuadCircle(const Geometry &g1, const Geometry &g2, ContactList &contacts);
00022         void FindQuadTerrain(const Geometry &g1, const Geometry &g2, ContactList &contacts);
00023         void FindQuadComposite(const Geometry &g1, const Geometry &g2, ContactList &contacts);
00024 
00025         void FindCircleQuad(const Geometry &g1, const Geometry &g2, ContactList &contacts);
00026         void FindCircleCircle(const Geometry &g1, const Geometry &g2, ContactList &contacts);
00027         void FindCircleTerrain(const Geometry &g1, const Geometry &g2, ContactList &contacts);
00028         void FindCircleComposite(const Geometry &g1, const Geometry &g2, ContactList &contacts);
00029 
00030         void FindTerrainQuad(const Geometry &g1, const Geometry &g2, ContactList &contacts);
00031         void FindTerrainCircle(const Geometry &g1, const Geometry &g2, ContactList &contacts);
00032         void FindTerrainTerrain(const Geometry &g1, const Geometry &g2, ContactList &contacts);
00033         void FindTerrainComposite(const Geometry &g1, const Geometry &g2, ContactList &contacts);
00034 
00035         void FindCompositeQuad(const Geometry &g1, const Geometry &g2, ContactList &contacts);
00036         void FindCompositeCircle(const Geometry &g1, const Geometry &g2, ContactList &contacts);
00037         void FindCompositeTerrain(const Geometry &g1, const Geometry &g2, ContactList &contacts);
00038         void FindCompositeComposite(const Geometry &g1, const Geometry &g2, ContactList &contacts);
00039 
00040         
00041         bool Test(const Geometry &g1, const Geometry &g2);
00042 
00043         bool TestQuadQuad(const Geometry &g1, const Geometry &g2);
00044         bool TestQuadCircle(const Geometry &g1, const Geometry &g2);
00045         bool TestQuadTerrain(const Geometry &g1, const Geometry &g2);
00046         bool TestQuadComposite(const Geometry &g1, const Geometry &g2);
00047 
00048         bool TestCircleQuad(const Geometry &g1, const Geometry &g2);
00049         bool TestCircleCircle(const Geometry &g1, const Geometry &g2);
00050         bool TestCircleTerrain(const Geometry &g1, const Geometry &g2);
00051         bool TestCircleComposite(const Geometry &g1, const Geometry &g2);
00052 
00053         bool TestTerrainQuad(const Geometry &g1, const Geometry &g2);
00054         bool TestTerrainCircle(const Geometry &g1, const Geometry &g2);
00055         bool TestTerrainTerrain(const Geometry &g1, const Geometry &g2);
00056         bool TestTerrainComposite(const Geometry &g1, const Geometry &g2);
00057 
00058         bool TestCompositeQuad(const Geometry &g1, const Geometry &g2);
00059         bool TestCompositeCircle(const Geometry &g1, const Geometry &g2);
00060         bool TestCompositeTerrain(const Geometry &g1, const Geometry &g2);
00061         bool TestCompositeComposite(const Geometry &g1, const Geometry &g2);
00062     }
00063 }