月曜日, 7月 30, 2012

病院 : hospital


------------------------
今日はゆっくり過ごそうとおもったが,
あさから,猫を病院へ.

起きたときに,階段に座ってた猫の左目から涙.

これは何かの暗示か....

とおもいつつ,気になるので病院へつれていく.

どうも,目のガラス体のところに傷が入ってて
結膜炎を起こしてるらしい.
ひっかいたのかなぁ?

ちょろちょろと処置をうけて,帰宅.


ひっかかないように,エリザベスカラーをつける.
水も,飲みづらそう.
------------------------
我が家の純白ゴーヤ.ほおっておいたら,バカでかくなったので,収穫.

------------------------
妹から,わが子向けに郵便物が届いた.


どうも,仕事柄,よく四国にいくらしく,アンパンマン列車のスタンプをいくつか押してもらってきたらしい.

------------------------







網模様4 : mesh textile 4


---------------------
これまで,いろんな細かなスクリプトを作ったが

結局 tetgen 用のファイルを簡単に用意すれば,
直方体くらいのメッシュはキッチリ切ってくれることがわかった.


---------------------

食べさせる poly ファイルを以下のように,用意.

# Part 1 - node list
8  3  0  0
   1    0.0      0.0     0.0
   2   100.0     0.0     0.0
   3   100.0   150.0     0.0
   4     0.0   150.0     0.0
   5    0.0      0.0   130.0
   6   100.0     0.0   130.0
   7   100.0   150.0   130.0
   8     0.0   150.0   130.0

# Part 2 - facet list
6 1
1 0  1
4  1   2    3   4
1 0  1
4  5   6    7   8
1 0  1
4  1   4   8   5
1 0  1
4  2   3   7   6
1 0  1
4  1    2    6   5
1 0  1
4  4    3    7    8

# Part 3 - hole list
0

# Part 4 - region list
0


で,コマンドラインから

 tetgen -pKa10 ./data/rect.poly

a10 は体積の拘束.


背景が背景だけに,見えにくいかなぁ.

---------------------

早速,スクリプト作成して,いつでもブロックを作れるように..

#!/bin/bash

#/-----------------------------------------------------------------------
#
#                                CreateRectangularParallelopipedVTK.sh
#                                      T.Y.   Mon. July 30, 2012
#/-----------------------------------------------------------------------

#-------------------------------------------------------
#----------  modify following parameters  --------------
#-------------------------------------------------------
####
x0=0.0
y0=0.0
z0=0.0
Lx=100.0
Ly=120.0
Lz=140.0
dL=20.0

####
FilePOLY="./data/box.poly"



#-------------------------------------------------------
#----------  display parameters  -----------------------
#-------------------------------------------------------
echo " "
echo "----------------------------------------"
echo "   CreateRectangularParallelopipedVTK.sh   "
echo "----------------------------------------"
echo " "
echo "input file : "${FilePOLY}
echo " "
echo "x0 : "${x0}
echo "y0 : "${y0}
echo "z0 : "${z0}
echo "Lx : "${Lx}
echo "Ly : "${Ly}
echo "Lz : "${Lz}
echo " "
echo "dL : "${dL}
dV=`echo " ${dL} * ${dL} * ${dL} * ( sqrt ( 2 ) ) / 12 " | bc`
echo "dV : "${dV}
echo " "



#-------------------------------------------------------
#----------  create poly file    -----------------------
#-------------------------------------------------------
echo "## box.poly " > ${FilePOLY}
echo "# Part 1 - node list" >> ${FilePOLY}
echo "8  3  0  0" >> ${FilePOLY}

x1=`echo " ${x0} + ${Lx} " | bc`
y1=`echo " ${y0} + ${Ly} " | bc`
z1=`echo " ${z0} + ${Lz} " | bc`

echo "   1  "${x0}" "${y0}" "${z0}" " >> ${FilePOLY}
echo "   2  "${x1}" "${y0}" "${z0}" " >> ${FilePOLY}
echo "   3  "${x1}" "${y1}" "${z0}" " >> ${FilePOLY}
echo "   4  "${x0}" "${y1}" "${z0}" " >> ${FilePOLY}
echo "   5  "${x0}" "${y0}" "${z1}" " >> ${FilePOLY}
echo "   6  "${x1}" "${y0}" "${z1}" " >> ${FilePOLY}
echo "   7  "${x1}" "${y1}" "${z1}" " >> ${FilePOLY}
echo "   8  "${x0}" "${y1}" "${z1}" " >> ${FilePOLY}

echo "" >> ${FilePOLY}
echo "# Part 2 - facet list" >> ${FilePOLY}
echo "6 1" >> ${FilePOLY}
echo "1 0  1" >> ${FilePOLY}
echo "4  1   2    3   4" >> ${FilePOLY}
echo "1 0  1" >> ${FilePOLY}
echo "4  5   6    7   8" >> ${FilePOLY}
echo "1 0  1" >> ${FilePOLY}
echo "4  1   4   8   5" >> ${FilePOLY}
echo "1 0  1" >> ${FilePOLY}
echo "4  2   3   7   6" >> ${FilePOLY}
echo "1 0  1" >> ${FilePOLY}
echo "4  1    2    6   5" >> ${FilePOLY}
echo "1 0  1" >> ${FilePOLY}
echo "4  4    3    7    8" >> ${FilePOLY}
echo "" >> ${FilePOLY}
echo "# Part 3 - hole list" >> ${FilePOLY}
echo "0" >> ${FilePOLY}
echo "" >> ${FilePOLY}
echo "# Part 4 - region list" >> ${FilePOLY}
echo "0" >> ${FilePOLY}
echo "" >> ${FilePOLY}
echo "" >> ${FilePOLY}

#-------------------------------------------------------
#----------  tetgen command    -------------------------
#-------------------------------------------------------
tetgen -pKa${dV} ${FilePOLY}


実行したら, box.1.vtk ができるので,
パラビューでみると


こんな感じ.

あとは,O/F フォーマットに適当にコンバートできればよいが,
側面境界の番号取得とか,ややこしそうだなぁ...

---------------------

---------------------

---------------------


おまつり : festival

---------------------

息子と姪っ子を,空港近くまで連れていき,
飛行機の離発着を見せる.

展望エリアまで走る息子.

飛行機を眺めるイトコたち.



---------------------



---------------------
子供が小さいと,夫婦でお祭りに行ったりということから
遠ざかってきた.

もう,こどもも,そこそこ大きくなったので,近所のお祭りへ連れて行く.


屋台にて,地元出身タレントの名前も.


少しは楽しめたかな?

日曜日, 7月 29, 2012

グランブルー : Grand Bleu


--------------------------
姪っ子と,義理のお母さんがやってきた.
みんなで,大阪のK遊館へ行く.

暑い日は,でかけないことに限るが,子供たちの思い出つくりに...

というか,僕は一度もいったことなく,いきたいということもあった.

--------------------------
入館通路から見える安治川?.
船がスイスイ.うちの子も,興味津々.

家にも,こういう回廊ほしいなぁ.

--------------------------

エイだったかなぁ?ちゃんと,魚の名前を調べずにウロウロ.
子供たちの写真撮影係だったので.

--------------------------
みんな,涼しげに泳いどるなぁ..

--------------------------
刺身にしたら美味しそう.

ちなみに,この日の晩は,回転すし へ行きました.
魚さんたち,ごめんなさい.

--------------------------
 はじめてみる種類のクラゲだなぁ.

ストレスなく,過ごしてそう.


--------------------------
--------------------------

水族館のあとは,観覧車に乗る.
何度かデートで利用したことがある,この観覧車
気がつけば,10 年以上,乗ってないなぁと気がつく.

安治川かな.
--------------------------
梅田や中之島の方向?
--------------------------
住之江のWTC側だな.
--------------------------
さっきまで,すごしたK遊館.

--------------------------


子供たちも,けっこう はしゃいでた ので,出かけたかいがあった.

金曜日, 7月 27, 2012

網模様3 : mesh textile 3


----------------------------
こないだの一連の作業(物体に三角形の網模様を作る=世間では,メッシュ生成と呼ぶらしい)が滞ってたので,再度ゴソゴソ作業.


とりあえず,小さい目標として

・小さい直方体形状を定義
・三角形のサイズパラメータ

などから,

・triangle コマンドを使い  表面の三角模様埋め(デローニ分割と呼ぶ)

を行い,

 ・tetgen を使って表面三角形から 内部に四面体敷き詰め(3次元デローニ分割)

をやろうと思う.


中長期的狙いとしては,
直方体底面 には,いくつかの まばらな 矩形領域をつくり,
デローニ分割したい.
この例は1孔だが,複数つくる.矩形でなくてもいい.


----------------------------
《直方体表面に2次元デローニ 三角形を敷き詰める》


以下のようなシェルスクリプトを作る.

#!/bin/bash

#/-----------------------------------------------------------------------
#
#                                 CreateRectangularParallelopipedSTL.sh
#                                      T.Y.   Mon. July 23, 2012
#/-----------------------------------------------------------------------

#-------------------------------------------------------
#----------  modify following parameters  --------------
#-------------------------------------------------------
####
x0=0.0
y0=0.0
z0=0.0
Lx=100.0
Ly=120.0
Lz=140.0
#dL=5.0
dL=60.0
####
FileBottom="./data/bottom.poly"
FileBottomSTL="./data/bottom.stl"
FileTop="./data/top.poly"
FileTopSTL="./data/top.stl"

FileWest="./data/west.poly"
FileWestSTL="./data/west.stl"
FileEast="./data/east.poly"
FileEastSTL="./data/east.stl"

FileSouth="./data/south.poly"
FileSouthSTL="./data/south.stl"
FileNorth="./data/north.poly"
FileNorthSTL="./data/north.stl"

FileBoxSTL="./data/BOX.stl"


#-------------------------------------------------------
#----------  compile programs  -------------------------
#-------------------------------------------------------
gfortran -O2 -Wall -o Shewchuk2STL Shewchuk2STL.f
gfortran -O2 -Wall -o TransformSTL TransformSTL.f



#-------------------------------------------------------
#----------  display parameters  -----------------------
#-------------------------------------------------------
echo " "
echo "----------------------------------------"
echo "   CreateRectangularParallelopipedSTL.sh   "
echo "----------------------------------------"
echo "x0 : "${x0}
echo "y0 : "${y0}
echo "z0 : "${z0}
echo "Lx : "${Lx}
echo "Ly : "${Ly}
echo "Lz : "${Lz}
echo "dL : "${dL}
dS=`echo ${dL} "*" ${dL} "* 0.25 * sqrt(3)"| bc`
echo "dS : "${dS}
echo " "


#-------------------------------------------------------
#----------  bottom STL creation -----------------------
#-------------------------------------------------------
vert01x=${x0}
vert01y=${y0}
vert02x=`echo ${x0}" + "${Lx} | bc`
vert02y=${y0}
vert03x=`echo ${x0}" + "${Lx} | bc`
vert03y=`echo ${y0}" + "${Ly} | bc`
vert04x=${x0}
vert04y=`echo ${y0}" + "${Ly} | bc`

echo "# bottom.poly " > ${FileBottom}
echo "4  2  0  0" >> ${FileBottom}
echo "#">> ${FileBottom}
echo "1  "${vert01x}" "${vert01y} >> ${FileBottom}
echo "2  "${vert02x}" "${vert02y} >> ${FileBottom}
echo "3  "${vert03x}" "${vert03y} >> ${FileBottom}
echo "4  "${vert04x}" "${vert04y} >> ${FileBottom}
echo "#">> ${FileBottom}
echo "4  0" >> ${FileBottom}
echo "1   1  2 ">> ${FileBottom}
echo "2   2  3 ">> ${FileBottom}
echo "3   3  4 ">> ${FileBottom}
echo "4   4  1 ">> ${FileBottom}
echo "#">> ${FileBottom}
echo "0">> ${FileBottom}

triangle -pqa${dS} ${FileBottom}
#triangle -pqa0.01 ${FileBottom}

##---------------------------------
##        Shewchuk2STL.f
##---------------------------------
FileCtrl="./Shewchuk2STL.ctl"
echo "############ Shewchuk2STL.ctl" > ${FileCtrl}
echo ${FileBottom%.poly}.1.node >> ${FileCtrl}
echo ${FileBottom%.poly}.1.ele >> ${FileCtrl}
echo ${FileBottom%.poly}.stl >> ${FileCtrl}
echo "" >> ${FileCtrl}
./Shewchuk2STL



#-------------------------------------------------------
#----------  top  STL creation   -----------------------
#-------------------------------------------------------
##---------------------------------
##        TransformSTL.f
##---------------------------------
FileCtrl="./TransformSTL.ctl"
cp ${FileBottomSTL} "./tmp.stl"

echo "#### TransformSTL.ctl #####" > ${FileCtrl}
echo "./tmp.stl" >>  ${FileCtrl}
echo ${FileTopSTL} >>  ${FileCtrl}
echo "0   0.0" >>   ${FileCtrl}
echo "0   0.0" >>   ${FileCtrl}
echo "0   0.0" >>   ${FileCtrl}
echo "1   0.0  0.0 "`echo ${z0}" + "${Lz} | bc` >>   ${FileCtrl}
echo "0   0.0  0.0  0.0" >>   ${FileCtrl}
echo " " >>   ${FileCtrl}
./TransformSTL
rm -f ./tmp.stl



#-------------------------------------------------------
#----------  west STL creation   -----------------------
#-------------------------------------------------------
vert01x=${z0}
vert01y=${y0}
vert02x=`echo ${z0}" + "${Lz} | bc`
vert02y=${y0}
vert03x=`echo ${z0}" + "${Lz} | bc`
vert03y=`echo ${y0}" + "${Ly} | bc`
vert04x=${z0}
vert04y=`echo ${y0}" + "${Ly} | bc`


echo "# west.poly " > ${FileWest}
echo "4  2  0  0" >> ${FileWest}
echo "#">> ${FileWest}
echo "1  "${vert01x}" "${vert01y} >> ${FileWest}
echo "2  "${vert02x}" "${vert02y} >> ${FileWest}
echo "3  "${vert03x}" "${vert03y} >> ${FileWest}
echo "4  "${vert04x}" "${vert04y} >> ${FileWest}
echo "#">> ${FileWest}
echo "4  0" >> ${FileWest}
echo "1   1  2 ">> ${FileWest}
echo "2   2  3 ">> ${FileWest}
echo "3   3  4 ">> ${FileWest}
echo "4   4  1 ">> ${FileWest}
echo "#">> ${FileWest}
echo "0">> ${FileWest}

triangle -pqa${dS} ${FileWest}

##---------------------------------
##        Shewchuk2STL.f
##---------------------------------
FileCtrl="./Shewchuk2STL.ctl"
echo "############ Shewchuk2STL.ctl" > ${FileCtrl}
echo ${FileWest%.poly}.1.node >> ${FileCtrl}
echo ${FileWest%.poly}.1.ele >> ${FileCtrl}
echo ${FileWest%.poly}.stl >> ${FileCtrl}
echo "" >> ${FileCtrl}
./Shewchuk2STL



##---------------------------------
##        TransformSTL.f
##---------------------------------
FileCtrl="./TransformSTL.ctl"
cp ${FileWestSTL} "./tmp.stl"

echo "#### TransformSTL.ctl #####" > ${FileCtrl}
echo "./tmp.stl" >>  ${FileCtrl}
echo ${FileWestSTL} >>  ${FileCtrl}
echo "0   0.0" >>   ${FileCtrl}
echo "1   -90.0" >>   ${FileCtrl}
echo "0   0.0" >>   ${FileCtrl}
echo "0   0.0  0.0  0.0" >>   ${FileCtrl}
echo "0   0.0  0.0  0.0" >>   ${FileCtrl}
echo " " >>   ${FileCtrl}
./TransformSTL
rm -f ./tmp.stl


#-------------------------------------------------------
#----------  east STL creation   -----------------------
#-------------------------------------------------------

##---------------------------------
##        TransformSTL.f
##---------------------------------
FileCtrl="./TransformSTL.ctl"
cp ${FileWestSTL} "./tmp.stl"

echo "#### TransformSTL.ctl #####" > ${FileCtrl}
echo "./tmp.stl" >>  ${FileCtrl}
echo ${FileEastSTL} >>  ${FileCtrl}
echo "0   0.0" >>   ${FileCtrl}
echo "0   0.0" >>   ${FileCtrl}
echo "0   0.0" >>   ${FileCtrl}
echo "1   "`echo ${x0}" + "${Lx} | bc`" 0.0  0.0 "  >>   ${FileCtrl}
echo "0   0.0  0.0  0.0" >>   ${FileCtrl}
echo " " >>   ${FileCtrl}
./TransformSTL
rm -f ./tmp.stl



#-------------------------------------------------------
#----------  south STL creation -----------------------
#-------------------------------------------------------
vert01x=${x0}
vert01y=${z0}
vert02x=`echo ${x0}" + "${Lx} | bc`
vert02y=${z0}
vert03x=`echo ${x0}" + "${Lx} | bc`
vert03y=`echo ${z0}" + "${Lz} | bc`
vert04x=${x0}
vert04y=`echo ${z0}" + "${Lz} | bc`

echo "# south.poly " > ${FileSouth}
echo "4  2  0  0" >> ${FileSouth}
echo "#">> ${FileSouth}
echo "1  "${vert01x}" "${vert01y} >> ${FileSouth}
echo "2  "${vert02x}" "${vert02y} >> ${FileSouth}
echo "3  "${vert03x}" "${vert03y} >> ${FileSouth}
echo "4  "${vert04x}" "${vert04y} >> ${FileSouth}
echo "#">> ${FileSouth}
echo "4  0" >> ${FileSouth}
echo "1   1  2 ">> ${FileSouth}
echo "2   2  3 ">> ${FileSouth}
echo "3   3  4 ">> ${FileSouth}
echo "4   4  1 ">> ${FileSouth}
echo "#">> ${FileSouth}
echo "0">> ${FileSouth}

triangle -pqa${dS} ${FileSouth}

##---------------------------------
##        Shewchuk2STL.f
##---------------------------------
FileCtrl="./Shewchuk2STL.ctl"
echo "############ Shewchuk2STL.ctl" > ${FileCtrl}
echo ${FileSouth%.poly}.1.node >> ${FileCtrl}
echo ${FileSouth%.poly}.1.ele >> ${FileCtrl}
echo ${FileSouth%.poly}.stl >> ${FileCtrl}
echo "" >> ${FileCtrl}
./Shewchuk2STL


##---------------------------------
##        TransformSTL.f
##---------------------------------
FileCtrl="./TransformSTL.ctl"
cp ${FileSouthSTL} "./tmp.stl"

echo "#### TransformSTL.ctl #####" > ${FileCtrl}
echo "./tmp.stl" >>  ${FileCtrl}
echo ${FileSouthSTL} >>  ${FileCtrl}
echo "1   90.0" >>   ${FileCtrl}
echo "0   0.0" >>   ${FileCtrl}
echo "0   0.0" >>   ${FileCtrl}
echo "0   0.0  0.0  0.0" >>   ${FileCtrl}
echo "0   0.0  0.0  0.0" >>   ${FileCtrl}
echo " " >>   ${FileCtrl}
./TransformSTL
rm -f ./tmp.stl


#-------------------------------------------------------
#----------  north STL creation -----------------------
#-------------------------------------------------------
##---------------------------------
##        TransformSTL.f
##---------------------------------
FileCtrl="./TransformSTL.ctl"
cp ${FileSouthSTL} "./tmp.stl"

echo "#### TransformSTL.ctl #####" > ${FileCtrl}
echo "./tmp.stl" >>  ${FileCtrl}
echo ${FileNorthSTL} >>  ${FileCtrl}
echo "0   0.0" >>   ${FileCtrl}
echo "0   0.0" >>   ${FileCtrl}
echo "0   0.0" >>   ${FileCtrl}
echo "1   0.0  "`echo ${y0}" + "${Ly} | bc` "  0.0 " >>   ${FileCtrl}
echo "0   0.0  0.0  0.0" >>   ${FileCtrl}
echo " " >>   ${FileCtrl}
./TransformSTL
rm -f ./tmp.stl


#-------------------------------------------------------
#----------  merge six rectangulars  -------------------
#-------------------------------------------------------

cat ${FileBottomSTL} > ${FileBoxSTL}
cat ${FileTopSTL} >> ${FileBoxSTL}

cat ${FileSouthSTL} >> ${FileBoxSTL}
cat ${FileNorthSTL} >> ${FileBoxSTL}

cat ${FileWestSTL} >> ${FileBoxSTL}
cat ${FileEastSTL} >> ${FileBoxSTL}

#-------------------------------------------------------
#----------  single solid STL  -------------------------
#-------------------------------------------------------
cp ${FileBoxSTL} "./tmp.stl"
echo "solid BOX" > ${FileBoxSTL}
awk '($1 != "solid" && $1 != "endsolid"){print}' "./tmp.stl" >> ${FileBoxSTL}
#awk '($1 != "solid" ){print}' "./tmp.stl" >> ${FileBoxSTL}
echo "endsolid BOX" >> ${FileBoxSTL}
rm -f "./tmp.stl"


上記のスクリプト内にあるように,途中で2つの Fortran プログラムを使う.

で,処理すると,

こんな感じのものができる.
生成物は STL ファイル(→表示はパラビュー)

----------------------------
《直方体 表面三角形から 内部に四面体敷き詰め》

3次元デローニをつかうために tetgen を使う.

以下のように STL から poly ファイル(tetgen の条件ファイル)を生成するスクリプトを作成.

 #!/bin/bash

FileInput=./data/BOX.stl
FileOutput=./data/BOX.poly
#FileInput=./data/box_shape.stl
#FileOutput=./data/box_shape.poly

echo "------------------------------------"
echo "---------  STL2POLY3d.sh -----------"
echo "------------------------------------"
echo ""
date

nStart=`awk '($1 == "solid"){printf("%d\n", NR)}' ${FileInput}`
echo "nStart : "${nStart}

nEnd=`awk '($1 == "endsolid"){printf("%d\n", NR)}' ${FileInput}`
echo "nEnd : "${nEnd}

nRow=`wc -l ${FileInput} | awk '{printf("%d\n", $1)}' `
echo "nRow : "${nRow}

nFacet=`echo " (${nEnd} - ${nStart} - 1) / 7" | bc`
echo "nFacet : "${nFacet}

nNodes=`echo " ${nFacet} * 3" | bc`
echo "nNodes : "${nNodes}

#--------------
echo "# " > ${FileOutput}
echo "#   poly data derived from STL file" >> ${FileOutput}
echo "#   input: "${FileInput} >> ${FileOutput}
echo "#  output: "${FileOutput} >> ${FileOutput}
echo "# " >> ${FileOutput}
echo "# " >> ${FileOutput}

#--------------
echo "# node part" >> ${FileOutput}
echo ${nNodes}"  3    0   0" >> ${FileOutput}
awk '($1 == "vertex"){printf("%15.5f  %15.5f  %15.5f\n", $2, $3, $4)}' ${FileInput} > "./tmp.vert"
awk '{printf("%5.5d %15.5f  %15.5f  %15.5f\n",NR, $1, $2, $3)}' "./tmp.vert" >> ${FileOutput}
echo "# " >> ${FileOutput}
echo "# " >> ${FileOutput}


#--------------
echo "# facet part" >> ${FileOutput}
echo ${nFacet}"  1" >> ${FileOutput}

nCount=1
while [ $nCount -le ${nFacet} ] ; do
    # echo "Facet Count:"${nCount}
    nCount=`expr $nCount + 1`

    vert1=`echo "($nCount - 2) * 3 + 1" | bc`
    vert2=`echo "($nCount - 2) * 3 + 2" | bc`
    vert3=`echo "($nCount - 2) * 3 + 3" | bc`

    echo "  1   0   1 " >> ${FileOutput}
    echo "  3 "${vert1}" "${vert2}" "${vert3} >> ${FileOutput}

done
echo "# " >> ${FileOutput}
echo "# " >> ${FileOutput}

#--------------
echo "# hole part" >> ${FileOutput}
echo "  0" >> ${FileOutput}
echo "# " >> ${FileOutput}
echo "# " >> ${FileOutput}

#--------------
echo "# region part" >> ${FileOutput}
echo "  0" >> ${FileOutput}
echo "# " >> ${FileOutput}
echo "# " >> ${FileOutput}

date


重複点を許容するという想定で,STL の facet を順次 poly ファイルリストに流し込んでるだけ.

ここから処理をするために,

tetgen -pK ./data/BOX.poly


とやると,以下のようなエラー


............(中略) ...................
Warning:  Point #296 is duplicated with Point #275. Ignored!
Warning:  Point #90 is duplicated with Point #72. Ignored!
Warning:  Point #297 is duplicated with Point #283. Ignored!
Warning:  Point #100 is duplicated with Point #72. Ignored!
Warning:  Point #98 is duplicated with Point #72. Ignored!
Delaunay seconds:  0
Creating surface mesh.
Recovering boundaries.
Error:  Invalid PLC! A point and a segment intersect.
  Point: 336. Segment: (62, 334).
Program stopped.


色々とチェックしてわかったが,2次元デローニ処理をするときに
以下のような不整合点をつくってしまうことが判明.




----------------------------
修正目標

CreateRectangularParallelopipedSTL.sh の入力パラメータの
dL を  triangle コマンド渡しせずに,
node 点を区切ってしまうことにすると うまく行く?
----------------------------

triangle コマンドをもう一度おさらいすると,
こんなページに行き付き,
"-Y" オプションが有効であることがわかる.


----------------------------
以下,修正版 スクリプト(作りかけ=bottom 面のみ)

#!/bin/bash

#/-----------------------------------------------------------------------
#
#                                                    samp.sh
#                                      T.Y.   Fri. July 27, 2012
#/-----------------------------------------------------------------------

#-------------------------------------------------------
#----------  modify following parameters  --------------
#-------------------------------------------------------
####
x0=0.0
y0=0.0
z0=0.0
Lx=100.0
Ly=120.0
Lz=140.0
Nx=5
Ny=6
Nz=7
dL=60.0

####
FileBottom="./data/bottom.poly"
FileBottomSTL="./data/bottom.stl"
FileTop="./data/top.poly"
FileTopSTL="./data/top.stl"

FileWest="./data/west.poly"
FileWestSTL="./data/west.stl"
FileEast="./data/east.poly"
FileEastSTL="./data/east.stl"

FileSouth="./data/south.poly"
FileSouthSTL="./data/south.stl"
FileNorth="./data/north.poly"
FileNorthSTL="./data/north.stl"

FileBoxSTL="./data/BOX.stl"


#-------------------------------------------------------
#----------  compile programs  -------------------------
#-------------------------------------------------------
gfortran -O2 -Wall -o Shewchuk2STL Shewchuk2STL.f
gfortran -O2 -Wall -o TransformSTL TransformSTL.f



#-------------------------------------------------------
#----------  display parameters  -----------------------
#-------------------------------------------------------
echo " "
echo "----------------------------------------"
echo "   CreateRectangularParallelopipedSTL.sh   "
echo "----------------------------------------"
echo "x0 : "${x0}
echo "y0 : "${y0}
echo "z0 : "${z0}
echo "Lx : "${Lx}
echo "Ly : "${Ly}
echo "Lz : "${Lz}
echo "Nx : "${Nx}
echo "Ny : "${Ny}
echo "Nz : "${Nz}
echo " "
dX=`echo " ${Lx} / ${Nx} "| bc`
dY=`echo " ${Ly} / ${Ny} "| bc`
dZ=`echo " ${Lz} / ${Nz} "| bc`
echo "dX : "${dX}
echo "dY : "${dY}
echo "dZ : "${dZ}
echo " "


#-------------------------------------------------------
#----------  bottom STL creation -----------------------
#-------------------------------------------------------
echo "# bottom.poly " > ${FileBottom}

nNodes=`echo " ( ( ${Nx} + 1 ) * 2 ) + (  ( ${Ny} - 1 ) * 2 ) "| bc`

echo "#-------------------------------">> ${FileBottom}
echo ${nNodes}"  2  0  0" >> ${FileBottom}
echo "#-------------------------------">> ${FileBottom}



nCount=0
#---- lower side ----
LoopCount=0
echo "# lower side" >> ${FileBottom}
while [ $LoopCount -lt ${Nx} ] ; do
    nCount=`expr $nCount + 1`
    LoopCount=`expr $LoopCount + 1`
    echo "Node Count:"${nCount}

    xx=`echo " ${x0} + ( ${LoopCount} - 1 ) * ${dX} " | bc`
    yy=${y0}
    echo ${nCount}" "${xx}" "${yy} >> ${FileBottom}
done

nCount=`expr $nCount + 1`
echo "Node Count:"${nCount}
xx=`echo " ${x0} +  ${Lx} " | bc`
echo ${nCount}" "${xx}" "${yy} >> ${FileBottom}
echo "# " >> ${FileBottom}


#---- right side ----
LoopCount=0
echo "# right side" >> ${FileBottom}
while [ $LoopCount -lt ${Ny} ] ; do
    nCount=`expr $nCount + 1`
    LoopCount=`expr $LoopCount + 1`
    echo "Node Count:"${nCount}

    xx=`echo " ${x0} +  ${Lx} " | bc`
    yy=`echo " ${y0} + ( ${LoopCount} ) * ${dY} " | bc`
    echo ${nCount}" "${xx}" "${yy} >> ${FileBottom}
done
echo "# " >> ${FileBottom}



#---- upper side ----
LoopCount=0
echo "# upper side" >> ${FileBottom}
while [ $LoopCount -lt ${Nx} ] ; do
    nCount=`expr $nCount + 1`
    LoopCount=`expr $LoopCount + 1`
    echo "Node Count:"${nCount}

    xx=`echo " ( ${x0} + ${Lx} )  - ${dX} *  ( ${LoopCount}  ) " | bc`
    yy=`echo " ${y0} +  ${Ly} " | bc`
    echo ${nCount}" "${xx}" "${yy} >> ${FileBottom}
done
echo "# " >> ${FileBottom}


#---- left side ----
LoopCount=0
echo "# left side" >> ${FileBottom}
Nym1=`expr ${Ny} - 1`
#while [ $LoopCount -lt ${Ny} ] ; do
while [ $LoopCount -lt ${Nym1} ] ; do
    nCount=`expr $nCount + 1`
    LoopCount=`expr $LoopCount + 1`
    echo "Node Count:"${nCount}

    xx=${x0}
    yy=`echo " ( ${y0} + ${Ly} )  - ${dY} *  ( ${LoopCount}  ) " | bc`
    echo ${nCount}" "${xx}" "${yy} >> ${FileBottom}
done
echo "# " >> ${FileBottom}


nEdge=`expr ${nNodes} + 1`
echo "#-------------------------------">> ${FileBottom}
echo ${nNodes}"  0" >> ${FileBottom}
echo "#-------------------------------">> ${FileBottom}

LoopCount=0
Nm1=`expr ${nNodes} - 2`
while [ $LoopCount -le ${Nm1} ] ; do
#while [ $LoopCount -le ${nNodes} ] ; do
    LoopCount=`expr $LoopCount + 1`
    LC2=`expr $LoopCount + 1`
    echo ${LoopCount}" "${LoopCount}" "${LC2} >> ${FileBottom}
done

LoopCount=`expr $LoopCount + 1`
echo ${LoopCount}" "${LoopCount}" 1" >> ${FileBottom}
echo "# " >> ${FileBottom}
echo "0 " >> ${FileBottom}


dL=`echo " 0.5 * ( ${dX} + ${dY} ) " | bc`
dS=`echo ${dL} "*" ${dL} "* 0.25 * sqrt(3)"| bc`


#triangle -pqY ${FileBottom}
triangle -pqa${dS}Y ${FileBottom}


##---------------------------------
##        Shewchuk2STL.f
##---------------------------------
FileCtrl="./Shewchuk2STL.ctl"
echo "############ Shewchuk2STL.ctl" > ${FileCtrl}
echo ${FileBottom%.poly}.1.node >> ${FileCtrl}
echo ${FileBottom%.poly}.1.ele >> ${FileCtrl}
echo ${FileBottom%.poly}.stl >> ${FileCtrl}
echo "" >> ${FileCtrl}
./Shewchuk2STL

Y オプションの制御より,シェルスクリプトで,
点列を順序良く出力するループ処理がめんどくさかった.

----------------------------


----------------------------






準備 : preparation


奥さんとショッピングセンターへ.
明日から,義母と姪っ子が遊びに来るから,いろいろと買い出し.

近所のショッピングセンターで


ミゲルくんのポスターをみかける.
ぼくは,このパータンのCMをみたことないが,
奥さんは見たことあると言ってた.

どうも,ディランもポルトガルへ行ってたらしい.
----------------------

奥さんが,昨日,息子を保育所へ迎えに行ってた時の話.

とある 20 代くらいの若いお母さんが
娘2人を保育所に迎えに来てたらしい.

母:「今晩は うどん やでぇ〜」
娘1:「えぇ〜,またぁ〜,うどん....」

....

母:「ほな,何が食べたいか,言うてみぃ〜!(かなり激怒)」

娘2:「(上記のやりとりを聞いてなかったかのようなトーンで),
       おかぁさん,私は○○が食べたいです.」

母:「標準語なんか しゃべるな!」



最後の言葉は,八つ当たりってやつかなぁ...
関西人の標準語アレルギーには,根深いものがあるようで.

----------------------

奥さんとショッピングセンタへ行く道すがら,
いつも よくやる ドラマキャストの話題に.

今回のテーマは,TBSドラマ「仁」(大沢たかお,綾瀬はるか,中谷美紀,....)
について,

このドラマを安っぽくさせるキャストに,という お題.


いろいろ まわり回って

主役の南方先生は  照英
緒方洪庵先生は  小林稔侍

とかで......

あとは,結論でなかったので,またの機会に,ということに.

----------------------

昼飯後,ウトウトしそうだったので,ちゃんと昼寝時間をとる.

----------------------

昨日,ひょんなコトから,この時の謎(左スライス)が解ける.
もう,これで,心残りなく,やめることができそうだ.
----------------------


----------------------


飲み会 : farewell


---------------------
昨日,長旅から帰ってきた.
朝,家に帰着.

子供を保育所に送ったあとは,
数日たまった新聞を読み,スクラップ.


---------------------
STL データを POLY フォーマットにするプログラム作成に着手.

途中で,睡魔.
---------------------

夕刻前,送別会をやっていただけるということで,U田へ向かう.

少し早く着きすぎたので,O初天神で,お参りしておく.
今後いい事あるようにと.

なんか,あのエリア お稲荷さんや,水天宮や,いろんな神様が,
で,へんなオブジェ見つけた.


---------------------
適当な時間に飲み会場所の居酒屋へ.


居酒屋到着.
みんな,仕事が忙しいのか,ひとりで,待つ.

その後,続々とメンバーがやってきて,
遅くまで談笑.

---------------------


木曜日, 7月 26, 2012

遠出 : long drive


---------------------------
わけあって,長い休暇をとってるが,
「あとちょっとで,休暇おわるなぁ...」てな会話を夫婦で.

奥さんが,こんな機会ないから,墓参りにでも行ったら?と.

そっか,そっか.
思いつかなかった.
人生の節目に,行ってたなぁ...墓参り.

2, 3 日のスキマがあれば,いいけど
思いたったので,7/24 の夕刻で, 7/26 には用事がある.

Q州の親戚筋のところに行くには,飛行機とか船とか,いろいろ考えたけど,
結局,以下のような経路で,でかけていった.
---------------------------

奥さんに留守番(息子と猫)をたのみ,7/24 22:00 前に車で家をでる.

I 市にある自宅をでる.
N宮インターで高速道路へ.

A島へ渡る.
淡路SAにて.7/24  23:00
1時間ほど休憩.長旅なので,無理は絶対しない.


7/25 00 :00 淡路島南PA


鳴門大橋を渡る.


高松方向にひたすら走る.
高速道路といえど,けっこうクネクネ道.
しかも,片側一車線区間多し.

いつもは,トラックの後ろの走行はイヤだが,
夜間は距離の割には,視野の広がり速度が追いつかないので,
ペースメーカーの意味で,助かった.

その後,なるべくトラックのあとをついていく.

あとで気がついたが,高松へ行かずに,
徳島自動車道をとおれば,直線的に走行できたようだ.

7/25 02:00 府中湖PA(高松をすぎたあたり)
1 時間ほど休憩
        03:00 あたりに出発.





その後,1時間40分くらい運転.
7/25 04:45 伊予灘SA(松山をすぎたあたり)

ここでも,すこし休憩.
ついたときは,真っ暗だったが,休憩中に夜が明ける.


松山の西側(伊予市?)の平野



奥に見えるのは,梅津寺とかの海?


7/25 05:30 伊予灘SA出発

八幡浜にむかって,ゴー.
途中で,朝霧や,肱川おろし とかで有名な大洲市付近をとおる.
おりしも,山には霧が立ち込めていた.


7/25  06:15 八幡浜のフェリー乗り場到着.

ついたら,出港前ギリギリ.
急いで用紙書いて,チケット買う.
最後の一台として乗船.

ちかくの造船ドック?をみながら,出港.




船内のココで,自動販売機のカップヌードルをたべて,
2等席で寝る.

---------------------------

休憩をとってたら,ようやく,Q州へ到着.

久しぶりの上陸.
3年ぶりくらいの上陸か?

通天閣をみつける.

---------------------------

実家の庭先.こないだの豪雨で,芝生が剥がれたとのこと.
よくみると,上記写真に猫2ヒキ.


うちの猫に似てるなぁ.


---------------------------

親戚の家にいったりと,時間をつぶしてると,
もう,帰りの船の時間に.
---------------------------

朝に乗った船としたって,乗船者数とかが違うので,
車とかも,車検証の提示があったりと,手続き時間が...

---------------------------
2等客室へ.

朝に乗った航路とちがい,長時間なので,2等といえど,ちゃんと座席指定がある.
といっても,このあと,この部屋に合計4名.
残りの3名はうちの父親年代.

みんなで,世間話してると,大学の先輩だということに判明して,
世間は狭いなぁと.
自宅で採れたというトマトをもらう.

---------------------------
船内の様子.

---------------------------

出港時.
山手の方は,積乱雲.
この日も暑かった.

防波堤を追加.
むかし,子供の頃,アジの子どもを釣ってた.

奥は,製鉄所.

夕闇の製鉄所.

船の煙.横山先生の煙の本を思い出す.

レーダがぐるぐる.
そういや,乗船中,ずっとメール,携帯,アンテナたってたなぁ.
単純に瀬戸内航路だからか?


陸地から離れます.
---------------------------

同室のおっちゃんたちと談笑ののち,
お風呂に入って就寝時間.
ちゃんと消灯係がやってくる.

---------------------------
非常灯の近くにいって,船の売店でかった
東野圭吾の小説「夜明けの街で」を読む.
乗船時間内には読み終えなかったが,
家に帰って,よみおえた.

夫婦のありかたを考えさせられる本だった.
奥さんに勧めてみたい.
---------------------------

朝,ちゃっちゃと起きて,朝風呂.夜も入ったが
同じ乗船料金なら,何度でも入りたいところ.
残念ながら,展望浴場の写真なんて,撮れませんのであしからず.

でも,脱衣場の窓からパシャリ.ちょうど通過.
 


---------------------------





神戸の港に到着.

---------------------------

家に帰って,子供におみやげの船模型のクッキーをあげる.
---------------------------
乗った記念にスタンプおしておく.


行程をおさらいしておく.
---------------------------