As Jason Biggs recently noted in his contribution “Overview of Wolfram Chemistry” on YouTube it might be interesting to see the normal vector of each benzene ring as you rotate the Möbius strip-like molecule around the z-axis.
Prerequisites...
Prerequisites...
For RingPattern[]
PacletInstall["WolframChemistry/ChemistryFunctions"]
Out[]=
PacletObject
In[]:=
Needs["WolframChemistry`ChemistryFunctions`"]
Import of XYZ file
XYZ can be found attached to this post and also in https://static-content.springer.com/esm/art%3A10.1038%2Fs44160-022-00075-8/MediaObjects/44160_2022_75_MOESM3_ESM.txt (lines 1648 up to 1950)
XYZ can be found attached to this post and also in https://static-content.springer.com/esm/art%3A10.1038%2Fs44160-022-00075-8/MediaObjects/44160_2022_75_MOESM3_ESM.txt (lines 1648 up to 1950)
In[]:=
nanobelt=Import["Möbius carbon nanobelt.xyz"]
Out[]=
Molecule
Visualization
Visualization
In[]:=
rings=FindMoleculeSubstructure[nanobelt,RingPattern[6],All]
Out[]=
{11,22,37,46,55,64,11,24,33,4198,5199,6200,16,27,39,48,513,611,110,211,313,412,517,615,114,215,317,416,521,619,116,218,323,422,520,621,122,227,329,424,525,623,126,227,329,428,533,631,130,231,333,432,537,635,132,234,339,438,536,637,138,243,345,440,541,639,142,243,345,444,549,647,146,247,349,448,553,651,148,250,355,454,552,653,154,259,361,456,557,655,158,259,361,460,565,663,162,263,365,464,569,667,164,266,371,470,568,669,170,275,377,472,573,671,174,275,377,476,581,679,178,279,381,480,585,683,180,282,387,486,584,685,186,291,393,488,589,687,190,291,393,492,597,695,194,295,397,496,5101,699,196,2101,3100,4102,5103,698,1102,2105,3109,4107,5104,6103,1105,2106,3111,4110,5108,6109,1110,2115,3117,4112,5113,6111,1114,2115,3117,4116,5121,6119,1118,2119,3121,4120,5125,6123,1120,2122,3127,4126,5124,6125,1126,2131,3133,4128,5129,6127,1130,2131,3133,4132,5137,6135,1134,2135,3137,4136,5141,6139,1136,2138,3143,4142,5140,6141,1142,2147,3149,4144,5145,6143,1146,2147,3149,4148,5153,6151,1150,2151,3153,4152,5157,6155,1152,2154,3159,4158,5156,6157,1158,2163,3165,4160,5161,6159,1162,2163,3165,4164,5169,6167,1166,2167,3169,4168,5173,6171,1168,2170,3175,4174,5172,6173,1174,2179,3181,4176,5177,6175,1178,2179,3181,4180,5185,6183,1182,2183,3185,4184,5189,6187,1184,2189,3188,4190,5191,6186,1190,2195,3197,4192,5193,6191,1194,2199,3200,4196,5197,6195}
In[]:=
MoleculePlot3D[nanobelt,<|"6–membered rings"->RingPattern[6]|>,SphericalRegion->True]
In[]:=
ac=QuantityMagnitude[nanobelt["AtomCoordinates"]];
None of the 50 benzene rings are planar!
Or@@(CoplanarPoints[ac[[Values[#]]]]&/@rings)
Out[]=
False
Instead of complete 6 - membered rings, I just took every second atom, yielding 50 triangles
In[]:=
coords=ac[[#]]&/@Values[rings][[All,{1,3,5}]];Length[%]
Out[]=
50
Calculation of the center points for all triangles
In[]:=
cp=RegionCentroid[Triangle[#]]&/@coords
Out[]=
{{-0.0781133,14.7808,0.0000443333},{2.23021,14.7132,-0.879604},{-2.40342,14.6997,0.855405},{-4.35187,14.3229,-0.612281},{-6.24203,13.7002,-2.07522},{-8.44071,13.1092,-1.14179},{-10.598,12.3384,-0.19758},{-12.2195,11.0063,-1.49586},{-13.6789,9.45324,-2.74319},{-15.4322,8.16192,-1.59965},{-17.009,6.68177,-0.396219},{-17.8288,4.56335,-1.35575},{-18.3673,2.32408,-2.2438},{-19.0623,0.510532,-0.739163},{-19.3758,-1.3634,0.837714},{-18.9255,-3.69899,0.199691},{-18.1667,-5.96292,-0.426965},{-17.1873,-7.4486,1.25974},{-15.7649,-8.66673,2.8571},{-14.1947,-10.4166,2.1328},{-12.4949,-12.021,1.32958},{-10.2677,-12.0636,2.34267},{-7.92075,-11.7067,2.98373},{-6.05565,-12.9153,1.92902},{-4.15423,-14.1422,0.934006},{-1.98453,-13.0501,0.619579},{0.0772853,-11.8788,-0.052782},{2.13548,-13.0639,-0.663968},{4.35467,-14.1112,-0.937645},{6.24289,-12.9121,-1.95626},{8.09856,-11.7006,-3.0371},{10.4192,-12.0313,-2.33231},{12.6535,-11.9121,-1.29871},{14.3543,-10.3207,-2.08891},{15.9116,-8.55961,-2.82987},{17.2747,-7.33314,-1.20482},{18.224,-5.7898,0.471929},{18.9649,-3.52061,-0.13368},{19.3919,-1.18541,-0.797588},{19.0382,0.655938,0.787804},{18.3096,2.49948,2.26897},{17.7388,4.73343,1.39531},{16.9047,6.83361,0.405689},{15.3257,8.27319,1.62268},{13.542,9.58052,2.74044},{12.0542,11.1139,1.50624},{10.4319,12.4204,0.181121},{8.29503,13.165,1.14731},{6.06623,13.7614,2.05434},{4.15717,14.3584,0.608279}}
The normals as tubes, each tube extends over both sides of the triangle planes
In[]:=
normalLines[cp_,coords_]:=Module[{cross},cross=Cross[Sequence@@(cp-#&/@coords[[;;2]])];Tube[{cp+cross,cp-cross},0.1]]
In[]:=
nl=MapThread[normalLines[#1,#2]&,{cp,coords}];
In[]:=
Show[Graphics3D[{Red,Point[cp],Darker[Green],nl}],MoleculePlot3D[nanobelt],AxesTrue,BoxedFalse,AxesOrigin->{0,0,0},SphericalRegion->True]
ListAnimate and Animate graphics
ListAnimate and Animate graphics
In[]:=
rotGr=Table[MoleculePlot3D[nanobelt,SphericalRegion->True,AxesTrue,BoxedFalse,AxesOrigin->{0,0,0},ViewVector{25Cos[t],25Sin[t],0}],{t,0,2Pi,0.05}];
In[]:=
ListAnimate[rotGr,DisplayAllSteps->True]
For control purposes, the ViewVector as red lines
For some reason, I had to swap the first two coordinates ...
Adjusted ViewVector; interpolation for a smoothed “tracking shot”
Final animation
Export the animation as mp4 file
Produce an animated gif
CITE THIS NOTEBOOK
CITE THIS NOTEBOOK
Visualization of a Möbius carbon nanobelt and normal vectors on all benzene rings
by Armin Vollmer
Wolfram Community, STAFF PICKS, August 3, 2023
https://community.wolfram.com/groups/-/m/t/2982851
by Armin Vollmer
Wolfram Community, STAFF PICKS, August 3, 2023
https://community.wolfram.com/groups/-/m/t/2982851