How to reduce rotation-caused coordinate/displacement problem? I rotated an item 180 degrees with the pivot being at 0,0,0 (cursor). It was a large item (or more specifically a bunch of walls that were individual items). Then I rotated other items to 45 degrees, with the same exact problem. I noticed in almost all cases that the items rotated ended up having fractional location changes that were different from even the same items directly below them. Is that a problem? Is it normal? Is there any way to fix that?

Example:


Zoomed in to the max, we have this (item had its rotation applied in this case, because I see no reason not to):


The unrotated item looks like this, though (straight edges):


Is this an algorithm problem? I don't understand what is happening here X_X

File:


Instructions:


Right side is copied from the left side (left is original side) in wire-frame mode with box-select (CTRL+B). Note that the origin was set to cursor from the beginning.
moved 15 grid-spaced in the Y direction
then rotated on the pivot point (cursor) 180 degrees (although it shows 540 because I rotated it to test different angles).
Clicking on individual parts of the newly cloned &amp; rotated wall shows that some wall parts now have an offset.
The 'errror' is caused by the limited precision of floating point numbers. A fix would be quite difficult and in most use-cases completely unnecessary.

After the translation, the objects matrix seems to represent exactly what we expect.

&gt;&gt;&gt; bpy.context.object.matrix_world
Matrix(((1.0, 0.0, 0.0, 0.0),
        (0.0, 1.0, 0.0, 15.0),
        (0.0, 0.0, 1.0, 0.0),
        (0.0, 0.0, 0.0, 1.0)))


After the rotation however, the value of 2 * pi gets included in the matrix.

Matrix(((-1.0, -3.2584136988589307e-07, 0.0, -1.3113416343912832e-06),
        (3.2584136988589307e-07, -1.0, 0.0, -15.0),
        (0.0, 0.0, 1.0, 0.0),
        (0.0, 0.0, 0.0, 1.0)))


Since we have a limited amount of digits in floating points, it will only be an approximation. Applying this approximation to certain numbers will result in rounding errors. If you scroll until the view won't let you zoom in anymore you have reached the limit of Blender smallest units and are seeing these rounding errors.