glviewvol

annotate src/volume.h @ 0:7bdf40403b9c

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