Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages   Examples  

Use-Case

Based on OGraphic objects, AGraphic objects, and container objects (see section Container objects), the GOMLib allows many various modellings of graphical objects. So, it is possible to define many knowledge structuring for a given problem. We present here a various possible modellings with the GOMLib for the linked squares problem.

ls.jpg
The following function gives some modelling examples of linked squares.

    void modelling()
    {
            OPoint p1(10,10),p2(20,10),p3(20,20),p4(10,20);
            OPoint p5(30,30),p6(40,30),p7(40,40),p8(30,40);
            //modelling based on point follow-up
                    {
                    OHL* o = new OHL();
                    o->newObject(p3.clone());
                    o->newObject(p2.clone());
                    o->newObject(p1.clone());
                    o->newObject(p4.clone());
                    o->newObject(p3.clone());
                    o->newObject(p5.clone());
                    o->newObject(p6.clone());
                    o->newObject(p7.clone());
                    o->newObject(p8.clone());
                    o->newObject(p5.clone());
                    gomWrite(o,"m1.gom");
                    xmlWrite(o,"m1.xml");
                    svgWrite(o,"m1.svg");
                    o->~OHL();
                    }
            //modelling based on line follow-up
                    {
                    OHL* o = new OHL();
                    o->newObject(new OLine(p3,p2));
                    o->newObject(new OLine(p2,p1));
                    o->newObject(new OLine(p1,p4));
                    o->newObject(new OLine(p4,p3));
                    o->newObject(new OLine(p3,p5));
                    o->newObject(new OLine(p5,p6));
                    o->newObject(new OLine(p6,p7));
                    o->newObject(new OLine(p7,p8));
                    o->newObject(new OLine(p8,p5));
                    gomWrite(o,"m2.gom");
                    xmlWrite(o,"m2.xml");
                    svgWrite(o,"m2.svg");
                    o->~OHL();
                    }
            //modelling based on OHL line structuring
                    {
                    OHL* o = new OHL();
                    OHL* o1 = new OHL();
                    o1->newObject(new OLine(p3,p2));
                    o1->newObject(new OLine(p2,p1));
                    o1->newObject(new OLine(p1,p4));
                    o1->newObject(new OLine(p4,p3));
                    o->newObject(o1);
                    o->newObject(new OJunction(p3));
                    o->newObject(new OLine(p3,p5));
                    o->newObject(new OJunction(p5));
                    OHL* o2 = new OHL();
                    o2->newObject(new OLine(p5,p6));
                    o2->newObject(new OLine(p6,p7));
                    o2->newObject(new OLine(p7,p8));
                    o2->newObject(new OLine(p8,p5));
                    o->newObject(o2);
                    gomWrite(o,"m3.gom");
                    xmlWrite(o,"m3.xml");
                    svgWrite(o,"m3.svg");
                    o->~OHL();
                    }
            //modelling based on OHL line structuring with attributes
                    {
                    OHL* o = new OHL();
                    OHL* o1 = new OHL();
                    o1->newObject(new OLine(p3,p2));
                    o1->newObject(new OLine(p2,p1));
                    o1->newObject(new OLine(p1,p4));
                    o1->newObject(new OLine(p4,p3));
                    o->newObject(o1);
                    o->newObject(new OJunction(p3));
                    o->newObject(new OLine(p3,p5));
                    o->newObject(new OJunction(p5));
                    OHL* o2 = new OHL();
                    o2->newObject(new OLine(p5,p6));
                    o2->newObject(new OLine(p6,p7));
                    o2->newObject(new OLine(p7,p8));
                    o2->newObject(new OLine(p8,p5));
                    o->newObject(o2);
                    o->newAttribute(new ALabel("close"));
                    o->newAttribute(new ALabel("connect"));
                    o->newAttribute(new ALabel("connect"));
                    o->newAttribute(new ALabel("close"));
                    gomWrite(o,"m3.gom");
                    xmlWrite(o,"m3.xml");
                    svgWrite(o,"m3.svg");
                    o->~OHL();
                    }
            //modelling based on OGraph line structuring
                    {
                    OGraph* o = new OGraph(false); //the graph is undirected
                    o->newNode(new OLine(p3,p2));
                    o->newNode(new OLine(p2,p1));
                    o->newNode(new OLine(p1,p4));
                    o->newNode(new OLine(p4,p3));
                    o->newNode(new OLine(p3,p5));
                    o->newNode(new OLine(p5,p6));
                    o->newNode(new OLine(p6,p7));
                    o->newNode(new OLine(p7,p8));
                    o->newNode(new OLine(p8,p5));
                    o->newEdge(0,1);
                    o->newEdge(1,2);
                    o->newEdge(2,3);
                    o->newEdge(0,4);
                    o->newEdge(3,4);
                    o->newEdge(4,5);
                    o->newEdge(4,8);
                    o->newEdge(5,6);
                    o->newEdge(6,7);
                    o->newEdge(7,8);
                    gomWrite(o,"m4.gom");
                    xmlWrite(o,"m4.xml");
                    svgWrite(o,"m4.svg");
                    o->~OGraph();
                    }
            //modelling based on OGraph line structuring with attributes
                    {
                    OGraph* o = new OGraph(false); //the graph is undirected
                    OLine *l1,*l2,*l3,*l4,*l5,*l6,*l7,*l8,*l9;
                    o->newNode(l1 = new OLine(p3,p2));
                    o->newNode(l2 = new OLine(p2,p1));
                    o->newNode(l3 = new OLine(p1,p4));
                    o->newNode(l4 = new OLine(p4,p3));
                    o->newNode(l5 = new OLine(p3,p5));
                    o->newNode(l6 = new OLine(p5,p6));
                    o->newNode(l7 = new OLine(p6,p7));
                    o->newNode(l8 = new OLine(p7,p8));
                    o->newNode(l9 = new OLine(p8,p5));
                    o->newEdge(0,1,new AAngle(l1->getAngle(*l2)));
                    o->newEdge(1,2,new AAngle(l2->getAngle(*l3)));
                    o->newEdge(2,3,new AAngle(l3->getAngle(*l4)));
                    o->newEdge(0,4,new AAngle(l5->getAngle(*l1)));
                    o->newEdge(3,4,new AAngle(l4->getAngle(*l5)));
                    o->newEdge(4,5,new AAngle(l5->getAngle(*l6)));
                    o->newEdge(4,8,new AAngle(l5->getAngle(*l9)));
                    o->newEdge(5,6,new AAngle(l6->getAngle(*l7)));
                    o->newEdge(6,7,new AAngle(l7->getAngle(*l8)));
                    o->newEdge(7,8,new AAngle(l8->getAngle(*l9)));
                    gomWrite(o,"m4.gom");
                    xmlWrite(o,"m4.xml");
                    svgWrite(o,"m4.svg");
                    o->~OGraph();
                    }
            //modelling based on OGraph/OHL line structuring with attribute
                    {
                    OGraph* o = new OGraph(false); //the graph is undirected
                    OHL* o1 = new OHL();
                    o1->newObject(new OLine(p3,p2));
                    o1->newObject(new OLine(p2,p1));
                    o1->newObject(new OLine(p1,p4));
                    o1->newObject(new OLine(p4,p3));
                    o->newNode(o1);
                    o->newNode(new OLine(p3,p5));
                    OHL* o2 = new OHL();
                    o2->newObject(new OLine(p5,p6));
                    o2->newObject(new OLine(p6,p7));
                    o2->newObject(new OLine(p7,p8));
                    o2->newObject(new OLine(p8,p5));
                    o->newNode(o2);
                    o->newEdge(0,1,new ALink(ALink.begin,ALink.begin));
                    o->newEdge(0,1,new ALink(ALink.end,ALink.begin));
                    o->newEdge(1,2,new ALink(ALink.end,ALink.begin));
                    o->newEdge(1,2,new ALink(ALink.end,ALink.end));
                    gomWrite(o,"m4.gom");
                    xmlWrite(o,"m4.xml");
                    svgWrite(o,"m4.svg");
                    o->~OGraph();
                    }
            //modelling based on OGraph/OHL line/junction structuring
                    {
                    OGraph* o = new OGraph(false); //the graph is undirected
                    OHL* o1 = new OHL();
                    o1->newObject(new OLine(p3,p2));
                    o1->newObject(new OLine(p2,p1));
                    o1->newObject(new OLine(p1,p4));
                    o1->newObject(new OLine(p4,p3));
                    o->newNode(o1);
                    o->newNode(new OJunction(p3));
                    o->newNode(new OLine(p3,p5));
                    o->newNode(new OJunction(p5));
                    OHL* o2 = new OHL();
                    o2->newObject(new OLine(p5,p6));
                    o2->newObject(new OLine(p6,p7));
                    o2->newObject(new OLine(p7,p8));
                    o2->newObject(new OLine(p8,p5));
                    o->newNode(o2);
                    o->newEdge(0,1,new ALink(ALink.begin,ALink.center));
                    o->newEdge(0,1,new ALink(ALink.end,ALink.center));
                    o->newEdge(1,2,new ALink(ALink.center,ALink.begin));
                    o->newEdge(2,3,new ALink(ALink.end,ALink.center));
                    o->newEdge(3,4,new ALink(ALink.center,ALink.begin));
                    o->newEdge(3,4,new ALink(ALink.center,ALink.end));
                    gomWrite(o,"m4.gom");
                    xmlWrite(o,"m4.xml");
                    svgWrite(o,"m4.svg");
                    o->~OGraph();
                    }
            //to be continues, there are may possible modelling ...
    }       //de

Generated on Fri Jul 30 19:21:03 2004 for GOMLib by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001