MPQC 2.3.1
isosurf.h
1//
2// isosurf.h
3//
4// Copyright (C) 1996 Limit Point Systems, Inc.
5//
6// Author: Curtis Janssen <cljanss@limitpt.com>
7// Maintainer: LPS
8//
9// This file is part of the SC Toolkit.
10//
11// The SC Toolkit is free software; you can redistribute it and/or modify
12// it under the terms of the GNU Library General Public License as published by
13// the Free Software Foundation; either version 2, or (at your option)
14// any later version.
15//
16// The SC Toolkit is distributed in the hope that it will be useful,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19// GNU Library General Public License for more details.
20//
21// You should have received a copy of the GNU Library General Public License
22// along with the SC Toolkit; see the file COPYING.LIB. If not, write to
23// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
24//
25// The U.S. Government is granted a limited license as per AL 91-7.
26//
27
28#ifndef _math_isosurf_isosurf_h
29#define _math_isosurf_isosurf_h
30
31#ifdef __GNUC__
32#pragma interface
33#endif
34
35#include <vector>
36
37#include <math/isosurf/surf.h>
38
39namespace sc {
40
41class IsosurfaceGen {
42 protected:
43 double _resolution;
44 public:
45 IsosurfaceGen();
46 virtual ~IsosurfaceGen();
47 virtual void isosurface(double value,
48 TriangulatedSurface& surf) = 0;
49 virtual void set_resolution(double);
50};
51
52class ImplicitSurfacePolygonizer: public IsosurfaceGen {
53 // These static data and members are used to interface to the
54 // implicit.c routine provided in Graphics Gems IV.
55 static ImplicitSurfacePolygonizer* current;
56 // The following should not really be used publically.
57 // they are public to permit access through internal
58 // C-language functions.
59 public:
61 static int add_triangle_to_current(int,int,int,VERTICES);
63 static double value_of_current(double x, double y, double z);
64 protected:
65 Ref<Volume> _volume;
66
67 std::vector<Ref<Vertex> > _tmp_vertices;
68
70 double _value;
71 public:
72 ImplicitSurfacePolygonizer(const Ref<Volume>&);
73 virtual ~ImplicitSurfacePolygonizer();
74 virtual void isosurface(double value,
76};
77
78}
79
80#endif
81
82// Local Variables:
83// mode: c++
84// c-file-style: "CLJ"
85// End:
static double value_of_current(double x, double y, double z)
For internal use only.
static int add_triangle_to_current(int, int, int, VERTICES)
For internal use only.
A template class that maintains references counts.
Definition ref.h:332
Definition surf.h:58

Generated at Mon Apr 28 2025 00:00:00 for MPQC 2.3.1 using the documentation package Doxygen 1.13.2.