SimpleFastOpenAtomicVisualiser
Loading...
Searching...
No Matches
include
util.h
Go to the documentation of this file.
1
#ifndef UTIL_H
2
#define UTIL_H
3
4
#include <cmath>
5
#include <string>
6
#include <sstream>
7
#include <limits.h>
8
#include <filesystem>
9
#include <algorithm>
10
#include <vector>
11
#include <regex>
12
13
#include <GLFW/glfw3.h>
14
15
#include <glm/glm.hpp>
16
17
#include <
colour.h
>
18
35
glm::vec3
cartesian2Spherical
(glm::vec3
xyz
)
36
{
37
float
r
= glm::length(
xyz
);
38
float
sgn
= (-1.0*
xyz
.z) < 0 ? -1.0 : 1.0;
39
return
40
{
41
r
,
42
std::acos(
xyz
.y/
r
),
43
sgn
* std::acos(
xyz
.x/std::sqrt(
xyz
.x*
xyz
.x+
xyz
.z*
xyz
.z))
44
};
45
}
46
63
glm::vec3
spherical2cartesian
(glm::vec3
rthetaphi
)
64
{
65
66
return
67
{
68
rthetaphi
.x*std::sin(
rthetaphi
.y)*std::cos(
rthetaphi
.z),
69
rthetaphi
.x*std::cos(
rthetaphi
.y),
70
-
rthetaphi
.x*std::sin(
rthetaphi
.y)*std::sin(
rthetaphi
.z)
71
};
72
}
73
81
std::string
fixedLengthNumber
(
double
x,
unsigned
length)
82
{
83
std::string
d
= std::to_string(x);
84
std::string
dtrunc
(length,
' '
);
85
for
(
unsigned
c = 0; c <
dtrunc
.length(); c++
/*ayy lmao*/
)
86
{
87
88
if
(c >=
d
.length())
89
{
90
dtrunc
[c] =
'0'
;
91
}
92
else
93
{
94
dtrunc
[c] =
d
[c];
95
}
96
}
97
return
dtrunc
;
98
}
99
108
std::vector<std::string>
split
(std::string
str
, std::regex
delim
)
109
{
110
std::vector<std::string>
s
;
111
auto
matches
= std::sregex_iterator(
str
.begin(),
str
.end(),
delim
);
112
if
(std::distance(
matches
, std::sregex_iterator()) == 0) {
return
{
str
}; }
113
auto
key
=
matches
->position();
114
if
(
key
> 0)
115
{
116
s
.push_back(
str
.substr(0,
key
));
117
}
118
while
(
matches
!= std::sregex_iterator())
119
{
120
key
=
matches
->position();
121
matches
++;
122
auto
next
=
matches
->position();
123
s
.push_back(
str
.substr(
key
,
next
-1-
key
));
124
}
125
return
s
;
126
}
127
128
void
remove
(std::string &
str
,
const
char
ch
)
129
{
130
str
.erase(std::remove(
str
.begin(),
str
.end(),
ch
),
str
.cend());
131
}
132
141
std::string
sidebyside
(std::string
left
, std::string
right
,
uint8_t
rjust
)
142
{
143
std::vector<std::string>
l
=
split
(
left
, std::regex(
"\\n"
));
144
std::vector<std::string>
r
=
split
(
right
, std::regex(
"\\n"
));
145
146
for
(
auto
&
str
:
l
) {
remove
(
str
,
'\n'
); }
147
for
(
auto
&
str
:
r
) {
remove
(
str
,
'\n'
); }
148
149
std::string
combined
;
150
std::vector<std::string>::iterator
riter
=
r
.begin();
151
for
(
auto
liter
=
l
.begin();
liter
!=
l
.end();
liter
++)
152
{
153
combined
+= *
liter
;
154
if
(
riter
!=
r
.end())
155
{
156
int
padding
= std::max(
int
(
rjust
)-
int
((*liter).size()), 0);
157
combined
+= std::string(
padding
,
' '
) + *
riter
+
"\n"
;
158
riter
++;
159
}
160
else
161
{
162
combined
+=
"\n"
;
163
}
164
}
165
166
while
(
riter
!=
r
.end())
167
{
168
combined
+= std::string(
rjust
,
' '
) + *
riter
+
"\n"
;
169
riter
++;
170
}
171
return
combined
;
172
}
173
179
std::string
timeStamp
()
180
{
181
std::time_t
end_time
= std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
182
std::string
ts
= std::ctime(&
end_time
);
183
std::replace(
ts
.begin(),
ts
.end(),
' '
,
'-'
);
184
std::replace(
ts
.begin(),
ts
.end(),
':'
,
'-'
);
185
ts
.erase(
ts
.end()-1);
186
return
ts
;
187
}
188
193
const
std::vector<Atom>
sfoavAtoms
=
194
{
195
{
Element::S
, {-11.3966, -2.10345, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::S
),
CPK_COLOURS
.at(
Element::S
)},
196
{
Element::S
, {-10.3966, -2.10345, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::S
),
CPK_COLOURS
.at(
Element::S
)},
197
{
Element::S
, {-9.39655, -2.10345, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::S
),
CPK_COLOURS
.at(
Element::S
)},
198
{
Element::S
, {-10.3966, 1.89655, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::S
),
CPK_COLOURS
.at(
Element::S
)},
199
{
Element::S
, {-9.39655, 1.89655, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::S
),
CPK_COLOURS
.at(
Element::S
)},
200
{
Element::S
, {-8.39655, -2.10345, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::S
),
CPK_COLOURS
.at(
Element::S
)},
201
{
Element::S
, {-8.39655, 1.89655, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::S
),
CPK_COLOURS
.at(
Element::S
)},
202
{
Element::S
, {-11.3966, 1.89655, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::S
),
CPK_COLOURS
.at(
Element::S
)},
203
{
Element::S
, {-11.3966, 0.896552, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::S
),
CPK_COLOURS
.at(
Element::S
)},
204
{
Element::S
, {-10.3966, -0.103448, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::S
),
CPK_COLOURS
.at(
Element::S
)},
205
{
Element::S
, {-9.39655, -0.103448, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::S
),
CPK_COLOURS
.at(
Element::S
)},
206
{
Element::S
, {-8.39655, -1.10345, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::S
),
CPK_COLOURS
.at(
Element::S
)},
207
{
Element::F
, {-6.39655, 1.89655, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::F
),
CPK_COLOURS
.at(
Element::F
)},
208
{
Element::F
, {-5.39655, 1.89655, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::F
),
CPK_COLOURS
.at(
Element::F
)},
209
{
Element::F
, {-4.39655, 1.89655, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::F
),
CPK_COLOURS
.at(
Element::F
)},
210
{
Element::F
, {-6.39655, -0.103448, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::F
),
CPK_COLOURS
.at(
Element::F
)},
211
{
Element::F
, {-5.39655, -0.103448, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::F
),
CPK_COLOURS
.at(
Element::F
)},
212
{
Element::F
, {-6.39655, 0.896552, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::F
),
CPK_COLOURS
.at(
Element::F
)},
213
{
Element::F
, {-6.39655, -1.10345, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::F
),
CPK_COLOURS
.at(
Element::F
)},
214
{
Element::F
, {-6.39655, -2.10345, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::F
),
CPK_COLOURS
.at(
Element::F
)},
215
{
Element::F
, {-4.39655, -0.103448, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::F
),
CPK_COLOURS
.at(
Element::F
)},
216
{
Element::F
, {-3.39655, 1.89655, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::F
),
CPK_COLOURS
.at(
Element::F
)},
217
{
Element::O
, {-1.39655, 1.89655, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::O
),
CPK_COLOURS
.at(
Element::O
)},
218
{
Element::O
, {-1.39655, 0.896552, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::O
),
CPK_COLOURS
.at(
Element::O
)},
219
{
Element::O
, {-1.39655, -0.103448, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::O
),
CPK_COLOURS
.at(
Element::O
)},
220
{
Element::O
, {-1.39655, -1.10345, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::O
),
CPK_COLOURS
.at(
Element::O
)},
221
{
Element::O
, {-1.39655, -2.10345, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::O
),
CPK_COLOURS
.at(
Element::O
)},
222
{
Element::O
, {-0.39655, -2.10345, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::O
),
CPK_COLOURS
.at(
Element::O
)},
223
{
Element::O
, {0.603449, -2.10345, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::O
),
CPK_COLOURS
.at(
Element::O
)},
224
{
Element::O
, {1.603449, -2.10345, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::O
),
CPK_COLOURS
.at(
Element::O
)},
225
{
Element::O
, {1.603449, -1.10345, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::O
),
CPK_COLOURS
.at(
Element::O
)},
226
{
Element::O
, {1.603449, -0.103448, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::O
),
CPK_COLOURS
.at(
Element::O
)},
227
{
Element::O
, {1.603449, 0.896552, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::O
),
CPK_COLOURS
.at(
Element::O
)},
228
{
Element::O
, {1.603449, 1.89655, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::O
),
CPK_COLOURS
.at(
Element::O
)},
229
{
Element::O
, {0.603449, 1.89655, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::O
),
CPK_COLOURS
.at(
Element::O
)},
230
{
Element::O
, {-0.39655, 1.89655, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::O
),
CPK_COLOURS
.at(
Element::O
)},
231
{
Element::Ar
, {-1.39655+1.603449*3.0, -2.10345, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::Ar
),
CPK_COLOURS
.at(
Element::Ar
)},
232
{
Element::Ar
, {-1.39655+1.603449*3.0, -1.10345, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::Ar
),
CPK_COLOURS
.at(
Element::Ar
)},
233
{
Element::Ar
, {-1.39655+1.603449*3.0, -0.103448, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::Ar
),
CPK_COLOURS
.at(
Element::Ar
)},
234
{
Element::Ar
, {-1.39655+1.603449*3.0, 0.896552, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::Ar
),
CPK_COLOURS
.at(
Element::Ar
)},
235
{
Element::Ar
, {-0.396552+1.603449*3.0, 1.89655, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::Ar
),
CPK_COLOURS
.at(
Element::Ar
)},
236
{
Element::Ar
, {0.603448+1.603449*3.0, 1.89655, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::Ar
),
CPK_COLOURS
.at(
Element::Ar
)},
237
{
Element::Ar
, {1.60345+1.603449*3.0, 0.896552, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::Ar
),
CPK_COLOURS
.at(
Element::Ar
)},
238
{
Element::Ar
, {1.60345+1.603449*3.0, -0.103448, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::Ar
),
CPK_COLOURS
.at(
Element::Ar
)},
239
{
Element::Ar
, {1.60345+1.603449*3.0, -1.10345, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::Ar
),
CPK_COLOURS
.at(
Element::Ar
)},
240
{
Element::Ar
, {1.60345+1.603449*3.0, -2.10345, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::Ar
),
CPK_COLOURS
.at(
Element::Ar
)},
241
{
Element::Ar
, {0.603448+1.603449*3.0, -0.103448, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::Ar
),
CPK_COLOURS
.at(
Element::Ar
)},
242
{
Element::Ar
, {-0.396552+1.603449*3.0, -0.103448, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::Ar
),
CPK_COLOURS
.at(
Element::Ar
)},
243
{
Element::V
, {8.60345, 1.89655, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::V
),
CPK_COLOURS
.at(
Element::V
)},
244
{
Element::V
, {11.6034, 1.89655, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::V
),
CPK_COLOURS
.at(
Element::V
)},
245
{
Element::V
, {8.60345, 0.896552, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::V
),
CPK_COLOURS
.at(
Element::V
)},
246
{
Element::V
, {8.60345, -0.103448, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::V
),
CPK_COLOURS
.at(
Element::V
)},
247
{
Element::V
, {11.6034, 0.896552, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::V
),
CPK_COLOURS
.at(
Element::V
)},
248
{
Element::V
, {11.6034, -0.103448, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::V
),
CPK_COLOURS
.at(
Element::V
)},
249
{
Element::V
, {10.6034, -2.10345, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::V
),
CPK_COLOURS
.at(
Element::V
)},
250
{
Element::V
, {9.60345, -2.10345, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::V
),
CPK_COLOURS
.at(
Element::V
)},
251
{
Element::V
, {8.60345, -1.10345, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::V
),
CPK_COLOURS
.at(
Element::V
)},
252
{
Element::V
, {11.6034, -1.10345, 0.0}, 0.5f*
ELEMENT_RADIUS
.at(
Element::V
),
CPK_COLOURS
.at(
Element::V
)}
253
};
254
259
const
std::map<int, std::string>
keyCodes
260
{
261
{
GLFW_KEY_UNKNOWN
,
"Unknown"
},
262
{
GLFW_KEY_SPACE
,
"Space"
},
263
{
GLFW_KEY_APOSTROPHE
,
"Apostrophe"
},
264
{
GLFW_KEY_COMMA
,
"Comma"
},
265
{
GLFW_KEY_MINUS
,
"Minus"
},
266
{
GLFW_KEY_PERIOD
,
"Period"
},
267
{
GLFW_KEY_SLASH
,
"Slash"
},
268
{
GLFW_KEY_0
,
"0"
},
269
{
GLFW_KEY_1
,
"1"
},
270
{
GLFW_KEY_2
,
"2"
},
271
{
GLFW_KEY_3
,
"3"
},
272
{
GLFW_KEY_4
,
"4"
},
273
{
GLFW_KEY_5
,
"5"
},
274
{
GLFW_KEY_6
,
"6"
},
275
{
GLFW_KEY_7
,
"7"
},
276
{
GLFW_KEY_8
,
"8"
},
277
{
GLFW_KEY_9
,
"9"
},
278
{
GLFW_KEY_SEMICOLON
,
"Semicolon"
},
279
{
GLFW_KEY_EQUAL
,
"Equal"
},
280
{
GLFW_KEY_A
,
"A"
},
281
{
GLFW_KEY_B
,
"B"
},
282
{
GLFW_KEY_C
,
"C"
},
283
{
GLFW_KEY_D
,
"D"
},
284
{
GLFW_KEY_E
,
"E"
},
285
{
GLFW_KEY_F
,
"F"
},
286
{
GLFW_KEY_G
,
"G"
},
287
{
GLFW_KEY_H
,
"H"
},
288
{
GLFW_KEY_I
,
"I"
},
289
{
GLFW_KEY_J
,
"J"
},
290
{
GLFW_KEY_K
,
"K"
},
291
{
GLFW_KEY_L
,
"L"
},
292
{
GLFW_KEY_M
,
"M"
},
293
{
GLFW_KEY_N
,
"N"
},
294
{
GLFW_KEY_O
,
"O"
},
295
{
GLFW_KEY_P
,
"P"
},
296
{
GLFW_KEY_Q
,
"Q"
},
297
{
GLFW_KEY_R
,
"R"
},
298
{
GLFW_KEY_S
,
"S"
},
299
{
GLFW_KEY_T
,
"T"
},
300
{
GLFW_KEY_U
,
"U"
},
301
{
GLFW_KEY_V
,
"V"
},
302
{
GLFW_KEY_W
,
"W"
},
303
{
GLFW_KEY_X
,
"X"
},
304
{
GLFW_KEY_Y
,
"Y"
},
305
{
GLFW_KEY_Z
,
"Z"
},
306
{
GLFW_KEY_LEFT_BRACKET
,
"LeftBracket"
},
307
{
GLFW_KEY_BACKSLASH
,
"Backslash"
},
308
{
GLFW_KEY_RIGHT_BRACKET
,
"RightBracket"
},
309
{
GLFW_KEY_GRAVE_ACCENT
,
"GraveAccent"
},
310
{
GLFW_KEY_WORLD_1
,
"World1"
},
311
{
GLFW_KEY_WORLD_2
,
"World2"
},
312
{
GLFW_KEY_ESCAPE
,
"Escape"
},
313
{
GLFW_KEY_ENTER
,
"Enter"
},
314
{
GLFW_KEY_TAB
,
"Tab"
},
315
{
GLFW_KEY_BACKSPACE
,
"Backspace"
},
316
{
GLFW_KEY_INSERT
,
"Insert"
},
317
{
GLFW_KEY_DELETE
,
"Delete"
},
318
{
GLFW_KEY_RIGHT
,
"Right"
},
319
{
GLFW_KEY_LEFT
,
"Left"
},
320
{
GLFW_KEY_DOWN
,
"Down"
},
321
{
GLFW_KEY_UP
,
"Up"
},
322
{
GLFW_KEY_PAGE_UP
,
"PageUp"
},
323
{
GLFW_KEY_PAGE_DOWN
,
"PageDown"
},
324
{
GLFW_KEY_HOME
,
"Home"
},
325
{
GLFW_KEY_END
,
"End"
},
326
{
GLFW_KEY_CAPS_LOCK
,
"CapsLock"
},
327
{
GLFW_KEY_SCROLL_LOCK
,
"ScrollLock"
},
328
{
GLFW_KEY_NUM_LOCK
,
"NumLock"
},
329
{
GLFW_KEY_PRINT_SCREEN
,
"PrintScreen"
},
330
{
GLFW_KEY_PAUSE
,
"Pause"
},
331
{
GLFW_KEY_F1
,
"F1"
},
332
{
GLFW_KEY_F2
,
"F2"
},
333
{
GLFW_KEY_F3
,
"F3"
},
334
{
GLFW_KEY_F4
,
"F4"
},
335
{
GLFW_KEY_F5
,
"F5"
},
336
{
GLFW_KEY_F6
,
"F6"
},
337
{
GLFW_KEY_F7
,
"F7"
},
338
{
GLFW_KEY_F8
,
"F8"
},
339
{
GLFW_KEY_F9
,
"F9"
},
340
{
GLFW_KEY_F10
,
"F10"
},
341
{
GLFW_KEY_F11
,
"F11"
},
342
{
GLFW_KEY_F12
,
"F12"
},
343
{
GLFW_KEY_F13
,
"F13"
},
344
{
GLFW_KEY_F14
,
"F14"
},
345
{
GLFW_KEY_F15
,
"F15"
},
346
{
GLFW_KEY_F16
,
"F16"
},
347
{
GLFW_KEY_F17
,
"F17"
},
348
{
GLFW_KEY_F18
,
"F18"
},
349
{
GLFW_KEY_F19
,
"F19"
},
350
{
GLFW_KEY_F20
,
"F20"
},
351
{
GLFW_KEY_F21
,
"F21"
},
352
{
GLFW_KEY_F22
,
"F22"
},
353
{
GLFW_KEY_F23
,
"F23"
},
354
{
GLFW_KEY_F24
,
"F24"
},
355
{
GLFW_KEY_F25
,
"F25"
},
356
{
GLFW_KEY_KP_0
,
"Keypad0"
},
357
{
GLFW_KEY_KP_1
,
"Keypad1"
},
358
{
GLFW_KEY_KP_2
,
"Keypad2"
},
359
{
GLFW_KEY_KP_3
,
"Keypad3"
},
360
{
GLFW_KEY_KP_4
,
"Keypad4"
},
361
{
GLFW_KEY_KP_5
,
"Keypad5"
},
362
{
GLFW_KEY_KP_6
,
"Keypad6"
},
363
{
GLFW_KEY_KP_7
,
"Keypad7"
},
364
{
GLFW_KEY_KP_8
,
"Keypad8"
},
365
{
GLFW_KEY_KP_9
,
"Keypad9"
},
366
{
GLFW_KEY_KP_DECIMAL
,
"KeypadDecimal"
},
367
{
GLFW_KEY_KP_DIVIDE
,
"KeypadDivide"
},
368
{
GLFW_KEY_KP_MULTIPLY
,
"KeypadMultiply"
},
369
{
GLFW_KEY_KP_SUBTRACT
,
"KeypadSubtract"
},
370
{
GLFW_KEY_KP_ADD
,
"KeypadAdd"
},
371
{
GLFW_KEY_KP_ENTER
,
"KeypadEnter"
},
372
{
GLFW_KEY_KP_EQUAL
,
"KeypadEqual"
},
373
{
GLFW_KEY_LEFT_SHIFT
,
"LeftShift"
},
374
{
GLFW_KEY_LEFT_CONTROL
,
"LeftControl"
},
375
{
GLFW_KEY_LEFT_ALT
,
"LeftAlt"
},
376
{
GLFW_KEY_LEFT_SUPER
,
"LeftSuper"
},
377
{
GLFW_KEY_RIGHT_SHIFT
,
"RightShift"
},
378
{
GLFW_KEY_RIGHT_CONTROL
,
"RightControl"
},
379
{
GLFW_KEY_RIGHT_ALT
,
"RightAlt"
},
380
{
GLFW_KEY_RIGHT_SUPER
,
"RightSuper"
},
381
{
GLFW_KEY_MENU
,
"Menu"
}
382
};
383
384
#endif
/* UTIL_H */
colour.h
CPK_COLOURS
const std::map< Element, glm::vec4 > CPK_COLOURS
Corey–Pauling–Koltun colourings.
Definition
colour.h:18
vec
glm::vec< L, float, glm::qualifier::highp > vec
Definition
commandLine.h:214
Element::V
@ V
Element::S
@ S
Element::F
@ F
Element::Ar
@ Ar
Element::O
@ O
ELEMENT_RADIUS
const std::map< Element, float > ELEMENT_RADIUS
Map Element to a Van der Waals radius in Angstroms.
Definition
element.h:461
keyCodes
const std::map< int, std::string > keyCodes
String name for a GLFW_KEY index.
Definition
util.h:260
split
std::vector< std::string > split(std::string str, std::regex delim)
Split a std::string by a std::regex token.
Definition
util.h:108
remove
void remove(std::string &str, const char ch)
Definition
util.h:128
fixedLengthNumber
std::string fixedLengthNumber(double x, unsigned length)
Convert a double to a fixes length std::string.
Definition
util.h:81
spherical2cartesian
glm::vec3 spherical2cartesian(glm::vec3 rthetaphi)
convert spherical coordinates to cartesian coordinates.
Definition
util.h:63
sfoavAtoms
const std::vector< Atom > sfoavAtoms
A set of atoms spelling SFOAV to display during loading.
Definition
util.h:193
timeStamp
std::string timeStamp()
Current timestamp.
Definition
util.h:179
sidebyside
std::string sidebyside(std::string left, std::string right, uint8_t rjust)
Combined two strings (split by newlines) side by side.
Definition
util.h:141
cartesian2Spherical
glm::vec3 cartesian2Spherical(glm::vec3 xyz)
Map cartesian coordinates to spherical.
Definition
util.h:35
Generated by
1.9.8