Implement node positions for animations.

This commit is contained in:
2018-01-17 16:59:28 +01:00
parent 42c05c4fff
commit 501fea611f
4 changed files with 28 additions and 2 deletions

View File

@@ -21,6 +21,7 @@ static inline void computeColor(float intensity, float limit, float* destination
}
FlatLayerVisualisation::FlatLayerVisualisation(const LayerData &layer, Ordering ordering) :
LayerVisualisation(layer.numEntries()),
ordering(ordering),
faceCount(layer.numEntries() * 4),
vertexBuffer(new float[faceCount * 3]),
@@ -78,7 +79,7 @@ void FlatLayerVisualisation::render()
glDisableClientState(GL_COLOR_ARRAY);
}
void FlatLayerVisualisation::setVertexPositions(int vertexNo, float *destination)
void FlatLayerVisualisation::setVertexPositions(const int vertexNo, float *destination)
{
int j = 0;
float zOffset;
@@ -100,6 +101,12 @@ void FlatLayerVisualisation::setVertexPositions(int vertexNo, float *destination
break;
}
nodePositions_[3 * vertexNo] = 0;
nodePositions_[3 * vertexNo + 1] = yOffset;
nodePositions_[3 * vertexNo + 2] = zOffset;
// TODO: actually compute from this rather than copying to destination.
// Side note: should move this out of this function anyway.
// Create the 4 vertices for the pyramid
destination[j++] = -0.5f;
destination[j++] = 0 + yOffset;

View File

@@ -26,6 +26,6 @@ namespace fmri
std::unique_ptr<float[]> colorBuffer;
std::unique_ptr<int[]> indexBuffer;
void setVertexPositions(int vertexNo, float* destination);
void setVertexPositions(const int vertexNo, float *destination);
};
}

View File

@@ -0,0 +1,11 @@
#include "LayerVisualisation.hpp"
const std::vector<float> &fmri::LayerVisualisation::nodePositions() const
{
return nodePositions_;
}
fmri::LayerVisualisation::LayerVisualisation(size_t numNodes)
: nodePositions_(numNodes * 3)
{
}

View File

@@ -1,12 +1,20 @@
#pragma once
#include <vector>
namespace fmri
{
class LayerVisualisation
{
public:
LayerVisualisation() = default;
LayerVisualisation(size_t numNodes);
virtual ~LayerVisualisation() = default;
virtual void render() = 0;
virtual const std::vector<float>& nodePositions() const;
protected:
std::vector<float> nodePositions_;
};
}