C4D has a complex coordinate system.

- world coordinates
- local coordinates
- object coordinates (we can see them in the outliner, for selected object)

For the problem I am asking, I don't wish to have a general theory answer, concerning the coordinates system, but to obtain precise answers.

**Here is my problem:**

For a polygon, we can get easily the array of points and then display the position of this points as follows:

```
tabPoint = polygon.GetAllPoints()
for point in tabPoint:
print point
```

But I would like to knowhow to display the position of points of this polygon in the World coordinates ?

Then if I change the World coordinates of some points, how to convert this coordinates for modify the array of points for this polygon ?

I indicate below in what order are these two questions:

- Step 1: access the array of points for a polygon and therefore access the coordinates (very easy)
- Step 2: Conversion of these coordinates to world coordinates (first question)
- Step 3: change the position of some points of this polygon in the world coordinates (very easy)
- Step 4: Conversion of these world coordinates to the format of the array of points for this polygon (second question)
- Step 5: Modification of this polygon with the new array of point (very easy)

You may want to know why I am asking these questions, here is the reason.

I have two polygons that represent cliffs, but they do not coincide very well.

I have to bring closer the dots of theses cliffs to obtain a perfect join.

I'm doing this work to make a canyon that I started in opensim (see link below)

my cliffs before the junction of points

My points alignment algorithm works well, but I'm stumbling on that damned C4D coordinate system !

C4D has a complex coordinate system.

- world coordinates
- local coordinates
- object coordinates (we can see them in the outliner, for selected object)

For the problem I am asking, I don't wish to have a general theory answer, concerning the coordinates system, but to obtain precise answers.

**Here is my problem:**

For a polygon, we can get easily the array of points and then display the position of this points as follows:

```
tabPoint = polygon.GetAllPoints()
for point in tabPoint:
print point
```

But I would like to knowhow to display the position of points of this polygon in the World coordinates ?

Then if I change the World coordinates of some points, how to convert this coordinates for modify the array of points for this polygon ?

I indicate below in what order are these two questions:

- Step 1: access the array of points for a polygon and therefore access the coordinates (very easy)
- Step 2: Conversion of these coordinates to world coordinates (first question)
- Step 3: change the position of some points of this polygon in the world coordinates (very easy)
- Step 4: Conversion of these world coordinates to the format of the array of points for this polygon (second question)
- Step 5: Modification of this polygon with the new array of point (very easy)

You may want to know why I am asking these questions, here is the reason.

I have two polygons that represent cliffs, but they do not coincide very well.

I have to bring closer the dots of theses cliffs to obtain a perfect join.

I'm doing this work to make a canyon that I started in opensim (see link below)

my cliffs before the junction of points

My points alignment algorithm works well, but I'm stumbling on that damned C4D coordinate system !

(It is really hard to answer that without general theory.)

]]>For an object named polygonName, we will have:

```
Matrix = polygonName.GetMg ()
inverseMatrix = ~ Matrix
```

**Matrix** converts local coordinates to global coordinates.

After finishing working in global coordinates, we return to local coordinates with **inverseMatrix**

We can thus modify the polygon with the new local coordinates.

These two matrices allow to work with the points, which is very convenient.

This subject is very well explained here:

Link