RE: mathematical functions for scripting in LDCad
2018-03-26, 19:25 (This post was last modified: 2018-03-26, 19:42 by Joscha.)
2018-03-26, 19:25 (This post was last modified: 2018-03-26, 19:42 by Joscha.)
(2018-03-25, 17:31)Roland Melkert Wrote:(2018-03-25, 9:12)Joscha Wrote: Roland, I have to come back to your code above. I applied it successfully. Thank you! But I do not understand the getInverted command. How to invert a vector? The command should be only for matrices, shouldn't it?
getInverted only flips the signs of xyz, so e.g. (1,-2,3) returns (-1,2,-3).
I named it inverted as its goal is the same, to "undo" the vectors content (1+ -1 = 0) just as an inverted matrix can be used to get identity back when multiplying with the original.
I have a different approach for the rotation around any center which seems to be much shorter:
Code:
local angle=23 --rotation angle
local centerPart=ref.getPos() --center of part/group to be rotated
local centerRot=ldc.vector(2,3,4) --Vector of rotation center
local centerPartRel=centerPart-centerRot --relative position of part/group center from rotation Center
ref:mulRotateAB(angle,1,0,0) --rotates the part/group itself around the x-axis of his center
centerPartRel.transform(ref.getOri()) --makes a transformation to the relative position with the new orientation
ref:setPos(centerPartRel+centerRot) --sets the new position as vector-sum of rotation center and transformed relative position vector