Triangulierung mit Qt darstellen



  • Hallo!

    Mit Qt soll eine 2D-Triangulierung dargestellt werden. Das gelingt auch, aber
    der Speicherverbrauch liegt bei 1000 Bytes pro angezeigtem Dreieck. Ein erster
    Versuch geht so:

    class TriangulationScene : public QGraphicsScene
    {
    public:
    	TriangulationScene();
    	void scribble();
    ...
    }
    
    void TriangulationScene::scribble()
    {
         setItemIndexMethod(NoIndex);
    	for(vector<Triangle2*>::iterator it(vTriangles.begin());it!=vTriangles.end();++it)
    	{
    		Triangle2* pT(*it);
    		Point2* p0(pT->getCorner(0));
    		Point2* p1(pT->getCorner(1));
    		Point2* p2(pT->getCorner(2));
    		QPolygonF polygon;
    		polygon << QPointF(p0->x(),p0->y())<<QPointF(p1->x(),p1->y())<<QPointF(p2->x(),p2->y());
    		this->addPolygon(polygon);
    	}
    }
    
    int main(int argc, char *argv[])
    {
    	QApplication a(argc, argv);
    	TriangulationScene s;
    	QGraphicsView v(&s);
    	v.setDragMode(QGraphicsView::ScrollHandDrag);
    	v.resize(1024,768);
    	v.scale(100,100);
    	v.show();
    	return a.exec();
    }
    

    Da hier jedes Dreieck als Polygon gezeichnet wird, ist jede Linie doppelt vor-
    handen. Im günstigsten Fall ließe sich der Speicher also noch halbieren, indem
    nur einzelne Linien gezeichnet werden. Aber das wäre noch immer nicht gut.

    Ideen, ob da vielleicht eine andere Klasse besser geeignet ist?


Anmelden zum Antworten