1.1 --- a/cloudy/mesh/Mesh.hpp Fri Nov 06 15:33:14 2009 +0100
1.2 +++ b/cloudy/mesh/Mesh.hpp Fri Nov 06 15:34:19 2009 +0100
1.3 @@ -2,6 +2,8 @@
1.4 #define MESH_HPP
1.5
1.6 #include <istream>
1.7 +
1.8 +#include <cloudy/misc/Progress.hpp>
1.9 #include <cloudy/Cloud.hpp>
1.10 #include <cloudy/mesh/Gradient.hpp>
1.11
1.12 @@ -88,6 +90,9 @@
1.13 {
1.14 std::vector<double> values(_points.size());
1.15 double minval(0), maxval(0);
1.16 +
1.17 + std::cerr << "Colorizing ... \n";
1.18 + cloudy::misc::Progress_display progress(_points.size(), std::cerr);
1.19
1.20 for (size_t i = 0; i < _points.size(); ++i)
1.21 {
1.22 @@ -116,6 +121,7 @@
1.23 {
1.24 double t = (values[i] - minval) / (maxval - minval);
1.25 _colors[i] = g(t);
1.26 + ++progress;
1.27 }
1.28 }
1.29
2.1 --- a/cloudy/view/Viewer.hpp Fri Nov 06 15:33:14 2009 +0100
2.2 +++ b/cloudy/view/Viewer.hpp Fri Nov 06 15:34:19 2009 +0100
2.3 @@ -155,6 +155,7 @@
2.4 double _radius;
2.5 bool _spheres;
2.6 int _sphere_tessel;
2.7 + double _low_threshold;
2.8
2.9 public:
2.10 Cloud_drawer(const std::string &name,
2.11 @@ -166,7 +167,8 @@
2.12 _percentage(1.0),
2.13 _radius(1.0),
2.14 _spheres(false),
2.15 - _sphere_tessel(8)
2.16 + _sphere_tessel(8),
2.17 + _low_threshold(0.0)
2.18 {}
2.19
2.20 virtual void draw(size_t stride, bool fast)
2.21 @@ -193,12 +195,12 @@
2.22 {
2.23 double rr = (*_field)[i]*_radius/1000.0f;
2.24
2.25 - if (rr <= 0.001)
2.26 + if ((*_field)[i] < _low_threshold)
2.27 continue;
2.28
2.29 size_t div = _sphere_tessel;
2.30 if (rr >= 0.1)
2.31 - div = 16;
2.32 + div *= 4;
2.33
2.34 glPushMatrix();
2.35 glTranslatef((*it)[0], (*it)[1], (*it)[2]);
2.36 @@ -216,7 +218,7 @@
2.37 for (Data_cloud::iterator it = _cloud->begin();
2.38 it != _cloud->end(); ++it, ++i)
2.39 {
2.40 - if (i % stride != 0)
2.41 + if (i % stride != 0 || (*_field)[i] < _low_threshold)
2.42 continue;
2.43
2.44 glPointSize((*_field)[i]*_radius);
2.45 @@ -235,6 +237,19 @@
2.46 editor->add_double_spin("Radius:", _radius, 0.0, 10.0);
2.47 editor->add_bool("Spheres?", _spheres);
2.48 editor->add_integer_spin("Tesselation", _sphere_tessel, 0, 16);
2.49 +
2.50 +
2.51 + if ((!_field) || (_field->size() == 0))
2.52 + return;
2.53 +
2.54 + double max = (*_field)[0], min = (*_field)[0];
2.55 + for (size_t i = 1; i < (*_field).size(); ++i)
2.56 + {
2.57 + max = std::max(max, (*_field)[i]);
2.58 + min = std::min(min, (*_field)[i]);
2.59 + }
2.60 + _low_threshold = min;
2.61 + editor->add_double_spin("Low threshold:", _low_threshold, min, max);
2.62 }
2.63
2.64 virtual size_t stride()
3.1 --- a/tools/offcolorize.cpp Fri Nov 06 15:33:14 2009 +0100
3.2 +++ b/tools/offcolorize.cpp Fri Nov 06 15:34:19 2009 +0100
3.3 @@ -20,19 +20,23 @@
3.4 size_t comp = 0,
3.5 double tmax = -1.0)
3.6 {
3.7 + std::cerr << "loading cloud\n";
3.8 cloudy::Data_cloud points;
3.9 cloudy::load_cloud(isCloud, points);
3.10
3.11 + std::cerr << "loading field\n";
3.12 cloudy::Data_cloud ifield;
3.13 cloudy::load_cloud(isField, ifield);
3.14 -
3.15 +
3.16 std::vector<double> field;
3.17 for (size_t i = 0; i < ifield.size(); ++i)
3.18 field.push_back(ifield[i][comp]);
3.19
3.20 + std::cerr << "loading OFF\n";
3.21 cloudy::Mesh mesh;
3.22 mesh.read_off(isOff);
3.23
3.24 + std::cerr << "loading gradient\n";
3.25 cloudy::Gradient ggr;
3.26 ggr.read_ggr(isGradient);
3.27
3.28 @@ -81,7 +85,8 @@
3.29
3.30 if (param.size() == 5)
3.31 {
3.32 - std::ofstream os(param[3].c_str());
3.33 + std::cerr << "outputing in " << param[4] << "\n";
3.34 + std::ofstream os(param[4].c_str());
3.35 Process_all(isCloud, isField, isGradient, isOff, os, r, comp, tmax);
3.36 }
3.37 else
4.1 --- a/tools/pcvcloud.cpp Fri Nov 06 15:33:14 2009 +0100
4.2 +++ b/tools/pcvcloud.cpp Fri Nov 06 15:34:19 2009 +0100
4.3 @@ -19,7 +19,7 @@
4.4 cloudy::load_cloud(is, *cloud);
4.5
4.6 Scalar_field_ptr weights;
4.7 - if (parameters.size() == 2)
4.8 + if (parameters.size() >= 2)
4.9 {
4.10 std::ifstream fs(parameters[1].c_str());
4.11 weights = Scalar_field_ptr(new std::vector<double>());
4.12 @@ -34,12 +34,14 @@
4.13 w.add_drawer(Drawer_ptr(new Cloud_drawer("cloud", cloud, weights)));
4.14
4.15 // temporary
4.16 -#if 0
4.17 - cloudy::view::Mesh_ptr mesh (new cloudy::Mesh());
4.18 - std::ifstream iso("sharp_sphere.off");
4.19 - mesh->read_off(iso);
4.20
4.21 - w.add_drawer(Drawer_ptr(new Mesh_drawer("fandisk.off", mesh)));
4.22 -#endif
4.23 - return true;
4.24 + if (parameters.size() == 3)
4.25 + {
4.26 + std::string meshname = parameters[2];
4.27 + cloudy::view::Mesh_ptr mesh (new cloudy::Mesh());
4.28 + std::ifstream iso(meshname.c_str());
4.29 + mesh->read_off(iso);
4.30 +
4.31 + w.add_drawer(Drawer_ptr(new Mesh_drawer(meshname, mesh)));
4.32 + }
4.33 }