*On 24/11/2014 at 17:09, xxxxxxxx wrote:*

I am confused as to how some of this works. I've read the documentation, tried to implement it, and I just can't seem to get it to work. I read up on how to do the math on matrices, however, I am a bit lost.

I've looked into numPy but I currently don't have it.. and I would rather not use something that would have to be installed on every machine just to use this particular code.

Here's the rundown.

In the documentation it says:

What if you have a position in global coordinates and want to move an object to that position? Then you need a transformation back from global coordinates to the object's local position coordinates. Mathematically this is done by multiplication by the global matrix' inverse. If Mg is a matrix in global space and Mag is object a's global matrix, then Mag-1*Mg equals the first matrix' in a's local coordinates.

It also says that you don't need to do the math because there are the functions:

SetMl (ml) and SetMg (mg)

Those only work for the baseObject.. and not a point.

I've tried to plug in the Mag-1*Mg into some test code, just so I can see if the numbers come out correctly. However, I don't understand how to use that correctly. From my understanding of the documentation and the provided code, Mag is globalPoint and Mg would be worldSpaceCoords.

```
doc = c4d.documents.GetActiveDocument ()
op = doc.GetActiveObject ()
worldSpaceCoords = op.GetMg()
allPoints = op.GetAllPoints()
for i,a in enumerate (allPoints) :
localPoint = op.GetPoint (i)
print 'local', localPoint
globalPoint = localPoint * worldSpaceCoords
print 'global', globalPoint
backLocalPoint = globalPoint-1*worldSpaceCoords
print 'back to local', backLocalPoint
print '--'
```

Currently I'm running into the following error:

TypeError: unsupported operand type(s) for -: 'c4d.Vector' and 'c4d.Matrix'

I'm lost in the math as to how to get back to the local coordinates.