emath BBS

新規発言一覧最新記事過去一覧検索HOME

No.3299  解題(3)
発言者: tDB
発言日: 2005 06/24 15:52
発言元: ntchba100244.chba.nt.ftth.ppp.infoweb.ne.jp
続いて「見えない」場合です。

% --- kaidai3.tex -----------------------------------
\documentclass[a4j]{jarticle}
\usepackage{emathPk}
\usepackage{emathPs}
\usepackage{showProg}
\usepackage[margin=20mm]{geometry}

\setcounter{program}{2}%

\begin{document}
サッカーボールを描画したソースリストの解題(3)です。

このリストのうち,はじめの1〜30行は,正二十面体を描画する部分で
解題(1)で取り上げました。
また,31〜46行は,解題(2)で解説しました。

「切頭」部の描画は頂点によって異なります。
前回の頂点1の「切頭」断面は全部「見えている」状態ですが,
頂点4の「切頭」断面(次の図の緑色の正五角形)は,陰に隠れて「見えない」状態です。
見えるのは,緑色の実線部分の「くの字型」折れ線だけです。

「見える」断面を描画するサブルーティンが,
前回解説した \verb+\settou#1#2#3#4#5#6+でしたが,
「見えない」断面を描画するものを\verb+\settouB#1#2#3#4#5#6+とします。

\begin{jquote}
\begin{verbatim}
48:  \def\settouB#1#2#3#4#5#6{%
49:    \Sub{1}\settouhi\settouhii
50:    \edef\stA{\csname A\romannumeral #1\endcsname}%
51:    \iiiBunten\stA{\csname A\romannumeral #2\endcsname}\settouhi\settouhii\stB
52:    \iiiBunten\stA{\csname A\romannumeral #3\endcsname}\settouhi\settouhii\stC
53:    \iiiBunten\stA{\csname A\romannumeral #4\endcsname}\settouhi\settouhii\stD
54:    \iiiBunten\stA{\csname A\romannumeral #5\endcsname}\settouhi\settouhii\stE
55:    \iiiBunten\stA{\csname A\romannumeral #6\endcsname}\settouhi\settouhii\stF
56:    \begin{EMpscolor}{green}
57:      \iiiDrawline{\stB\stC\stD}
58:      \setdash{.05,.05}
59:      \iiiDrawline{\stD\stE\stF\stB}
60:    \end{EMpscolor}
61:  }%
\end{verbatim}
\end{jquote}

ほとんど\verb+settou+と同じですが,見えない部分を破線描画するところが異なります。
ただし,実装する段階では,「見えない」部分は描画する必要がなくなりますので,
\verb+\settouB#1#2#3#4+と,引数の個数が減ることになるでしょう。

\begin{footnotesize}
\begin{showProg}(1,.6667){切頭(2)}{list}
\Rdef(1,3)\Ex%    x軸正方向の単位ベクトル
\Rdef(.2,135)\Ey% y軸正方向の単位ベクトル
\Rdef(1,90)\Ez%   z軸正方向の単位ベクトル
\begin{psZahyou*}[debug,ul=20mm,Ex=\Ex,Ey=\Ey,Ez=\Ez](-1.8,1.8)(-1.7,1.7)(-2,2)
  \calcval{sqrt(5+sqrt(5))/(sqrt(2))}\R
  \calcval{1/(sin($pi/5))}\r
  \calcval{sqrt((\R)*(\R)-(\r)*(\r))}\h
  \iiitenretu{[1]Ai(0,0,\R)n;[2]Aii(\r,0,\h)e}
  \iiitenretu{[12]Axii(0,0,-\R)s;[7]Avii(-\r,0,-\h)w}
  \zRotvec\Aii{72}\Aiii
  \iiiPut\Aiii[s]{3}
  \zRotvec\Aiii{72}\Aiv\iiiPut\Aiv[w]{4}
  \zRotvec\Aiv{72}\Av\iiiPut\Av[n]{5}
  \zRotvec\Av{72}\Avi\iiiPut\Avi[n]{6}
  \zRotvec\Avii{72}\Aviii\iiiPut\Aviii[sw]{8}
  \zRotvec\Aviii{72}\Aix\iiiPut\Aix[se]{9}
  \zRotvec\Aix{72}\Ax\iiiPut\Ax[s]{10}
  \zRotvec\Ax{72}\Axi\iiiPut\Axi[s]{11}
  \iiiDrawline{\Aiv\Av\Avi\Aii}
  \iiiDrawline{\Avii\Aviii\Aix}
  \iiiDrawlines{\Ai\Aii;\Ai\Aiv;\Ai\Av;\Ai\Avi}
  \iiiDrawlines{\Axii\Avii;\Axii\Aviii;\Axii\Aix}
  \iiiDrawlines{\Aiv\Avii\Av;\Av\Aviii\Avi;\Avi\Aix\Aii}
\gsave\setdash{.05,.05}
  \iiiDrawline{\Aii\Aiii\Aiv}
  \iiiDrawline{\Aix\Ax\Axi\Avii}
  \iiiDrawlines{\Aii\Ax\Aiii;\Aiii\Axi\Aiv}
  \iiiDrawlines{\Ai\Aiii;\Axii\Ax;\Axii\Axi}
\grestore
%
  \def\settouhi{.33333}
  \def\settou#1#2#3#4#5#6{%
    \Sub{1}\settouhi\settouhii
    \edef\stA{\csname A\romannumeral #1\endcsname}%
    \iiiBunten\stA{\csname A\romannumeral #2\endcsname}\settouhi\settouhii\stB
    \iiiBunten\stA{\csname A\romannumeral #3\endcsname}\settouhi\settouhii\stC
    \iiiBunten\stA{\csname A\romannumeral #4\endcsname}\settouhi\settouhii\stD
    \iiiBunten\stA{\csname A\romannumeral #5\endcsname}\settouhi\settouhii\stE
    \iiiBunten\stA{\csname A\romannumeral #6\endcsname}\settouhi\settouhii\stF
    \begin{EMpscolor}{red}
      \iiiTakakkei{\stB\stC\stC\stD\stE\stF}
    \end{EMpscolor}
  }%
%
  \setlinejoin{2}
  \settou{1}{2}{3}{4}{5}{6}%
%
  \def\settouB#1#2#3#4#5#6{%
    \Sub{1}\settouhi\settouhii
    \edef\stA{\csname A\romannumeral #1\endcsname}%
    \iiiBunten\stA{\csname A\romannumeral #2\endcsname}\settouhi\settouhii\stB
    \iiiBunten\stA{\csname A\romannumeral #3\endcsname}\settouhi\settouhii\stC
    \iiiBunten\stA{\csname A\romannumeral #4\endcsname}\settouhi\settouhii\stD
    \iiiBunten\stA{\csname A\romannumeral #5\endcsname}\settouhi\settouhii\stE
    \iiiBunten\stA{\csname A\romannumeral #6\endcsname}\settouhi\settouhii\stF
    \begin{EMpscolor}{green}
      \iiiDrawline{\stB\stC\stD}
      \setdash{.05,.05}
      \iiiDrawline{\stD\stE\stF\stB}
    \end{EMpscolor}
  }%
%
  \settouB{4}{1}{5}{7}{11}{3}
\end{psZahyou*}
\end{showProg}
\end{footnotesize}
\end{document}

▼関連発言

3284:サッカーボール [tDB] 06/22 09:27
 ├3286:解題(1) [tDB] 06/22 14:47
 │└3291:Re:解題(1) [田中徹] 06/22 21:01
 │ └3292:program.sty [tDB] 06/22 21:34
 ├3293:サッカーボール(修正版) [tDB] 06/23 11:13
 ├3294:解題(2) [tDB] 06/23 13:38
 └3299:解題(3) [tDB] 06/24 15:52<-last

Pass 保存


CGIROOM