Я пытаюсь создать растровую графику. На данный момент я создал код для прямоугольника, однако код работает только для прямоугольника 3х3. Я не уверен, как улучшить код, чтобы он работал для 4x4, 5x5 и т. Д. Вот что у меня есть:
rectangleRaster :: Coord -> Coord -> Raster
rectangleRaster (x1, y1) (x2, y2) = [((x1, y1), 1.0), ((x1, y1 + y2), 1.0)] ++ [((x1, y2), 1.0), ((x1 + x2, y1), 1.0)] ++ [((x2 + x1, y2), 1.0), ((x2, y1), 1.0)] ++ [((x2, y2 + y1), 1.0), ((x2, y2), 1.0)]
Я вижу, что проблема в том, что каждый раз, когда я хочу большего прямоугольника, мне нужно добавить больше очков к rectangleRaster
. Итак, как я могу использовать рекурсию или что-то еще, чтобы при вводе некоторых точек он создавал полный прямоугольник без пробелов. Вот что такое принты для очков:
Баллы: (-1, -1) (1, 1)
![(-1, -1) (1, 1)](https://i.stack.imgur.com/ob8Iz.png)
Очки: (-2, 1) (2, -1)
![(-2, 1) (2, -1)](https://i.stack.imgur.com/EOGSW.png)