my1=0; my2=0; my3=0;
mz1=0; mz2=0; mz3=0;
ab=0
+sym=0
# parse argv
((cnt+=1))
done
cutoff=$1; shift 1;;
+ -s) sym=$2; shift 2;;
*)
echo "options:"
echo "########"
echo " -l <x> <y> <z> (light source)"
echo "bonds:"
echo " -ab <atom number> <cutoff> (auto bonds)"
+ echo "symmetry:"
+ echo " -s <sym nr>"
+ echo " 1: sym by <1 -1 0> at 1/4 <1 1 0>"
exit 1;;
esac
done
export x0 y0 z0 x1 y1 z1 radius
+ export sym
+
# atoms
((count=1))
checktsd=`sed -n 7p $file | awk '{ print $1 }'`
if [ "$checktsd" = "Transformed" ]; then
((offset=9))
echo "tsd: yes, offset = $offset"
+ # but maybe not
+ checkmore=`sed -n 8p $file | awk '{ print $1 }'`
+ if [ "$checkmore" = "Direct" ]; then
+ ((offset=8))
+ echo "tsd: yes, but anyways using offset $offset"
+ fi
else
((offset=8))
echo "tsd: no, offset = $offset"
fi
while [ "1" ]; do
- echo -en "$count "
+ [ $count -gt $ntot ] && break
if [ $count -le $nsi ]; then
color="Yellow"
y=`echo $line | awk '{ print $2 }'`
z=`echo $line | awk '{ print $3 }'`
- echo $x $y $z | awk '\
+ echo $x $y $z $count | awk '\
BEGIN {
x0=ENVIRON["x0"]; y0=ENVIRON["y0"]; z0=ENVIRON["z0"];
x1=ENVIRON["x1"]; y1=ENVIRON["y1"]; z1=ENVIRON["z1"];
Z1=ENVIRON["Z1"]; Z2=ENVIRON["Z2"]; Z3=ENVIRON["Z3"];
radius=ENVIRON["radius"]; scale=ENVIRON["scale"];
color=ENVIRON["color"]
+ sym=ENVIRON["sym"]
x=0; y=0; z=0;
xt=0; yt=0; zt=0;
i=0; j=0; k=0;
nx=$1+i; ny=$2+j; nz=$3+k;
+ if(sym==1) {
+ xt=nx-1.0/12.0;
+ yt=ny-1.0/12.0;
+ nx=-yt;
+ ny=-xt;
+ nx+=1.0/12.0;
+ ny+=1.0/12.0;
+ }
+
xt=nx*X1+ny*Y1+nz*Z1;
yt=nx*X2+ny*Y2+nz*Z2;
zt=nx*X3+ny*Y3+nz*Z3;
if((xt>=x0)&&(yt>=y0)&&(zt>=z0)&&\
(xt<=x1)&&(yt<=y1)&&(zt<=z1)) {
+ print "// atom " $4;
print "sphere { <"xt","zt","yt">, "radius" ";
print "texture { pigment { color " color " } ";
print "finish { phong 1 metallic } } }";
# see, whether there are bonds to draw
if [ "$ab" = "0" ]; then
+ echo -en "$count "
((count+=1))
continue
fi
((cnt+=1))
done
if [ "$ab" = "-1" ]; then
- dobond=yes
+ if [ -n "`grep \/\/\ atom\ $count temp.pov`" ]; then
+ dobond=yes
+ fi
fi
if [ "$dobond" = "no" ]; then
+ echo -en "$count "
((count+=1))
continue;
fi
Y1=ENVIRON["Y1"]; Y2=ENVIRON["Y2"]; Y3=ENVIRON["Y3"];
Z1=ENVIRON["Z1"]; Z2=ENVIRON["Z2"]; Z3=ENVIRON["Z3"];
bcr=ENVIRON["bcr"]; scale=ENVIRON["scale"];
+ sym=ENVIRON["sym"];
}
{
for(i=-1;i<=1;i++) {
for(ik=-1;ik<=1;ik++) {
nx=$1+i; ny=$2+j; nz=$3+k;
+
+ if(sym==1) {
+ xt=nx-1.0/12.0;
+ yt=ny-1.0/12.0;
+ nx=-yt;
+ ny=-xt;
+ nx+=1.0/12.0;
+ ny+=1.0/12.0;
+ }
+
xt=nx*X1+ny*Y1+nz*Z1;
yt=nx*X2+ny*Y2+nz*Z2;
zt=nx*X3+ny*Y3+nz*Z3;
yt*=scale;
zt*=scale;
+ if((xt>=x0)&&(yt>=y0)&&(zt>=z0)&&\
+ (xt<=x1)&&(yt<=y1)&&(zt<=z1)) {
+
inx=$4+ii; iny=$5+ij; inz=$6+ik;
+
+ if(sym==1) {
+ ixt=inx-1.0/12.0;
+ iyt=iny-1.0/12.0;
+ inx=-iyt;
+ iny=-ixt;
+ inx+=1.0/12.0;
+ iny+=1.0/12.0;
+ }
+
ixt=inx*X1+iny*Y1+inz*Z1;
iyt=inx*X2+iny*Y2+inz*Z2;
izt=inx*X3+iny*Y3+inz*Z3;
dist=sqrt((xt-ixt)^2+(yt-iyt)^2+(zt-izt)^2);
- if((xt>=x0)&&(yt>=y0)&&(zt>=z0)&&\
- (xt<=x1)&&(yt<=y1)&&(zt<=z1)) {
+ if((ixt>=x0)&&(iyt>=y0)&&(izt>=z0)&&\
+ (ixt<=x1)&&(iyt<=y1)&&(izt<=z1)) {
+
+ #if((xt>=x0)&&(yt>=y0)&&(zt>=z0)&&\
+ # (xt<=x1)&&(yt<=y1)&&(zt<=z1)) {
if(dist<=$7) {
print "cylinder {";
print "<"xt","zt","yt">,";
print "pigment { color Blue }";
print "}";
}
+ #}
+
+ }
+
}
}
done
+ echo -en "[$count] "
((count+=1))
[ $count -gt $ntot ] && break;
echo
# manually drawing the 3x4 boundaries specified by argv ...
+ if [ -n "$bx0" ]; then
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 $bz1 $bx0 $by1 $bz0
draw_cyl $bx1 $by0 $bz1 $bx1 $by0 $bz0
draw_cyl $bx1 $by1 $bz1 $bx1 $by1 $bz0
+ fi
# add camera and light source
cat >> temp.pov <<-EOF