7

I'm trying to draw some arbitrary closed two dimensional curve where I'm focusing on only part of the boundary. I want to label the diameter of the part of the boundary I'm focusing on. Last, I'd like to put a tube encompassing this part of the boundary, and label both. Here is a picture of the situation I desire: enter image description here

The symbols are $\Omega$, $\operatorname{diam} (\partial \varphi)$, $\operatorname{diam} (\mathcal{R}_i)$, and $\partial \phi^2$.

Any help would be greatly appreciated. I understand how to get one simple closed curve, but not two overlapping as in the picture above with two straight lines stretching as shown labeled above.

10

Thanks to Marienplatz for providing the coordinates

Using tikz and hobby. Code could have been minimized and refined, but let us be elaborative ;-)

\documentclass[tikz,margin=10pt]{standalone}
\usepackage{amsmath}
\usetikzlibrary{hobby}

\begin{document}

\begin{tikzpicture}[line width=1pt,line cap = round]
\node[fill=black,circle,inner sep=0pt,outer sep=0pt,label={[xshift=1pt]below right:$\partial \phi^2$}] at (0,1) (a) {};
\node[fill=black,circle,inner sep=0pt,outer sep=0pt] at (1,3) (b) {};
\node[fill=black,circle,inner sep=0pt,outer sep=0pt] at (4,4) (c) {};
\node[fill=black,circle,inner sep=0pt,outer sep=0pt] at (5,2) (d) {};
\node[fill=black,circle,inner sep=0pt,outer sep=0pt] at (4.5,.5) (e) {};
\node[fill=black,circle,inner sep=0pt,outer sep=0pt] at (4,0) (f) {};
\node[fill=black,circle,inner sep=0pt,outer sep=0pt] at (3,.2) (g) {};
\node[fill=black,circle,inner sep=0pt,outer sep=0pt] at (1,0) (h) {};

\path[draw,use Hobby shortcut,closed=true]
(a) .. (b) .. (c) .. (d) .. (e) .. (f) .. (g) .. (h);

\node[fill=black,circle,inner sep=0pt,outer sep=0pt] at (4.5,4.5) (i) {};
\node[fill=black,circle,inner sep=0pt,outer sep=0pt] at (5,4.8) (j) {};
\node[fill=black,circle,inner sep=0pt,outer sep=0pt,label={[xshift=4pt]below left:$\Omega$}] at (7.7,5.6) (k) {} ;
\node[fill=black,circle,inner sep=0pt,outer sep=0pt,xshift=1cm,yshift=-2cm] at (4.5,4.5) (l) {};
\node[fill=black,circle,inner sep=0pt,outer sep=0pt,xshift=1cm,yshift=-2cm] at (5,4.8) (m) {};
\node[fill=black,circle,inner sep=0pt,outer sep=0pt,xshift=1cm,yshift=-2cm] at (7.7,5.6) (n) {};

\draw (c) to [quick curve through={(i) . . (j)}] (k)
      (k) -- node[midway,below,sloped]{$\alpha$} (n)
      (n) to [quick curve through={(m) . . (l)}] (d)
      (m) -- node[midway,below,sloped]{$\operatorname{diam} (\mathcal{R}_i)$} (j)
      (d) -- node[midway,below,sloped]{$\operatorname{diam} (\partial \varphi)$} (c);

\end{tikzpicture}


\end{document}

enter image description here

With lesser lines and edits for the comment:

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{hobby}

\begin{document}    
\begin{figure}
\centering
\begin{tikzpicture}[line width=.6pt,line cap = round,scale=.5,transform shape]

\foreach \x/\y/\z in {0/1/a,1/3/b,4/4/c,5/2/d,4.5/.5/e,4/0/f,3/.2/g,1/0/h}{
\coordinate (\z) at (\x,\y);
}
\foreach \x/\y/\z in {4.5/4.5/i,5/4.8/j,7.7/5.6/k}{
\coordinate (\z) at (\x,\y);
}
\foreach \x/\y/\z in {4.5/4.5/l,5/4.8/m,7.7/5.6/n}{
\coordinate[xshift=1cm,yshift=-2cm] (\z) at (\x,\y);
}    

\path[draw,use Hobby shortcut,closed=true]
(a) .. (b) .. (c) .. (d) .. (e) .. (f) .. (g) .. (h);

\draw (c) to [quick curve through={(i) . . (j)}] (k)
      (k) -- node[midway,left]{$\alpha$} (n)
      (n) to [quick curve through={(m) . . (l)}] (d)
      (m) -- node[midway,below,sloped]{$\operatorname{diam} (\mathcal{R}_i)$} (j)
      (d) -- node[midway,below,sloped]{$\operatorname{diam} (\partial \varphi)$} (c);

\node[xshift=12pt,yshift=-5pt] at (a.-30) {$\partial \phi^2$};
\node[xshift=-3pt,yshift=-5pt] at (k.220) {$\Omega$};

\end{tikzpicture}
\caption{Some description for this figure}
\end{figure}

\end{document}

enter image description here

I have used scale=.5,transform shapein tikzpicture options to scale it down. Also added \alpha in the rightmost line.

  • 1
    Eh! What is the equivalent of \pstTranslation{C}{D}{C1,C2,C3} in tikz? – user11232 Nov 9 '13 at 1:22
  • How would I scale it down? And add a $\alpha$ halfway down the rightmost line. (the one to the right of omega) – Anthony Peter Nov 9 '13 at 2:44
  • @AnthonyPeter That is easy. Change (k) -- node[midway,below,sloped]{$\alpha$} (n) to (k) -- node[midway,left]{$\alpha$} (n). See the edit. – user11232 Nov 9 '13 at 3:16
  • much appreciated. – Anthony Peter Nov 9 '13 at 3:17
7

Complete Code

The complete input files are given as follows.

diagram.tex

% let the name of this file be diagram.tex
% Compile it with 
% latex diagram, followed by
% dvips diagram, followed by
% ps2pdf -dAutoRotatePages=/None diagram.ps (if you are using Windows, please replace = with #)
\documentclass[pstricks,border=3pt]{standalone}
\usepackage{pst-eucl}
\usepackage{amsmath}
\DeclareMathOperator{\diam}{diam}
\psset{PointName=none,PointSymbol=none,unit=.75,shortput=nab,nrot=:U}
\begin{document}
\begin{pspicture}[showgrid=false](8.7,5.6)
    \pstGeonode
        (0,1){A}
        (1,3){B}
        (4,4){C}
        (5,2){D}
        (4.5,.5){E}
        (4,0){F}
        (3,.2){G}
        (1,0){H}
        (4.5,4.5){C1}
        (5,4.8){C2}
        (7.7,5.6){C3}
    \pstTranslation{C}{D}{C1,C2,C3}[D1,D2,D3]
    \psccurve(A)(B)(C)(D)(E)(F)(G)(H)
    \pscustom{\pscurve(C)(C1)(C2)(C3)\psline(D3)\pscurve(D2)(D1)(D)}
    \ncline{C}{D}_{$\diam (\partial \varphi)$}
    \ncline{C2}{D2}_{$\diam (\mathcal{R}_i)$}
    \uput{6pt}[-110](C3){$\Omega$}
    \uput{6pt}[-30](A){$\partial \phi^2$}
\end{pspicture}
\end{document}

enter image description here

Main.tex

% let the name of this file be main.tex
% compile it with
% pdflatex main (it needs compilation twice or more to make the cross references get properly linked)
% make sure diagram.pdf exists!
\documentclass{article}
\usepackage{graphicx}
\graphicspath{{../../Diagrams/}}
\usepackage{lipsum,xcolor}% for dummy text and color, you might not need it in your production!
\begin{document}
\begin{figure}
\centering
\includegraphics[scale=1]{diagram}
\caption{Diagraming with PSTricks is always fun!}
\label{fig:diagram}
\end{figure}
\lipsum[1-4]
\textcolor{red}{See page~\pageref{fig:diagram}, there is a beautiful example of PSTricks there.}
\end{document}

Screenshot

enter image description here

Notes

Sadly my coordinates are copied by another answerer without paying the license fee. :-)

Diagram Management

  • Every diagram should be composed in a single, separate, standalone input file. This approach will make your project becomes easier to maintain. It also allows you to reuse the diagrams for other projects. Use standalone document class to get a tight output so any excessive white spaces (excluding the intentionally added borders) will be trimmed.
  • The recommended approach is to save the input file of each diagram in the same directory (named Diagrams, for example) and should be one at least 2 level higher than the individual project directory. See the directory structure below to illustrate the explanation better.

    /other directory/
    /other directory/my documents/
    /other directory/my documents/Diagrams/
    /other directory/my documents/Diagrams/Diagram1.tex/
    /other directory/my documents/Diagrams/Diagram2.tex/
    .
    .
    .
    /other directory/my documents/Diagrams/Diagramn.tex/
    /other directory/my documents/Projects/
    /other directory/my documents/Projects/Project 1/Main.tex/
    /other directory/my documents/Projects/Project 2/Main.tex/
    .
    .
    .
    /other directory/my documents/Projects/Project n/Main.tex/
    
  • Compile each diagram containing PSTricks code with

    latex filename
    dvips filename
    ps2pdf -dAutoRotatePages=/None filename.ps
    

    For users with legacy Windows, replace = with #. Now we have PDF version for each diagram.

Project Management

  • Every project input file (named Main.tex, for example) should be in a separate project folder. It is also useful for easy maintenance.
  • Compile the Main.tex with pdflatex Main.tex to get a PDF output. You need 2 or more compilations to make the cross-references get properly rendered or linked.
  • Import the PDF diagrams from Main.tex using \includegraphics{<digram-name>} provided by graphicx package. Don't forget to set the \graphicspath{{../../Diagrams/},{other-path-if-any/}} right after \usepackage{graphicx}.
  • Very impressive – Anthony Peter Nov 9 '13 at 2:10
  • How would I scale it down? – Anthony Peter Nov 9 '13 at 2:14
  • Also how would I add a caption labeling it "Figure N.n : blah blah" – Anthony Peter Nov 9 '13 at 2:42
  • @AnthonyPeter: Sorry for lately responding. I was sleeping when you asked. See my update. – kiss my armpit Nov 9 '13 at 9:33
  • 1
    License fee paid through an upvote already ;-) – user11232 Nov 9 '13 at 12:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.