(Translated by https://www.hiragana.jp/)
Atoms and orbitals | TikZ example
 

Example: Atoms and orbitals

Published 2008-10-29 | Authors: Berteun Damman, Arne Röhrs

Example drawings to help explain the VSEPR atom model to high school students. Although the actual model is three dimensional, these drawings are deliberately presented as two dimensional to gently introduce them to the concepts, before advancing to three dimensional models.

Download as: [PDF] [TEX]

Atoms and orbitals

Do you have a question regarding this example, TikZ or LaTeX in general? Just ask in the LaTeX Forum.
Oder frag auf Deutsch auf TeXwelt.de. En français: TeXnique.fr.

% Example drawings to help explain the VSEPR atom model to high school
% students. Although the actual model is three dimensional, these drawings
% are deliberately presented as two dimensional to gently introduce them to the
% concepts, before advancing to three dimensional models.

%
% Authors: Berteun Damman & Arne Röhrs

\documentclass{article}
\usepackage{tikz}

\usepackage[version=3]{mhchem}



\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}

\pgfsetlayers{background,main,foreground}

% For black & white suggestions are black!95 for the electron
% and a white background, or a simple shade for the orbitals.
\colorlet{electron}{blue!75}

\tikzset{orbital/.style={thick,draw=blue,fill opacity=.60}}
% Styles for orbitals with 0, 1 and 2 atoms respectively.
\tikzset{orbital 0/.style={orbital,fill=blue!25}}
\tikzset{orbital 1/.style={orbital,fill=blue!66}}

\tikzset{orbital 2/.style={orbital,fill=blue}}
\tikzset{atomcore/.style={shape=circle,thick,draw=red!40,minimum size=7mm,
    font=\large\color{red!70!gray},fill=red!20,inner sep=0pt}}

\def\orbheight{1.2}
\def\orbwidth{.6}

% Parameters: #1 Rotation of the orbital
%             #2 Coordinate where the orbital should be attached
%             #3 Number of electrons to draw in the orbital

\newcommand{\orbital}[3]{
    \begin{scope}[rotate=#1,shift=(#2)]
        % These points define the curve for the orbital.
        \coordinate (c1) at (-\orbwidth, .6 * \orbheight);
        \coordinate (c2) at (-\orbwidth, \orbheight);
        \coordinate (c3) at (\orbwidth, \orbheight);
        \coordinate (c4) at (\orbwidth, .6 * \orbheight);
        \coordinate (top) at (0,\orbheight);

        %Coordinates of the electrons

        \coordinate (e1) at (0, 0.45*\orbheight);
        \coordinate (e2) at (0, 0.75*\orbheight);
    \end{scope}

  % These are drawn on a background layer, so orbitals
  % can overlap without covering the electrons, which
  % visualises the role electrons play in chemical bonds.
  \begin{pgfonlayer}{background}

      \draw[orbital #3] (#2) .. controls (c1) and (c2) .. (top) ..
            controls (c3) and (c4) .. (#2);
  \end{pgfonlayer}

  % Draw the electrons
  \ifnum#3>0
      \foreach \n in {1,...,#3} {

          \shade[ball color=electron] (e\n) circle (1mm);
      }
  \fi
}

% This allows to quickly place an atom.

% Parameters: #1 (Optional) Name of the center node
%             #2 Text for the center node
%             #3 A list of rotation-angle/anchor/number of electrons
\newcommand{\Atom}[3][AtomNode]{
  \node[atomcore] (#1) {\ce{#2}};
  \foreach \ang/\anchor/\n in {#3} {

      \orbital{\ang}{#1.\anchor}{\n}
  }
}

\begin{document}
    \pagestyle{empty}
    
    
% Note: Cells of matrices cannot contain layered pictures,
% therefore we use some old-fashioned scopes.
\begin{tikzpicture}

    \Atom{B}{90/west/2,0/north/1,270/east/0,180/south/1}
    \begin{scope}[xshift=4cm]
        \Atom{H}{0/north/1}

    \end{scope}
    \begin{scope}[yshift=-4cm]
        \Atom{C}{90/west/1,0/north/1,270/east/1,180/south/1}

        \begin{scope}[xshift=4cm]
            \Atom{Cl}{90/west/2,0/north/2,270/east/2,180/south/1}
        \end{scope}

    \end{scope}
\end{tikzpicture}

\medskip

\begin{tikzpicture}

    \Atom{Cl}{90/west/2,0/north/2,270/east/1,180/south/2}
    \begin{scope}[xshift=2.2cm]
        \Atom{H}{90/west/1}

    \end{scope}
\end{tikzpicture}

\medskip

\begin{tikzpicture}

    \Atom{O}{45/north west/2,315/north east/1,225/south east/1,135/south west/2}
    \begin{scope}[xshift=3.0cm]
        \Atom{O}{45/north west/1,315/north east/2,225/south east/2,135/south west/1}

    \end{scope}

    \begin{scope}[xshift=7.0cm]
        \Atom{O}{45/north west/2,315/north east/1,225/south east/1,135/south west/2}

        \begin{scope}[xshift=1.6cm]
            \Atom{O}{45/north west/1,315/north east/2,225/south east/2,135/south west/1}
        \end{scope}

    \end{scope}
\end{tikzpicture}

\end{document}

Comments

Adding comments is currently not enabled.