diff --git a/src/camera.cpp b/src/camera.cpp index 1fad490..30f4544 100644 --- a/src/camera.cpp +++ b/src/camera.cpp @@ -19,7 +19,7 @@ static void handleMouseMove(int x, int y) static void move(unsigned char key) { - float speed = 0.2; + float speed = 0.5; float dir[3]; // Currently very buggy if (key == 'w' || key == 's') { diff --git a/src/main.cpp b/src/main.cpp index bcce69d..81b5453 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -86,16 +86,18 @@ static void drawOneParticle() static void renderFlatLayer(const LayerData& data) { + const auto [minElem,maxElem] = minmax_element(data.data(), data.data() + data.numEntries()); + const float intensityLimit = max(abs(*minElem), abs(*maxElem)); auto& shape = data.shape(); CHECK_EQ(shape[0], 1) << "Should have only one instance per layer." << endl; // Draw one triangle for every point in the layer // Color depends on current value. vector intensities(data.data(), data.data() + data.numEntries()); - transform(intensities.begin(), intensities.end(), intensities.begin(), [](auto x) { return clamp(x, -1.0f, 1.0f);}); + transform(intensities.begin(), intensities.end(), intensities.begin(), [=](auto x) { return clamp(x, -intensityLimit, intensityLimit);}); glPushMatrix(); for (auto i : intensities) { - auto intensity = min(-log(abs(i)) / 20.0f, 1.0f); + auto intensity = min(-log(abs(i) / intensityLimit) / 10.0f, 1.0f); if (i > 0) { glColor3f(intensity, intensity, 1); } else {