void Renderer::renderLevelSetFunctionValuesToCanvas(const LevelSet& level_set) { int grid_size_x = level_set.sizeX(); int grid_size_y = level_set.sizeY(); MyFloat scale_x = _canvas.width() / (_x_max - _x_min); MyFloat scale_y = _canvas.height() / (_y_max - _y_min); MyFloat translate_x = 0.5 * (_x_min * _canvas.width()); MyFloat translate_y = 0.5 * (_y_min * _canvas.height()); // Cell size in pixels MyFloat cell_size_x = level_set.deltaX() * scale_x; MyFloat cell_size_y = level_set.deltaY() * scale_y; _canvas.setLineColor(Color(1,1,1)); for (int j = 0; j < grid_size_y; ++j) { for (int i = 0; i < grid_size_x; ++i) { MyFloat value = level_set.value(i, j); Color fill_color = Color(value, value, value); _canvas.setFillColor(fill_color); _canvas.fillRectangle( - translate_x + i * cell_size_x, - translate_y + j * cell_size_y, - translate_x + (i + 1) * cell_size_x, - translate_y + (j + 1) * cell_size_y); } } }