Общий экземпляр задачи Haskell

У меня возникли проблемы с решением задачи, в которой я должен вычислить площадь. Я не знаю точно, как вычислить площадь и потом реализовать это в программе. Я посмотрел, и площадь, вероятно, рассчитывается по формуле: 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 (для моих примеров). Формула неверна или я неправильно ее реализовал?

Я ценю помощь и объяснение, спасибо заранее!

sin pi это 0google.com/search?q=sin+pi
Dogbert 19.11.2022 15:18

@Dogbert Они используют π как переменную, а не константу.

chepner 19.11.2022 15:32

@rogerobi Поскольку π является такой важной константой, она обычно не используется в качестве переменной. θ чаще используется как переменная, представляющая угол.

chepner 19.11.2022 15:33

@chepner Да, они используют π как переменную. Но они используют pi как константу. (Упс!)

Daniel Wagner 19.11.2022 15:33

Упс действительно с моей стороны!

chepner 19.11.2022 15:34
Как настроить Tailwind CSS с React.js и Next.js?
Как настроить Tailwind CSS с React.js и Next.js?
Tailwind CSS - единственный фреймворк, который, как я убедился, масштабируется в больших командах. Он легко настраивается, адаптируется к любому...
LeetCode запись решения 2536. Увеличение подматриц на единицу
LeetCode запись решения 2536. Увеличение подматриц на единицу
Увеличение подматриц на единицу - LeetCode
Переключение светлых/темных тем
Переключение светлых/темных тем
В Microsoft Training - Guided Project - Build a simple website with web pages, CSS files and JavaScript files, мы объясняем, как CSS можно...
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel с методами присоединения и отсоединения
Отношения "многие ко многим" в Laravel могут быть немного сложными, но с помощью Eloquent ORM и его моделей мы можем сделать это с легкостью. В этой...
В PHP
В PHP
В большой кодовой базе с множеством различных компонентов классы, функции и константы могут иметь одинаковые имена. Это может привести к путанице и...
Карта дорог Беладжар PHP Laravel
Карта дорог Беладжар PHP Laravel
Laravel - это PHP-фреймворк, разработанный для облегчения разработки веб-приложений. Laravel предоставляет различные функции, упрощающие разработку...
0
5
155
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ты пишешь

sin(pi)

Который имитирует вашу формулу. Но в вашем описании формулы вы говорите, что π — это угол пересечения, тогда как в коде pi — это 3.1415927 совершенно независимо от формы четырехугольника.

Кроме того, вы пишете

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

Что соответствует математическому выражению (√(x3 - x1))2(y3 - y1)2, но правильная формула для расстояния √((x3 - x1)2 + (y3 - y1 )2).

Хорошо! теперь понял, спасибо большое))

user20541711 19.11.2022 15:54

Другие вопросы по теме