%% bldelem3.txt
%% Created by Laurence D. Finston (LDF) Wed Jun 20 13:16:56 CEST 2012

%% * (1) Copyright and License.

%%%% This file is part of GNU 3DLDF, a package for three-dimensional drawing. 
%%%% Copyright (C) 2012, 2013 The Free Software Foundation
   
%%%% GNU 3DLDF is free software; you can redistribute it and/or modify 
%%%% it under the terms of the GNU General Public License as published by 
%%%% the Free Software Foundation; either version 3 of the License, or 
%%%% (at your option) any later version. 

%%%% GNU 3DLDF is distributed in the hope that it will be useful, 
%%%% but WITHOUT ANY WARRANTY; without even the implied warranty of 
%%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
%%%% GNU General Public License for more details. 

%%%% You should have received a copy of the GNU General Public License 
%%%% along with GNU 3DLDF; if not, write to the Free Software 
%%%% Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

%%%% GNU 3DLDF is a GNU package.  
%%%% It is part of the GNU Project of the  
%%%% Free Software Foundation 
%%%% and is published under the GNU General Public License. 
%%%% See the website http://www.gnu.org 
%%%% for more information.   
%%%% GNU 3DLDF is available for downloading from 
%%%% http://www.gnu.org/software/3dldf/LDF.html. 

%%%% Please send bug reports to Laurence.Finston@gmx.de.
%%%% The mailing list help-3dldf@gnu.org is available for people to 
%%%% ask other users for help.  
%%%% The mailing list info-3dldf@gnu.org is for the maintainer of 
%%%% GNU 3DLDF to send announcements to users. 
%%%% To subscribe to these mailing lists, send an 
%%%% email with ``subscribe <email-address>'' as the subject.  

%%%% The author can be contacted at: 

%%%% Laurence D. Finston 
%%%% c/o Free Software Foundation, Inc. 
%%%% 51 Franklin St, Fifth Floor 
%%%% Boston, MA  02110-1301  
%%%% USA

%%%% Laurence.Finston@gmx.de



%% * (1)

\input eplain
\input epsf 
\nopagenumbers

%% * (1)

%% Copied from `rotate.tex'.  Not sure where it comes from, but it's certainly
%% Free Software.  LDF 2012.06.15.

%
%   These macros allow you to rotate or flip a \TeX\ box.  Very useful for
%   sideways tables or upsidedown answers.
%
%   To use, create a box containing the information you want to rotate.
%   (An hbox or vbox will do.)  Now call \rotr\boxnum to rotate the
%   material and create a new box with the appropriate (flipped) dimensions.
%   \rotr rotates right, \rotl rotates left, \rotu turns upside down, and
%   \rotf flips.  These boxes may contain other rotated boxes.
%
\newdimen\rotdimen
\def\vspec#1{\special{ps:#1}}%  passes #1 verbatim to the output
\def\rotstart#1{\vspec{gsave currentpoint currentpoint translate
   #1 neg exch neg exch translate}}% #1 can be any origin-fixing transformation
\def\rotfinish{\vspec{currentpoint grestore moveto}}% gets back in synch
%
%   First, the rotation right. The reference point of the rotated box
%   is the lower right corner of the original box.
%
\def\rotr#1{\rotdimen=\ht#1\advance\rotdimen by\dp#1%
   \hbox to\rotdimen{\hskip\ht#1\vbox to\wd#1{\rotstart{90 rotate}%
   \box#1\vss}\hss}\rotfinish}
%
%   Next, the rotation left. The reference point of the rotated box
%   is the upper left corner of the original box.
%
\def\rotl#1{\rotdimen=\ht#1\advance\rotdimen by\dp#1%
   \hbox to\rotdimen{\vbox to\wd#1{\vskip\wd#1\rotstart{270 rotate}%
   \box#1\vss}\hss}\rotfinish}%
%
%   Upside down is simple. The reference point of the rotated box
%   is the upper right corner of the original box. (The box's height
%   should be the current font's xheight, \fontdimen5\font,
%   if you want that xheight to be at the baseline after rotation.)
%
\def\rotu#1{\rotdimen=\ht#1\advance\rotdimen by\dp#1%
   \hbox to\wd#1{\hskip\wd#1\vbox to\rotdimen{\vskip\rotdimen
   \rotstart{-1 dup scale}\box#1\vss}\hss}\rotfinish}%
%
%   And flipped end for end is pretty ysae too. We retain the baseline.
%
\def\rotf#1{\hbox to\wd#1{\hskip\wd#1\rotstart{-1 1 scale}%
   \box#1\hss}\rotfinish}%

%% * (1)

%% !! START HERE: LDF 2012.06.18.  Add code for generating output in Letter
%% format (8.5 x 11in) in Makefile.am.  Also, change Makefile in
%% [...]/web/SRC_CODE/.  Change models.html.  Fix the formatting.


\pageno=1

\def\DINAFOUR{DINAFOURPORTRAIT}
\def\LETTER{LETTER}

\ifx\FMT\DINAFOUR
\message{Format is defined, DIN A4}
\input fmtdina4.txt
\else\ifx\FMT\LETTER
\message{Format is defined, LETTER}
\input fmt8511.txt
\else
\message{Format is not defined.  Defining as A4 Portrait}
\special{papersize=210mm, 297mm}
\hsize=210mm
\vsize=297mm
\fi\fi

%% Saved for reference.  LDF 2012.06.18.

%% Uncomment for A4 portrait
%% \special{papersize=210mm, 297mm}
%% \hsize=210mm
%% \vsize=297mm

%% Uncomment for A4 landscape.
%% \special{papersize=297mm, 210mm}
%% \hsize=297mm
%% \vsize=210mm

%% Uncomment for DIN A3 portrait.
%% \special{papersize=297mm, 420mm} %% DIN A3 Portrait
%% \vsize=420mm
%% \hsize=297mm

%% Uncomment for A3 landscape.
%\special{papersize=420mm, 297mm} %% DIN A3 Landscape
%\vsize=297mm
%\hsize=420mm

%% \advance\voffset by -1in
%% \advance\voffset by 1.25cm
%% \advance\hoffset by -1in
%% \advance\hoffset by 1cm



\parindent=0pt

\font\small=cmr8

%% *** (3) 

%% Created:       June 26, 2012
%% Last updated:  July 4, 2012

\iftrue % \iffalse
\pageno=-1
%\pageno=0
\vbox to \vsize{%
\vskip.5cm
\centerline{Building Elements 3}
\vskip\baselineskip
\centerline{Laurence D. Finston}
\vskip\baselineskip
\centerline{Created:  June 26, 2012}
\vskip\baselineskip
\centerline{Last updated:  July 4, 2012}
\vskip2cm
\iftrue % \iffalse
{\small
\hsize=.75\hsize
\hskip1cm
\vbox{\vskip2\baselineskip
This document is part of GNU 3DLDF, a package for three-dimensional
drawing.
\vskip\baselineskip

Copyright {\copyright} 2012, 2013 The Free Software Foundation
\vskip\baselineskip

GNU 3DLDF is free software; you can redistribute it and/or modify 
it under the terms of the GNU General Public License as published by 
the Free Software Foundation; either version 3 of the License, or 
(at your option) any later version. 
\vskip\baselineskip

GNU 3DLDF is distributed in the hope that it will be useful, 
but WITHOUT ANY WARRANTY; without even the implied warranty of 
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
GNU General Public License for more details. 
\vskip\baselineskip

You should have received a copy of the GNU General Public License 
along with GNU 3DLDF; if not, write to the Free Software 
Foundation, Inc.,\hfil\break
51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA}}
\fi
\vss}
\vfil\eject
\fi

\pageno=1

\parindent=0pt

\def\epsfsize#1#2{#1}


\font\small=cmr8
\font\smalltt=cmtt8
\font\large=cmr12
\font\largebx=cmbx12
\font\Large=cmr17
\font\huge=cmr17 scaled \magstep1

%% *** (3) 

\advance\hsize by 1cm
\advance\vsize by -1in

\headline={\hfil Building Elements 3\hfil
           Copyright {\copyright} 2012, 2013 The Free Software Foundation\hfil
           Author:  Laurence D. Finston\hfil\kern1.5cm}


\footline={\hfil \folio\hfil}

\pageno=-1

\begingroup
\advance\baselineskip by .5\baselineskip
\advance\hsize by -3cm
\singlecolumn
\line{\hbox to .5\hsize{\hfil{\largebx Contents}\hfil}\hfil}
\doublecolumns
\readtocfile
\vfil\eject
\singlecolumn
%%
\pageno=1
\writetocentry{chapter}{Instructions}
\line{\hbox to .5\hsize{\hfil{\largebx Instructions}\hfil}\hfil}
%%
%% Instructions here
%%
\vfil\eject
\singlecolumn
\endgroup

\vfil\eject

%% ** (2) Macros

%% *** (3) xhairs

\newbox\crosshairbox

\begingroup
\offinterlineskip
\setbox0=\hbox{\vrule width 1cm height .125mm depth .125mm}
\setbox1=\hbox{\hskip.5cm\vrule width .25mm height .5cm depth .5cm}
\global\setbox\crosshairbox=\vbox to 0pt{\hbox to 0pt{\copy0\hss}\vskip-.5cm\hbox to 0pt{\copy1\hss}\vss}
\endgroup

%% The argument should be a number.  If it's 0, the middle crosshairs are left out.  Otherwise,
%% they're printed.
%% !! TODO:  Refine this macro.  For example, I could add arguments for exact placement.
%% LDF 2012.06.17.

\def\xhairs#1{\begingroup
\offinterlineskip
\hbox to 0pt{\vbox to 0pt{\vskip.5cm\copy\crosshairbox\vss}\hss}%
\hbox to 0pt{\hskip\hsize\hskip-.75cm\vbox to 0pt{\vskip.5cm\copy\crosshairbox\vss}\hss}%
\ifnum#1=0
\else
\hbox to 0pt{\vbox to 0pt{\vskip.5\vsize\copy\crosshairbox\vss}\hss}%
\hbox to 0pt{\hskip\hsize\hskip-.75cm\vbox to 0pt{\vskip.5\vsize\copy\crosshairbox\vss}\hss}%
\fi
\hbox to 0pt{\vbox to 0pt{\vskip\vsize\vskip.25cm\copy\crosshairbox\vss}\hss}%
\hbox to 0pt{\hskip\hsize\hskip-.75cm\vbox to 0pt{\vskip\vsize\vskip.25cm\copy\crosshairbox\vss}\hss}%
\endgroup}

%% ** (2) Page 1

\vbox to \vsize{\xhairs{1}\writetocentry{chapter}{Pyramids with Regular Polygon Bases}%
\writetocentry{section}{Non-Truncated}%
\centerline{{\largebx Pyramids with Regular Polygon Bases}}\vskip\baselineskip
\centerline{{\large Non-Truncated}}\vskip\baselineskip
%\centerline{\epsffile{bldelem3.1}}\vskip\baselineskip
\setbox0=\hbox{\epsffile{bldelem3.1001}}%
\setbox1=\hbox to \wd0{\hfil\epsffile{bldelem3.3001}\hfil}%
\setbox2=\vtop{\box0\vskip.5cm\box1}%
\setbox3=\hbox{\epsffile{bldelem3.2001}}%
\setbox4=\hbox to \wd3{\hfil\epsffile{bldelem3.4001}\hfil}%
\setbox5=\vtop{\box3\vskip.5cm\box4}%
\line{\box2\hskip-1cm\lower2cm\box5\hss}\vss}

%% ** (2) Page 2

\vbox to \vsize{\xhairs{1}%
\writetocentry{section}{Truncated}%
\centerline{{\large Truncated Pyramids}}\vskip\baselineskip
%\centerline{\epsffile{bldelem3.2}}\vskip\baselineskip
\setbox0=\hbox{\epsffile{bldelem3.1002}}%
\setbox1=\hbox to \wd0{\hfil\epsffile{bldelem3.3002}\hfil}%
\setbox2=\vtop{\box0\vskip.5cm\box1}%
\setbox3=\hbox{\epsffile{bldelem3.2002}}%
\setbox4=\hbox to \wd3{\hfil\epsffile{bldelem3.4002}\hfil}%
\setbox5=\vtop{\box3\vskip.5cm\box4}%
\line{\hskip1cm\box2\hskip-1cm\lower2.5cm\box5\hss}\vss}


%% ** (2) Page 3

\vbox to \vsize{\xhairs{1}%
\writetocentry{section}{Obelisks}%
\centerline{{\large Obelisks}}\vskip\baselineskip
%\centerline{\epsffile{bldelem3.3}}\vskip\baselineskip
\setbox0=\hbox{\epsffile{bldelem3.1003}}%
\setbox1=\hbox to \wd0{\hfil\epsffile{bldelem3.3003}\hfil}%
\setbox2=\vtop{\box0\vskip.5cm\box1}%
\setbox3=\hbox{\epsffile{bldelem3.2003}}%
\setbox4=\hbox to \wd3{\hfil\epsffile{bldelem3.4003}\hfil}%
\setbox5=\vtop{\box3\vskip.5cm\box4}%
\line{\box2\hskip-1cm\lower2.5cm\box5\hss}\vss}


%% *** (3) End here

\bye



%% * (1) Local variables for Emacs.

%% Local Variables:
%% mode:TeX
%% eval:(local-set-key [C-kp-add] 'vc-diff) 
%% eval:(local-set-key "\"" 'self-insert-command)
%% eval:(outline-minor-mode t)
%% eval:(read-abbrev-file abbrev-file-name)
%% abbrev-mode:t
%% eval:(set-register ?c "bldelem3.ldf")
%% eval:(set-register ?, "bldelem3.lmc")
%% eval:(set-register ?. "bldelem3.txt")
%% outline-regexp:"%% [*\f]+"
%% End:

