Here is the source:
REBOL [
Title: "periodic table"
File: %periodictable.r
Author: "Brian Tiffin"
Date: 14-Jan-2007
Version: 0.9.4
Purpose: {Display a periodic table of the elements as REBOL buttons}
History: [
0.9.4 28-Jul-2007 btiffin "Added close button, experiment with plugin header field"
0.9.3 14-Jan-2007 btiffin "Idea for a draw effect generator from the orbits block..."
0.9.2 13-Jan-2007 btiffin "first addition - added seperate color for lanthanides and actinides, professionalized 'help about' title"
0.9.1 13-Jan-2007 btiffin "first correction - comment on elements missed weight and orbits"
0.9.0 13-Jan-2007 btiffin "First cut - mistakes non-zero probable"
]
license: GPL
]
; Define states as text color
gas: :white
liquid: :blue
solid: :black
; Define chemical series as button color
nonmetal: :green
alkali-metal: :blue
alkaline-earth-metal: :red
transition-metal: :yellow
metalloid: :magenta
halogen: :orange
poor-metal: sky
noble: :gold
lanthanide: :pink
actinide: :papaya
; Define the elements; Number, Symbol, Name, Group and period, chemical series, state at 0 celcius 1 atmosphere weight orbits
; Group and period are a pair, with the pop-outs set to row (period) 9 and 10. Groups run 1 to 18.
elements: [
1 H Hydrogen 1x1 nonmetal gas 1.00794 [1]
2 He Helium 18x1 noble gas 4.002602 [2]
3 Li Lithium 1x2 alkali-metal solid 6.941 [2 1]
4 Be Beryllium 2x2 alkaline-earth-metal solid 9.01218 [2 2]
5 B Boron 13x2 metalloid solid 10.811 [2 3]
6 C Carbon 14x2 nonmetal solid 12.011 [2 4]
7 N Nitrogen 15x2 nonmetal gas 14.00674 [2 5]
8 O Oxygen 16x2 nonmetal gas 15.9994 [2 6]
9 F Fluorine 17x2 halogen gas 18.998403 [2 7]
10 Ne Neon 18x2 noble gas 20.1797 [2 8]
11 Na Sodium 1x3 alkali-metal solid 22.989768 [2 8 1]
12 Mg Magnesium 2x3 alkaline-earth-metal solid 24.305 [2 8 2]
13 Al Aluminum 13x3 poor-metal solid 26.981539 [2 8 3]
14 Si Silicon 14x3 metalloid solid 28.0855 [2 8 4]
15 P Phosphorus 15x3 nonmetal solid 30.973762 [2 8 5]
16 S Sulphur 16x3 nonmetal solid 32.066 [2 8 6]
17 Cl Chlorine 17x3 halogen gas 35.4527 [2 8 7]
18 Ar Argon 18x3 noble gas 39.948 [2 8 8]
19 K Potassium 1x4 alkali-metal solid 39.0983 [2 8 8 1]
20 Ca Calcium 2x4 alkaline-earth-metal solid 40.078 [2 8 8 2]
21 Sc Scandium 3x4 transition-metal solid 44.95591 [2 8 9 2]
22 Ti Titanium 4x4 transition-metal solid 47.88 [2 8 10 2]
23 V Vanadium 5x4 transition-metal solid 50.9415 [2 8 11 2]
24 Cr Chromium 6x4 transition-metal solid 51.9961 [2 8 13 1]
25 Mn Manganese 7x4 transition-metal solid 54.93805 [2 8 13 2]
26 Fe Iron 8x4 transition-metal solid 55.847 [2 8 14 2]
27 Co Cobalt 9x4 transition-metal solid 58.9332 [2 8 15 2]
28 Ni Nickel 10x4 transition-metal solid 58.6934 [2 8 16 2]
29 Cu Copper 11x4 transition-metal solid 63.546 [2 8 18 1]
30 Zn Zinc 12x4 transition-metal solid 65.39 [2 8 18 2]
31 Ga Gallium 13x4 poor-metal solid 69.723 [2 8 18 3]
32 Ge Germanium 14x4 metalloid solid 72.61 [2 8 18 4]
33 As Arsenic 15x4 metalloid solid 74.92159 [2 8 18 5]
34 Se Selenium 16x4 nonmetal solid 78.96 [2 8 18 6]
35 Br Bromine 17x4 halogen liquid 79.904 [2 8 18 7]
36 Kr Krypton 18x4 noble gas 83.8 [2 8 18 8]
37 Rb Rubidium 1x5 alkali-metal solid 85.4678 [2 8 18 8 1]
38 Sr Strontium 2x5 alkaline-earth-metal solid 87.62 [2 8 18 8 2]
39 Y Yttrium 3x5 transition-metal solid 88.90585 [2 8 18 9 2]
40 Zr Zirconium 4x5 transition-metal solid 91.224 [2 8 18 10 2]
41 Nb Niobium 5x5 transition-metal solid 92.90638 [2 8 18 12 1]
42 Mo Molybdenum 6x5 transition-metal solid 95.94 [2 8 18 13 1]
43 Tc Technetium 7x5 transition-metal solid 97.9072 [2 8 18 13 2]
44 Ru Ruthenium 8x5 transition-metal solid 101.07 [2 8 18 15 1]
45 Rh Rhodium 9x5 transition-metal solid 102.9055 [2 8 18 16 1]
46 Pd Palladium 10x5 transition-metal solid 106.42 [2 8 18 18 0]
47 Ag Silver 11x5 transition-metal solid 107.8682 [2 8 18 18 1]
48 Cd Cadmium 12x5 transition-metal solid 112.411 [2 8 18 18 2]
49 In Indium 13x5 poor-metal solid 114.818 [2 8 18 18 3]
50 Sn Tin 14x5 poor-metal solid 118.71 [2 8 18 18 4]
51 Sb Antimony 15x5 metalloid solid 121.760 [2 8 18 18 5]
52 Te Tellurium 16x5 metalloid solid 127.6 [2 8 18 18 6]
53 I Iodine 17x5 halogen solid 126.90447 [2 8 18 18 7]
54 Xe Xenon 18x5 noble gas 131.29 [2 8 18 18 8]
55 Cs Cesium 1x6 alkali-metal solid 132,90543 [2 8 18 18 8 1]
56 Ba Barium 2x6 alkaline-earth-metal solid 137.327 [2 8 18 18 8 2]
57 La Lanthanum 3x9 lanthanide solid 138.9055 [2 8 18 18 9 2]
58 Ce Cerium 4x9 lanthanide solid 140.115 [2 8 18 20 8 2]
59 Pr Praseodymium 5x9 lanthanide solid 140.90765 [2 8 18 21 8 2]
60 Nd Noedymium 6x9 lanthanide solid 144.24 [2 8 18 22 8 2]
61 Pm Promethium 7x9 lanthanide solid 144.9127 [2 8 18 23 8 2]
62 Sm Samarium 8x9 lanthanide solid 150.36 [2 8 18 24 8 2]
63 Eu Europium 9x9 lanthanide solid 151.965 [2 8 18 25 8 2]
64 Gd Gadolinium 10x9 lanthanide solid 157.25 [2 8 18 25 9 2]
65 Tb Terbium 11x9 lanthanide solid 158.92534 [2 8 18 27 8 2]
66 Dy Dysprosium 12x9 lanthanide solid 162.50 [2 8 18 28 8 2]
67 Ho Holmium 13x9 lanthanide solid 164.93032 [2 8 18 29 8 2]
68 Er Erbium 14x9 lanthanide solid 167.26 [2 8 18 30 8 2]
69 Tm Thulium 15x9 lanthanide solid 168.93421 [2 8 18 31 8 2]
70 Yb Ytterbium 16x9 lanthanide solid 173.04 [2 8 18 32 8 2]
71 Lu Lutetium 17x9 lanthanide solid 174.967 [2 8 18 32 9 2]
72 Hf Hafnium 4x6 transition-metal solid 178.49 [2 8 18 32 10 2]
73 Ta Tantalum 5x6 transition-metal solid 180.9479 [2 8 18 32 11 2]
74 W Tungsten 6x6 transition-metal solid 183.84 [2 8 18 32 12 2]
75 Re Rhenium 7x6 transition-metal solid 186.207 [2 8 18 32 13 2]
76 Os Osmium 8x6 transition-metal solid 190.23 [2 8 18 32 14 2]
77 Ir Iridium 9x6 transition-metal solid 192.22 [2 8 18 32 15 2]
78 Pt Platinum 10x6 transition-metal solid 195.08 [2 8 18 32 17 1]
79 Au Gold 11x6 transition-metal solid 196.96654 [2 8 18 32 18 1]
80 Hg Mercury 12x6 transition-metal liquid 200.59 [2 8 18 32 18 2]
81 Tl Thallium 13x6 poor-metal solid 204.3833 [2 8 18 32 18 3]
82 Pb Lead 14x6 poor-metal solid 207.2 [2 8 18 32 18 4]
83 Bi Bismuth 15x6 poor-metal solid 208.98037 [2 8 18 32 18 5]
84 Po Polonium 16x6 metalloid solid 208.9824 [2 8 18 32 18 6]
85 At Astatine 17x6 halogen solid 209.9871 [2 8 18 32 18 7]
86 Rn Radon 18x6 noble gas 222.0176 [2 8 18 32 18 8]
87 Fr Francium 1x7 alkali-metal solid 223.0197 [2 8 18 32 18 8 1]
88 Ra Radium 2x7 alkaline-earth-metal solid 226.0254 [2 8 18 32 18 8 2]
89 Ac Actinium 3x10 actinide solid 227.0278 [2 8 18 32 18 9 2]
90 Th Thorium 4x10 actinide solid 232.0381 [2 8 18 32 18 10 2]
91 Pa Protactinium 5x10 actinide solid 231.03588 [2 8 18 32 20 9 2]
92 U Uranium 6x10 actinide solid 238.0289 [2 8 18 32 21 9 2]
93 Np Neptunium 7x10 actinide solid 237.048 [2 8 18 32 22 9 2]
94 Pu Plutonium 8x10 actinide solid 244.0642 [2 8 18 32 24 8 2]
95 Am Americium 9x10 actinide solid 243.0614 [2 8 18 32 25 8 2]
96 Cm Curium 10x10 actinide solid 247.0703 [2 8 18 32 25 9 2]
97 Bk Berkelium 11x10 actinide solid 247.0703 [2 8 18 32 26 9 2]
98 Cf Californium 12x10 actinide solid 251.0796 [2 8 18 32 28 8 2]
99 Es Einsteinium 13x10 actinide solid 252.083 [2 8 18 32 29 8 2]
100 Fm Fermium 14x10 actinide solid 257.0951 [2 8 18 32 30 8 2]
101 Md Mendelevium 15x10 actinide solid 258.1 [2 8 18 32 31 8 2]
102 No Nobelium 16x10 actinide solid 259.1009 [2 8 18 32 32 8 2]
103 Lr Lawrencium 17x10 actinide solid 262.11 [2 8 18 32 32 9 2]
104 Rf Rutherfordium 4x7 transition-metal solid 261 [2 8 18 32 32 10 2]
105 Db Dubnium 5x7 transition-metal solid 262 [2 8 18 32 32 11 2]
106 Sg Seaborgium 6x7 transition-metal solid 266 [2 8 18 32 32 12 2]
107 Bh Bohrium 7x7 transition-metal solid 264 [2 8 18 32 32 13 2]
108 Hs Hassium 8x7 transition-metal solid 269 [2 8 18 32 32 14 2]
109 Mt Meitnerium 9x7 transition-metal solid 268 [2 8 18 32 32 15 2]
110 Ds Darmstadmium 10x7 transition-metal solid 269 [2 8 18 32 32 17 1]
111 Rg Roentgenium 11x7 transition-metal solid 272 [2 8 18 32 32 18 1]
112 Uub Ununbium 12x7 transition-metal liquid 277 [2 8 18 32 32 18 2]
113 Uut Ununtrium 13x7 poor-metal solid n/a [2 8 18 32 32 18 3]
114 Uuq Ununquadium 14x7 poor-metal solid 289 [2 8 18 32 32 18 4]
115 Uup Ununpentium 15x7 poor-metal solid n/a [2 8 18 32 32 18 5]
116 Uuh Ununhexium 16x7 poor-metal solid n/a [2 8 18 32 32 18 6]
117 Uus Ununseptium 17x7 halogen solid n/a [2 8 18 32 32 18 7]
118 Uuo Ununoctium 18x7 noble gas n/a [2 8 18 32 32 18 8]
]
; Define draw effect generator...assume going in a box 160 by 160
spins: func ["Generate draw effect circles from element orbits" orbits [block!] /local d o r x y] [
d: copy []
; background
append d [draw [fill-pen ivory pen black circle 80x80 80]]
; nucleus
append d compose/deep [draw [fill-pen black pen none circle 80x80 (add 2 length? orbits) fill-pen none]]
; orbital rings
for i 1 7 1 [
append d compose/deep [draw [fill-pen none pen black circle 80x80 (add multiply i 10 10)]]
]
; electrons
o: 0
foreach e orbits [
o: o + 1
loop e [
append d compose/deep [
draw [
fill-pen silver pen black
(r: add add multiply o 10 random 5 2)
(x: multiply either random true [1][-1] random r)
(y: multiply either random true [1][-1] square-root subtract power r 2 power x 2)
circle (as-pair add 80 x add 80 y) 3
]
]
]
]
d
]
; Build up layout
; Start with the lines that pop out the lanthanide and actinide series
; then put up a title and the clicked info area
; then place the generated orbit image holder
pte: [
backdrop effect [draw [pen black line 86x126 94x189 line 86x164 93x228]]
at 100x0
title "Periodic Table of the Elements" [
inform/title center-face layout compose [
across
image logo.gif
vh1 (to-string system/script/header/file)
text (to-string system/script/header/version)
text (to-string system/script/header/date)
text (to-string system/script/header/author)
return
area 484x110 para [wrap?: true] (remold [new-line/all/skip system/script/header/history true 4])
return
text "Chemical Series"
return
btn 115x22 nonmetal to-string 'nonmetal
btn 115x22 noble to-string 'noble
btn 115x22 alkali-metal to-string 'alkali-metal
btn 115x22 alkaline-earth-metal to-string 'alkaline-earth-metal
return
btn 115x22 metalloid to-string 'metalloid
btn 115x22 halogen to-string 'halogen
btn 115x22 transition-metal to-string 'transition-metal
btn 115x22 poor-metal to-string 'poor-metal
return
pad 123
btn 115x22 lanthanide to-string 'lanthanide
btn 115x22 actinide to-string 'actinide
return
text "State (zero degrees Celsius one atmosphere)"
return
btn 115x22 nonmetal "Gas" font [size: 10 color: gas]
btn 115x22 halogen "Liquid" font [size: 10 color: liquid]
btn 115x22 transition-metal "Solid" font [size: 10 color: solid]
return
bar 484
return
text "Help from http://en.wikipedia.org/wiki/Periodic_table, google, textbooks and gperiodic"
return
pad 226
btn "Ok"
] "Help About...click anywhere to close"
]
at 100x40
clicked: info white 265x40 font [style: 'bold]
at 559x15
img: box 161x161 effect []
at 588x200
logo: image logo.gif
]
; build the buttons, positioned by group and period, pop out the lanthanide/actinide block by adding some pixels
; clicking a button fills in clicked area and the img effect block
foreach [el sym name pos series state weight orbits] elements [
blurb: reform [el sym name series state newline weight "[" orbits "]"]
append pte reduce [
'at as-pair add either greater? pos/y 8 [7][0] multiply pos/x 29 multiply pos/y 21
'btn 29x22 to-string sym series 'font compose [color: (state)] compose/deep [set-face clicked (blurb) img/effect: [(spins orbits)] show img]
]
]
append pte [at 29x199 btn "Quit" [quit]]
; and view it
view layout pte
No comments:
Post a Comment