emath saloon (Read Only)

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

スレッド

└◇643:
球の描画(その2) [lovesugar] 04/24 08:07

 └◇644:Re:球の描画(その2) [田中徹] 04/24 10:16
  └◇645:Re[2]:球の描画(その2) [lovesugar] 04/24 15:14
   └◇646:Re[3]:球の描画(その2) [田中徹] 04/24 18:00
    └◇647:Re[4]:球の描画(その2) [lovesugar] 04/24 19:53
     └◇648:Re[5]:球の描画(その2) [田中徹] 04/24 21:49
      └◇649:Re[6]:球の描画(その2) [lovesugar] 04/24 21:58
       └◇650:Re[7]:球の描画(その2) [田中徹] 04/24 22:40
        └◇651:Re[8]:球の描画(その2) [lovesugar] 04/24 23:50<-last


643● 球の描画(その2)[ lovesugar ] 2008 04/24 08:07
リンクから田中徹様の「ギャラリー」を拝見させていただきました.
その中にある「球の描画(その2)」の書き方が気になりました.
どのようなソースになっているか知りたいのですが
教えていただけないでしょうか?
他にも「パスカルの三角形」など参考にさせていただきたいのが
たくさんあります.

すいませんがよろしくお願いします.
スレッド一覧


644● Re:球の描画(その2)[ 田中徹 ] 2008 04/24 10:16
> リンクから「ギャラリー」を拝見させていただきました.

なかなか tDBさん作 と重複しないように作ろうとすると
何十年もかかりそうで、更新をサボっています。Orz.

> その中にある「球の描画(その2)」の書き方が気になりました.
> どのようなソースになっているか知りたいのですが
> 教えていただけないでしょうか?

この saloon No.326 球擬きというマクロにしてあります。
現在では [debug] オプションでなく [remake] オプションがよいかもしれません。
No.323 の話題のため複数個描画しているので時間がかかります。
適当に間引いて確認してください。

また No.326 にも書いてありますが、
グラデーションを確認するには
> Ps のお約束事で恐縮ですが
> dviout では荒く見えるので PDF または PS を作成して骨を拾ってやってください。
と ps ファイルの変換も必要です。

> 他にも「パスカルの三角形」など参考にさせていただきたいのが
> たくさんあります.

次のソースは tDB さんの short-pascal.tex (出所は失念) です。

斜交座標、ループ処理、二項係数関数と
興味深いものが(さりげなく)ちりばめられています。

\documentclass[a4j]{jarticle}
\usepackage{emathPa}
\usepackage{showexample}

\makeatletter
\def\NikouKeisuu#1#2#3{%
% #1 個から #2 個を取り出す場合の数を #3 の制御綴りに返す.
\IMul{#2}{2}\NK@tmp
\ifnum\NK@tmp >#1\relax\ISub{#1}{#2}\NK@k\NikouKeisuu{#1}{\NK@k}#3\relax
\else
\Cfor{\edef#3{1}\edef\NK@n{#1}\edef\NK@i{0}}{\NK@i<#2}{\Decr\NK@n}\do{%
\Incr\NK@i
\IMul{#3}\NK@n#3\relax
\IDiv{#3}\NK@i#3\relax
}%
\fi
}
%
\def\PascalTriangle#1{%
\Div{#1}{2}\PT@x
\Mul{#1}{.867}\PT@y
\begin{zahyou*}[Ueyohaku=1ex,Sitayohaku=1ex](-\PT@x,\PT@y)(-\PT@y,0)
\Rdef(1,-120)\PT@Ex
\Rdef(1,-60)\PT@Ey
\def\O@@{(0,0)}%
\IAdd{#1}{1}\PT@NN
\Put\O@@{%
\begin{azahyou}\PT@Ex\PT@Ey
% メッシュ
\Ifor\PT@i{0}{\PT@NN}\Do{%
\ISub{#1}{\PT@i}\PT@j
\azDrawline{(0,\PT@i)(\PT@j,\PT@i)}%
\azDrawline{(\PT@i,0)(\PT@i,\PT@j)}%
}%
% 二項係数の配置
\Ifor\PT@n{1}{\PT@NN}\Do{%
\IAdd\PT@n{1}\PT@np
\Ifor\PT@k{0}\PT@np\Do{%
\ISub\PT@n\PT@k\PT@x
\NikouKeisuu{\PT@n}{\PT@k}\PT@nCk
\azPut{(\PT@x,\PT@k)}(0,0)[c]{%
\colorbox{white}{\PT@nCk}}%
}%
}%
\end{azahyou}}%
\end{zahyou*}}
\makeatother

\begin{document}
\begin{boxnote}
\begin{verbatim}
\def\PascalTriangle#1{%
\Div{#1}{2}\PT@x
\Mul{#1}{.867}\PT@y
\begin{zahyou*}[Ueyohaku=1ex,Sitayohaku=1ex](-\PT@x,\PT@y)(-\PT@y,0)
\Rdef(1,-120)\PT@Ex
\Rdef(1,-60)\PT@Ey
\def\O@@{(0,0)}%
\IAdd{#1}{1}\PT@NN
\Put\O@@{%
\begin{azahyou}\PT@Ex\PT@Ey
% メッシュ
\Ifor\PT@i{0}{\PT@NN}\Do{%
\ISub{#1}{\PT@i}\PT@j
\azDrawline{(0,\PT@i)(\PT@j,\PT@i)}%
\azDrawline{(\PT@i,0)(\PT@i,\PT@j)}%
}%
% 二項係数の配置
\Ifor\PT@n{1}{\PT@NN}\Do{%
\IAdd\PT@n{1}\PT@np
\Ifor\PT@k{0}\PT@np\Do{%
\ISub\PT@n\PT@k\PT@x
\NikouKeisuu{\PT@n}{\PT@k}\PT@nCk
\azPut{(\PT@x,\PT@k)}(0,0)[c]{%
\colorbox{white}{\PT@nCk}}%
}%
}%
\end{azahyou}}%
\end{zahyou*}}
\end{verbatim}
\end{boxnote}

$n=7$として動かしてみます.

\begin{showEx}(.34,.6){n=7}
\unitlength=10mm\relax
\PascalTriangle{7}
\end{showEx}

\verb+\PascalTriangle+は,\textsf{zahyou, azahyou}環境を用いています.
設計では,\verb+\unitlength=10mm+としていましたが,\verb+\PascalTriangle+
内では\verb+\unitlength+はいじっていません.
このマクロを呼ぶ前に設定する必要があります.
小さめにして,文字サイズも小さくしてみます.

\begin{showEx}(.34,.6){n=10}
\unitlength=8mm\relax
\footnotesize
\PascalTriangle{10}
\end{showEx}
\end{document}
スレッド一覧


645● Re[2]:球の描画(その2)[ lovesugar ] 2008 04/24 15:14
田中徹 様

どうもありがとうございます.
今まで手書きで「パスカルの三角形」を書いていたので
やっときれいなプリントが作れるようになります.

「球擬き」を使って三角柱の中に球を描画する場合,
球の位置はどのように決められたのでしょうか?

スレッド一覧


646● Re[3]:球の描画(その2)[ 田中徹 ] 2008 04/24 18:00
> どうもありがとうございます.
> 今まで手書きで「パスカルの三角形」を書いていたので
> やっときれいなプリントが作れるようになります.

余談になりますが二項係数を上から順でなく
直接並べる方法をこの冬に会得しました。

> 「球擬き」を使って三角柱の中に球を描画する場合,
> 球の位置はどのように決められたのでしょうか?

× 三角柱
○ 四角柱(更に立方体)
平面で描いて**適当に**2つの頂点の中点にしているだけです。
スレッド一覧


647● Re[4]:球の描画(その2)[ lovesugar ] 2008 04/24 19:53
田中徹 様

いろいろとありがとうございます.
三角柱と書いたのは「ギャラリー」にある「球の描画(その2)」を
指していました.
内接球をうまく描けなくてemathでやろうと思っていました.
時間をかけてやってみます.
スレッド一覧


648● Re[5]:球の描画(その2)[ 田中徹 ] 2008 04/24 21:49
> 内接球をうまく描けなくてemathでやろうと思っていました.
> 時間をかけてやってみます.

> 三角柱と書いたのは「ギャラリー」にある「球の描画(その2)」を
> 指していました.

lovesugar さん
当方の勘違いで大変不快な思いをされたようですみませんでした。

完全に(その3)と思いこんでの発言でした。

(その2)のソースが現在手元にないので
記憶をたどってみると
1.球の中心は試行錯誤で決める
 すなわち、最初に円を描いて、その後バランスのよい三角形をみつけ
 点線や実線を描き立体らしく見せる。
2.円を白塗りで描画する。
 いわゆる隠線処理になります。
3.円を描き円の内部を薄く網掛けする。
4.先の円の半径より少し小さい半径の太い円弧を「らしく」描く。
5.前後関係を「らしく」見せるため
 三角形上面手前の一辺を少し太い白い線で描く。(2. と同様な理由)
6.先の一辺を通常の太さの実線で描く。

以上です。

これからソースを探してみますが
2代前のパソコンで作成したものなので
見つからなかったら申し訳ありません。

今夜中にソースの顛末を書き込みたいと思います。

よろしくお願いいたします。

# emathWiki にも tDB さんが空間図形で球体描画を紹介されています。
スレッド一覧


649● Re[6]:球の描画(その2)[ lovesugar ] 2008 04/24 21:58
田中徹 様

私の書き方が悪くこちらこそ失礼しました.
文章はなんとか様になるようになったのですが
作図はまだまだです.
今後もよろしくお願いします.
スレッド一覧


650● Re[7]:球の描画(その2)[ 田中徹 ] 2008 04/24 22:40
愛用の jgrep2 を用い enko で検索したら HenKo を含め 990個マッチし苦笑い。
結局 \En* で見つけました。 

> 4.先の円の半径より少し小さい半径の太い円弧を「らしく」描く。
この発言は誤りでした。
白い楕円を描き、更に楕円をかぶせるという涙ぐましいことをやっていました。
\Put\C(0,0.5\unitlength){\Daenko*[\濃度]{0.4}{0.3}{0}{180}}%
をコメントアウトするとよくわかると思います。

\A , \B , \H を良い感じになるまで適当にいじってください。

このツリーでの私の発言は終わりにします。

今後ともよろしくお願いいたします。>皆様

\documentclass{jarticle}
\usepackage{emathP}
\begin{document}%
\begin{zahyou*}[ul=5mm](-5,5)(-5,5)%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\A{(-3,-2)}%
\def\B{(3,-1)}%
\def\C{(0,0)}%
\def\H{(0,1.8)}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\濃度{0.5}%
\def\半径{1}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Addvec\A\H\D%
\Addvec\B\H\E%
\Addvec\C\H\F%
\Drawlines{\A\B}%
\Dashline[25]{0.1}{\A\C}%
\Dashline[20]{0.1}{\B\C}%
\Dashline[10]{0.1}{\C\F}%
\En*[0]\C\半径%
\En*[\濃度]\C\半径%
\Put\C(0,0.7\unitlength){\Daenko*[0]{0.4}{0.2}{0}{180}}%
\Put\C(0,0.5\unitlength){\Daenko*[\濃度]{0.4}{0.3}{0}{180}}%
{%
\Thicklines%
\begin{color}{white}%
\Drawlines{\D\E\F\D}%
\end{color}%
}%
\Drawlines{\D\E\F\D}%
\Drawlines{\A\D}%
\Drawlines{\B\E}%
\end{zahyou*}%
\end{document}
スレッド一覧


651● Re[8]:球の描画(その2)[ lovesugar ] 2008 04/24 23:50
田中徹 様

ご迷惑をおかけしました.
とても助かります.

ありがとうございました.
スレッド一覧

CGIROOM