我無法解決我應該計算面積的問題。我不太清楚如何計算面積然后在程式中實作。我查了一下,面積可能是用公式計算的:A = ?·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(對于我的示例)。是公式錯了還是我執行錯了?
感謝您的幫助和解釋,在此先感謝您!
uj5u.com熱心網友回復:
你寫
sin(pi)
模仿你的公式。但是在您對公式的描述中,您說 π 是交角,而在代碼中,pi它3.1415927完全獨立于四邊形的形狀。
另外,你寫
sqrt(x3-x1)^2*(y3-y1)^2
它對應于數學運算式 (√( x 3 - x 1 )) 2 ( y 3 - y 1 ) 2,但距離的正確公式是 √(( x 3 - x 1 ) 2 ( y 3 - y 1 ) 2 ).
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/537532.html
標籤:哈斯克尔
上一篇:Haskell實體函式
下一篇:Haskell翻譯任務
