ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/gen/genpine.csh
Revision: 2.3
Committed: Wed Feb 16 05:40:11 2005 UTC (19 years, 1 month ago) by greg
Content type: application/x-csh
Branch: MAIN
CVS Tags: rad3R7P2, rad3R7P1, rad4R0, rad3R8, rad3R9
Changes since 2.2: +3 -3 lines
Log Message:
Replaced instances of "/usr/tmp" with "/tmp" in scripts & documentation

File Contents

# Content
1 #!/bin/csh -f
2 # RCSid: $Id: genpine.csh,v 2.2 2003/02/22 02:07:23 greg Exp $
3 #
4 # Generate a tree
5 # Pine version 2
6 #
7 # First send header and parse arguments
8 #
9 onintr done
10 echo \# $0 $*
11 set nleaves=150
12 set nlevels=4
13 set aspect=1.2
14 unset needles
15 while ($#argv > 0)
16 switch ($argv[1])
17 case -r:
18 shift argv
19 set nlevels=$argv[1]
20 breaksw
21 case -n:
22 shift argv
23 set nleaves=$argv[1]
24 breaksw
25 case -o:
26 shift argv
27 set needles=$argv[1]
28 breaksw
29 case -a:
30 shift argv
31 set aspect=$argv[1]
32 breaksw
33 default:
34 echo bad option $argv[1]
35 exit 1
36 endsw
37 shift argv
38 end
39 #
40 # Send materials
41 #
42 cat << _EOF_
43
44 void plastic bark_mat
45 0
46 0
47 5 .6 .5 .45 0 0
48
49 void plastic leaf_mat
50 0
51 0
52 5 .11 .36 .025 0 0
53 _EOF_
54 #
55 # Next start seedling
56 #
57 set tree=/tmp/t$$
58 set oldtree=/tmp/ot$$
59 set thisrad=.035
60 cat << _EOF_ > $tree
61
62 void colorpict bark_pat
63 9 red green blue pinebark.pic cyl.cal cyl_match_u cyl_match_v -s $thisrad
64 0
65 2 1.5225225 1
66
67 bark_pat alias my_bark_mat bark_mat
68
69 my_bark_mat cone top
70 0
71 0
72 8
73 0 0 0
74 0 0 1
75 $thisrad .02
76
77 my_bark_mat sphere tip
78 0
79 0
80 4 0 0 1 .02
81 _EOF_
82 if ( ! $?needles ) set needles=n.$nleaves.oct
83 if ( ! -f $needles ) then
84 oconv -f "\!cnt $nleaves | rcalc -e nl=$nleaves -o needle.fmt" > $needles
85 endif
86 echo leaf_mat instance needles 1 $needles 0 0 >> $tree
87 #
88 # Now grow tree:
89 #
90 # 1) Save oldtree
91 # 2) Move tree up and extend trunk
92 # 3) Duplicate oldtree at branch positions
93 # 4) Repeat
94 #
95 @ i=0
96 while ($i < $nlevels)
97 mv -f $tree $oldtree
98 set lastrad=$thisrad
99 set move=`ev "(2*$aspect)^($i+1)"`
100 set thisrad=`ev "$lastrad+$move*.015"`
101 xform -ry `ev "25/($i+1)"` -t 0 0 $move $oldtree > $tree
102 echo void colorpict bark_pat 9 red green blue pinebark.pic \
103 cyl.cal cyl_match_u cyl_match_v -s $thisrad >> $tree
104 echo 0 2 1.5225225 1 bark_pat alias my_bark_mat bark_mat >> $tree
105 echo my_bark_mat cone level$i 0 0 8 0 0 0 0 0 \
106 $move $thisrad $lastrad >> $tree
107 set spin=(`ev "rand($i)*360" "rand($i+$nlevels)*360" "rand($i+2*$nlevels)*360" "rand($i+3*$nlevels)*360" "rand($i+4*$nlevels)*360" "rand($i+5*$nlevels)*360" "rand($i+6*$nlevels)*360"`)
108 xform -n b1 -s 1.1 -rz $spin[2] -ry -80 -rz $spin[1] -rz 5 -t 0 0 \
109 `ev "$move*.42"` $oldtree >> $tree
110 xform -n b2 -s 1.1 -rz $spin[3] -ry -78 -rz $spin[1] -rz 128 -t 0 0 \
111 `ev "$move*.44"` $oldtree >> $tree
112 xform -n b3 -s 1.1 -rz $spin[4] -ry -75 -rz $spin[1] -rz 255 -t 0 0 \
113 `ev "$move*.40"` $oldtree >> $tree
114 xform -n b4 -rz $spin[5] -ry -80 -rz $spin[1] -rz 58 -t 0 0 \
115 `ev "$move*.92"` $oldtree >> $tree
116 xform -n b5 -rz $spin[6] -ry -78 -rz $spin[1] -rz 181 -t 0 0 \
117 `ev "$move*.84"` $oldtree >> $tree
118 xform -n b6 -rz $spin[7] -ry -75 -rz $spin[1] -rz 297 -t 0 0 \
119 `ev "$move*.88"` $oldtree >> $tree
120 @ i++
121 end
122 #
123 # Send final tree
124 #
125 cat $tree
126 done:
127 rm -f $tree $oldtree