glviewvol

annotate src/volume.h @ 1:cc9e0d8590e2

foo
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 27 Dec 2014 06:32:28 +0200
parents 7bdf40403b9c
children 32c4a7160350
rev   line source
nuclear@0 1 #ifndef VOLUME_H_
nuclear@0 2 #define VOLUME_H_
nuclear@0 3
nuclear@1 4 #include <vector>
nuclear@0 5 #include "image.h"
nuclear@0 6
nuclear@0 7 class Volume {
nuclear@0 8 public:
nuclear@0 9 virtual ~Volume();
nuclear@0 10
nuclear@1 11 // returns 0 if the volume is continuously defined
nuclear@0 12 virtual int num_samples(int dim) const;
nuclear@0 13
nuclear@1 14 // central differences offset will be delta / num_samples for discrete volumes
nuclear@1 15 // and delta for continuous volumes
nuclear@0 16 virtual void normalf(float *norm, float x, float y, float z, float delta = 1.0);
nuclear@0 17 virtual void normali(float *norm, int x, int y, int z);
nuclear@0 18
nuclear@0 19 virtual float valuef(float x, float y, float z) const = 0;
nuclear@0 20 virtual float valuei(int x, int y, int z) const = 0;
nuclear@0 21 };
nuclear@0 22
nuclear@0 23 class VoxelVolume : public Volume {
nuclear@0 24 protected:
nuclear@1 25 int size[3];
nuclear@0 26 std::vector<Image> slices;
nuclear@0 27
nuclear@0 28 public:
nuclear@0 29 VoxelVolume();
nuclear@0 30
nuclear@0 31 bool load(const char *fname);
nuclear@0 32
nuclear@0 33 int num_samples(int dim) const;
nuclear@0 34
nuclear@0 35 float valuef(float x, float y, float z) const;
nuclear@0 36 float valuei(int x, int y, int z) const;
nuclear@0 37 };
nuclear@0 38
nuclear@0 39 #endif // VOLUME_H_