# [GRASS5] D.vect.graph problem

Glynn Clements glynn.clements at virgin.net
Tue Sep 21 14:03:23 EDT 2004

```Michael Barton wrote:

> Indeed, there are some cases for which all columns used in the pie chart
> would be zero. Do I need to filter these out? Perhaps the pie chart
> algorithm should automatically filter these out if it is problematic??

The algorithm needs to iterate for a fixed number of steps. Try the
attached patch.

--
Glynn Clements <glynn.clements at virgin.net>

-------------- next part --------------
--- pie.c~	Sun Sep  5 08:20:31 2004
+++ pie.c	Tue Sep 21 18:58:25 2004
@@ -11,7 +11,7 @@
int
pie ( double cx, double cy, int size, double *val, int ncols, COLOR *ocolor, COLOR *colors )
{
-    int i, j;
+    int i, j, n;
double a, end_ang, ang, tot_sum, sum, step, r;
double x, y;
struct line_pnts *Points;
@@ -36,20 +36,15 @@
if (val[0] != tot_sum) /* all in one slice, don't draw line to center */
Vect_append_point ( Points, cx, cy, 0);

-	a = ang;
-	while ( 1 ) {
+	n = (int)ceil((end_ang - ang) / step);
+	for (j = 0, a = ang; j <= n; j++, a += step)
+	{
if ( a > end_ang ) a = end_ang;
x = cx + r * cos ( a );
y = cy + r * sin ( a );
Vect_append_point ( Points, x, y, 0);
-
-	   if ( a == end_ang ) {
-	       ang = end_ang;
-	       break;
-	   } else {
-	       a += step;
-	   }
}
+	ang = end_ang;

if (val[0] != tot_sum)
Vect_append_point ( Points, cx, cy, 0);
```