fermisurfer Git
Revisión | 034cbe696a33bd51f6aabd6c7e3b2f56f99c68ff (tree) |
---|---|
Tiempo | 2022-03-09 16:35:20 |
Autor | Mitsuaki Kawamura <kawamitsuaki@gmai...> |
Commiter | Mitsuaki Kawamura |
Port resize, automatic detection ob tetra, band on/off
@@ -1,5 +1,5 @@ | ||
1 | 1 | <!DOCTYPE html> |
2 | -<html> | |
2 | +<html lang="en"> | |
3 | 3 | <head> |
4 | 4 | <title>FermiSurfer on Web</title> |
5 | 5 | <link rel="shortcut icon" href="../figs/fermisurfer.ico" type="image/vnd.microsoft.icon"> |
@@ -17,162 +17,181 @@ | ||
17 | 17 | <script type="text/javascript" src="./fermisurfer.js" defer></script> |
18 | 18 | </head> |
19 | 19 | <body> |
20 | - <img src="ads.png" height="200"> | |
20 | + <img src="ads.png" height="200" alt="ADVERTISE HERE"> | |
21 | 21 | <br> |
22 | 22 | File: <input type="file" id="inputfile" name="inputfile" onchange="read_file();"> |
23 | 23 | <a href="../ja/_build/html/onweb.html" target="_blank">日本語マニュアル</a> / <a href="../en/_build/html/onweb.html" target="_blank">Manual in English</a> |
24 | 24 | <a href="https://fermisurfer.osdn.jp/index.html" target="_blank">FermiSurfer Web page</a> |
25 | 25 | <a href="https://doi.org/10.1016/j.cpc.2019.01.017" target="_blank">CPC paper</a> |
26 | 26 | <a href="https://arxiv.org/abs/1811.06177" target="_blank">arXiv paper</a> |
27 | - <table border="0"> | |
28 | - <tr align="left"> | |
27 | + <table style="border:0;"> | |
28 | + <tr style="text-align: left;"> | |
29 | 29 | <td><canvas id="glcanvas" width="600" height="600" style="border:solid black 1px;"></canvas></td> |
30 | 30 | <td> |
31 | - <table border="0"> | |
32 | - <tr align="left"> | |
31 | + <table style="border:0;"> | |
32 | + <tr style="text-align: left;"> | |
33 | + <td><label>Width: <input type="text" id="width" value="600"></label></td> | |
34 | + <td><label>Height: <input type="text" id="height" value="600"></label></td> | |
35 | + <td><input type="button" value="resize" onclick="resizeCanvas();"></td> | |
36 | + </tr> | |
37 | + <tr style="text-align: left;"> | |
33 | 38 | <td><input type="button" value="update" onclick="update_delay();"></td> |
34 | 39 | <td>Line width :</td> |
35 | - <td><input type="number" name="linewidth" id="linewidth" value="1" onchange="update_now();" step="0.1" min="0"></td> | |
36 | - <td><input type="checkbox" name="ongamma" id="ongamma" value="ongamma" checked="checked">On Gamma</td> | |
40 | + <td><label><input type="number" name="linewidth" id="linewidth" value="1" onchange="update_now();" step="0.1" min="0"></label></td> | |
41 | + <td><label><input type="checkbox" name="ongamma" id="ongamma" value="ongamma" checked="checked">On Gamma</label></td> | |
37 | 42 | </tr> |
38 | - <tr align="left"> | |
43 | + <tr style="text-align: left;"> | |
39 | 44 | <td>Section-v : </td> |
40 | - <td><input type="number" name="sectionv0" id="sectionv0" value="0"></td> | |
41 | - <td><input type="number" name="sectionv1" id="sectionv1" value="0"></td> | |
42 | - <td><input type="number" name="sectionv2" id="sectionv2" value="1"></td> | |
45 | + <td><label><input type="number" name="sectionv0" id="sectionv0" value="0"></label></td> | |
46 | + <td><label><input type="number" name="sectionv1" id="sectionv1" value="0"></label></td> | |
47 | + <td><label><input type="number" name="sectionv2" id="sectionv2" value="1"></label></td> | |
43 | 48 | </tr> |
44 | - <tr align="left"> | |
49 | + <tr style="text-align: left;"> | |
45 | 50 | <td>Equator-v : </td> |
46 | - <td><input type="number" name="equatorv0" id="equatorv0" value="0"></td> | |
47 | - <td><input type="number" name="equatorv1" id="equatorv1" value="0"></td> | |
48 | - <td><input type="number" name="equatorv2" id="equatorv2" value="1"></td> | |
49 | - </tr> | |
50 | - <tr align="left"> | |
51 | - <td>Interpol ratio : </td> | |
52 | - <td><input type="number" name="interpol" id="interpol" value="1" step="1" min="1" onchange="update_interpol();"></td> | |
51 | + <td><label><input type="number" name="equatorv0" id="equatorv0" value="0"></label></td> | |
52 | + <td><label><input type="number" name="equatorv1" id="equatorv1" value="0"></label></td> | |
53 | + <td><label><input type="number" name="equatorv2" id="equatorv2" value="1"></label></td> | |
54 | + </tr> | |
55 | + <tr style="text-align: left;"> | |
56 | + <td>Interpol ratio : </td> | |
57 | + <td> | |
58 | + <label> | |
59 | + <input type="number" name="interpol" id="interpol" value="1" step="1" min="1" onchange="update_interpol();"> | |
60 | + </label> | |
61 | + </td> | |
53 | 62 | <td>Fermi energy : </td> |
54 | - <td><input type="number" name="fermienergy" id="fermienergy" value="0.0" onchange="update_efermi();"></td> | |
63 | + <td> | |
64 | + <label> | |
65 | + <input type="number" name="fermienergy" id="fermienergy" value="0.0" onchange="update_efermi();"> | |
66 | + </label> | |
67 | + </td> | |
55 | 68 | </tr> |
56 | - <tr align="left"> | |
69 | + <tr style="text-align: left;"> | |
57 | 70 | <td>Min. of Scale : </td> |
58 | - <td><input type="number" name="scalemin" id="scalemin" value="" onchange="update_minmax();"></td> | |
71 | + <td><label><input type="number" name="scalemin" id="scalemin" value="" onchange="update_minmax();"></label></td> | |
59 | 72 | <td>Max. of Scale : </td> |
60 | - <td><input type="number" name="scalemax" id="scalemax" value="" onchange="update_minmax();"></td> | |
73 | + <td><label><input type="number" name="scalemax" id="scalemax" value="" onchange="update_minmax();"></label></td> | |
61 | 74 | </tr> |
62 | - <tr align="left"> | |
75 | + <tr style="text-align: left;"> | |
63 | 76 | <td>Tetrahedron : </td> |
64 | 77 | <td></td> |
65 | 78 | <td></td> |
66 | 79 | <td></td> |
67 | 80 | </tr> |
68 | - <tr align="left"> | |
81 | + <tr style="text-align: left;"> | |
69 | 82 | <form id="tetrahedron"> |
70 | - <td><input type="radio" name="tetrahedron" value="0" checked="checked" onchange="update_tetra();">0 | |
71 | - <input type="radio" name="tetrahedron" value="1" onchange="update_tetra();">1 | |
72 | - <input type="radio" name="tetrahedron" value="2" onchange="update_tetra();">2</td> | |
73 | - <td><input type="radio" name="tetrahedron" value="3" onchange="update_tetra();">3 | |
74 | - <input type="radio" name="tetrahedron" value="4" onchange="update_tetra();">4 | |
75 | - <input type="radio" name="tetrahedron" value="5" onchange="update_tetra();">5</td> | |
76 | - <td><input type="radio" name="tetrahedron" value="6" onchange="update_tetra();">6 | |
77 | - <input type="radio" name="tetrahedron" value="7" onchange="update_tetra();">7</td> | |
78 | - <td><input type="radio" name="tetrahedron" value="8" onchange="update_tetra();">8 | |
79 | - <input type="radio" name="tetrahedron" value="9" onchange="update_tetra();">9</td> | |
83 | + <td> | |
84 | + <label><input type="radio" name="tetrahedron" value="0" checked="checked" onchange="update_tetra();">0</label> | |
85 | + <label><input type="radio" name="tetrahedron" value="1" onchange="update_tetra();">1</label> | |
86 | + <label><input type="radio" name="tetrahedron" value="2" onchange="update_tetra();">2</label> | |
87 | + </td> | |
88 | + <td> | |
89 | + <label><input type="radio" name="tetrahedron" value="3" onchange="update_tetra();">3</label> | |
90 | + <label><input type="radio" name="tetrahedron" value="4" onchange="update_tetra();">4</label> | |
91 | + <label><input type="radio" name="tetrahedron" value="5" onchange="update_tetra();">5</label> | |
92 | + </td> | |
93 | + <td> | |
94 | + <label><input type="radio" name="tetrahedron" value="6" onchange="update_tetra();">6</label> | |
95 | + <label><input type="radio" name="tetrahedron" value="7" onchange="update_tetra();">7</label> | |
96 | + </td> | |
97 | + <td> | |
98 | + <label><input type="radio" name="tetrahedron" value="8" onchange="update_tetra();">8</label> | |
99 | + <label><input type="radio" name="tetrahedron" value="9" onchange="update_tetra();">9</label> | |
100 | + </td> | |
80 | 101 | </form> |
81 | 102 | </tr> |
82 | - <tr align="left"> | |
103 | + <tr style="text-align: left;"> | |
83 | 104 | <td>Color-scale mode : </td> |
84 | 105 | <td></td> |
85 | 106 | <td></td> |
86 | 107 | <td></td> |
87 | 108 | </tr> |
88 | - <tr align="left"> | |
109 | + <tr style="text-align: left;"> | |
89 | 110 | <form id="colorscalemode"> |
90 | - <td><input type="radio" name="colorscalemode" value="1" checked="checked" onchange="update_color();">Input(1D)</td> | |
91 | - <td><input type="radio" name="colorscalemode" value="2" onchange="update_color();">Input(2D)</td> | |
92 | - <td><input type="radio" name="colorscalemode" value="3" onchange="update_color();">Input(3D)</td> | |
93 | - <td><input type="radio" name="colorscalemode" value="4" onchange="update_color();">Fermi velocity</td> | |
111 | + <td><label><input type="radio" name="colorscalemode" value="1" checked="checked" onchange="update_color();">Input(1D)</label></td> | |
112 | + <td><label><input type="radio" name="colorscalemode" value="2" onchange="update_color();">Input(2D)</label></td> | |
113 | + <td><label><input type="radio" name="colorscalemode" value="3" onchange="update_color();">Input(3D)</label></td> | |
114 | + <td><label><input type="radio" name="colorscalemode" value="4" onchange="update_color();">Fermi velocity</label></td> | |
94 | 115 | </form> |
95 | 116 | </tr> |
96 | - <tr align="left"> | |
117 | + <tr style="text-align: left;"> | |
97 | 118 | <td>Brillouin zone : </td> |
98 | 119 | <form id="brillouinzone"> |
99 | - <td><input type="radio" name="brillouinzone" value="1" checked="checked">First</td> | |
100 | - <td><input type="radio" name="brillouinzone" value="-1">Premitive</td> | |
120 | + <td><label><input type="radio" name="brillouinzone" value="1" checked="checked">First</label></td> | |
121 | + <td><label><input type="radio" name="brillouinzone" value="-1">Primitive</label></td> | |
101 | 122 | </form> |
102 | 123 | <td></td> |
103 | 124 | </tr> |
104 | - <tr align="left"> | |
125 | + <tr style="text-align: left;"> | |
105 | 126 | <td>Stereogram : </td> |
106 | 127 | <form id="stereogram"> |
107 | - <td><input type="radio" name="stereogram" value="1" checked="checked">None</td> | |
108 | - <td><input type="radio" name="stereogram" value="2">Parallel</td> | |
109 | - <td><input type="radio" name="stereogram" value="3">Cross</td> | |
128 | + <td><label><input type="radio" name="stereogram" value="1" checked="checked">None</label></td> | |
129 | + <td><label><input type="radio" name="stereogram" value="2">Parallel</label></td> | |
130 | + <td><label><input type="radio" name="stereogram" value="3">Cross</label></td> | |
110 | 131 | </form> |
111 | 132 | </tr> |
112 | - <tr align="left"> | |
133 | + <tr style="text-align: left;"> | |
113 | 134 | <td>Mouse drag : </td> |
114 | 135 | <form id="mousedrag"> |
115 | - <td><input type="radio" name="mousedrag" value="1" checked="checked">Rotate</td> | |
116 | - <td><input type="radio" name="mousedrag" value="2">Scale</td> | |
117 | - <td><input type="radio" name="mousedrag" value="3">Translate</td> | |
136 | + <td><label><input type="radio" name="mousedrag" value="1" checked="checked">Rotate</label></td> | |
137 | + <td><label><input type="radio" name="mousedrag" value="2">Scale</label></td> | |
138 | + <td><label><input type="radio" name="mousedrag" value="3">Translate</label></td> | |
118 | 139 | </form> |
119 | 140 | </tr> |
120 | - <tr align="left"> | |
141 | + <tr style="text-align: left;"> | |
121 | 142 | <td>BZ number : </td> |
122 | - <td><input type="number" name="bznumber1" id="bznumber0" value="1"></td> | |
123 | - <td><input type="number" name="bznumber2" id="bznumber1" value="1"></td> | |
124 | - <td><input type="number" name="bznumber3" id="bznumber2" value="1"></td> | |
143 | + <td><label><input type="number" name="bznumber1" id="bznumber0" value="1"></label></td> | |
144 | + <td><label><input type="number" name="bznumber2" id="bznumber1" value="1"></label></td> | |
145 | + <td><label><input type="number" name="bznumber3" id="bznumber2" value="1"></label></td> | |
125 | 146 | </tr> |
126 | - <tr align="left"> | |
147 | + <tr style="text-align: left;"> | |
127 | 148 | <td>Backgraound (RGB) : </td> |
128 | - <td><input type="number" name="backgraoundr" id="backgraoundr" value="0" onchange="update_now();" step="0.1" min="0" max="1"></td> | |
129 | - <td><input type="number" name="backgraoundg" id="backgraoundg" value="0" onchange="update_now();" step="0.1" min="0" max="1"></td> | |
130 | - <td><input type="number" name="backgraoundb" id="backgraoundb" value="0" onchange="update_now();" step="0.1" min="0" max="1"></td> | |
149 | + <td><label><input type="number" name="backgraoundr" id="backgraoundr" value="0" onchange="update_now();" step="0.1" min="0" max="1"></label></td> | |
150 | + <td><label><input type="number" name="backgraoundg" id="backgraoundg" value="0" onchange="update_now();" step="0.1" min="0" max="1"></label></td> | |
151 | + <td><label><input type="number" name="backgraoundb" id="backgraoundb" value="0" onchange="update_now();" step="0.1" min="0" max="1"></label></td> | |
131 | 152 | </tr> |
132 | - <tr align="left"> | |
153 | + <tr style="text-align: left;"> | |
133 | 154 | <td>Line color (RGB) : </td> |
134 | - <td><input type="number" name="linecolorr" id="linecolorr" value="1" onchange="update_now();" step="0.1" min="0" max="1"></td> | |
135 | - <td><input type="number" name="linecolorg" id="linecolorg" value="1" onchange="update_now();" step="0.1" min="0" max="1"></td> | |
136 | - <td><input type="number" name="linecolobr" id="linecolorb" value="1" onchange="update_now();" step="0.1" min="0" max="1"></td> | |
155 | + <td><label><input type="number" name="linecolorr" id="linecolorr" value="1" onchange="update_now();" step="0.1" min="0" max="1"></label></td> | |
156 | + <td><label><input type="number" name="linecolorg" id="linecolorg" value="1" onchange="update_now();" step="0.1" min="0" max="1"></label></td> | |
157 | + <td><label><input type="number" name="linecolobr" id="linecolorb" value="1" onchange="update_now();" step="0.1" min="0" max="1"></label></td> | |
137 | 158 | </tr> |
138 | - <tr align="left"> | |
159 | + <tr style="text-align: left;"> | |
139 | 160 | <td><input type="button" value="Rotate" onclick="update_now();"></td> |
140 | - <td><input type="number" name="rotatex" id="rotatex" value="0"></td> | |
141 | - <td><input type="number" name="rotatey" id="rotatey" value="0"></td> | |
142 | - <td><input type="number" name="rotatez" id="rotatez" value="0"></td> | |
161 | + <td><label><input type="number" name="rotatex" id="rotatex" value="0"></label></td> | |
162 | + <td><label><input type="number" name="rotatey" id="rotatey" value="0"></label></td> | |
163 | + <td><label><input type="number" name="rotatez" id="rotatez" value="0"></label></td> | |
143 | 164 | </tr> |
144 | - <tr align="left"> | |
145 | - <td>Scale : <input type="number" name="scale" id="scale" value="1" onchange="update_now();" step="0.1" min="0"></td> | |
165 | + <tr style="text-align: left;"> | |
166 | + <td><label>Scale : <input type="number" name="scale" id="scale" value="1" onchange="update_now();" step="0.1" min="0"></label></td> | |
146 | 167 | <td>Position : </td> |
147 | - <td><input type="number" name="positionx" id="positionx" value="0" onchange="update_now();"></td> | |
148 | - <td><input type="number" name="positiony" id="positiony" value="0" onchange="update_now();"></td> | |
168 | + <td><label><input type="number" name="positionx" id="positionx" value="0" onchange="update_now();"></label></td> | |
169 | + <td><label><input type="number" name="positiony" id="positiony" value="0" onchange="update_now();"></label></td> | |
149 | 170 | </tr> |
150 | - <tr align="left"> | |
151 | - <td><input type="checkbox" name="colorbar" id="colorbar" value="colorbar" checked="checked" onchange="update_now();">Color bar</td> | |
152 | - <td><input type="checkbox" name="equator" id="equator" value="equator" onchange="update_now();">Equator</td> | |
153 | - <td><input type="checkbox" name="nodalline" id="nodalline" value="nodalline" onchange="update_now();">Nodal line</td> | |
154 | - <td><input type="checkbox" name="section" id="section" value="section" onchange="update_now();">Section</td> | |
171 | + <tr style="text-align: left;"> | |
172 | + <td><label><input type="checkbox" name="colorbar" id="colorbar" value="colorbar" checked="checked" onchange="update_now();">Color bar</label></td> | |
173 | + <td><label><input type="checkbox" name="equator" id="equator" value="equator" onchange="update_now();">Equator</label></td> | |
174 | + <td><label><input type="checkbox" name="nodalline" id="nodalline" value="nodalline" onchange="update_now();">Nodal line</label></td> | |
175 | + <td><label><input type="checkbox" name="section" id="section" value="section" onchange="update_now();">Section</label></td> | |
155 | 176 | </tr> |
156 | - <tr align="left"> | |
177 | + <tr style="text-align: left;"> | |
157 | 178 | <td>Lighting : </td> |
158 | 179 | <form id="lighting"> |
159 | - <td><input type="radio" name="lighting" value="1.0" checked="checked" onchange="update_now();">Both</td> | |
160 | - <td><input type="radio" name="lighting" value="-1.0" onchange="update_now();">Occupy</td> | |
161 | - <td><input type="radio" name="lighting" value="1.0" onchange="update_now();">Unoccupy</td> | |
180 | + <td><label><input type="radio" name="lighting" value="1.0" checked="checked" onchange="update_now();">Both</label></td> | |
181 | + <td><label><input type="radio" name="lighting" value="-1.0" onchange="update_now();">Occupy</label></td> | |
182 | + <td><label><input type="radio" name="lighting" value="1.0" onchange="update_now();">Empty</label></td> | |
162 | 183 | </form> |
163 | 184 | </tr> |
164 | - <tr align="left"> | |
185 | + <tr style="text-align: left;"> | |
165 | 186 | <form id="barcolor"> |
166 | - <td><input type="radio" name="barcolor" value="bgr" checked="checked">BGR</td> | |
167 | - <td><input type="radio" name="barcolor" value="cmy">CMY</td> | |
168 | - <td><input type="radio" name="barcolor" value="mcy">MCY</td> | |
187 | + <td><label><input type="radio" name="barcolor" value="bgr" checked="checked">BGR</label></td> | |
188 | + <td><label><input type="radio" name="barcolor" value="cmy">CMY</label></td> | |
189 | + <td><label><input type="radio" name="barcolor" value="mcy">MCY</label></td> | |
169 | 190 | </form> |
170 | 191 | </tr> |
171 | - <tr align="left"> | |
192 | + <tr style="text-align: left;"> | |
172 | 193 | <td><input type="button" value="Section file"></td> |
173 | - <td><input type="checkbox" name="band0" id="band0" value="band0" checked="checked" onchange="update_now();">Band 0</td> | |
174 | - <td><input type="checkbox" name="band1" id="band1" value="band1" checked="checked" onchange="update_now();">Band 1</td> | |
175 | - <td><input type="checkbox" name="band2" id="band2" value="band2" checked="checked" onchange="update_now();">Band 2</td> | |
194 | + <td><label>Band: <input type="number" name="band" id="band" value="0" onchange="update_now();"></label></td> | |
176 | 195 | </tr> |
177 | 196 | </table> |
178 | 197 | </td> |
@@ -27,7 +27,7 @@ THE SOFTWARE. | ||
27 | 27 | /**@mainpage FermiSurfer Main Page |
28 | 28 | |
29 | 29 | Fermisurfer displays Fermi surfaces |
30 | -with a color-plot of the arbitraly matrix element | |
30 | +with a color-plot of the arbitrary matrix element | |
31 | 31 | |
32 | 32 | @section Notation |
33 | 33 |
@@ -41,7 +41,7 @@ with a color-plot of the arbitraly matrix element | ||
41 | 41 | |
42 | 42 | @section sec_file Important files |
43 | 43 | - Main routine : fermisurfer.cpp |
44 | -- Global valiable : variable.hpp | |
44 | +- Global variable : variable.hpp | |
45 | 45 | |
46 | 46 | @section sec_flow Flow |
47 | 47 |
@@ -56,7 +56,7 @@ with a color-plot of the arbitraly matrix element | ||
56 | 56 | Input variables |
57 | 57 | */ |
58 | 58 | let ng0 = [0, 0, 0]; //!< @f$k@f$-point grid in the input file |
59 | -let shiftk = [0, 0, 0]; //!< Wherether @f$k@f$-grid is shifted or not | |
59 | +let shiftk = [0, 0, 0]; //!< Whether @f$k@f$-grid is shifted or not | |
60 | 60 | let nb = 0; //!< The number of Bands |
61 | 61 | let avec = [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]; //!< Direct lattice vector |
62 | 62 | let bvec = [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]; //!< Reciprocal lattice vector |
@@ -92,7 +92,7 @@ let brnrm = []; //!< Norms of Bragg plane vectors | ||
92 | 92 | let brnrm_min = 0.0; //!< Minimum scale of the reciplocal space |
93 | 93 | let nbragg = 0; //!< Number of Bragg plane og 1st BZ |
94 | 94 | /* |
95 | - Variables for patchs | |
95 | + Variables for patches | |
96 | 96 | */ |
97 | 97 | let ntri = []; //!< The number of triangle patch [::nb] |
98 | 98 | let draw_band = []; //!< Switch for drawn bands [::nb] |
@@ -156,7 +156,6 @@ let black = [0.0, 0.0, 0.0, 1.0]; //!< Black color code | ||
156 | 156 | let gray = [0.5, 0.5, 0.5, 1.0]; //!< Gray color code |
157 | 157 | let wgray = [0.9, 0.9, 0.9, 1.0]; //!< Gray color code |
158 | 158 | let bgray = [0.1, 0.1, 0.1, 1.0]; //!< Gray color code |
159 | -let white = [1.0, 1.0, 1.0, 1.0]; //!< White color code | |
160 | 159 | let cyan = [0.0, 1.0, 1.0, 1.0]; //!< Cyan color code |
161 | 160 | let magenta = [1.0, 0.0, 1.0, 1.0]; //!< Magenta color code |
162 | 161 | let yellow = [1.0, 1.0, 0.0, 1.0]; //!< Yellow color code |
@@ -288,7 +287,7 @@ function main() { | ||
288 | 287 | // Draw the scene. |
289 | 288 | // |
290 | 289 | function drawScene() { |
291 | - let ib = 0, ii = 0, jj = 0; | |
290 | + let ib = 0, ii = 0, jj = 0, icount = 0, itri = 0; | |
292 | 291 | |
293 | 292 | gl.clearColor(BackGroundColor[0], BackGroundColor[1], BackGroundColor[2], BackGroundColor[3]); // Clear to black, fully opaque |
294 | 293 | gl.clearDepth(1.0); // Clear everything |
@@ -347,22 +346,24 @@ function drawScene() { | ||
347 | 346 | { |
348 | 347 | let vertexCount = 0; |
349 | 348 | for (ib = 0; ib < nb; ib++) { |
350 | - if (draw_band[ib] == 1) vertexCount += ntri[ib] * 3; | |
349 | + if (draw_band[ib] === 1) vertexCount += ntri[ib] * 3; | |
351 | 350 | } |
352 | 351 | |
353 | 352 | let nkvp = vertexCount * 3; |
354 | 353 | let positions = new Float32Array(nkvp); |
355 | 354 | icount = 0; |
356 | 355 | for (ib = 0; ib < nb; ib++) { |
357 | - for (itri = 0; itri < ntri[ib]; itri++) { | |
358 | - for (ii = 0; ii < 3; ii++) { | |
359 | - for (jj = 0; jj < 3; jj++) { | |
360 | - positions[icount] = ( | |
361 | - rot[jj][0] * kvp[ib][itri][ii][0] | |
362 | - + rot[jj][1] * kvp[ib][itri][ii][1] | |
363 | - + rot[jj][2] * kvp[ib][itri][ii][2]) * scl | |
364 | - + trans[jj]; | |
365 | - icount += 1; | |
356 | + if (draw_band[ib] === 1) { | |
357 | + for (itri = 0; itri < ntri[ib]; itri++) { | |
358 | + for (ii = 0; ii < 3; ii++) { | |
359 | + for (jj = 0; jj < 3; jj++) { | |
360 | + positions[icount] = ( | |
361 | + rot[jj][0] * kvp[ib][itri][ii][0] | |
362 | + + rot[jj][1] * kvp[ib][itri][ii][1] | |
363 | + + rot[jj][2] * kvp[ib][itri][ii][2]) * scl | |
364 | + + trans[jj]; | |
365 | + icount += 1; | |
366 | + } | |
366 | 367 | } |
367 | 368 | } |
368 | 369 | } |
@@ -372,13 +373,15 @@ function drawScene() { | ||
372 | 373 | let vertexNormals = new Float32Array(nnmlp); |
373 | 374 | icount = 0; |
374 | 375 | for (ib = 0; ib < nb; ib++) { |
375 | - for (itri = 0; itri < ntri[ib]; itri++) { | |
376 | - for (ii = 0; ii < 3; ii++) { | |
377 | - for (jj = 0; jj < 3; jj++) { | |
378 | - vertexNormals[icount] = rot[jj][0] * nmlp[ib][itri][ii][0] | |
379 | - + rot[jj][1] * nmlp[ib][itri][ii][1] | |
380 | - + rot[jj][2] * nmlp[ib][itri][ii][2]; | |
381 | - icount += 1; | |
376 | + if (draw_band[ib] === 1) { | |
377 | + for (itri = 0; itri < ntri[ib]; itri++) { | |
378 | + for (ii = 0; ii < 3; ii++) { | |
379 | + for (jj = 0; jj < 3; jj++) { | |
380 | + vertexNormals[icount] = rot[jj][0] * nmlp[ib][itri][ii][0] | |
381 | + + rot[jj][1] * nmlp[ib][itri][ii][1] | |
382 | + + rot[jj][2] * nmlp[ib][itri][ii][2]; | |
383 | + icount += 1; | |
384 | + } | |
382 | 385 | } |
383 | 386 | } |
384 | 387 | } |
@@ -388,11 +391,13 @@ function drawScene() { | ||
388 | 391 | let colors = new Float32Array(nclr); |
389 | 392 | icount = 0; |
390 | 393 | for (ib = 0; ib < nb; ib++) { |
391 | - for (itri = 0; itri < ntri[ib]; itri++) { | |
392 | - for (ii = 0; ii < 3; ii++) { | |
393 | - for (jj = 0; jj < 4; jj++) { | |
394 | - colors[icount] = clr[ib][jj + 4 * ii + 12 * itri]; | |
395 | - icount += 1; | |
394 | + if (draw_band[ib] === 1) { | |
395 | + for (itri = 0; itri < ntri[ib]; itri++) { | |
396 | + for (ii = 0; ii < 3; ii++) { | |
397 | + for (jj = 0; jj < 4; jj++) { | |
398 | + colors[icount] = clr[ib][jj + 4 * ii + 12 * itri]; | |
399 | + icount += 1; | |
400 | + } | |
396 | 401 | } |
397 | 402 | } |
398 | 403 | } |
@@ -605,11 +610,11 @@ function touch_start(evt) { | ||
605 | 610 | var touches = evt.changedTouches; |
606 | 611 | |
607 | 612 | for (i = 0; i < touches.length; i++) { |
608 | - if (touches[i].identifier == 0) { | |
613 | + if (touches[i].identifier === 0) { | |
609 | 614 | touch0x = touches[i].clientX; |
610 | 615 | touch0y = touches[i].clientY; |
611 | 616 | } |
612 | - else if (touches[i].identifier == 1) { | |
617 | + else if (touches[i].identifier === 1) { | |
613 | 618 | touch1x = touches[i].clientX; |
614 | 619 | touch1y = touches[i].clientY; |
615 | 620 | } |
@@ -621,8 +626,8 @@ function touch_move(evt) { | ||
621 | 626 | var touches = evt.changedTouches; |
622 | 627 | let dx = 0.0, dy = 0.0, dold = 0.0, dnew = 0.; |
623 | 628 | |
624 | - if (touches.length == 1) { | |
625 | - if (touches[0].identifier == 0) { | |
629 | + if (touches.length === 1) { | |
630 | + if (touches[0].identifier === 0) { | |
626 | 631 | dx = 0.001 * (touches[0].clientX - touch0x); |
627 | 632 | dy = 0.001 * (touches[0].clientY - touch0y); |
628 | 633 | mouserotation(dx, dy) |
@@ -631,7 +636,7 @@ function touch_move(evt) { | ||
631 | 636 | touch0y = touches[0].clientY; |
632 | 637 | } |
633 | 638 | } |
634 | - else if (touches.length == 2) { | |
639 | + else if (touches.length === 2) { | |
635 | 640 | dold = Math.sqrt((touch1x - touch0x) * (touch1x - touch0x) + (touch1y - touch0y) * (touch1y - touch0y)); |
636 | 641 | touch0x = touches[0].clientX; |
637 | 642 | touch0y = touches[0].clientY; |
@@ -650,7 +655,7 @@ function mouse_down(evt){ | ||
650 | 655 | touch0x = evt.offsetX; |
651 | 656 | touch0y = evt.offsetY; |
652 | 657 | isDrawing = true; |
653 | -}; | |
658 | +} | |
654 | 659 | |
655 | 660 | function mouse_move(evt){ |
656 | 661 | if (isDrawing === true) { |
@@ -663,7 +668,7 @@ function mouse_move(evt){ | ||
663 | 668 | touch0x = evt.offsetX; |
664 | 669 | touch0y = evt.offsetY; |
665 | 670 | } |
666 | -}; | |
671 | +} | |
667 | 672 | |
668 | 673 | function mouse_up(evt){ |
669 | 674 | if (isDrawing === true) { |
@@ -677,7 +682,7 @@ function mouse_up(evt){ | ||
677 | 682 | touch0y = 0; |
678 | 683 | isDrawing = false; |
679 | 684 | } |
680 | -}; | |
685 | +} | |
681 | 686 | |
682 | 687 | function zoom(evt) { |
683 | 688 | scl -= evt.deltaY*0.001; |
@@ -691,7 +696,7 @@ function mouserotation(dx, dy) { | ||
691 | 696 | let rot0 = [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]; |
692 | 697 | let rot1 = [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]; |
693 | 698 | |
694 | - if (a != 0.0) { | |
699 | + if (a !== 0.0) { | |
695 | 700 | // |
696 | 701 | // Compute rotational matrix from translation of mousepointer |
697 | 702 | // |
@@ -2761,13 +2766,14 @@ function init_corner() | ||
2761 | 2766 | } |
2762 | 2767 | } |
2763 | 2768 | /** |
2764 | - @brief Compute Bragg vetor | |
2769 | + @brief Compute Bragg vector | |
2765 | 2770 | |
2766 | 2771 | Modify : ::bragg, ::brnrm |
2767 | 2772 | */ |
2768 | 2773 | function bragg_vector() |
2769 | 2774 | { |
2770 | - let i0, i1, i2, i, ibr; | |
2775 | + let i0, i1, i2, i, ibr, sw = [0, 0, 0, 0]; | |
2776 | + let ldiag = [0.0, 0.0, 0.0, 0.0], bdiag = [[0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]; | |
2771 | 2777 | /**/ |
2772 | 2778 | ibr = 0; |
2773 | 2779 | // |
@@ -2777,11 +2783,11 @@ function bragg_vector() | ||
2777 | 2783 | for (i1 = -1; i1 <= 1; ++i1) { |
2778 | 2784 | for (i2 = -1; i2 <= 1; ++i2) { |
2779 | 2785 | /* |
2780 | - Excepte Gamma points | |
2786 | + Except Gamma points | |
2781 | 2787 | */ |
2782 | 2788 | if (i0 == 0 && i1 == 0 && i2 == 0) continue; |
2783 | 2789 | /* |
2784 | - Fractional -> Cartecian | |
2790 | + Fractional -> Cartesian | |
2785 | 2791 | */ |
2786 | 2792 | bragg.push([]); |
2787 | 2793 | for (i = 0; i < 3; ++i) |
@@ -2807,6 +2813,20 @@ function bragg_vector() | ||
2807 | 2813 | if (brnrm_min > brnrm[ibr]) brnrm_min = brnrm[ibr]; |
2808 | 2814 | } |
2809 | 2815 | terminal(" Minimum Bragg norm : " + String(brnrm_min) + "\n"); |
2816 | + // | |
2817 | + // Search the shortest diagonal line | |
2818 | + // | |
2819 | + for (i = 0; i < 3; i++) { | |
2820 | + bdiag[0][i] = bvec[0][i] / ng0[0] + bvec[1][i] / ng0[1] + bvec[2][i] / ng0[2]; | |
2821 | + bdiag[1][i] = bvec[0][i] / ng0[0] + bvec[1][i] / ng0[1] - bvec[2][i] / ng0[2]; | |
2822 | + bdiag[2][i] = bvec[0][i] / ng0[0] - bvec[1][i] / ng0[1] + bvec[2][i] / ng0[2]; | |
2823 | + bdiag[3][i] = -bvec[0][i] / ng0[0] + bvec[1][i] / ng0[1] + bvec[2][i] / ng0[2]; | |
2824 | + } | |
2825 | + for (i = 0; i < 4; i++) | |
2826 | + ldiag[i] = bdiag[i][0] * bdiag[i][0] + bdiag[i][1] * bdiag[i][1] + bdiag[i][2] * bdiag[i][2]; | |
2827 | + eigsort(4, ldiag, sw); | |
2828 | + itet = sw[0]; | |
2829 | + document.getElementById("tetrahedron").tetrahedron.value = String(itet); | |
2810 | 2830 | }/* bragg_vector */ |
2811 | 2831 | /** |
2812 | 2832 | @brief Print max and minimum @f$\varepsilon_{n k}, \Delta_{n k}@f$ |
@@ -3078,6 +3098,8 @@ function update_delay() { | ||
3078 | 3098 | drawScene(); |
3079 | 3099 | } |
3080 | 3100 | function update_now() { |
3101 | + let ib = 0, i0 = 0, i1 =0, i2 = 0; | |
3102 | + | |
3081 | 3103 | linewidth = Number(document.getElementById("linewidth").value); |
3082 | 3104 | // |
3083 | 3105 | // Line color |
@@ -3086,7 +3108,7 @@ function update_now() { | ||
3086 | 3108 | LineColor[1] = Number(document.getElementById("linecolorg").value); |
3087 | 3109 | LineColor[2] = Number(document.getElementById("linecolorb").value); |
3088 | 3110 | // |
3089 | - // Back ground color | |
3111 | + // Background color | |
3090 | 3112 | // |
3091 | 3113 | BackGroundColor[0] = Number(document.getElementById("backgraoundr").value); |
3092 | 3114 | BackGroundColor[1] = Number(document.getElementById("backgraoundg").value); |
@@ -3109,6 +3131,23 @@ function update_now() { | ||
3109 | 3131 | rot[2][1] = Math.cos(thetaz) * Math.sin(thetax) + Math.cos(thetax) * Math.sin(thetay) * Math.sin(thetaz); |
3110 | 3132 | rot[2][2] = Math.cos(thetax) * Math.cos(thetay); |
3111 | 3133 | scl = Number(document.getElementById("scale").value); |
3134 | + // | |
3135 | + //Band | |
3136 | + // | |
3137 | + i0 = Number(document.getElementById("band").value); | |
3138 | + i1 = 10; | |
3139 | + for (ib = 0; ib < nb; ib++) { | |
3140 | + i2 = i0 % i1; | |
3141 | + if (i2 === 0){ | |
3142 | + draw_band[ib] = 0; | |
3143 | + } | |
3144 | + else{ | |
3145 | + draw_band[ib] = 1; | |
3146 | + } | |
3147 | + i0 += -i2; | |
3148 | + i1 *= 10; | |
3149 | + } | |
3150 | + | |
3112 | 3151 | drawScene(); |
3113 | 3152 | } |
3114 | 3153 | function update_interpol() { |
@@ -3131,7 +3170,7 @@ function update_minmax() { | ||
3131 | 3170 | } |
3132 | 3171 | function update_tetra() { |
3133 | 3172 | itet = Number(document.getElementById('tetrahedron').tetrahedron.value); |
3134 | - init_corner(); | |
3173 | + init_corner(); | |
3135 | 3174 | refresh_patch = 1; |
3136 | 3175 | } |
3137 | 3176 | function button_update() { |
@@ -3214,8 +3253,6 @@ function button_update() { | ||
3214 | 3253 | } |
3215 | 3254 | } |
3216 | 3255 | /**/ |
3217 | - if (document.getElementById("band0")) draw_band[0] = 1; | |
3218 | - else draw_band[0] = 0; | |
3219 | 3256 | |
3220 | 3257 | free_patch(); |
3221 | 3258 | compute_patch_segment(); |
@@ -3372,13 +3409,18 @@ function allocate_griddata( | ||
3372 | 3409 | |
3373 | 3410 | for (i = 0; i < 3; i++) ng[i] = ng0[i]; |
3374 | 3411 | |
3412 | + i0 = 0; | |
3413 | + i1 = 1; | |
3375 | 3414 | for (i = 0; i < nb; i++) { |
3376 | 3415 | ntri.push(0); |
3377 | 3416 | nnl.push(0); |
3378 | 3417 | n2d.push(0); |
3379 | 3418 | nequator.push(0); |
3380 | 3419 | draw_band.push(1); |
3420 | + i0 += i1; | |
3421 | + i1 *= 10; | |
3381 | 3422 | } |
3423 | + document.getElementById("band").value = String(i0); | |
3382 | 3424 | |
3383 | 3425 | scl /= Math.sqrt(bvec[0][0] * bvec[0][0] + bvec[0][1] * bvec[0][1] + bvec[0][2] * bvec[0][2]); |
3384 | 3426 | linewidth /= scl; |
@@ -3534,8 +3576,8 @@ function read_from_text(datas) { | ||
3534 | 3576 | }//for (iaxis = 0; iaxis < 1; iaxis++) |
3535 | 3577 | // |
3536 | 3578 | interpol_energy(); |
3537 | - init_corner(); | |
3538 | 3579 | bragg_vector(); |
3580 | + init_corner(); | |
3539 | 3581 | // |
3540 | 3582 | //Brillouin zone |
3541 | 3583 | // |
@@ -3891,4 +3933,12 @@ function calc_section() { | ||
3891 | 3933 | if (frmsf != "") { |
3892 | 3934 | let datas = frmsf.replace(/\n/g, ' ').replace(/^ +/, '').split(/ +/); |
3893 | 3935 | read_from_text(datas); |
3894 | -} | |
\ No newline at end of file | ||
3936 | +} | |
3937 | +function resizeCanvas() { | |
3938 | + let el = document.getElementById("glcanvas"); | |
3939 | + let width = document.getElementById('width').value; | |
3940 | + let height = document.getElementById('height').value; | |
3941 | + | |
3942 | + el.setAttribute("width", width); | |
3943 | + el.setAttribute("height", height); | |
3944 | +} |