# Re: [R] How to draw holes generated by gpclib using plot function

From: Ross Ihaka (ihaka@stat.auckland.ac.nz)
Date: Tue 11 May 2004 - 17:40:15 EST

```Message-id: <40A0835F.6090009@stat.auckland.ac.nz>

```

Hisaji ONO wrote:
> Hi.
>
> I've tried to create a polygon with one hole by gpclib using following
> example script.
>
> ="gpclib"), nohole = FALSE)
> area.poly(holepoly)
> plot(holepoly,poly.args=list(col="red",border="blue"))
>
> And I noticed plot function couldn't draw polygons with holes correctly.
>
> Does anyone know how to solve this situation?

This is basic constraint in the R graphics system. Polygons must
consist of a single (possibly self-intersecting) ring. It would be
possible to implement a primitive which is bounded by several
non-intersecting rings by joining the interior holes to the outer
boundary to create a simply connected shape. Then you could draw
the interior with the existing polygon primitive. You can find a
more precise description of the process in the FIST (fast
industrial-strength triangulation) paper:

M. Held (2001):
``FIST: Fast Industrial-Strength Triangulation of Polygons''.
Algorithmica 30(4): 563-596, 2001.

It would be VERY useful to have an implementation of this (hint, hint!)

Alternatively, I think that gpc has an option to return a triangulated
version of the polygon. If you get hold of this you could just draw the
triangles. though this might be slow for complex polygons.

```--
Ross Ihaka                         Email:  ihaka@stat.auckland.ac.nz
Department of Statistics           Phone:  (64-9) 373-7599 x 85054
University of Auckland             Fax:    (64-9) 373-7018
Private Bag 92019, Auckland
New Zealand
______________________________________________
R-help@stat.math.ethz.ch mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help