Notifications
Clear all
[Closed] silly function problem
Dec 11, 2008 7:25 pm
I made a function:
function quatrotate pt qt =
(
local qp = (quat pt.x pt.y pt.z 0)
local res = (qt * qp) * (inverse qt)
return [res.x, res.y, res.z]
)
I tested each step to make sure it works in the MAXScript listener:
pt = [1,0,0]
[1,0,0]
qt = cam.rotation
(quat 0 -0.226418 0 0.97403)
qp = (quat pt.x pt.y pt.z 0)
(quat 1 0 0 0)
res = (qt * qp) * (inverse qt)
(quat 0.89747 0 0.441075 0)
[res.x, res.y, res.z]
[0.89747,0,0.441075]
^^ That works correctly.
Now I try to call the function on the same inputs:
quatrotate [1,0,0] cam.rotation
-- Error occurred in quatrotate(); filename: D:\Professional & Academic\Professional\Shape from Video\PrintExtrinsic.ms; position: 94
-- Frame:
-- pt: [1,0,0]
-- qt: (quat 0 -0.226418 0 0.97403)
-- res: undefined
-- qp: (quat 1 0 0 0)
-- Unable to convert: [1,0,0] to type: Quaternion
How did I mess that up?
Also, second question:
Is there any way I can concatenate a Point3 + float to make a Quat, other than explicitly breaking it into components the way I did? And vice versa, to take the first 3 elements of a quat and store into Point3?
2 Replies
Dec 11, 2008 7:25 pm
Defined and tried your function… it worked fine…
Restart Max… perhaps the function, for an old try, is still defined and not redefining…