Hi, thanks first off for this impressive library. It's been a joy playing around with it so far.
I found the gluLookAt example recently on observable and wanted to try it out on the actual camera used in a 3DPGA setup. I copied over the align function:
var align = (p,q)=>{
for (var i=0, M=1, P=!1, Q=!1; i<p.length; ++i) {
P = Q & (M >>> p[i]);
Q = Q & q[i];
M = (1 + Q.Normalized / P.Normalized).Normalized * M;
}
return M
}
But noticed I was getting NaNs in the output multivectors. After digging around a bit, I realised that !1 returns false, so P and Q aren't initialized to the pseudoscalar, as expected.
So returning false seems to be the intended behaviour.
For now, I found a workaround by just using Element.toEl(1).Dual directly, but I wanted to raise this issue in case anyone else bumps into it. I'm not sure if it's possible to remove the typeof a =='number' check without unintended consequences, but it would be nice to have a consistent dual operation for 1, especially if we shouldn't use the pseudoscalar directly if it's degenerate?
Hi, thanks first off for this impressive library. It's been a joy playing around with it so far.
I found the gluLookAt example recently on observable and wanted to try it out on the actual camera used in a 3DPGA setup. I copied over the align function:
But noticed I was getting NaNs in the output multivectors. After digging around a bit, I realised that
!1
returns false, so P and Q aren't initialized to the pseudoscalar, as expected.The line in question seems to be:
So returning false seems to be the intended behaviour.
For now, I found a workaround by just using
Element.toEl(1).Dual
directly, but I wanted to raise this issue in case anyone else bumps into it. I'm not sure if it's possible to remove thetypeof a =='number'
check without unintended consequences, but it would be nice to have a consistent dual operation for 1, especially if we shouldn't use the pseudoscalar directly if it's degenerate?Thanks in advance!