]> gitweb.factorcode.org Git - factor.git/blob - extra/bubble-chamber/bubble-chamber.factor
Merge branch 'emacs' of http://git.hacks-galore.org/jao/factor
[factor.git] / extra / bubble-chamber / bubble-chamber.factor
1
2 USING: kernel namespaces sequences random math math.constants math.libm vars
3        ui
4        processing
5        processing.gadget
6        bubble-chamber.common
7        bubble-chamber.particle
8        bubble-chamber.particle.muon
9        bubble-chamber.particle.quark
10        bubble-chamber.particle.hadron
11        bubble-chamber.particle.axion ;
12
13 IN: bubble-chamber
14
15 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
16
17 VARS: particles muons quarks hadrons axions ;
18
19 VAR: boom
20
21 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
22
23 : collide-all ( -- )
24
25   2 pi * 1random >collision-theta
26
27   particles> [ collide ] each ;
28
29 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
30
31 : collide-one ( -- )
32
33   dim 2 / mouse-x - dim 2 / mouse-y - fatan2 >collision-theta
34
35   hadrons> random collide
36   quarks>  random collide
37   muons>   random collide ;
38
39 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
40
41 : mouse-pressed ( -- )
42   boom on
43   1 background ! kludge
44   11 [ drop collide-one ] each ;
45
46 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
47
48 : key-released ( -- )
49   key " " =
50     [
51       boom on
52       1 background
53       collide-all
54     ]
55   when ;
56
57 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
58
59 : bubble-chamber ( -- )
60
61   1000 1000 size*
62
63   [
64     1 background
65     no-stroke
66   
67     1789 [ drop <muon>   ] map >muons
68     1300 [ drop <quark>  ] map >quarks
69     1000 [ drop <hadron> ] map >hadrons
70     111  [ drop <axion>  ] map >axions
71
72     muons> quarks> hadrons> axions> 3append append >particles
73
74     collide-one
75   ] setup
76
77   [
78     boom>
79       [ particles> [ move ] each ]
80     when
81   ] draw
82
83   [ mouse-pressed ] button-down
84   [ key-released  ] key-up ;
85
86 : go ( -- ) [ bubble-chamber run ] with-ui ;
87
88 MAIN: go