Еще про геометрическую алгебру.

Sep 07, 2008 18:10

Точнее, про ее текущую реализацию (ConfGA.hs вот тут).


[2 of 2] Compiling ConfGA ( ConfGA.hs, interpreted )
Ok, modules loaded: Expr, ConfGA.
*ConfGA> let t = cgaTranslate 2 3 4
(0.03 secs, 2102272 bytes)
*ConfGA> p1
MVec (fromList [(fromList [Ex],1.0),(fromList [Ey],2.0),(fromList [Ez],3.0),(fromList [Unit],1.0),(fromList [Inf],7.0)])
(0.01 secs, 0 bytes)
*ConfGA> let rOz = cgaRotor (pi/2) Ez
(0.01 secs, 521660 bytes)
*ConfGA> p1 *| t
MVec (fromList [(fromList [Ex],3.0),(fromList [Ey],5.0),(fromList [Ez],7.0),(fromList [Unit],1.0),(fromList [Inf],41.5)])
(0.03 secs, 747452 bytes)
*ConfGA> p1 *| rOz
MVec (fromList [(fromList [Ex],2.0),(fromList [Ey],-1.0000000000000004),(fromList [Ez],3.0),(fromList [Unit],1.0),(fromList [Inf],7.0)])
(0.02 secs, 620552 bytes)
*ConfGA>
Оператор *| заключает левый аргумент в версорные скобки R*l*инверсия R.

Вроде, ротор вращает, а переместитель t - перемещает.

При этом в точках коэффициент при Unit всегда должен быть 1 (вообще - вес точки, но для обычных точек это 1), коэффициент при Inf - сумма квадратов координат, деленная на два.

Этот инвариант сохраняется.

С чем я себя и поздравляю. ;)

Там в самом конце находится вычисление строки для задачи наименьших квадратов, но сил на написание упрощения у меня уже нет.

Там надо сделать развертывание по сомножителям, а потом обратную группировку.

Потом, все потом, и так уже неплохо - ведь ядро-то работает!

геометрическая алгебра, компьютерное зрение, Хаскель

Previous post Next post
Up