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);
		}
	}
}