Update to 2.0.0 tree from current Fremantle build
[opencv] / apps / Hawk / demos / delaunay.c
diff --git a/apps/Hawk/demos/delaunay.c b/apps/Hawk/demos/delaunay.c
deleted file mode 100644 (file)
index 700e89a..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-/* the script demostrates iterative construction of\r
-   delaunay triangulation and voronoi tesselation */\r
-\r
-CvSubdiv2D* init_delaunay( CvMemStorage* storage,\r
-                           CvRect rect )\r
-{\r
-    CvSubdiv2D* subdiv;\r
-    \r
-    subdiv = cvCreateSubdiv2D( CV_SEQ_KIND_SUBDIV2D, sizeof(*subdiv),\r
-                               sizeof(CvSubdiv2DPoint),\r
-                               sizeof(CvQuadEdge2D),\r
-                               storage );\r
-    cvInitSubdivDelaunay2D( subdiv, rect );\r
-    \r
-    return subdiv;\r
-}\r
-\r
-\r
-void draw_subdiv_point( IplImage* img, CvPoint2D32f fp, int color )\r
-{\r
-    cvCircle( img, cvPoint(cvRound(fp.x), cvRound(fp.y)), 3, color, CV_FILLED );    \r
-}\r
-\r
-\r
-void draw_subdiv_edge( IplImage* img, CvSubdiv2DEdge edge, int color )\r
-{\r
-    CvSubdiv2DPoint* org_pt;\r
-    CvSubdiv2DPoint* dst_pt;\r
-    CvPoint2D32f org;\r
-    CvPoint2D32f dst;\r
-    CvPoint iorg, idst;\r
-    \r
-    org_pt = cvSubdiv2DEdgeOrg(edge);\r
-    dst_pt = cvSubdiv2DEdgeDst(edge);\r
-    \r
-    if( org_pt && dst_pt )\r
-    {\r
-        org = org_pt->pt;\r
-        dst = dst_pt->pt;\r
-        \r
-        iorg = cvPoint( cvRound( org.x ), cvRound( org.y ));\r
-        idst = cvPoint( cvRound( dst.x ), cvRound( dst.y ));\r
-    \r
-        cvLineAA( img, iorg, idst, color, 0 );\r
-    }\r
-}\r
-\r
-\r
-void draw_subdiv( IplImage* img, CvSubdiv2D* subdiv,\r
-                  int delaunay_color, int voronoi_color )\r
-{\r
-    CvSeqReader  reader;\r
-    int i, total = subdiv->edges->total;\r
-    int elem_size = subdiv->edges->elem_size;\r
-    int color;\r
-    \r
-    cvStartReadSeq( (CvSeq*)(subdiv->edges), &reader, 0 );\r
-    \r
-    for( i = 0; i < total; i++ )\r
-    {\r
-        CvQuadEdge2D* edge = (CvQuadEdge2D*)(reader.ptr);\r
-        \r
-        if( CV_IS_SET_ELEM_EXISTS( edge ))\r
-        {\r
-            draw_subdiv_edge( img, (CvSubdiv2DEdge)edge + 1, voronoi_color );\r
-            draw_subdiv_edge( img, (CvSubdiv2DEdge)edge, delaunay_color );\r
-        }\r
-        \r
-        CV_NEXT_SEQ_ELEM( elem_size, reader );\r
-    }\r
-}\r
-\r
-\r
-void locate_point( CvSubdiv2D* subdiv, CvPoint2D32f fp, IplImage* img,\r
-                   int active_color )\r
-{\r
-    CvSubdiv2DEdge e = 0;\r
-    CvSubdiv2DEdge e0 = 0;\r
-    CvSubdiv2DPoint* p = 0;\r
-    CvSubdiv2DPointLocation location = cvSubdiv2DLocate( subdiv, fp, &e0, &p );\r
-    \r
-    if( e0 )\r
-    {\r
-        e = e0;\r
-        do\r
-        {\r
-            draw_subdiv_edge( img, e, active_color );\r
-            e = cvSubdiv2DGetEdge(e,CV_NEXT_AROUND_LEFT);\r
-        }\r
-        while( e != e0 );\r
-    }\r
-    \r
-    draw_subdiv_point( img, fp, active_color );\r
-}\r
-\r
-\r
-void draw_subdiv_facet( IplImage* img, CvSubdiv2DEdge edge )\r
-{\r
-    CvSubdiv2DEdge t = edge;\r
-    int i, count = 0;\r
-    CvPoint* buf = 0;\r
-\r
-    // count number of edges in facet \r
-    do\r
-    {\r
-        count++;\r
-        t = cvSubdiv2DGetEdge( t, CV_NEXT_AROUND_LEFT );\r
-    } while (t != edge );\r
-    \r
-    buf = (CvPoint*)malloc( count * sizeof(buf[0]));\r
-    \r
-    // gather points\r
-    t = edge;\r
-    for( i = 0; i < count; i++ )\r
-    {\r
-        CvSubdiv2DPoint* pt = cvSubdiv2DEdgeOrg( t );\r
-        if( !pt ) break;\r
-        buf[i] = cvPoint( cvRound(pt->pt.x), cvRound(pt->pt.y));\r
-        t = cvSubdiv2DGetEdge( t, CV_NEXT_AROUND_LEFT );\r
-    }\r
-    \r
-    if( i == count )\r
-    {\r
-        CvSubdiv2DPoint* pt = cvSubdiv2DEdgeDst( cvSubdiv2DRotateEdge( edge, 1 ));\r
-        cvFillConvexPoly( img, buf, count, CV_RGB(rand(),rand(),rand()));\r
-        cvPolyLineAA( img, &buf, &count, 1, 1, CV_RGB(0,0,0), 0);\r
-        draw_subdiv_point( img, pt->pt, CV_RGB(0,0,0));\r
-    }\r
-    free( buf );        \r
-}\r
-\r
-void paint_voronoi( CvSubdiv2D* subdiv, IplImage* img )\r
-{\r
-    CvSeqReader  reader;\r
-    int i, total = subdiv->edges->total;\r
-    int elem_size = subdiv->edges->elem_size;\r
-\r
-    cvCalcSubdivVoronoi2D( subdiv );\r
-    \r
-    cvStartReadSeq( (CvSeq*)(subdiv->edges), &reader, 0 );\r
-    \r
-    for( i = 0; i < total; i++ )\r
-    {\r
-        CvQuadEdge2D* edge = (CvQuadEdge2D*)(reader.ptr);\r
-        \r
-        if( CV_IS_SET_ELEM_EXISTS( edge ))\r
-        {\r
-            CvSubdiv2DEdge e = (CvSubdiv2DEdge)edge;\r
-            // left\r
-            draw_subdiv_facet( img, cvSubdiv2DRotateEdge( e, 1 ));\r
-            \r
-            // right\r
-            draw_subdiv_facet( img, cvSubdiv2DRotateEdge( e, 3 ));\r
-        }\r
-        \r
-        CV_NEXT_SEQ_ELEM( elem_size, reader );\r
-    }    \r
-}\r
-\r
-\r
-void run(void)\r
-{\r
-    char win[] = "source";\r
-    int i;\r
-    int q_flag = 0;\r
-    int draw_flag = 0;\r
-    CvRect rect = { 0, 0, 600, 600 };\r
-    CvMemStorage* storage;\r
-    CvSubdiv2D* subdiv;\r
-    IplImage* img;\r
-    int active_facet_color, delaunay_color, voronoi_color, bkgnd_color;\r
-    \r
-    active_facet_color = CV_RGB( 255, 0, 0 );\r
-    delaunay_color  = CV_RGB( 0,0,0);\r
-    voronoi_color = CV_RGB(0, 180, 0);\r
-    bkgnd_color = CV_RGB(255,255,255);\r
-    \r
-    img = cvCreateImage( cvSize(rect.width,rect.height), 8, 3 );\r
-     \r
-    named_window( win, 0 );\r
-    cvFillImage( img, bkgnd_color );\r
-     \r
-    storage = cvCreateMemStorage(0);\r
-    subdiv = init_delaunay( storage, rect );\r
-    \r
-    printf("Delaunay triangulation will be build now interactively.\n"\r
-           "To stop the process, press Escape\n\n");    \r
-    \r
-    for( i = 0; i < 200; i++ )\r
-    {\r
-        CvPoint2D32f fp = cvPoint2D32f( (float)(rand()%(rect.width-10)+5),\r
-                                        (float)(rand()%(rect.height-10)+5));\r
-                                        \r
-        locate_point( subdiv, fp, img, active_facet_color );\r
-        show_iplimage( win, img );\r
-        \r
-        q_flag = wait_key_ex( win, 100 ) == 27;\r
-        if( q_flag ) break;\r
-        \r
-        cvSubdivDelaunay2DInsert( subdiv, fp );\r
-        cvCalcSubdivVoronoi2D( subdiv );\r
-        cvFillImage( img, bkgnd_color );\r
-        draw_subdiv( img, subdiv, delaunay_color, voronoi_color );\r
-        show_iplimage( win, img );\r
-        \r
-        q_flag = wait_key_ex( win, 100 ) == 27;\r
-        if( q_flag ) break;\r
-    }\r
-    \r
-    if( !q_flag ) wait_key( win );\r
-    cvFillImage( img, bkgnd_color );\r
-    paint_voronoi( subdiv, img );\r
-    show_iplimage( win, img );\r
-    \r
-    cvReleaseMemStorage( &storage );\r
-    cvReleaseImage(&img);\r
-}\r
-\r
-run();\r
-\r
-\r
-\r
-\r
-\r