Reputation: 1471
Is there a easy way to reflect or project 3D Cordinates in Python. For an example: My sphere or cube is divided into 8 pieces. I know the center of it, but i only have the coordinates of 1 pieces, for an example only the coordinatesI ub positive x,y,z direction. a= ( [(x,y,z),(x,y,z)....]). I want the rest of the cube/sphere coordinates.
As an example i have those points marked as blue boxes:
And i want all of the points like here
An example list of my coordinates are:
a=[(0.0, 0.0, 4.0), (0.0, 0.0, 5.0), (0.0, 1.0, 3.0), (0.0, 1.0, 4.0), (0.0, 1.0, 5.0), (0.0, 2.0, 3.0), (0.0, 2.0, 4.0), (0.0, 2.0, 5.0), (0.0, 3.0, 1.0), (0.0, 3.0, 2.0), (0.0, 3.0, 3.0), (0.0, 3.0, 4.0), (0.0, 3.0, 5.0), (0.0, 4.0, 0.0), (0.0, 4.0, 1.0), (0.0, 4.0, 2.0), (0.0, 4.0, 3.0), (0.0, 4.0, 4.0), (0.0, 5.0, 0.0), (0.0, 5.0, 1.0), (0.0, 5.0, 2.0), (0.0, 5.0, 3.0), (1.0, 0.0, 3.0), (1.0, 0.0, 4.0), (1.0, 0.0, 5.0), (1.0, 1.0, 3.0), (1.0, 1.0, 4.0), (1.0, 1.0, 5.0), (1.0, 2.0, 3.0), (1.0, 2.0, 4.0), (1.0, 2.0, 5.0), (1.0, 3.0, 0.0), (1.0, 3.0, 1.0), (1.0, 3.0, 2.0), (1.0, 3.0, 3.0), (1.0, 3.0, 4.0), (1.0, 3.0, 5.0), (1.0, 4.0, 0.0), (1.0, 4.0, 1.0), (1.0, 4.0, 2.0), (1.0, 4.0, 3.0), (1.0, 4.0, 4.0), (1.0, 5.0, 0.0), (1.0, 5.0, 1.0), (1.0, 5.0, 2.0), (1.0, 5.0, 3.0), (2.0, 0.0, 3.0), (2.0, 0.0, 4.0), (2.0, 0.0, 5.0), (2.0, 1.0, 3.0), (2.0, 1.0, 4.0), (2.0, 1.0, 5.0), (2.0, 2.0, 2.0), (2.0, 2.0, 3.0), (2.0, 2.0, 4.0), (2.0, 2.0, 5.0), (2.0, 3.0, 0.0), (2.0, 3.0, 1.0), (2.0, 3.0, 2.0), (2.0, 3.0, 3.0), (2.0, 3.0, 4.0), (2.0, 4.0, 0.0), (2.0, 4.0, 1.0), (2.0, 4.0, 2.0), (2.0, 4.0, 3.0), (2.0, 4.0, 4.0), (2.0, 5.0, 0.0), (2.0, 5.0, 1.0), (2.0, 5.0, 2.0), (3.0, 0.0, 1.0), (3.0, 0.0, 2.0), (3.0, 0.0, 3.0), (3.0, 0.0, 4.0), (3.0, 0.0, 5.0), (3.0, 1.0, 0.0), (3.0, 1.0, 1.0), (3.0, 1.0, 2.0), (3.0, 1.0, 3.0), (3.0, 1.0, 4.0), (3.0, 1.0, 5.0), (3.0, 2.0, 0.0), (3.0, 2.0, 1.0), (3.0, 2.0, 2.0), (3.0, 2.0, 3.0), (3.0, 2.0, 4.0), (3.0, 3.0, 0.0), (3.0, 3.0, 1.0), (3.0, 3.0, 2.0), (3.0, 3.0, 3.0), (3.0, 3.0, 4.0), (3.0, 4.0, 0.0), (3.0, 4.0, 1.0), (3.0, 4.0, 2.0), (3.0, 4.0, 3.0), (3.0, 5.0, 0.0), (3.0, 5.0, 1.0), (4.0, 0.0, 0.0), (4.0, 0.0, 1.0), (4.0, 0.0, 2.0), (4.0, 0.0, 3.0), (4.0, 0.0, 4.0), (4.0, 1.0, 0.0), (4.0, 1.0, 1.0), (4.0, 1.0, 2.0), (4.0, 1.0, 3.0), (4.0, 1.0, 4.0), (4.0, 2.0, 0.0), (4.0, 2.0, 1.0), (4.0, 2.0, 2.0), (4.0, 2.0, 3.0), (4.0, 2.0, 4.0), (4.0, 3.0, 0.0), (4.0, 3.0, 1.0), (4.0, 3.0, 2.0), (4.0, 3.0, 3.0), (4.0, 4.0, 0.0), (4.0, 4.0, 1.0), (4.0, 4.0, 2.0), (5.0, 0.0, 0.0), (5.0, 0.0, 1.0), (5.0, 0.0, 2.0), (5.0, 0.0, 3.0), (5.0, 1.0, 0.0), (5.0, 1.0, 1.0), (5.0, 1.0, 2.0), (5.0, 1.0, 3.0), (5.0, 2.0, 0.0), (5.0, 2.0, 1.0), (5.0, 2.0, 2.0), (5.0, 3.0, 0.0), (5.0, 3.0, 1.0)]
The Center is c = (0,0,0).
With this i only get the 2nd of 8 pieces:
mirrored_points = []
for point in xyz_pattern:
mirrored_point = []
for i in range(3):
mirrored_point.append(2 * 0 - point[i])
mirrored_points.append(tuple(mirrored_point))
resulting coordinates, original and mirrowed:
[(0.0, 0.0, 4.0), (0.0, 0.0, 5.0), (0.0, 1.0, 3.0), (0.0, 1.0, 4.0), (0.0, 1.0, 5.0), (0.0, 2.0, 3.0), (0.0, 2.0, 4.0), (0.0, 2.0, 5.0), (0.0, 3.0, 1.0), (0.0, 3.0, 2.0), (0.0, 3.0, 3.0), (0.0, 3.0, 4.0), (0.0, 3.0, 5.0), (0.0, 4.0, 0.0), (0.0, 4.0, 1.0), (0.0, 4.0, 2.0), (0.0, 4.0, 3.0), (0.0, 4.0, 4.0), (0.0, 5.0, 0.0), (0.0, 5.0, 1.0), (0.0, 5.0, 2.0), (0.0, 5.0, 3.0), (1.0, 0.0, 3.0), (1.0, 0.0, 4.0), (1.0, 0.0, 5.0), (1.0, 1.0, 3.0), (1.0, 1.0, 4.0), (1.0, 1.0, 5.0), (1.0, 2.0, 3.0), (1.0, 2.0, 4.0), (1.0, 2.0, 5.0), (1.0, 3.0, 0.0), (1.0, 3.0, 1.0), (1.0, 3.0, 2.0), (1.0, 3.0, 3.0), (1.0, 3.0, 4.0), (1.0, 3.0, 5.0), (1.0, 4.0, 0.0), (1.0, 4.0, 1.0), (1.0, 4.0, 2.0), (1.0, 4.0, 3.0), (1.0, 4.0, 4.0), (1.0, 5.0, 0.0), (1.0, 5.0, 1.0), (1.0, 5.0, 2.0), (1.0, 5.0, 3.0), (2.0, 0.0, 3.0), (2.0, 0.0, 4.0), (2.0, 0.0, 5.0), (2.0, 1.0, 3.0), (2.0, 1.0, 4.0), (2.0, 1.0, 5.0), (2.0, 2.0, 2.0), (2.0, 2.0, 3.0), (2.0, 2.0, 4.0), (2.0, 2.0, 5.0), (2.0, 3.0, 0.0), (2.0, 3.0, 1.0), (2.0, 3.0, 2.0), (2.0, 3.0, 3.0), (2.0, 3.0, 4.0), (2.0, 4.0, 0.0), (2.0, 4.0, 1.0), (2.0, 4.0, 2.0), (2.0, 4.0, 3.0), (2.0, 4.0, 4.0), (2.0, 5.0, 0.0), (2.0, 5.0, 1.0), (2.0, 5.0, 2.0), (3.0, 0.0, 1.0), (3.0, 0.0, 2.0), (3.0, 0.0, 3.0), (3.0, 0.0, 4.0), (3.0, 0.0, 5.0), (3.0, 1.0, 0.0), (3.0, 1.0, 1.0), (3.0, 1.0, 2.0), (3.0, 1.0, 3.0), (3.0, 1.0, 4.0), (3.0, 1.0, 5.0), (3.0, 2.0, 0.0), (3.0, 2.0, 1.0), (3.0, 2.0, 2.0), (3.0, 2.0, 3.0), (3.0, 2.0, 4.0), (3.0, 3.0, 0.0), (3.0, 3.0, 1.0), (3.0, 3.0, 2.0), (3.0, 3.0, 3.0), (3.0, 3.0, 4.0), (3.0, 4.0, 0.0), (3.0, 4.0, 1.0), (3.0, 4.0, 2.0), (3.0, 4.0, 3.0), (3.0, 5.0, 0.0), (3.0, 5.0, 1.0), (4.0, 0.0, 0.0), (4.0, 0.0, 1.0), (4.0, 0.0, 2.0), (4.0, 0.0, 3.0), (4.0, 0.0, 4.0), (4.0, 1.0, 0.0), (4.0, 1.0, 1.0), (4.0, 1.0, 2.0), (4.0, 1.0, 3.0), (4.0, 1.0, 4.0), (4.0, 2.0, 0.0), (4.0, 2.0, 1.0), (4.0, 2.0, 2.0), (4.0, 2.0, 3.0), (4.0, 2.0, 4.0), (4.0, 3.0, 0.0), (4.0, 3.0, 1.0), (4.0, 3.0, 2.0), (4.0, 3.0, 3.0), (4.0, 4.0, 0.0), (4.0, 4.0, 1.0), (4.0, 4.0, 2.0), (5.0, 0.0, 0.0), (5.0, 0.0, 1.0), (5.0, 0.0, 2.0), (5.0, 0.0, 3.0), (5.0, 1.0, 0.0), (5.0, 1.0, 1.0), (5.0, 1.0, 2.0), (5.0, 1.0, 3.0), (5.0, 2.0, 0.0), (5.0, 2.0, 1.0), (5.0, 2.0, 2.0), (5.0, 3.0, 0.0), (5.0, 3.0, 1.0), (0.0, 0.0, -4.0), (0.0, 0.0, -5.0), (0.0, -1.0, -3.0), (0.0, -1.0, -4.0), (0.0, -1.0, -5.0), (0.0, -2.0, -3.0), (0.0, -2.0, -4.0), (0.0, -2.0, -5.0), (0.0, -3.0, -1.0), (0.0, -3.0, -2.0), (0.0, -3.0, -3.0), (0.0, -3.0, -4.0), (0.0, -3.0, -5.0), (0.0, -4.0, 0.0), (0.0, -4.0, -1.0), (0.0, -4.0, -2.0), (0.0, -4.0, -3.0), (0.0, -4.0, -4.0), (0.0, -5.0, 0.0), (0.0, -5.0, -1.0), (0.0, -5.0, -2.0), (0.0, -5.0, -3.0), (-1.0, 0.0, -3.0), (-1.0, 0.0, -4.0), (-1.0, 0.0, -5.0), (-1.0, -1.0, -3.0), (-1.0, -1.0, -4.0), (-1.0, -1.0, -5.0), (-1.0, -2.0, -3.0), (-1.0, -2.0, -4.0), (-1.0, -2.0, -5.0), (-1.0, -3.0, 0.0), (-1.0, -3.0, -1.0), (-1.0, -3.0, -2.0), (-1.0, -3.0, -3.0), (-1.0, -3.0, -4.0), (-1.0, -3.0, -5.0), (-1.0, -4.0, 0.0), (-1.0, -4.0, -1.0), (-1.0, -4.0, -2.0), (-1.0, -4.0, -3.0), (-1.0, -4.0, -4.0), (-1.0, -5.0, 0.0), (-1.0, -5.0, -1.0), (-1.0, -5.0, -2.0), (-1.0, -5.0, -3.0), (-2.0, 0.0, -3.0), (-2.0, 0.0, -4.0), (-2.0, 0.0, -5.0), (-2.0, -1.0, -3.0), (-2.0, -1.0, -4.0), (-2.0, -1.0, -5.0), (-2.0, -2.0, -2.0), (-2.0, -2.0, -3.0), (-2.0, -2.0, -4.0), (-2.0, -2.0, -5.0), (-2.0, -3.0, 0.0), (-2.0, -3.0, -1.0), (-2.0, -3.0, -2.0), (-2.0, -3.0, -3.0), (-2.0, -3.0, -4.0), (-2.0, -4.0, 0.0), (-2.0, -4.0, -1.0), (-2.0, -4.0, -2.0), (-2.0, -4.0, -3.0), (-2.0, -4.0, -4.0), (-2.0, -5.0, 0.0), (-2.0, -5.0, -1.0), (-2.0, -5.0, -2.0), (-3.0, 0.0, -1.0), (-3.0, 0.0, -2.0), (-3.0, 0.0, -3.0), (-3.0, 0.0, -4.0), (-3.0, 0.0, -5.0), (-3.0, -1.0, 0.0), (-3.0, -1.0, -1.0), (-3.0, -1.0, -2.0), (-3.0, -1.0, -3.0), (-3.0, -1.0, -4.0), (-3.0, -1.0, -5.0), (-3.0, -2.0, 0.0), (-3.0, -2.0, -1.0), (-3.0, -2.0, -2.0), (-3.0, -2.0, -3.0), (-3.0, -2.0, -4.0), (-3.0, -3.0, 0.0), (-3.0, -3.0, -1.0), (-3.0, -3.0, -2.0), (-3.0, -3.0, -3.0), (-3.0, -3.0, -4.0), (-3.0, -4.0, 0.0), (-3.0, -4.0, -1.0), (-3.0, -4.0, -2.0), (-3.0, -4.0, -3.0), (-3.0, -5.0, 0.0), (-3.0, -5.0, -1.0), (-4.0, 0.0, 0.0), (-4.0, 0.0, -1.0), (-4.0, 0.0, -2.0), (-4.0, 0.0, -3.0), (-4.0, 0.0, -4.0), (-4.0, -1.0, 0.0), (-4.0, -1.0, -1.0), (-4.0, -1.0, -2.0), (-4.0, -1.0, -3.0), (-4.0, -1.0, -4.0), (-4.0, -2.0, 0.0), (-4.0, -2.0, -1.0), (-4.0, -2.0, -2.0), (-4.0, -2.0, -3.0), (-4.0, -2.0, -4.0), (-4.0, -3.0, 0.0), (-4.0, -3.0, -1.0), (-4.0, -3.0, -2.0), (-4.0, -3.0, -3.0), (-4.0, -4.0, 0.0), (-4.0, -4.0, -1.0), (-4.0, -4.0, -2.0), (-5.0, 0.0, 0.0), (-5.0, 0.0, -1.0), (-5.0, 0.0, -2.0), (-5.0, 0.0, -3.0), (-5.0, -1.0, 0.0), (-5.0, -1.0, -1.0), (-5.0, -1.0, -2.0), (-5.0, -1.0, -3.0), (-5.0, -2.0, 0.0), (-5.0, -2.0, -1.0), (-5.0, -2.0, -2.0), (-5.0, -3.0, 0.0), (-5.0, -3.0, -1.0)]
Example image:
But there are missing 6 of 8 pieces of coordinates, so i think we have to mirrow it to the other axes
Best regards.
EDIT
I used the function of Felix with those points:
list=[(0, 0, 4), (0, 0, 5), (0, 1, 3), (0, 1, 4), (0, 1, 5), (0, 2, 3), (0, 2, 4), (0, 2, 5), (0, 3, 1), (0, 3, 2), (0, 3, 3), (0, 3, 4), (0, 3, 5), (0, 4, 0), (0, 4, 1), (0, 4, 2), (0, 4, 3), (0, 4, 4), (0, 5, 0), (0, 5, 1), (0, 5, 2), (0, 5, 3), (1, 0, 3), (1, 0, 4), (1, 0, 5), (1, 1, 3), (1, 1, 4), (1, 1, 5), (1, 2, 3), (1, 2, 4), (1, 2, 5), (1, 3, 0), (1, 3, 1), (1, 3, 2), (1, 3, 3), (1, 3, 4), (1, 3, 5), (1, 4, 0), (1, 4, 1), (1, 4, 2), (1, 4, 3), (1, 4, 4), (1, 5, 0), (1, 5, 1), (1, 5, 2), (1, 5, 3), (2, 0, 3), (2, 0, 4), (2, 0, 5), (2, 1, 3), (2, 1, 4), (2, 1, 5), (2, 2, 2), (2, 2, 3), (2, 2, 4), (2, 2, 5), (2, 3, 0), (2, 3, 1), (2, 3, 2), (2, 3, 3), (2, 3, 4), (2, 4, 0), (2, 4, 1), (2, 4, 2), (2, 4, 3), (2, 4, 4), (2, 5, 0), (2, 5, 1), (2, 5, 2), (3, 0, 1), (3, 0, 2), (3, 0, 3), (3, 0, 4), (3, 0, 5), (3, 1, 0), (3, 1, 1), (3, 1, 2), (3, 1, 3), (3, 1, 4), (3, 1, 5), (3, 2, 0), (3, 2, 1), (3, 2, 2), (3, 2, 3), (3, 2, 4), (3, 3, 0), (3, 3, 1), (3, 3, 2), (3, 3, 3), (3, 3, 4), (3, 4, 0), (3, 4, 1), (3, 4, 2), (3, 4, 3), (3, 5, 0), (3, 5, 1), (4, 0, 0), (4, 0, 1), (4, 0, 2), (4, 0, 3), (4, 0, 4), (4, 1, 0), (4, 1, 1), (4, 1, 2), (4, 1, 3), (4, 1, 4), (4, 2, 0), (4, 2, 1), (4, 2, 2), (4, 2, 3), (4, 2, 4), (4, 3, 0), (4, 3, 1), (4, 3, 2), (4, 3, 3), (4, 4, 0), (4, 4, 1), (4, 4, 2), (5, 0, 0), (5, 0, 1), (5, 0, 2), (5, 0, 3), (5, 1, 0), (5, 1, 1), (5, 1, 2), (5, 1, 3), (5, 2, 0), (5, 2, 1), (5, 2, 2), (5, 3, 0), (5, 3, 1)]
I get these points:
[(0, 0, 4), (0, 0, -4), (0, 0, 4), (0, 0, -4), (0, 0, 4), (0, 0, -4), (0, 0, 4), (0, 0, -4), (0, 0, 5), (0, 0, -5), (0, 0, 5), (0, 0, -5), (0, 0, 5), (0, 0, -5), (0, 0, 5), (0, 0, -5), (0, 1, 3), (0, 1, -3), (0, -1, 3), (0, -1, -3), (0, 1, 3), (0, 1, -3), (0, -1, 3), (0, -1, -3), (0, 1, 4), (0, 1, -4), (0, -1, 4), (0, -1, -4), (0, 1, 4), (0, 1, -4), (0, -1, 4), (0, -1, -4), (0, 1, 5), (0, 1, -5), (0, -1, 5), (0, -1, -5), (0, 1, 5), (0, 1, -5), (0, -1, 5), (0, -1, -5), (0, 2, 3), (0, 2, -3), (0, -2, 3), (0, -2, -3), (0, 2, 3), (0, 2, -3), (0, -2, 3), (0, -2, -3), (0, 2, 4), (0, 2, -4), (0, -2, 4), (0, -2, -4), (0, 2, 4), (0, 2, -4), (0, -2, 4), (0, -2, -4), (0, 2, 5), (0, 2, -5), (0, -2, 5), (0, -2, -5), (0, 2, 5), (0, 2, -5), (0, -2, 5), (0, -2, -5), (0, 3, 1), (0, 3, -1), (0, -3, 1), (0, -3, -1), (0, 3, 1), (0, 3, -1), (0, -3, 1), (0, -3, -1), (0, 3, 2), (0, 3, -2), (0, -3, 2), (0, -3, -2), (0, 3, 2), (0, 3, -2), (0, -3, 2), (0, -3, -2), (0, 3, 3), (0, 3, -3), (0, -3, 3), (0, -3, -3), (0, 3, 3), (0, 3, -3), (0, -3, 3), (0, -3, -3), (0, 3, 4), (0, 3, -4), (0, -3, 4), (0, -3, -4), (0, 3, 4), (0, 3, -4), (0, -3, 4), (0, -3, -4), (0, 3, 5), (0, 3, -5), (0, -3, 5), (0, -3, -5), (0, 3, 5), (0, 3, -5), (0, -3, 5), (0, -3, -5), (0, 4, 0), (0, 4, 0), (0, -4, 0), (0, -4, 0), (0, 4, 0), (0, 4, 0), (0, -4, 0), (0, -4, 0), (0, 4, 1), (0, 4, -1), (0, -4, 1), (0, -4, -1), (0, 4, 1), (0, 4, -1), (0, -4, 1), (0, -4, -1), (0, 4, 2), (0, 4, -2), (0, -4, 2), (0, -4, -2), (0, 4, 2), (0, 4, -2), (0, -4, 2), (0, -4, -2), (0, 4, 3), (0, 4, -3), (0, -4, 3), (0, -4, -3), (0, 4, 3), (0, 4, -3), (0, -4, 3), (0, -4, -3), (0, 4, 4), (0, 4, -4), (0, -4, 4), (0, -4, -4), (0, 4, 4), (0, 4, -4), (0, -4, 4), (0, -4, -4), (0, 5, 0), (0, 5, 0), (0, -5, 0), (0, -5, 0), (0, 5, 0), (0, 5, 0), (0, -5, 0), (0, -5, 0), (0, 5, 1), (0, 5, -1), (0, -5, 1), (0, -5, -1), (0, 5, 1), (0, 5, -1), (0, -5, 1), (0, -5, -1), (0, 5, 2), (0, 5, -2), (0, -5, 2), (0, -5, -2), (0, 5, 2), (0, 5, -2), (0, -5, 2), (0, -5, -2), (0, 5, 3), (0, 5, -3), (0, -5, 3), (0, -5, -3), (0, 5, 3), (0, 5, -3), (0, -5, 3), (0, -5, -3), (1, 0, 3), (1, 0, -3), (1, 0, 3), (1, 0, -3), (-1, 0, 3), (-1, 0, -3), (-1, 0, 3), (-1, 0, -3), (1, 0, 4), (1, 0, -4), (1, 0, 4), (1, 0, -4), (-1, 0, 4), (-1, 0, -4), (-1, 0, 4), (-1, 0, -4), (1, 0, 5), (1, 0, -5), (1, 0, 5), (1, 0, -5), (-1, 0, 5), (-1, 0, -5), (-1, 0, 5), (-1, 0, -5), (1, 1, 3), (1, 1, -3), (1, -1, 3), (1, -1, -3), (-1, 1, 3), (-1, 1, -3), (-1, -1, 3), (-1, -1, -3), (1, 1, 4), (1, 1, -4), (1, -1, 4), (1, -1, -4), (-1, 1, 4), (-1, 1, -4), (-1, -1, 4), (-1, -1, -4), (1, 1, 5), (1, 1, -5), (1, -1, 5), (1, -1, -5), (-1, 1, 5), (-1, 1, -5), (-1, -1, 5), (-1, -1, -5), (1, 2, 3), (1, 2, -3), (1, -2, 3), (1, -2, -3), (-1, 2, 3), (-1, 2, -3), (-1, -2, 3), (-1, -2, -3), (1, 2, 4), (1, 2, -4), (1, -2, 4), (1, -2, -4), (-1, 2, 4), (-1, 2, -4), (-1, -2, 4), (-1, -2, -4), (1, 2, 5), (1, 2, -5), (1, -2, 5), (1, -2, -5), (-1, 2, 5), (-1, 2, -5), (-1, -2, 5), (-1, -2, -5), (1, 3, 0), (1, 3, 0), (1, -3, 0), (1, -3, 0), (-1, 3, 0), (-1, 3, 0), (-1, -3, 0), (-1, -3, 0), (1, 3, 1), (1, 3, -1), (1, -3, 1), (1, -3, -1), (-1, 3, 1), (-1, 3, -1), (-1, -3, 1), (-1, -3, -1), (1, 3, 2), (1, 3, -2), (1, -3, 2), (1, -3, -2), (-1, 3, 2), (-1, 3, -2), (-1, -3, 2), (-1, -3, -2), (1, 3, 3), (1, 3, -3), (1, -3, 3), (1, -3, -3), (-1, 3, 3), (-1, 3, -3), (-1, -3, 3), (-1, -3, -3), (1, 3, 4), (1, 3, -4), (1, -3, 4), (1, -3, -4), (-1, 3, 4), (-1, 3, -4), (-1, -3, 4), (-1, -3, -4), (1, 3, 5), (1, 3, -5), (1, -3, 5), (1, -3, -5), (-1, 3, 5), (-1, 3, -5), (-1, -3, 5), (-1, -3, -5), (1, 4, 0), (1, 4, 0), (1, -4, 0), (1, -4, 0), (-1, 4, 0), (-1, 4, 0), (-1, -4, 0), (-1, -4, 0), (1, 4, 1), (1, 4, -1), (1, -4, 1), (1, -4, -1), (-1, 4, 1), (-1, 4, -1), (-1, -4, 1), (-1, -4, -1), (1, 4, 2), (1, 4, -2), (1, -4, 2), (1, -4, -2), (-1, 4, 2), (-1, 4, -2), (-1, -4, 2), (-1, -4, -2), (1, 4, 3), (1, 4, -3), (1, -4, 3), (1, -4, -3), (-1, 4, 3), (-1, 4, -3), (-1, -4, 3), (-1, -4, -3), (1, 4, 4), (1, 4, -4), (1, -4, 4), (1, -4, -4), (-1, 4, 4), (-1, 4, -4), (-1, -4, 4), (-1, -4, -4), (1, 5, 0), (1, 5, 0), (1, -5, 0), (1, -5, 0), (-1, 5, 0), (-1, 5, 0), (-1, -5, 0), (-1, -5, 0), (1, 5, 1), (1, 5, -1), (1, -5, 1), (1, -5, -1), (-1, 5, 1), (-1, 5, -1), (-1, -5, 1), (-1, -5, -1), (1, 5, 2), (1, 5, -2), (1, -5, 2), (1, -5, -2), (-1, 5, 2), (-1, 5, -2), (-1, -5, 2), (-1, -5, -2), (1, 5, 3), (1, 5, -3), (1, -5, 3), (1, -5, -3), (-1, 5, 3), (-1, 5, -3), (-1, -5, 3), (-1, -5, -3), (2, 0, 3), (2, 0, -3), (2, 0, 3), (2, 0, -3), (-2, 0, 3), (-2, 0, -3), (-2, 0, 3), (-2, 0, -3), (2, 0, 4), (2, 0, -4), (2, 0, 4), (2, 0, -4), (-2, 0, 4), (-2, 0, -4), (-2, 0, 4), (-2, 0, -4), (2, 0, 5), (2, 0, -5), (2, 0, 5), (2, 0, -5), (-2, 0, 5), (-2, 0, -5), (-2, 0, 5), (-2, 0, -5), (2, 1, 3), (2, 1, -3), (2, -1, 3), (2, -1, -3), (-2, 1, 3), (-2, 1, -3), (-2, -1, 3), (-2, -1, -3), (2, 1, 4), (2, 1, -4), (2, -1, 4), (2, -1, -4), (-2, 1, 4), (-2, 1, -4), (-2, -1, 4), (-2, -1, -4), (2, 1, 5), (2, 1, -5), (2, -1, 5), (2, -1, -5), (-2, 1, 5), (-2, 1, -5), (-2, -1, 5), (-2, -1, -5), (2, 2, 2), (2, 2, -2), (2, -2, 2), (2, -2, -2), (-2, 2, 2), (-2, 2, -2), (-2, -2, 2), (-2, -2, -2), (2, 2, 3), (2, 2, -3), (2, -2, 3), (2, -2, -3), (-2, 2, 3), (-2, 2, -3), (-2, -2, 3), (-2, -2, -3), (2, 2, 4), (2, 2, -4), (2, -2, 4), (2, -2, -4), (-2, 2, 4), (-2, 2, -4), (-2, -2, 4), (-2, -2, -4), (2, 2, 5), (2, 2, -5), (2, -2, 5), (2, -2, -5), (-2, 2, 5), (-2, 2, -5), (-2, -2, 5), (-2, -2, -5), (2, 3, 0), (2, 3, 0), (2, -3, 0), (2, -3, 0), (-2, 3, 0), (-2, 3, 0), (-2, -3, 0), (-2, -3, 0), (2, 3, 1), (2, 3, -1), (2, -3, 1), (2, -3, -1), (-2, 3, 1), (-2, 3, -1), (-2, -3, 1), (-2, -3, -1), (2, 3, 2), (2, 3, -2), (2, -3, 2), (2, -3, -2), (-2, 3, 2), (-2, 3, -2), (-2, -3, 2), (-2, -3, -2), (2, 3, 3), (2, 3, -3), (2, -3, 3), (2, -3, -3), (-2, 3, 3), (-2, 3, -3), (-2, -3, 3), (-2, -3, -3), (2, 3, 4), (2, 3, -4), (2, -3, 4), (2, -3, -4), (-2, 3, 4), (-2, 3, -4), (-2, -3, 4), (-2, -3, -4), (2, 4, 0), (2, 4, 0), (2, -4, 0), (2, -4, 0), (-2, 4, 0), (-2, 4, 0), (-2, -4, 0), (-2, -4, 0), (2, 4, 1), (2, 4, -1), (2, -4, 1), (2, -4, -1), (-2, 4, 1), (-2, 4, -1), (-2, -4, 1), (-2, -4, -1), (2, 4, 2), (2, 4, -2), (2, -4, 2), (2, -4, -2), (-2, 4, 2), (-2, 4, -2), (-2, -4, 2), (-2, -4, -2), (2, 4, 3), (2, 4, -3), (2, -4, 3), (2, -4, -3), (-2, 4, 3), (-2, 4, -3), (-2, -4, 3), (-2, -4, -3), (2, 4, 4), (2, 4, -4), (2, -4, 4), (2, -4, -4), (-2, 4, 4), (-2, 4, -4), (-2, -4, 4), (-2, -4, -4), (2, 5, 0), (2, 5, 0), (2, -5, 0), (2, -5, 0), (-2, 5, 0), (-2, 5, 0), (-2, -5, 0), (-2, -5, 0), (2, 5, 1), (2, 5, -1), (2, -5, 1), (2, -5, -1), (-2, 5, 1), (-2, 5, -1), (-2, -5, 1), (-2, -5, -1), (2, 5, 2), (2, 5, -2), (2, -5, 2), (2, -5, -2), (-2, 5, 2), (-2, 5, -2), (-2, -5, 2), (-2, -5, -2), (3, 0, 1), (3, 0, -1), (3, 0, 1), (3, 0, -1), (-3, 0, 1), (-3, 0, -1), (-3, 0, 1), (-3, 0, -1), (3, 0, 2), (3, 0, -2), (3, 0, 2), (3, 0, -2), (-3, 0, 2), (-3, 0, -2), (-3, 0, 2), (-3, 0, -2), (3, 0, 3), (3, 0, -3), (3, 0, 3), (3, 0, -3), (-3, 0, 3), (-3, 0, -3), (-3, 0, 3), (-3, 0, -3), (3, 0, 4), (3, 0, -4), (3, 0, 4), (3, 0, -4), (-3, 0, 4), (-3, 0, -4), (-3, 0, 4), (-3, 0, -4), (3, 0, 5), (3, 0, -5), (3, 0, 5), (3, 0, -5), (-3, 0, 5), (-3, 0, -5), (-3, 0, 5), (-3, 0, -5), (3, 1, 0), (3, 1, 0), (3, -1, 0), (3, -1, 0), (-3, 1, 0), (-3, 1, 0), (-3, -1, 0), (-3, -1, 0), (3, 1, 1), (3, 1, -1), (3, -1, 1), (3, -1, -1), (-3, 1, 1), (-3, 1, -1), (-3, -1, 1), (-3, -1, -1), (3, 1, 2), (3, 1, -2), (3, -1, 2), (3, -1, -2), (-3, 1, 2), (-3, 1, -2), (-3, -1, 2), (-3, -1, -2), (3, 1, 3), (3, 1, -3), (3, -1, 3), (3, -1, -3), (-3, 1, 3), (-3, 1, -3), (-3, -1, 3), (-3, -1, -3), (3, 1, 4), (3, 1, -4), (3, -1, 4), (3, -1, -4), (-3, 1, 4), (-3, 1, -4), (-3, -1, 4), (-3, -1, -4), (3, 1, 5), (3, 1, -5), (3, -1, 5), (3, -1, -5), (-3, 1, 5), (-3, 1, -5), (-3, -1, 5), (-3, -1, -5), (3, 2, 0), (3, 2, 0), (3, -2, 0), (3, -2, 0), (-3, 2, 0), (-3, 2, 0), (-3, -2, 0), (-3, -2, 0), (3, 2, 1), (3, 2, -1), (3, -2, 1), (3, -2, -1), (-3, 2, 1), (-3, 2, -1), (-3, -2, 1), (-3, -2, -1), (3, 2, 2), (3, 2, -2), (3, -2, 2), (3, -2, -2), (-3, 2, 2), (-3, 2, -2), (-3, -2, 2), (-3, -2, -2), (3, 2, 3), (3, 2, -3), (3, -2, 3), (3, -2, -3), (-3, 2, 3), (-3, 2, -3), (-3, -2, 3), (-3, -2, -3), (3, 2, 4), (3, 2, -4), (3, -2, 4), (3, -2, -4), (-3, 2, 4), (-3, 2, -4), (-3, -2, 4), (-3, -2, -4), (3, 3, 0), (3, 3, 0), (3, -3, 0), (3, -3, 0), (-3, 3, 0), (-3, 3, 0), (-3, -3, 0), (-3, -3, 0), (3, 3, 1), (3, 3, -1), (3, -3, 1), (3, -3, -1), (-3, 3, 1), (-3, 3, -1), (-3, -3, 1), (-3, -3, -1), (3, 3, 2), (3, 3, -2), (3, -3, 2), (3, -3, -2), (-3, 3, 2), (-3, 3, -2), (-3, -3, 2), (-3, -3, -2), (3, 3, 3), (3, 3, -3), (3, -3, 3), (3, -3, -3), (-3, 3, 3), (-3, 3, -3), (-3, -3, 3), (-3, -3, -3), (3, 3, 4), (3, 3, -4), (3, -3, 4), (3, -3, -4), (-3, 3, 4), (-3, 3, -4), (-3, -3, 4), (-3, -3, -4), (3, 4, 0), (3, 4, 0), (3, -4, 0), (3, -4, 0), (-3, 4, 0), (-3, 4, 0), (-3, -4, 0), (-3, -4, 0), (3, 4, 1), (3, 4, -1), (3, -4, 1), (3, -4, -1), (-3, 4, 1), (-3, 4, -1), (-3, -4, 1), (-3, -4, -1), (3, 4, 2), (3, 4, -2), (3, -4, 2), (3, -4, -2), (-3, 4, 2), (-3, 4, -2), (-3, -4, 2), (-3, -4, -2), (3, 4, 3), (3, 4, -3), (3, -4, 3), (3, -4, -3), (-3, 4, 3), (-3, 4, -3), (-3, -4, 3), (-3, -4, -3), (3, 5, 0), (3, 5, 0), (3, -5, 0), (3, -5, 0), (-3, 5, 0), (-3, 5, 0), (-3, -5, 0), (-3, -5, 0), (3, 5, 1), (3, 5, -1), (3, -5, 1), (3, -5, -1), (-3, 5, 1), (-3, 5, -1), (-3, -5, 1), (-3, -5, -1), (4, 0, 0), (4, 0, 0), (4, 0, 0), (4, 0, 0), (-4, 0, 0), (-4, 0, 0), (-4, 0, 0), (-4, 0, 0), (4, 0, 1), (4, 0, -1), (4, 0, 1), (4, 0, -1), (-4, 0, 1), (-4, 0, -1), (-4, 0, 1), (-4, 0, -1), (4, 0, 2), (4, 0, -2), (4, 0, 2), (4, 0, -2), (-4, 0, 2), (-4, 0, -2), (-4, 0, 2), (-4, 0, -2), (4, 0, 3), (4, 0, -3), (4, 0, 3), (4, 0, -3), (-4, 0, 3), (-4, 0, -3), (-4, 0, 3), (-4, 0, -3), (4, 0, 4), (4, 0, -4), (4, 0, 4), (4, 0, -4), (-4, 0, 4), (-4, 0, -4), (-4, 0, 4), (-4, 0, -4), (4, 1, 0), (4, 1, 0), (4, -1, 0), (4, -1, 0), (-4, 1, 0), (-4, 1, 0), (-4, -1, 0), (-4, -1, 0), (4, 1, 1), (4, 1, -1), (4, -1, 1), (4, -1, -1), (-4, 1, 1), (-4, 1, -1), (-4, -1, 1), (-4, -1, -1), (4, 1, 2), (4, 1, -2), (4, -1, 2), (4, -1, -2), (-4, 1, 2), (-4, 1, -2), (-4, -1, 2), (-4, -1, -2), (4, 1, 3), (4, 1, -3), (4, -1, 3), (4, -1, -3), (-4, 1, 3), (-4, 1, -3), (-4, -1, 3), (-4, -1, -3), (4, 1, 4), (4, 1, -4), (4, -1, 4), (4, -1, -4), (-4, 1, 4), (-4, 1, -4), (-4, -1, 4), (-4, -1, -4), (4, 2, 0), (4, 2, 0), (4, -2, 0), (4, -2, 0), (-4, 2, 0), (-4, 2, 0), (-4, -2, 0), (-4, -2, 0), (4, 2, 1), (4, 2, -1), (4, -2, 1), (4, -2, -1), (-4, 2, 1), (-4, 2, -1), (-4, -2, 1), (-4, -2, -1), (4, 2, 2), (4, 2, -2), (4, -2, 2), (4, -2, -2), (-4, 2, 2), (-4, 2, -2), (-4, -2, 2), (-4, -2, -2), (4, 2, 3), (4, 2, -3), (4, -2, 3), (4, -2, -3), (-4, 2, 3), (-4, 2, -3), (-4, -2, 3), (-4, -2, -3), (4, 2, 4), (4, 2, -4), (4, -2, 4), (4, -2, -4), (-4, 2, 4), (-4, 2, -4), (-4, -2, 4), (-4, -2, -4), (4, 3, 0), (4, 3, 0), (4, -3, 0), (4, -3, 0), (-4, 3, 0), (-4, 3, 0), (-4, -3, 0), (-4, -3, 0), (4, 3, 1), (4, 3, -1), (4, -3, 1), (4, -3, -1), (-4, 3, 1), (-4, 3, -1), (-4, -3, 1), (-4, -3, -1), (4, 3, 2), (4, 3, -2), (4, -3, 2), (4, -3, -2), (-4, 3, 2), (-4, 3, -2), (-4, -3, 2), (-4, -3, -2), (4, 3, 3), (4, 3, -3), (4, -3, 3), (4, -3, -3), (-4, 3, 3), (-4, 3, -3), (-4, -3, 3), (-4, -3, -3), (4, 4, 0), (4, 4, 0), (4, -4, 0), (4, -4, 0), (-4, 4, 0), (-4, 4, 0), (-4, -4, 0), (-4, -4, 0), (4, 4, 1), (4, 4, -1), (4, -4, 1), (4, -4, -1), (-4, 4, 1), (-4, 4, -1), (-4, -4, 1), (-4, -4, -1), (4, 4, 2), (4, 4, -2), (4, -4, 2), (4, -4, -2), (-4, 4, 2), (-4, 4, -2), (-4, -4, 2), (-4, -4, -2), (5, 0, 0), (5, 0, 0), (5, 0, 0), (5, 0, 0), (-5, 0, 0), (-5, 0, 0), (-5, 0, 0), (-5, 0, 0), (5, 0, 1), (5, 0, -1), (5, 0, 1), (5, 0, -1), (-5, 0, 1), (-5, 0, -1), (-5, 0, 1), (-5, 0, -1), (5, 0, 2), (5, 0, -2), (5, 0, 2), (5, 0, -2), (-5, 0, 2), (-5, 0, -2), (-5, 0, 2), (-5, 0, -2), (5, 0, 3), (5, 0, -3), (5, 0, 3), (5, 0, -3), (-5, 0, 3), (-5, 0, -3), (-5, 0, 3), (-5, 0, -3), (5, 1, 0), (5, 1, 0), (5, -1, 0), (5, -1, 0), (-5, 1, 0), (-5, 1, 0), (-5, -1, 0), (-5, -1, 0), (5, 1, 1), (5, 1, -1), (5, -1, 1), (5, -1, -1), (-5, 1, 1), (-5, 1, -1), (-5, -1, 1), (-5, -1, -1), (5, 1, 2), (5, 1, -2), (5, -1, 2), (5, -1, -2), (-5, 1, 2), (-5, 1, -2), (-5, -1, 2), (-5, -1, -2), (5, 1, 3), (5, 1, -3), (5, -1, 3), (5, -1, -3), (-5, 1, 3), (-5, 1, -3), (-5, -1, 3), (-5, -1, -3), (5, 2, 0), (5, 2, 0), (5, -2, 0), (5, -2, 0), (-5, 2, 0), (-5, 2, 0), (-5, -2, 0), (-5, -2, 0), (5, 2, 1), (5, 2, -1), (5, -2, 1), (5, -2, -1), (-5, 2, 1), (-5, 2, -1), (-5, -2, 1), (-5, -2, -1), (5, 2, 2), (5, 2, -2), (5, -2, 2), (5, -2, -2), (-5, 2, 2), (-5, 2, -2), (-5, -2, 2), (-5, -2, -2), (5, 3, 0), (5, 3, 0), (5, -3, 0), (5, -3, 0), (-5, 3, 0), (-5, 3, 0), (-5, -3, 0), (-5, -3, 0), (5, 3, 1), (5, 3, -1), (5, -3, 1), (5, -3, -1), (-5, 3, 1), (-5, 3, -1), (-5, -3, 1), (-5, -3, -1)]
It seems there are duplicates. Any idea? :)
Upvotes: 0
Views: 99
Reputation: 6359
Ok, still not sure if this is what you want, but check out this function:
In [1]: points = [(25, 296, 4), (27, 296, 5), (24, 296, 6)]
In [2]: center = (24, 294, 1)
In [3]: def mirror_points(points, center):
...: mirrored_points = []
...: for point in points:
...: mirrored_point = []
...: for i in range(3):
...: mirrored_point.append(2 * center[i] - point[i])
...: mirrored_points.append(tuple(mirrored_point))
...: return mirrored_points
...:
In [4]: mirror_points(points, center)
Out[4]: [(23, 292, -2), (21, 292, -3), (24, 292, -4)]
The function takes a list of points and returns a list of mirrored points. Each point in the input list is mirrored around the center which produces a single mirrored point.
EDIT
After clarification of the problem:
The task: For each point in the input, calculate all points that are mirrored on any combination of x-, y- and z-planes through the center.
E.g. processing of point (1, 2, 3) around center (0, 0, 0) would lead to the following points:
(-1, 2, 3) # mirrored x-axis
(1, -2, 3) # mirrored y-axis
(1, 2, -3) # mirrored z-axis
(-1, -2, 3) # mirrored x- and y-axis
(1, -2, -3) # mirrored x- and z-axis
(-1, 2, -3) # mirrored y- and z-axis
(-1, -2, -3) # mirrored x-, y- and z-axis
The following function returns a list of points that contains 8 points for each input point that are mirrored around the center (0, 0, 0):
from itertools import product
def calc_all_point_mirrors(points):
out = []
for point in points:
for factors in product([1, -1], repeat=3): # (1, 1, 1), (1, 1, -1), (1, -1, 1), ..., (-1, -1, -1)
out.append(tuple(point[i]*factors[i] for i in range(3)))
return list(set(out))
Example:
>>> calc_all_point_mirrors([(1, 2, 3), (10, 10, 10)])
[(1, 2, 3),
(1, 2, -3),
(1, -2, 3),
(1, -2, -3),
(-1, 2, 3),
(-1, 2, -3),
(-1, -2, 3),
(-1, -2, -3),
(10, 10, 10),
(10, 10, -10),
(10, -10, 10),
(10, -10, -10),
(-10, 10, 10),
(-10, 10, -10),
(-10, -10, 10),
(-10, -10, -10)]
Upvotes: 1