Main Page
Related Pages
Classes
Files
File List
File Members
src
solidgraph.hpp
Go to the documentation of this file.
1
5
/* Copyright (c) 2005-2011 Taneli Kalvas. All rights reserved.
6
*
7
* You can redistribute this software and/or modify it under the terms
8
* of the GNU General Public License as published by the Free Software
9
* Foundation; either version 2 of the License, or (at your option)
10
* any later version.
11
*
12
* This library is distributed in the hope that it will be useful, but
13
* WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
* General Public License for more details.
16
*
17
* You should have received a copy of the GNU General Public License
18
* along with this library (file "COPYING" included in the package);
19
* if not, write to the Free Software Foundation, Inc., 51 Franklin
20
* Street, Fifth Floor, Boston, MA 02110-1301 USA
21
*
22
* If you have questions about your rights to use or distribute this
23
* software, please contact Berkeley Lab's Technology Transfer
24
* Department at TTD@lbl.gov. Other questions, comments and bug
25
* reports should be sent directly to the author via email at
26
* taneli.kalvas@jyu.fi.
27
*
28
* NOTICE. This software was developed under partial funding from the
29
* U.S. Department of Energy. As such, the U.S. Government has been
30
* granted for itself and others acting on its behalf a paid-up,
31
* nonexclusive, irrevocable, worldwide license in the Software to
32
* reproduce, prepare derivative works, and perform publicly and
33
* display publicly. Beginning five (5) years after the date
34
* permission to assert copyright is obtained from the U.S. Department
35
* of Energy, and subject to any subsequent five (5) year renewals,
36
* the U.S. Government is granted for itself and others acting on its
37
* behalf a paid-up, nonexclusive, irrevocable, worldwide license in
38
* the Software to reproduce, prepare derivative works, distribute
39
* copies to the public, perform publicly and display publicly, and to
40
* permit others to do so.
41
*/
42
43
#ifndef SOLIDPLOT_HPP
44
#define SOLIDPLOT_HPP 1
45
46
47
#include <vector>
48
#include "
geometry.hpp
"
49
#include "
graph3d.hpp
"
50
#include "
color.hpp
"
51
52
59
class
SolidGraph
:
public
Graph3D
{
60
61
struct
Point {
62
double
x[2];
63
64
Point(
double
_x,
double
_y ) { x[0] = _x; x[1] = _y; }
65
66
double
&operator[](
int
i ) {
return
( x[i] ); }
67
const
double
&operator[](
int
i )
const
{
return
( x[i] ); }
68
};
69
70
struct
SolidPoints {
71
int
N;
/* Solid number of electrode */
72
std::vector<Point> p;
/* Coordinate points of electrode boundary */
73
74
SolidPoints(
int
N ) : N(N) {}
75
};
76
77
Color
_color;
78
const
Geometry
&_g;
79
std::vector<SolidPoints *> _solid;
80
81
view_e
_oview;
82
double
_olevel;
83
84
bool
_cache;
85
86
bool
is_edge(
int
N,
const
int
i[3] )
const
;
87
int
get_mesh(
const
int
i[3],
int
offsetx,
int
offsety )
const
;
88
void
build_solid( SolidPoints *solid,
const
int
i[3],
char
*done,
int
last,
int
N );
89
void
build_data(
void
);
90
void
clear_data(
void
);
91
92
public
:
93
96
SolidGraph
(
const
Geometry
&g );
97
100
virtual
~SolidGraph
();
101
106
void
disable_cache
(
void
);
107
117
virtual
void
plot
( cairo_t *cairo,
const
Coordmapper
*cm,
const
double
range[4] );
118
123
virtual
void
plot_sample
( cairo_t *cairo,
double
x,
double
y,
double
width,
double
height );
124
130
virtual
void
get_bbox
(
double
bbox[4] );
131
};
132
133
134
#endif
Reference manual for Ion Beam Simulator 1.0.5b
Generated on by
Doxygen
1.8.2 on Sun Oct 7 2012 06:30:41.