1 /* Copyright (C) 1992-1998 The Geometry Center
2 * Copyright (C) 1998-2000 Stuart Levy, Tamara Munzner, Mark Phillips
3 *
4 * This file is part of Geomview.
5 *
6 * Geomview is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU Lesser General Public License as published
8 * by the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * Geomview is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with Geomview; see the file COPYING. If not, write
18 * to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139,
19 * USA, or visit http://www.gnu.org.
20 */
21
22 #if HAVE_CONFIG_H
23 # include "config.h"
24 #endif
25
26 #if 0
27 static char copyright[] = "Copyright (C) 1992-1998 The Geometry Center\n\
28 Copyright (C) 1998-2000 Stuart Levy, Tamara Munzner, Mark Phillips";
29 #endif
30
31
32 /* Authors: Charlie Gunn, Stuart Levy, Tamara Munzner, Mark Phillips */
33
34 #include "meshP.h"
35
36 Mesh *
MeshDice(m,proc)37 MeshDice(m, proc)
38 Mesh *m;
39 int (*proc) ();
40 {
41 int u, v;
42 int nu, nv;
43 float umin, umax, vmin, vmax;
44 float fu, fv;
45 Point3 *n;
46 HPoint3 *p;
47
48 if (m && proc)
49 {
50 umin = m->umin;
51 umax = m->umax;
52 vmin = m->vmin;
53 vmax = m->vmax;
54 nu = m->nu;
55 nv = m->nv;
56 p = m->p;
57 n = m->n;
58 for (v = 0; v < nv; v++)
59 {
60 for (u = 0; u < nu; u++)
61 {
62 fu = umin + ((umax - umin) * u) / (nu - 1);
63 fv = vmin + ((vmax - vmin) * v) / (nv - 1);
64 (*proc) (fu, fv, p, n);
65 if (n)
66 n++;
67 p++;
68 }
69 }
70 }
71 return m;
72 }
73