Haskell Task Instance General



我在解决一个我应该计算面积的问题时遇到了麻烦。我不知道如何计算面积,然后在程序中实现它。我查了一下,面积可能是用公式计算的:A = 1/2·d1·d2·sin π其中d1和d2是对角线,相交于角π。但是我如何在程序中实现它呢?

我的代码是这样的:


class Poly p where
area_q :: p -> Float
data Quad = MQuad{
qP1 :: Point,
qP2 :: Point,
qP3 :: Point,
qP4 :: Point}
deriving Show
**Problem**
instance Poly Quad where
area_q (Quad (Point x1 y1) (Point x2 y2) (Point x3 y3) (Point x4 y4)) = ((sqrt(x3-x1)^2*(y3-y1)^2)*(sqrt(x4-x2)^2*(y4-y2)^2)*sin(pi))/2

嗯,这就是我如何实现它的,但是当我使用我的例子时,结果是0,尽管面积不等于0(对于我的例子)。是公式错了还是我执行错了?

感谢您的帮助和解释,提前感谢!

你写

sin(pi)

模仿您的公式。但是在你对公式的描述中,你说π是交角,而在代码中,pi3.1415927完全独立于四边形的形状。

另外,写

sqrt(x3-x1)^2*(y3-y1)^2

对应的数学表达式(√(x<子>3-x<子>1 ))<一口>2> y<子>3-y<子>1 )<一口>2> x<子>3-x<子>1 )<一口>2><子>3-y<子>1 )<一口>2> /div>

最新更新