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

# User Rev Content
1 greg 1.1 #!/bin/csh -f
2 greg 2.3 # RCSid: $Id: genpine.csh,v 2.2 2003/02/22 02:07:23 greg Exp $
3 greg 1.1 #
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 greg 2.3 set tree=/tmp/t$$
58     set oldtree=/tmp/ot$$
59 greg 1.1 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