1 / 26
Date:Thu, 27 Sep 2007 18:52:31 +0900

Date:Thu, 04 Oct 2007 19:54:41 +0900（訂正と補足；その１）

Date:Fri, 07 Aug 2009 17:00:07 +0900（訂正と補足；その２）

From:Tsukasa NAKANO

To:"Y.TESHIMA", tomatsuri atsushi

Cc:

Akiko TANAKA

Subject: globe
Subject: globe-2（訂正と補足；その１）
Subject: stl_globe.tar-was-modified（訂正と補足；その２）てしまさま、
地質調査情報センターのなかのです。先日の会合の時にあなたの計算機で使えなかったアニメーション作成用のものを含めた、地球儀作成用のプログラム群の説明を書きます。
株式会社 Tnet 戸祭さま、
産業技術総合研究所の中野 司です。先日転送した「地球儀」関連のプログラムなどの説明の E-mails
ですが、手嶋さんに送った後にそれらで説明している書庫ファイル
http://www-bl20.spring8.or.jp/~sp8ct/tmp/stl_globe.tarの内容を変えたことを思い出しました。具体的には、「地球儀」のデータ作成などの処理のデモ用のC-shell scripts やバッチファイル群を入れたディレクトリ demo_csh/ と demo_bat/ の構成およびファイル名の命名則を変更し、さらに、それらの中に以前にはなかった PLY/ZCP 形式のデータを作成するデモ用の C-shell scripts やバッチファイル群を付加しました。
(1) ３次元物体像の造形用プログラム群の概要
地球儀や立体地質図、そして、画像から抽出した物体像などの３次元像の「造形」をぼくは以下の２種類のプログラムで行っています：[1] ３次元像の CAD データ（STL 形式と PLY/ZCP 形式データ）を作成するためのプログラム群。
[2] そのデータの編集・加工や３次元像の鳥瞰図描画など（GIF 形式の動画の作成を含む）を行う
ためのプログラム群。
以前にあなたに差し上げたものは [1] で、これは後述の書庫ファイル stl_globe.tar にも入っています。
また、[2] のうちの主要なものは下記の WEB ページで公表しています（地球儀の動画などを公表する場
合にはこのページを引用して下さい；そこには引用法も書いてあります）：
http://www.gsj.jp/GDB/openfile/files/no0448/0448index.html
https://www.gsj.jp/researches/openfile/openfile2006/openfile0448.html

2 / 26
なお、以前に紹介した立体地質図の CAD（STL 形式）データを作るものは地球儀用のものとは別の [1] のプログラム群です。また、地球などの地形高度（標高値）の球面調和関数展開に関するものは地球儀用の [1] のプログラム群のヘルパー（[0]？のプログラム群）です。これらに関しても今後説明したい（早く公表しないといけない）と思っています。
(2) プログラムのインストール
まず、以下の２個の書庫ファイルをダウンロードして下さい：[a] http://www.gsj.jp/GDB/openfile/files/no0448/stl.tar
http://www.gsj.jp/data/openfile/no0448/stl.tar[b] http://www-bl20.spring8.or.jp/~sp8ct/tmp/stl.tar
http://www-bl20.spring8.or.jp/~sp8ct/tmp/stl.zip[a] は前記の WEB ページからダウンロードできます。しかし、その内容は古いので、最新版のプログラムなどが入っている [b] の 2 個のいずれか（これらは同じ内容です）をお使い下さい。
なお、前記の WEB ページに置いてある説明書 http://www.gsj.jp/data/openfile/no0448/stl.pdfの内容も古いので、最新版 http://www-bl20.spring8.or.jp/~sp8ct/tmp/stl.pdf をご覧下さい。
http://www-bl20.spring8.or.jp/~sp8ct/tmp/stl_globe.tar
http://www-bl20.spring8.or.jp/~sp8ct/tmp/stl_globe.zip
これら（どちらも同じ内容です）は以前にコピーしてもらった書庫ファイルですが、念のためにいずれかを再度ダウンロードする方が良いです。
以下のようにして、これら２個の書庫ファイルを自分のハードディスクに展開して下さい（以下では最上部のディレクトリ名を "stl/" としていますが、実際にはこれは何でもかまいません；ここでは説明の都合上、それを "stl/" としています）：[a] まず、適当な解凍プログラムを使って、書庫ファイル stl.tar の内容をハードディスクに展開する。ただし、そのプログラムがディレクトリ stl/ を自動的に作成してくれなかった場合は自分でそれを作成し、stl.tar から展開された４個のディレクトリ（src/、bin/、doc/、exe/）をそこに移動せねばならない。
[b] 次に、解凍プログラムで stl_globe.tar を展開し、その中のディレクトリ globe/ をディレクトリ
stl/ の下に移動する。
この結果、以下の構成のディレクトリなどが得られるハズです：

3 / 26
stl/ ← これは自分で作らないといけないかもしれない。
# 以下は書庫ファイル stl.tar を展開したもの。
src/← [2] のプログラムのソースファイルが入っている。

bin/← 最初は空。[2] の UNIX 用実行ファイルを入れる。

doc/← [2] のプログラムの説明書が入っている。

exe/← [2] の Windows 用実行ファイルが入っている。

# 以下は書庫ファイル stl_globe.tar を展開したもの。
globe/← stl_globe.tar に含まれている。

test/← 球面の近似法などの説明用の図など。

src/← [1] のプログラムのソースファイル。

bin/← 最初は空。[1] の UNIX 用実行ファイルを入れる。

exe/← [1] の Windows 用実行ファイル。

dem/← 地球などの数値地形（DEM）データ。

cm/← 地球儀などの表面にはるデータ。

demo_csh/earth/← 地球儀などの造形用の C-shell scripts が入っている。

mars/← 火星儀などの造形用の C-shell scripts が入っている。

lunar/← 月球儀などの造形用の C-shell scripts が入っている。

venus/← 金星儀などの造形用の C-shell scripts が入っている。

galilei/ ← 木星のガリレオ衛星の造形用の C-shell scripts が入っている。
demo_bat/earth/← 地球儀などの造形用のバッチファイル群が入っている。

mars/← 火星儀などの造形用のバッチファイル群が入っている。

lunar/← 月球儀などの造形用のバッチファイル群が入っている。

venus/← 金星儀などの造形用のバッチファイル群が入っている。

galilei/ ← 木星のガリレオ衛星の造形用のバッチファイル群が入っている。
*.*← globe/ の下には他にもいくつかのファイルがある（後述）。

Windows で上記の demo_bat/ の中のデモ用のバッチファイルを走らせるだけなら、これで準備は終わりです。Windows（コマンドプロンプト）の任意の場所からインストールした実行ファイルを起動した
い場合には、ディレクトリ stl/exe/ と stl/globe/exe/ の両方を実行パスに登録するか、これらのディレク
トリ中の実行ファイルすべてを実行パスに登録済みの適当なディレクトリにコピーして下さい。
UNIX（Linux や Cygwin を含む）でプログラム群を使う場合には、以下のようにしてソースファイルのコンパイルを行う必要があります：
書庫ファイル stl.tar の中のプログラムのコンパイル
cd 何とかかんとか/stl/src
makeinstall4 / 26
書庫ファイル stl_globe.tar の中のプログラムのコンパイル
cd 何とかかんとか/stl/globe/src
makeinstall

ただし、これらの処理には GNU-C コンパイラ（gcc）などのプログラム開発ツール群が必要です（その詳細はソースファイル用のディレクトリに置いてあるファイル Makefile をご覧下さい）。これらが完了
すると、stl/bin/ および stl/globe/bin/ に実行ファイルがインストールされているハズです。
UNIX でも Windows の場合と同様に、stl/globe/demo_csh/ の中のデモ用の C-shell scripts を走らせる
だけなら、これで準備は完了です。そうでない場合は、stl/bin/ と stl/globe/bin/ の両方を実行パスに登録するか、これらの中の実行ファイルすべてを実行パスに登録済みの適当なディレクトリにコピーしておけば、ここでインストールしたプログラムのそれぞれを任意の場所から起動することができます。
(3) デモ用のバッチファイルもしくは C-shell scripts
個々のプログラムの説明の前に、まず、以下のようにしてカラーの地球儀が回転するアニメーション（GIF
形式の動画）のファイル globe_C.gif を作ってみましょう：
Windows の場合[1] まず、Explorer などでディレクトリ stl/globe/demo_bat/earth/ に移動し、バッチファイル
globe_C_stl.bat を選択して実行する。これにより自動的に開いたコマンドプロンプトの上でカラーの地球儀の STL データファイル globe_C.stl を作るハズなので、コマンドプロン
プトが閉じた後にその有無を確認して下さい。
[2] その後、同じディレクトリにある globe_C_gif.bat を選択し実行する。こちらは少し時間がかかるが、コマンドプロンプトの上でカラーの地球儀が回転する動画のファイル
globe_C.gif が作成される。Internet Explorer などを使えばこの動画のファイルを（作成の最中でも）画面表示できるハズである。
Linux や Cygwin などの UNIX 系 OS の場合[1] 端末から以下を入力して stl/globe/demo_csh/earth/globe_C_stl.csh を起動し、STL データ
ファイル globe_C.stl を作成する：
cd 何とかかんとか/stl/globe/demo_csh/earth
globe_C_stl.csh[2] その後、端末から以下を入力して同じディレクトリにある globe_C_gif.csh を起動し、動画のファイル globe_C.gif を作成する：
globe_C_gif.csh
firefox（Mozilla FireFox）や animate（ImageMagick）などを使えばこの動画のファイル
globe_C.gif を X-window で表示できるハズである。

5 / 26
ディレクトリ stl/globe/demo_bat/ と stl/globe/demo_csh/ の下には地球に対するもの（earth/）以外にも火星（mars/）、月（lunar/）、金星（venus/）および木星のガリレオ衛星（galilei/）に対する合計 5 個のディレクトリがあり、これらそれぞれの下には３次元像を造形し描画するための多数（ガリレオ衛星用のものは８個づつ、それ以外は 20 個づつ）のバッチファイルと C-shell scripts が格納されています。
上記の実行例からわかるように、地球儀などの３次元像の鳥瞰図（動画）は先に概略を説明した２種類のプログラム群に応じた２段階の処理過程で作成するようになっており、それらの各過程で使用する
stl/globe/demo_bat/ や stl/globe/demo_csh/ の下の天体名ごとのディレクトリに格納されているバッチ
ファイルや C-shell scripts も以下のようなファイル名の命名則に従っています：[1] STL 形式データファイルを作成するもの：*_stl.bat もしくは *_stl.csh[2] GIF 形式の動画ファイルを作成するもの：*_gif.bat もしくは *_gif.csh
これら以外のファイル名を構成している文字列もデモ用のバッチファイルや C-shell scripts の処理内容を表しています。上記の文字列（"stl" もしくは "gif"）と拡張子（".bat" もしくは ".csh"）以外の、"_" で区切られているファイル名を構成している２もしくは３個の文字列とそのファイルの処理内容との対応関係は以下の通りです：
ディレクトリ galilei/ の下の io_*.*、europa_*.*、ganymede_*.* および callisto_*.*
これらのファイルの命名則は他のディレクトリの下にあるものとは異なります。これらはそれ
ぞれ NASA の Voyger spacecraft 1 and 2 が撮影した木星のガリレオ衛星（イオ、エウロパ、
ガニメデおよびカリスト）の画像を表面に貼り付けただけの球面のデータを処理します。
earth/（地球）、mars/（火星）、lunar/（月）および venus/（金星）の下のファイル“_” で区切られた最初の文字列が "globe" もしくは "shell" のファイル
文字列 "globe" で始まるものは内部が詰まった地球儀などの像を処理します。また、"shell"のものは南極に設けた三角形の「出入口」を通して内外がつながっている球殻状の像を作ります。後者のデータは Z corporation 社（http://www.zcorp.com）の３次元プリンタで造形する場合に適しています。なお、このような「出入口」の大きさと球殻の厚さはデモ用のファイルが作るものから変更可能です。ただし、デモ用のファイルから起動するプログ
ラム shell_[i,o,t]h は常に南極に「出入口」を作ります。これらのプログラムは STL 形式の
データファイルを作りますが、そうではなく PLY/ZCP 形式のファイルを作る新しいプログ
ラム shell_zcp_[i,o,t]h を使えば、任意の位置に「出入口」を設けることができます。
最初の文字列が “north”、”south”、”east”、”west”、”near” もしくは “far” のファイル
これらはそれぞれ北半球、南半球、東半球、西半球、地球に近い側もしくは遠い側の半球の STL データを作成するバッチファイル（*_stl.bat）や C-shell scripts（*_stl.csh）です。
ただし、これらから動画を作成する *_gif.bat と *_gif.csh は用意していません。
２番目の文字列（１文字のみ）が “B” もしくは "C" のファイル
文字 “B” のファイルは白黒の、また、"C" が含まれるファイルは地形高度を色で表した「模様」を貼り付けたカラーの地球儀などの像を処理します。

6 / 26
3 番目の文字列が（前記の “stl” でも “gif” でもない）”zcp” のファイル
これらは STL 形式ではなく、前記の Z corporation 社製の３次元プリンタで造形するのに適した PLY/ZCP 形式のデータファイルを作成します。
木星のガリレオ衛星以外の天体儀はすべて、地形高度（標高値）が以下の倍率だけ強調されています：
地球（earth/）50

火星（mars/）

25

月（lunar/）12.5

金星（venus/）50

ただし、ぼくが C 言語で書いた「地球儀」などの STL もしくは PLY/ZCP 形式データを作るプログラム（例えば、globe_ih）ではこれらの強調率の値をそのまま指定できません。これを対象天体の半径の値に繰り込んで指定しています。つまり、例えば地球の場合、前記のディレクトリ globe/ の直下にあるテキストファイル earth.tbl に書き込まれている実際の半径の値（6378000；この単位は m）と標高値の強調率（50 倍）から計算した値 6378000 / 50 = 127560 を造形する球体の半径の値として指定しています。
ガリレオ衛星用のものと（文字 "C" が含まれたファイルが作る）カラーの地球儀などの表面には実際の衛星表面の画像や地形高度に応じて色づけをした画像を貼り付けています。このような地形高度の強調率や表面色などは後述するプログラム群に与えるデータ（画像）やパラメータの指定を変えれば変更可能です。また、動画のフレーム数やそれぞれの鳥瞰図の視線方向などについても同様です。
疲れたので今日のところはここまでにします。
Date:

Wed, 10 Oct 2007 10:07:03 +0900

From:

Tsukasa NAKANO

To:"Y.TESHIMA"Cc:

Akiko TANAKA

Subject: mars-posterてしまさま、
なかのです。大昔に学会で発表した火星の表面の画像と地形データに関するポスターを発掘したので、それを以下に添付します。globe のプログラム群で「火星儀」の作成に使っている dem/mars_DTM.tif
や cm/mars_DTM.* はこのポスターで紹介している空間分解能が 4 dpd（dot per degree）の数値地形モ
デル（DTM）のデータファイルから作りました。とり急ぎ、

7 / 26

8 / 26
Date:

Mon, 03 Dec 2007 09:15:02 +0900

From:

Tsukasa NAKANO

To:"Y.TESHIMA"Cc:

Akiko TANAKA

Subject: globe-3てしまさま、
地質調査情報センターのなかのです。すみません。かなり間が空いてしまいました。先日来の E-mail の続きの地球儀作成用プログラム群の説明を書きます。
まず、先日の E-mails の補足（の補足）を書きます。以前に紹介した下記の書庫ファイルにいくつかのプログラムの修正版と新しいプログラムのファイルを付け加えました（これ以上の修正・付加はしない
つもりです）：
http://www-bl20.spring8.or.jp/~sp8ct/tmp/stl_globe.tar
それから、以前の書庫ファイルには Borland-C コンパイラ（bcc32）でコンパイルした Windows 用の実
行ファイルを入れていましたが（先日の E-mails ではこれを書き忘れていました）、それらに bcc32 に起因する問題点を見つけました。
これは具体的には、C 言語の標準ライブラリの関数 atan2(x,y) を使って逆正接関数 arctan(x / y) のx = y = 0 の場合の（未定義の）値を計算した時に bcc32 が問答無用でプログラムを強制終了させてしまう実行コードを生成することです。ぼくが書いた C 言語のコードは逆正接関数が未定義の値になることに備えているので、このような問答無用の強制終了は困ります。
そこで、今回の書庫ファイルには MinGW（Minimalist GNU for Windows）の GNU-C コンパイラ（gcc）
でコンパイルし直した Windows 用の実行ファイルを入れておきました。
bcc32 と gcc が生成した実行コードに大きな違いはないはずです（gcc を使った今回のものの方が高速かもしれません）。
こういう訳なので、新しい書庫ファイルを用いて以前に説明した方法でプログラムの再インストールを行って下さい。
(4) プログラムの説明
前に書庫ファイル stl_globe.tar からインストールしたディレクトリ stl/globe/ には地球儀などの CAD
データの作成のためのプログラム群とそれに用いるデータ（主に画像）だけが入っています。これら以外の、CAD（主に STL）データを編集・加工や、そのデータから物体像の鳥瞰図の描画のための（書庫ファイル stl.tar に入っていた）プログラム群に関しては PDF ファイル stl/doc/stl.pdf の中で詳しく述べているので、ここでは説明を省略します。

9 / 26(4-1) 地球儀作成用プログラム群の概要
以下の３種類のプログラムが stl/globe/ の下に入っています：[1] 地球儀などの CAD データを作成するためのプログラム
これには球状、球殻状、半球状と半球殻状の像の CAD（STL と PLY/ZCP）データを作るプロ
グラムがあります。さらに、球と球殻の像のデータを作るプログラムのそれぞれには後述する球面の近似に用いる正多面体が異なる３種類のもの（プログラム名に含まれる文字列 "_ih"、"_oh" および "_th" で識別できる）があります。これらは具体的には以下の通りです：
globe_[i,o,t]h もしくは globe_[i,o,t]h_zcp
地球儀などの球状の像の STL もしくは PLY/ZCP データを作るためのプログラム。
shell_[i,o,t]h もしくは shell_[i,o,t]h_zcp
内部が空洞の球殻状の像の STL もしくは PLY/ZCP データを作るためのプログラム。
hss と hss_zcp
半球状の像の STL と PLY/ZCP データを作るプログラム。これらは本来は半球殻を作成するもの（hss == Hemi-Sphere Shell）であるが、起動時のパラメータ指定により内部が詰まった半球の像を作成することもできる。
[2] 近似球面の性質を知るためのプログラム、tah_[i,o,t]h
これらはテスト用のプログラムで、ぼく以外の人が使うことはないと思います。指定した３種類の正多面体を基にして球面を近似した多面体の表面を構成する三角形の面積の分布を調べるためのプログラムです。
[3] ユーティリティプログラム
地球儀などの像の表面に貼り付ける地形や色のデータを入れた TIFF 画像や、その像の
PLY/ZCP データの加工に使える以下の４個のユーティリティプログラムを用意しました：tcm
白黒やグレースケールの TIFF 画像に色情報（カラー マップ）を付け加えたりする。
trgb
カラーマップ（疑似カラー）形式の TIFF 画像をフル カラー形式のものに変換する。
zcp2vrml2
PLY/ZCP 形式のデータを ver. 2 の VRML 形式に変換する。
zcp_scale
PLY/ZCP データ中の座標値のスケール変換を行う。
(4-2) 地球儀などの CAD データの作成法
前記の[1]のプログラム群はいずれも、地球儀などの CAD データをここで説明する２段階の手順を踏んで作成するようになっています。

10 / 26
(4-2-1) 単位球を近似する多面体の構築
その第一段階は半径１の球（単位球）の形状を近似するような、三角形の面から構成される多面体の構築です。この処理では単位球面上に位置する頂点と、正三角形の面からなる下記の３個の正多面体のいずれかをその初期形状として使用します（これらの正多面体のそれぞれの展開図を PDF ファイル
stl/globe/test/[i,o,t]h.pdf に示してあります）：
正 20 面体（icosahedron；略して "ih"）正８面体（octahedron；"oh"）正４面体（tetrahedron；"th"）これらの正多面体のうちの指定したものに対して以下のような再帰的な処理を行い、その表面の三角形を細分化して近似球面を構築します：[a] 各三角形をその３辺の中点のそれぞれを新しい３個の頂点として４個の三角形に細分化する。
[b] それと同時に、これらの新しい頂点のそれぞれを単位球の中心から投影した単位球面上の点の位置に移動する。
[c] これらの三角形ごとの細分化の処理を（球の近似に十分な多面体が構築できるまで）指定した
回数だけ再帰的に繰り返す。
このような細分化処理の繰り返し回数を level と呼んでいます。level の値に０を指定すると三角形の細分化処理は行われず、もとの正多面体で単位球面を近似します。そして、０以上の任意の level を指定して構築した多面体の三角形の総数はもとの正多面体のものの 4^level 倍になります。このような０以上の
様々な level を指定して細分化した三角形が PDF ファイル stl/globe/test/triangle.pdf の各ページに、また、３種類の正多面体を初期形状とした、様々な level の多面体が stl/globe/test/[i,o,t]h.pdf のそれぞれに示されています。
注
stl/globe/test/triangle.pdf の上の各ページに示したように、細分化した三角形には前記の再帰的な手続きで取り扱った順に０から始まる番号を付けています。これらそれぞれの三角形の中央
上段の番号は 10 進数表記で下段は４進数表記です。これらの番号と細分化した三角形の配置の対応関係がわかれば PLY/ZCP データを作成するプログラム群のコードが単純になるのですが、今のところそれができていません（再帰的な手続き以外の方法で細分化した三角形の番号付けを行うことができていない）。
(4-2-2) 球面の加工
次に第二段階の処理として単位球を近似する多面体を変形したり、その表面に色（もしくは模様）を付
けたりします。いずれの場合も指定した画像から読み出した、単位球面上のそれぞれの点に対応している画素の値のマッピング処理を行います。
この処理では球面上の地図データを円筒図法でプロットした画像を使用します。これは画面表示した時の横・縦のそれぞれが球面上の経・緯線に平行な方向を指し、かつ、横座標値と経度、および、縦座標

11 / 26
値と緯度のいずれもが線形な関係式で表せる地図投影法で描かれている画像です。ただし、この画像の横方向のひろがりは経度－180～180 度の範囲に、また、縦方向は緯度 90～－90 度に対応していると想定しています。
注
この円筒図法の画像を画面表示した時の左上隅の点（正確には、画像の左上隅の画素の左上隅の頂点）に対応する経度と緯度はそれぞれ －180 度と 90 度です（画像の上方向が北です）。
多面体の変形処理では、まず、その各頂点の座標値を（三角形の細分化処理で使っていた）カーテシア
ン座標形式から極座標形式に変換します：
x = r × cosφ× cosλy = r × cosφ× sinλz = r × sinφ
ここで x、y、z は頂点のカーテシアン座標値、λとφはそれに対応した経度と緯度、そして、当初の多面体の頂点は単位球面上に乗っているので、球の中心から頂点までの距離 r は変形前は値１です。次にこの経度と緯度が指す位置の画素の値（画素値）を指定した円筒図法の画像から読み出し、その点の球面から測った地形高度 E を計算します：
E = B + S × 画素値（０～）
ここで B と S は画像ごとに指定する係数値（base と step 値）です。
注
この画像は地形高度（標高値）のデータを保持しているので、DEM（Digital Elevation Model）の画像と呼んでいます。
最終的には、もとのままの経・緯度と以下の式で計算した球の中心からの距離 r が指す位置にそれぞれの頂点を移動して（多面体を変形して）、地球儀などの３次元像の表面に凸凹を付けます：
r = 1 + ε× E / R
ここで R は地球などの対象球体の実半径で、εは地形高度 E の強調率です。ただし、後で説明するように、地球儀作成用のプログラム群ではこのεの値を陽に指定できません。DEM の画像の画素値から Eを計算する際に使う係数値（B と S）に繰り込んで指定するか、球体の実半径として値 R / εを指定する必要があります。
多面体の表面への色や模様付けの処理も同様にして行います。この場合にはまず、それぞれの三角形の重心の経度と緯度を計算し、その位置に対応する円筒図法の画像上の画素が保持している色や輝度でその三角形の内部を塗りつぶすような設定を付け加えた CAD データを出力します。
後で説明するように、地球儀作成用のプログラム群ではこれらの処理に TIFF 形式ファイルの画像を使います。多面体の変形に用いる DEM の画像としては白黒、グレースケールもしくはカラーマップ（疑似12 / 26カラー）形式のものを指定できます（最後の形式のものを指定するとその表示色の情報は無視され、画素値だけが処理に用いられる）。また、これらに加えて、色や模様付けにはフルカラー形式の TIFF の画像も指定可能です。なお、これら２種類の画像の画素数は同じでなくてもかまいません。さらに、これらの片方もしくは両方の指定が省略可能です（その場合は凸凹なしや単一の色で塗りつぶされた表面の地球儀になる）。
(4-2-3) 球殻、および、半球と半球殻状の像の作成
地球儀などを鳥瞰アニメーションとして表示するだけなら先の手順で作成した球状の像の CAD データ
で十分ですが、それを３次元プリンタで実体模型として出力する場合には球殻状の像の方が（模型の重量の面で）有用です。また、ここで紹介するプログラム群にはこのような球殻以外にも半球や半球殻状の像の CAD データを作成できるものがあります。これらの形状の像の CAD データは以下のようにして構築しています。
まず球殻ですが、その「内壁」は先の手法で構築した「外壁」と平行になるようにしています。つまり、これら２枚の壁の間の距離（正確には、外壁の構築に用いた単位球の半径方向の距離）はどこでも同じ値で、そのような球殻の厚さ（thickness）は単位球の半径を単位とする０～１の範囲の値によって指定できます。また、この球殻の一カ所に球状の像の外部と内部をつなぐ「穴」を設けるようにしています。
この穴は先に説明した多面体の三角形の細分化処理（それで指定した level の値を face とします）の途
中で指定した繰り返しの回数（hole；０≦hole≦face）に最初に達した三角形です。なお、単位球面の構
築処理に用いている多面体の三角形の配置の関係上、球殻の像を STL データとして出力するプログラム
群では穴の位置は常に南極になります。これに対して、PLY/ZCP データを出力するプログラム群を使うとその位置（および穴の三角形の向き）を好きなように指定することができます。
次に半球と半球殻ですが、正８面体の半分（= ピラミッド状の多面体）のものだけをこれらに対する球面の構築（多面体の三角形細分化）処理で初期形状として使っています。また、半球殻の厚さ（thickness）
として１以上の値を指定した場合に内部が詰まった半球状の像を作るようにしてあるので、これらの像の CAD データを出力するプログラムには STL 形式と PLY/ZCP 形式のデータ用のものがそれぞれ１種
類づつあるだけです。なお、これらのプログラムでは半球の「頂上」にマップすべき球面上の点の経度と緯度を指定できるようになっています。
先に説明した円筒図法の画像を用いた色や模様付けの処理は球殻、半球および半球殻の像の外壁に対してのみ行います。そして、それ以外の半球の「底面」、球殻と半球殻の内壁や球殻に穿った穴の壁面にはすべて指定した同一の色を塗布しますが、その指定の仕方は STL と PLY/ZCP 形式のデータ（を出力するプログラム）ごとに異なります：
STL データ
色情報を添付しない（造形や描画の際にそれを指定できる）。
PLY/ZCP データ
作成する際にその色の成分の強度の値を指定する必要がある。

13 / 26(4-3) CAD データのファイル形式について
ここまでにも何度か書いたように、ここで紹介しているプログラム群は地球儀などの球、球殻、半球や半球殻状の像の STL（正確には binary もしくは color STL）形式と PLY/ZCP 形式のいずれかのデータを出力します。これらのファイル形式の詳細は前記の PDF ファイル stl/doc/stl.pdf の記述をご覧下さい。
これらの概要は以下の通りです：[a] 物体像の形状を表現するデータと言う意味では両者は互換だが、STL 形式では多面体近似した物体像の表面をカバーする三角形の頂点の座標値のデータを重複して保持しているのに対して、
PLY/ZCP 形式ではそれらを統合して保持している。そのため、PLY/ZCP 形式のファイルのサ
イズは STL 形式のものの半分以下になる。
[b] 三角形ごとに保持できる色数は異なる。つまり、STL 形式では色の R、G、B 成分の強度値は32 階調づつ（合計 31768 色）だが、PLY/ZCP 形式は 256 階調づつ（16777216 色）である。
また、STL 形式では色なしの三角形も許されている。
[c] STL は本来は色なしの造形データの形式であり、色情報を保持できるように拡張された color
STL 形式のデータをきちんと取り扱えないソフトウェアもままある。ただし、その場合でも、
binary STL 形式のデータと見なされて色なしの表示などを行える可能性が高い。
[d] PLY/ZCP は Stanford 大学で設計された PLY 形式（PLY polygon file format）のサブセット版の、Z-corporation 社の３次元プリンタで用いられている形式である。PLY/ZCP はもちろんのこと PLY 形式のデータを取り扱えるソフトウェアは数少ない。
人間の目では識別不能なので、STL と PLY/ZCP 形式で保持できる色数の違いは実質的には問題にならないと思います。問題はこれらのファイル形式の流通性とファイルサイズの大小で、前者に重きを置く
なら STL を、後者なら PLY/ZCP 形式を使えばよいと思います。いずれにせよ、stl/doc/stl.pdf で説明しているプログラム群を使えば STL と PLY/ZCP の両形式は相互に変換可能です。また、プログラム
zcp2vrml2 を使えば PLY/ZCP 形式を広く知られている ver.2 の VRML 形式に変換できます。
(4-4) プログラムの使用法
ここではそれぞれのプログラムの詳細を説明します。これらはいずれも UNIX 系の OS（Linux、Mac OS
X、Cygwin など）の端末環境や Windows のコマンドプロンプト（DOS 窓）からプログラム名とその起動パラメータを並べた行をキー入力して起動します。ただし、それぞれの起動法（行）を示している箇所では以下のことに注意して下さい。
[a] 先にも説明したように、地球儀などの球もしくは球殻状の像の CAD データを出力するプログラ
ムには球面を近似する多面体の初期形状（ih、oh と th）に応じた３種類のものがありますが、それらのうちの ih のものの起動法だけをここに示しました。それ以外のものを起動したい場合にはプログラム名に含まれている文字列 "ih" を "oh" や "th" に読み替えて下さい。
[b] 中括弧 "{}" で囲んだパラメータの指定は省略可能です。また、括弧 "()" で囲んだ（３個の）ものは一組であり、パラメータの間の "|" はその前後のいずれかを選択できることを意味しています。このような省略や選択を行った場合のプログラムの挙動はそれぞれのパラメータの説明14 / 26
として記した通りです。
[c] プログラムのいくつかは処理結果のテキストデータを標準出力に書き出します。ここではそれらのうちの重要なものを ">" を使ってファイルにリダイレクトする起動法を示しています。
[d] 入力すべき起動行が長い場合は行末にエスケープ文字 "¥" を置いて改行したものを示しています。ただし、これは UNIX 系 OS の shell に対してのみ通用する記法であり、DOS 窓では改行せずに１行にまとめて入力する必要があります。
(4-4-1) globe_[i,o,t]h と globe_zcp_[i,o,t]h
地球儀などの球状の像の STL や ZCP データを作成する。
起動法
globe_ih

levelglobe_zcp_ih{DEM base

level

step

radius}{DEM base step radius}{color}STL

color|(R G

B)

ZCP

パラメータ
level
多面体による単位球の近似の「level」（０以上の整数値）。
DEM、base、step、radius
DEM は単位球面の変形処理に使う球面上の地形高度のデータを保持している円筒図法の地図
画像（DEM の画像）が入っている TIFF 形式ファイルの名前、また、base と step はその画素値を球面から測った標高値に変換する際に用いる係数の値（浮動小数点数）である：
標高値 = base + step × 画素値（０～）
radius は地球などの対象球体の半径の値（浮動小数点数）で、最終的に作成される地球儀などの半径は以下の値になる：
地球儀などの半径 = 1 + 標高値 / radius
これらの４個のパラメータの指定を省略すると作成される地球儀などは表面に凸凹がない球体になる。
color もしくは R、G、B（globe_zcp_[i,o,t]h のみ）
color は（変形させた）球面の色（もしくは模様）付けに使う円筒図法の地図画像が入っている
TIFF 形式ファイルの名前。PLY/ZCP 形式データを出力するプログラムに対してこのファイル
名の指定を省略した場合、その代わりに球面全域を塗りつぶす色の R、G、B 成分の強度の値（０～255 の整数値）をここで指定しなければならない。STL 形式データを出力するプログラムではそれは不要で、球面に塗る色はそのデータの描画などの処理の際に指定できるはずである。
STL や ZCP作成した地球儀などの CAD データを書き込む STL や PLY/ZCP 形式ファイルの名前。これらに "-" を指定すると CAD データを 標準出力に書き出す。

15 / 26
(4-4-2) shell_[i,o,t]h と shell_zcp_[i,o,t]h
球殻状の地球儀などの STL や PLY/ZCP データを作成する。
起動法
shell_ihfaceshell_zcp_ih

hole
face

thickness
hole

{DEM
insideR

{lon.

base

{DEM
lat.

base

rot.}

step radius}

insideG

insideB

step radius}

thicknesscolor|(R{color}

STL

¥
G

B) ¥

ZCP

パラメータ
face
多面体による単位球の近似の「level」（０以上の整数値）。
hole
球殻の内部と外部をつなぐ穴の「level」。０～ face の範囲の整数値を指定する。０を指定すると単位球の構築処理で初期形状として用いた多面体の三角形に相当する大きな穴が、また、faceと等しい値なら球を近似するように細分化した三角形に相当する小さな穴になる。
lon.、lat.、rot.（shell_zcp_[i,o,t]h のみ）
lon. と lat. は球殻の内部と外部をつなぐ三角形の穴の中央の位置の経度と緯度、また、rot. はその三角形の「向き」を指す方位角である。ただし、穴の形状は概ね正三角形なので、rot. として －60 ～+60（度）の範囲の値を指定すればよい。これらの角度の単位は度で、いずれも浮動小数点数として取り扱われる。なお、STL 形式のデータを出力するプログラムではこれらのパラメータ値を指定できない。その場合や、PLY/ZCP 形式データ用のプログラムに対してこれ
らの角度の指定を省略した場合には lon.= 90、lat.= －90 かつ rot.=０が採用されて穴は「南極」に設置される（穴を「北極」に置きたい場合には lon.= －90、lat.= 90 かつ rot.=０を指定すればよい）。
thickness
球殻の厚さを指す０と１の間の値（浮動小数点数）。
DEM、base、step、radius
DEM は単位球面の変形処理に使う球面上の地形高度のデータを保持している円筒図法の地図
画像（DEM の画像）が入っている TIFF 形式ファイルの名前、また、base と step はその画素値を球面から測った標高値に変換する際に用いる係数の値（浮動小数点数）である：
標高値 = base + step × 画素値（０～）
radius は地球などの対象球体の半径の値（浮動小数点数）で、最終的に作成される地球儀などの半径は以下の値になる：
地球儀などの半径 = 1 + 標高値 / radius
これらの４個のパラメータの指定を省略すると作成される地球儀などは表面に凸凹がない球殻になる。

16 / 26
color もしくは R、G、B（globe_zcp_[i,o,t]h のみ）
color は（変形させた）球殻の表面の色（もしくは模様）付けに使う円筒図法の地図画像が入っている TIFF 形式ファイルの名前。PLY/ZCP 形式のデータを出力するプログラムに対してこのファイル名の指定を省略した場合、その代わりに球殻の表の面全域を塗りつぶす色の R、G、B
成分の強度の値（０～255 の整数値）をここで指定しなければならない。STL 形式のデータを出力するプログラムの場合はそれは不要で、表面に塗る色はそのデータの描画などの処理の際に指定できるはずである。
insideR、insideG、insideB（globe_zcp_[i,o,t]h のみ）
球殻の内壁と穴の壁を塗る色の R、G、B 成分の強度値（０～ 255 の整数値）。STL 形式データ
用プログラムに対してはこれらの指定は不要で、これらの色はそのデータの描画などの処理の際に指定できるはずである。
STL や ZCP作成した地球儀などの CAD データを書き込む STL や PLY/ZCP 形式ファイルの名前。これらに "-" を指定すると CAD データを 標準出力に書き出す。
(4-4-3) hss と hss_zcp
半球状もしくは半球殻状の地球儀などの STL や PLY/ZCP データを作成する。
起動法
hss

level thickness

hss_zcp

level

{DEM

thickness

base

wallG

{color} lon.

lat. STL¥{DEM base step radius}
wallR

step radius}

wallB

color|(RGB) ¥lon. lat. ZCP

パラメータ
level
多面体による単位球の近似の「level」（０以上の整数値）。
thickness
半球殻の厚さを指す正の値（浮動小数点数）。ただし、１以上の値を指定すると内部が詰まった半球の像を作る。
DEM、base、step、radius
DEM は単位球面の変形処理に使う球面上の地形高度のデータを保持している円筒図法の地図
画像（DEM の画像）が入っている TIFF 形式ファイルの名前、また、base と step はその画素値を球面から測った標高値に変換する際に用いる係数の値（浮動小数点数）である：
標高値 = base + step × 画素値（０～）
radius は地球などの対象球体の半径の値（浮動小数点数）で、最終的に作成される地球儀などの半径は以下の値になる：

17 / 26
地球儀などの半径 = 1 + 標高値 / radius
これらの４個のパラメータの指定を省略すると作成される地球儀などは表面に凸凹がない半球
もしくは半球殻になる。
color もしくは R、G、B（hss_zcp のみ）
color は（変形させた）半球面の色（もしくは模様）付けに使う円筒図法の地図画像が入っている TIFF 形式ファイルの名前。PLY/ZCP 形式のデータを出力するプログラムに対してこのファ
イル名の指定を省略した場合、その代わりに半球の表面全域を塗りつぶす色の R、G、B 成分の強度の値（０～255 の整数値）をここで指定しなければならない。STL 形式のデータを出力するプログラムの場合はそれは不要で、表面に塗る色はそのデータの描画などの処理の際に指定できるはずである。
wallR、wallG、wallB（hss_zcp のみ）
半球の底面や半球殻の底面と内壁を塗る色の R、G、B 成分の強度値（０～255 の整数値）。STL
形式データ用プログラムに対してはこれらの指定は不要で、これらの色はそのデータの描画などの処理の際に指定できるはずである。
lon.、lat.
半球もしくは半球殻の「頂上」にマップする球面上の点の経度と緯度を度単位で指定する。
STL や ZCP作成した地球儀などの CAD データを書き込む STL や PLY/ZCP 形式ファイルの名前。これらに "-" を指定すると CAD データを 標準出力に書き出す。
(4-4-4) tah_[i,o,t]h
先に説明した手法で単位球を近似した多面体の三角形（Triangles）の面積（Area）の分布を調べ、その情報をヒストグラム（Histogram）として表示する。ヒストグラムの bin のうちの空でないものごとに下記の４個の値をタブコード区切りで行にまとめて標準出力に書き出す：[1] そのヒストグラムの bin の下端を指す正規化した面積の値。ただし、それが三角形の面積の最小値以下に相当する値なら、その最小値に相当する正規化した面積の値を表示する。
[2] そのヒストグラムの bin の上端を指す正規化した面積の値。ただし、それが三角形の面積の最大値以上に相当する値なら、その最大値に相当する正規化した面積の値を表示する。
[3] その bin に落ちる三角形の個数[4] その bin に落ちる三角形の個数の割合（０～１）
ただし、以下の値を単位として三角形の面積を正規化している（正規化した三角形の面積が１なら実際の三角形の面積は以下の値である）：
単位球の表面積（４×π）÷多面体を構成する三角形の総数
起動法
tah_ih

level

{base

step

bins}

18 / 26
パラメータ
level
多面体による単位球の近似の「level」（０以上の整数値）。
base、step、bins
これらの値でヒストグラムのそれぞれの bin で数える三角形の正規化した面積（１前後の値になるハズ）の値域を指定する。bins は bin の総数であり、i = １～ bins 番目の bin では正規化した面積が以下の値域に落ちる三角形の個数を数える：
base + step × ( i - 1 ) ～ base + step × i
ただし、これらの bin が三角形の正規化した面積の値域全体をカバーしていない場合はそれを補う bin を付加して処理を行う。また、これら３個のパラメータの指定を省略した場合も同様
で、三角形の正規化した面積の値域全体をカバーする１個の bin が処理に用いられる。
(4-4-5) tcm
白黒、グレースケールおよびカラーマップ（疑似カラー）形式の TIFF 画像ファイルの上のカラーマップ（表示色情報）を操作する。
起動法
TIFF 画像ファイル中のカラーマップを抽出する場合：tcm org_TIFF> CM

TIFF 画像ファイル中のカラーマップを削除する場合：tcm

gray_TIFF

org_TIFF

TIFF 画像ファイル中にカラーマップを埋め込む場合：tcm org_TIFF

CM

CM_TIFFパラメータ
org_TIFF処理を行う TIFF 画像ファイルの名前。白黒、グレースケール もしくはカラーマップ形式のものでなければならない。
gray_TIFF と CM_TIFF
処理結果を書き込む TIFF 画像ファイルの名前。
CM
org_TIFF から抽出したカラーマップのデータを入れる、もしくは、そこに埋め込むデータを入れたテキストファイルの名前。ただし、後者の名前として "-" を与えると、org_TIFF に埋め込むカラーマップのデータを標準入力から読み込もうとする。このファイルは、先頭にカラー
マップ上の色の総数が、そしてそれに続いて org_TIFF の画像上の０以上の画素値それぞれに対する色の R、G、B 成分の強度値（０～65535 の整数値）が書き込まれている形式である。なお、これらの数値の区切りは改行、空白もしくはタブコードである。

19 / 26
(4-4-6) trgb
カラーマップ（疑似カラー）形式の TIFF 画像のファイルをフルカラー形式のものに変換する。通常の画像ビュワーは 16 bit 画素値でカラーマップ形式の TIFF 画像ファイルを取り扱えないので、それを行いたい場合にはこのプログラムでフルカラー形式のものに変換する必要がある。
起動法
trgb

org_TIFF

RGB_TIFF

パラメータ
org_TIFF処理を行う TIFF 画像ファイルの名前。白黒やグレースケール、そして、フルカラー形式の画像ファイルを指定してもかまわない。
RGB_TIFF
処理結果を書き込む TIFF 画像ファイルの名前。
(4-4-7) zcp2vrml2
PLY/ZCP 形式のデータファイルを ver.2 の VRML（Virtual Reality Markup Language）の形式のものに変換する。より詳細には、PLY/ZCP ファイル上で物体像を表現している多面体を ver.2 の VRML のIndexedFaceSet として記述し直し、それを標準出力に書き出す。
起動法
zcp2vrml2 ZCP > VRML2
パラメータ
ZCP
PLY/ZCP ファイルの名前。"-" を指定すると PLY/ZCP データを標準入力から読もうとする。
VRML2ver. 2.0 の VRML のテキストデータを書き込むファイル名。
(4-4-8) zcp_scale
このプログラムは PLY/ZCP ファイルの上の物体像が占める座標値の値域を調べたり、それらの値に指定した定数を乗じて物体像のスケール変換を行ったりする。前者を行った場合、物体像が占めている領域の x、y、z 座標値それぞれの最小値、最大値とそれらの差の３個の値をタブコード区切りで並べた３行の表示が標準出力に書き出される。なお、この処理には PLY/ZCP ファイルの前半に書き込まれている座
標値データ以外は不要だが、zcp_scale はエラーチェックのために残りのデータ（物体像表面の表示色情報など）もスキャンする（つまり、無駄な処理を行う）。

20 / 26
起動法
PLY/ZCP ファイル上の物体像が占める座標値の値域を調べる場合
zcp_scaleorg_ZCP

PLY/ZCP ファイル上の物体像のスケール変換を行う場合
zcp_scaleorg_ZCP scale|(Sx

Sy

Sz)

new_ZCP

パラメータ
org_ZCP と new_ZCP
PLY/ZCP データを読み書きするファイル名。これらのそれぞれに "-" を指定すると標準入力や標準出力に対してデータを読み書きする。
scale もしくは Sx、Sy、Sz
座標値の拡大率。浮動小数点数も可。１個の値 scale だけを指定した場合にはそれを org_ZCPのすべての座標値に乗じる。また、３個の値 Sx、Sy、Sz を指定すると、これらは x、y、z 座
標値それぞれの拡大率だと見なされる。
今日のところはここまで。

21 / 26
Date:

Wed, 23 Jun 2004 15:38:35 +0900

From:

Tsukasa NAKANO

To:

Miwa YOKOKAWA

Subject: Re: Globe 届きました！

よこかわさま、注
横川さんには書庫ファイル
http://www-bl20.spring8.or.jp/sp8ct/tmp/stl_globe.tar
http://www-bl20.spring8.or.jp/sp8ct/tmp/stl_globe.zipのものと概ね同じ内容を書き込んだ CD-R を送りました。以下の文章は「CD-R」を上記の書庫
ファイルに読み替えてお読み下さい。
なかのです。同封した CD-R には UNIX（Cygwin）や Windows の DOS 窓で石膏模型用の STL データ
ファイルを作ったり、それらを使って GIF アニメーションを作るためのデータとプログラムのファイルが入っています。これらを用いた処理の内容については近いうちに GSJ の open file（Web 公開される報告書）などに書こう（少なくともつちやまさんの科研費の報告書には載せたい）と思っていますので、詳しいことはもう少しお待ち下さい。以下はとりあえずの説明です。
まず CD-R には以下のファイルが入っています。
[1-1] ディレクトリ test/ の下のファイル ih.pdf、oh.pdf、th.pdf
球面の近似に用いた正多面体の展開図。プリンタ出力して折り紙できます。なお、ih はicosahedron、oh は octahedron、th は tetrahedron の略のつもりです。
[1-2] ディレクトリ test/ の下のファイル triangle.pdf
球面近似のために行う多面体の三角形の分割の仕方を示す図。
[1-3] ディレクトリ test/ の下のファイル globe_ih.pdf、globe_oh.pdf、globe_th.pdf
level で指定される三角形分割の回数を変えた場合の近似球面の様子を示す図。
[2-1] ディレクトリ src/ の下のファイル
地球儀などの STL データ作成用プログラムのソースファイル。UNIX（Cygwin）でコンパイルできるようにしてあります。
[2-2] ディレクトリ exe/ の下のファイル
地球儀などの STL データ作成用プログラムの Windows 用実行ファイル。
[3-1] ディレクトリ dem/ の下の 16 bits 画素値の TIFF ファイル
惑星・衛星の DEM（Digital Elevetion Model；数値地形図）。月と金星の DEMs は Clementineと Magelllan 探査船の測定データからぼくがコンパイルしたものです（それらに関する別刷りなどをそのうちお送りします）。

22 / 26
[3-2] テキストファイル dem.log
ディレクトリ dem/ の下の DEMs に関する以下の数値が書き込まれています(1) DEM のファイル名(2) データの存在する範囲の経度と緯度の最小値（単位は度）(3) データの存在する範囲の経度と緯度の最大値（単位は度）(4) 画素値０に相当する標高値（単位は meter）(5) 画素値１階調に相当する標高値の増分（単位は meter）
なお、(2) と (3) に示されているデータの有無とは関係なく、 TIFF ファイルには円筒図法で投影された経度－180～180 度、緯度－90～90 度の範囲の標高値データが格納されています。
[4-1] ディレクトリ cm/ の下の *.tif
DEM を標高ごとに色分けしたモノ、および木星の衛星の画像。後者は USGS のホームページ
http://astrogeology.usgs.gov/Projects/Map-a-Planet/ からとってきたものです。
[4-2] ディレクトリ cm/ の下の *.cm.gz
DEM の標高ごとにつけた色の３成分のデータ[4-3] ディレクトリ cm/ の下の *.ps.gz、*.pdf と *.gif
DEM につけた色と標高の対応関係を示すカラーバーの図[5-1] テキストファイル globe.tbl と shell.tbl
地球儀などの STL データ作成に用いた近似球面のパラメータ。globe.tbl には近似に用いた正多面体の名前の略語と三角形分割の回数が、また、shell.tbl にはそれらに加えて「南極の穴」のサイズと球殻の厚さを指定するパラメータが書き込まれている。なお、“#” で始まる行は処理に使っていません。
[5-2] テキストファイル earth.tbl、mars.tbl、lunar.tbl、venus.tbl
地球儀などの作成に用いた DEM のファイル名、惑星・衛星の 半径（meter）、および、標高値の倍率が書き込まれている。
以下省略

23 / 26

24 / 26

25 / 26
Date:

Fri, 25 Apr 2014 16:50:13 +0900

From:

Tsukasa NAKANO

To:

Takuya Murakami

Cc:

Akiko TANAKA, "TSUCHIYAMA, Akira", Kentaro Uesugi, Michihiko Nakamura

Subject: 地球儀作成の補助プログラム cap_*

むらかみさま、
GSJ/AIST のなかのです。先日送っていただいたカラーの地球儀の石膏模型はぼくが書いたプログラム"globe_*" で作成した造形データをそちらの３次元プリンタで出力した後に、その像の内部を手でくり貫いて中空にしたものですね？
On Tue, 8 Apr 2014 19:40:16 +0900 Takuya Murakami wrote:> 明日、中野様に、造形品のサンプルを送ります。こちらは、中野様にと> ご提供いたします。内容は地球儀（直径φ１５０ｍｍ）です。
> 中は中空にして、粉をぬきとって、その後に、同じ素材で封止しています。
以前に紹介した http://www-bl20.spring8.or.jp/~sp8ct/tmp/stl_globe.pdf に記してあるように、ぼくが書いたプログラム"shell_*" を使えば中空の「地球儀」の造形データを作成できますが、それでは像の内部と外部をつなぐ三角形の「穴」が目立つので NG ということでしょうか？ これを改善するため、”shell_*”の造形データの「穴」をふさぐ「蓋」の造形データを出力するプログラム "cap_*" を書いてみました：
プログラム "cap_[i,o,t]h"
プログラム "shell_[i,o,t]h" で得られる「地球儀」の像の表面の「穴」に対応した「蓋」の STL
形式の造形データファイルを作成する計算機プログラム。
"cap_zcp_[i,o,t]h""shell_zcp_[i,o,t]h" で得られる像の表面の「穴」に対応した「蓋」の PLY/ZCP 形式データファ
イルを作成するプログラム。
これらの新しいプログラムのソースコードと Windows 用実行ファイル、および、"cap_*" を使った処理のデモ用のバッチファイルや C-shell scripts を以前に紹介した「地球儀」作成用の書庫ファイルのそれぞれに追加しておきました：
http://www-bl20.spring8.or.jp/~sp8ct/tmp/stl_globe.tar
http://www-bl20.spring8.or.jp/~sp8ct/tmp/stl_globe.zip
プログラム "cap_*" の起動法は "shell_*" の場合とほぼ完全に同じです：
shell_oh faceholethickness

{DEM

base

step radius}{color}

cap_ohhole

thickness

{DEM

base

step

{color} STL

faceradius}STL

26 / 26
shell_zcp_th

face

hole

{DEM
cap_zcp_th

face
{DEM

{lon.

base

hole

rot.} thickness （改行しない）

step radius}

{lon.

base

lat.
lat.

rot.}

step radius}

color|(RG

B) insideR G

B ZCP

thickness （改行しない）
color|(RG

B) insideR G

B ZCP

造形データの出力ファイル名を除く起動パラメータとして "shell_*" に対するものと同じ値を指定して"cap_*" を起動してやれば、"shell_*" の出力データの像の表面の「穴」に対応した「蓋」の造形データを作成することができます。
また、例えば下記のもののように、「地球儀」作成用の書庫ファイルに追加したバッチファ イル"demo_bat/*/cap_*.bat" や C-shell scripts "demo_csh/*/cap_*.csh" も既存の "demo_*/*/shell_*.*" が出力する中空の地球儀などの「穴」に合う「蓋」の造形データを作成するようにしてあります。
demo_bat¥earth¥shell_zcp.batshell_zcp_ih.exe を使って中空の地球儀の PLY/ZCP 形式の造形データファイル（shell.zcp）を作成する既存のバッチファイル。
demo_bat¥earth¥cap_zcp.bat
cap_zcp_ih.exe を使って地球儀表面の「穴」をふさぐ「蓋」の PLY/ZCP 形式ファイル（cap.zcp）
を作成する新しいバッチファイル。
これらをどうぞ御利用下さい。とり急ぎ、