glviewvol

annotate src/renderer.cc @ 5:5417c25cb238

moving to a simpler transfer function
author John Tsiombikas <nuclear@member.fsf.org>
date Mon, 29 Dec 2014 15:59:55 +0200
parents 04330eb80b36
children f22be47a3572
rev   line source
nuclear@4 1 #include <math.h>
nuclear@0 2 #include "renderer.h"
nuclear@0 3
nuclear@0 4 Renderer::Renderer()
nuclear@0 5 {
nuclear@0 6 vol = 0;
nuclear@0 7 view_width = 512;
nuclear@0 8 view_height = 512;
nuclear@4 9
nuclear@4 10 for(int i=0; i<3; i++) {
nuclear@4 11 xfer[i].set_point(0, 0);
nuclear@4 12 xfer[i].set_point(1, 1);
nuclear@4 13 }
nuclear@4 14
nuclear@5 15 xfer_low = 0.0;
nuclear@5 16 xfer_high = 1.0;
nuclear@5 17
nuclear@4 18 for(int i=0; i<MAX_CLIP_PLANES; i++) {
nuclear@4 19 disable_clipping_plane(i);
nuclear@4 20 }
nuclear@0 21 }
nuclear@0 22
nuclear@0 23 Renderer::~Renderer()
nuclear@0 24 {
nuclear@0 25 destroy();
nuclear@0 26 }
nuclear@0 27
nuclear@0 28 bool Renderer::init()
nuclear@0 29 {
nuclear@0 30 return true;
nuclear@0 31 }
nuclear@0 32
nuclear@0 33 void Renderer::destroy()
nuclear@0 34 {
nuclear@0 35 }
nuclear@0 36
nuclear@0 37 void Renderer::set_volume(Volume *vol)
nuclear@0 38 {
nuclear@0 39 this->vol = vol;
nuclear@0 40 }
nuclear@0 41
nuclear@0 42 Volume *Renderer::get_volume() const
nuclear@0 43 {
nuclear@0 44 return vol;
nuclear@0 45 }
nuclear@0 46
nuclear@4 47 Curve &Renderer::transfer_curve(int color)
nuclear@4 48 {
nuclear@4 49 return xfer[color];
nuclear@4 50 }
nuclear@4 51
nuclear@4 52 const Curve &Renderer::transfer_curve(int color) const
nuclear@4 53 {
nuclear@4 54 return xfer[color];
nuclear@4 55 }
nuclear@4 56
nuclear@5 57 void Renderer::set_simple_transfer(float low, float high)
nuclear@5 58 {
nuclear@5 59 xfer_low = std::min(low, high);
nuclear@5 60 xfer_high = std::max(low, high);
nuclear@5 61 }
nuclear@5 62
nuclear@5 63 void Renderer::get_simple_transfer(float *low, float *high) const
nuclear@5 64 {
nuclear@5 65 *low = xfer_low;
nuclear@5 66 *high = xfer_high;
nuclear@5 67 }
nuclear@5 68
nuclear@4 69 void Renderer::set_clipping_plane(int idx, float nx, float ny, float nz, float dist)
nuclear@4 70 {
nuclear@4 71 float len = sqrt(nx * nx + ny * ny + nz * nz);
nuclear@4 72 if(len != 0.0) {
nuclear@4 73 nx /= len;
nuclear@4 74 ny /= len;
nuclear@4 75 nz /= len;
nuclear@4 76 }
nuclear@4 77 clip_plane[idx][0] = nx;
nuclear@4 78 clip_plane[idx][1] = ny;
nuclear@4 79 clip_plane[idx][2] = nz;
nuclear@4 80 clip_plane[idx][3] = dist;
nuclear@4 81 }
nuclear@4 82
nuclear@4 83 void Renderer::disable_clipping_plane(int idx)
nuclear@4 84 {
nuclear@4 85 clip_plane[idx][0] = clip_plane[idx][2] = 0;
nuclear@4 86 clip_plane[idx][1] = 1;
nuclear@4 87 clip_plane[idx][3] = -1;
nuclear@4 88 }
nuclear@4 89
nuclear@0 90 void Renderer::reshape(int x, int y)
nuclear@0 91 {
nuclear@0 92 view_width = x;
nuclear@0 93 view_height = y;
nuclear@0 94 }
nuclear@0 95
nuclear@0 96 void Renderer::update(unsigned int msec)
nuclear@0 97 {
nuclear@0 98 }