gpt4 book ai didi

haskell - 使用坐标计算随机三角形的边界框

转载 作者:行者123 更新时间:2023-12-04 05:05:20 24 4
gpt4 key购买 nike

我正在寻找一种合适的方法来计算三角形的矩形边界框,该三角形的三个角为点 - (x1,y1), (x2,y2), (x3,y3)。

这是我正在使用的数据类型(按照建议,我添加了更多构造函数):

data Shape =
Circle Point Double |
Rectangle Point Point |
Triangle Point Point Point

边界框函数的形式应该是“bounding::Shape -> Shape”。
我还尝试了矩形和圆形的边界框:
bounding :: Shape -> Shape
bounding (Rectangle (Point x y) (Point z z1)) = (Rectangle (Point x y) (Point z z1))
bounding (Circle (Point p w) r) = (Rectangle (Point (p-r) (w-r)) (Point (p+r) (w+r)))

如果应使用图形坐标系(其中 (x,y) 坐标应视为 (x,-y) 代替),这些是否正确?

有人可以帮我一把吗?
附言不需要图形库。

最佳答案

你尝试过什么?你有任何代码吗?

你需要:

 data Shape = Triangle Point Point Point | Rectangle Point Point

假设 x 向右增加,y 向上增加。左上角将是 (min{x1, x2, x3}, max{y1, y2, y3}) 并且您需要右下角。

编辑

x 应该向右增加,y 应该向下增加。我添加了三角形一,删除了不必要的括号并导出(Show)以能够打印Shape数据类型。为您提供完整代码:
data Point = Point Double Double deriving (Show)

data Shape =
Circle Point Double |
Rectangle Point Point |
Triangle Point Point Point deriving (Show)

bounding :: Shape -> Shape
bounding (Rectangle (Point x y) (Point z z1)) = Rectangle (Point x y) (Point z z1)
bounding (Circle (Point p w) r) = Rectangle (Point (p-r) (w-r)) (Point (p+r) (w+r))
bounding (Triangle (Point x1 y1) (Point x2 y2) (Point x3 y3)) = Rectangle
(Point (minimum [x1, x2, x3]) (minimum [y1, y2, y3]))
(Point (maximum [x1, x2, x3]) (maximum [y1, y2, y3]))

关于haskell - 使用坐标计算随机三角形的边界框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15578041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com