Как определить векторное вращение и отражение вообще, где функция будет работать в n размеры в Haskell?Как определить n-мерное вращение и отражение вектора в haskell?
В настоящее время у меня есть точечный продукт, нормализация и проецирование сделаны, но застряли на отражении и вращении.
data Vector s a = Vector {len::s,arr::a}
normalize :: Vector s a → Vector s a
normalize = toVector . uncurry (zipWith (/))
. (id&&&(repeat . sqrt . sum . map (^2)))
. fromVector
dot :: Vector s a → Vector s a → a
dot v = sum ∘ zipWith (*) (fromVector v) ∘ fromVector
project :: Vector s a → Vector s a → Vector s a
project v = toVector ∘ uncurry (zipWith (*))
∘ (fromVector&&&(repeat ∘ (v`dot`)))
Я SEARHING в течение нескольких дней в настоящее время, но это, кажется, что использование Haskell, чтобы понять математику иногда может вызвать проблемы, когда нет четкого кода (или нет кода вообще) и только учебники по п-мерных векторов Пройдите мимо моих знаний по математике.
они даже скомпилируются? Прямо сейчас я не вижу ни символа * sum-symbol *, ни «x» в области видимости, если вы смотрите на определение «точка» - также: это только о реализации или у вас есть проблемы с поиском математики указанных операций ?Если это так, вы можете добавить ожидаемые подписи? – Carsten
это должно быть: сумма. zipWith (*) (fromVector v) .∘ fromVector Мой редактор по умолчанию использует его для unicode извините – SANK
ну, вы должны убедить своего редактора иметь более приятное поведение для копирования и вставки - все еще: ищете математику или у вас есть трудности с ее переводом? – Carsten