発言者: 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