X-Git-Url: https://www.hackdaworld.org/gitweb/?a=blobdiff_plain;f=visualize;h=ab6e374ebd551c65074c3bd89b28df2bf9efe36e;hb=95cfeec6fbbfa975d5ac5b99ec3f7386ca3d6071;hp=6255e89e95af46f95fc9af50f9e1ca3b6cc052c8;hpb=e67bb08cb64bf21a6d4e7e8275007bdc5e769154;p=physik%2Fposic.git diff --git a/visualize b/visualize index 6255e89..ab6e374 100755 --- a/visualize +++ b/visualize @@ -14,17 +14,27 @@ pigment { color White } } EOF } - - +draw_bond() { + cat >> temp.pov <<-EOF +cylinder { +<$1, $3, $2>, <$4, $6, $5>, $7 +pigment { color Blue } +} +EOF +} directory="doesnt_exist____for_sure" -width="1024" -height="768" +width="640" +height="480" radius="1.0" x0=""; y0=""; z0=""; x1=""; y1=""; z1=""; cx=""; cy=""; cz=""; lx="0"; ly="-100"; lz="100"; +ortographic="" +bx0=""; by0=""; bz0=""; +bx1=""; by1=""; bz1=""; +bcr=""; while [ "$1" ]; do case "$1" in @@ -37,6 +47,9 @@ while [ "$1" ]; do -c) cx=$2; cy=$3; cz=$4; shift 4;; -l) lx=$2; ly=$3; lz=$4; shift 4;; -o) ortographic=1; shift 1;; + -b) bx0=$2; by0=$3; bz0=$4; + bx1=$5; by1=$6; bz1=$7; shift 7;; + -B) bcr=$2; shift 2;; *) echo "options:" echo "########" @@ -47,10 +60,13 @@ while [ "$1" ]; do echo " -h " echo "atom size:" echo " -r " + echo " -B " echo "visualization volume:" echo " -nll (near lower left)" echo " -fur (far upper right)" echo " -o (ortographic)" + echo "bounding box:" + echo " -b " echo "povray:" echo " -c (camera position)" echo " -l (light source)" @@ -118,15 +134,14 @@ EOF fi # boundaries + if [ -z "$bx0" ]; then + if [ -z "$x0" ]; then + cat $file | grep '# \[D\]' | while read foo bar x1 y1 z1 x2 y2 z2 ; do - cat >> temp.pov <<-EOF -cylinder { -<$x1, $z1, $y1>, <$x2, $z2, $y2>, 0.05 -pigment { color White } -} -EOF + draw_cyl $x1 $z1 $y1 $x2 $z2 $y2 0.05 done + else # manually drawing the 3x4 boundaries ... draw_cyl $x0 $y0 $z0 $x1 $y0 $z0 @@ -145,6 +160,58 @@ EOF draw_cyl $x1 $y1 $z1 $x1 $y1 $z0 fi + else + + # manually drawing the 3x4 boundaries specified by argv ... + draw_cyl $bx0 $by0 $bz0 $bx1 $by0 $bz0 + draw_cyl $bx0 $by0 $bz0 $bx0 $by1 $bz0 + draw_cyl $bx1 $by1 $bz0 $bx1 $by0 $bz0 + draw_cyl $bx0 $by1 $bz0 $bx1 $by1 $bz0 + + draw_cyl $bx0 $by0 $bz1 $bx1 $by0 $bz1 + draw_cyl $bx0 $by0 $bz1 $bx0 $by1 $bz1 + draw_cyl $bx1 $by1 $bz1 $bx1 $by0 $bz1 + draw_cyl $bx0 $by1 $bz1 $bx1 $by1 $bz1 + + draw_cyl $bx0 $by0 $bz1 $bx0 $by0 $bz0 + draw_cyl $bx0 $by1 $bz1 $bx0 $by1 $bz0 + draw_cyl $bx1 $by0 $bz1 $bx1 $by0 $bz0 + draw_cyl $bx1 $by1 $bz1 $bx1 $by1 $bz0 + + fi + + # bonds + if [ -n "$bcr" ]; then + + if [ -z "$x0" ]; then + + cat $file | grep '# \[B\]' | while read foo bar x1 y1 z1 x2 y2 z2 ; do + draw_bond $x1 $z1 $y1 $x2 $z2 $y2 $bcr + done + + else + + export x0 y0 z0 x1 y1 z1 bcr + cat $file | grep '# \[B\]' | awk '\ + BEGIN { + x0=ENVIRON["x0"]; y0=ENVIRON["y0"]; z0=ENVIRON["z0"]; + x1=ENVIRON["x1"]; y1=ENVIRON["y1"]; z1=ENVIRON["z1"]; + bcr=ENVIRON["bcr"]; + } + { + if(($3>=x0)&&($4>=y0)&&($5>=z0)&&\ + ($3<=x1)&&($4<=y1)&&($5<=z1)) { + print "cylinder {"; + print "<"$3","$5","$4">,"; + print "<"$6","$8","$7">, "bcr; + print "pigment { color Blue }"; + print "}"; + } + }' >> temp.pov + + fi + fi + # add camera and light source cat >> temp.pov <<-EOF camera {