Skip to main content

plotting - How to transform and combine multiple Graphics3D into one?


ProteinData["A2M", "MoleculePlot"] gives you a Graphics3D object below.


I'd like to display multiple of these proteins in a single Graphics3D scene. Is there a way to place the Graphics3D object returned by ProteinData[...] at a specific location and orientation in another 3D scene?


Alternatively, is there a ProteinData API that (I'm somehow missing and) would give me an object that I could place (rotated and translated) in a new Graphics3D scene?


protein display



Answer



Take a look to the documentation page of Translate > NeatExamples. This example involves also Rotate.



In order to use it on "MoleculePlot" you have to extract the Graphics' first part (primitives), transform them and wrap with Graphics3D again:


p1 = ProteinData["A2M", "MoleculePlot"];
p2 = ProteinData["SERPINA1", "MoleculePlot"];

Show[
p1,
Graphics3D @ Translate[
Rotate[First[p2], Pi/8, {1, 1, 0}],
{5, 5, 5}
]

]

enter image description here


Comments