index.html 110 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>The Vault GUI</title>
  6. <link rel="stylesheet" href="{{ static_url("style.css") }}">
  7. <link rel="stylesheet" href="//code.jquery.com/ui/1.12.0/themes/base/jquery-ui.css">
  8. <!--[if lt IE 9]>
  9. <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
  10. <![endif]-->
  11. </head>
  12. <body>
  13. <div id="container"></div>
  14. <!--<div id="slider"></div>-->
  15. <div id="slider-tooltip"></div>
  16. <div id="obj-tooltip">Module: </div>
  17. <div id="val-tooltip">Value: </div>
  18. <!--<div id="stat-tooltip">Status: </div>-->
  19. <div class="window-item window-unitem" id="message">
  20. <div class="bar-header">
  21. <div class="bar-title noselect">Message Log</div>
  22. <div class="bar-dropdown noselect">^</div>
  23. <div class="bar-close noselect">&#215;</div>
  24. </div>
  25. <div class="bar-message">
  26. <div class="bar-wrapper" style="height:200px; overflow-y:scroll;">
  27. </div>
  28. </div>
  29. </div>
  30. <div class="window-item window-unitem" id="settings">
  31. <div class="bar-header">
  32. <div class="bar-title noselect">Settings</div>
  33. <div class="bar-dropdown noselect">^</div>
  34. <div class="bar-close noselect">&#215;</div>
  35. </div>
  36. <div class="bar-settings">
  37. <div class="bar-wrapper">
  38. <div class="bar-setup">
  39. <input type="checkbox" id="mylabel">label<br>
  40. <span class="bl bar-hl">Start time</span>
  41. <span class="br bar-info">
  42. <input id="start_time" class="jscolor" value="1472688000">
  43. </span>
  44. </div>
  45. <div class="bar-setup">
  46. <span class="bl bar-hl">End time</span>
  47. <span class="br bar-info">
  48. <input id="end_time" class="jscolor" value="1472774400">
  49. </span>
  50. </div>
  51. </div>
  52. </div>
  53. </div>
  54. <div class="window-item" id="orientation">
  55. <div class="bar-header">
  56. <div class="bar-title noselect">Orientation</div>
  57. <div class="bar-dropdown noselect">^</div>
  58. <div class="bar-close noselect">&#215;</div>
  59. </div>
  60. <div class="bar-orientation">
  61. <canvas class="bar-wrapper" id="compass" width="200" height="180"></canvas>
  62. </div>
  63. </div>
  64. <div id="window-tab">
  65. <div id="offMessage" class="noselect bar-pil">Message Log</div>
  66. <div id="offOrientation" class="noselect bar-pil">Orientation</div>
  67. <!--<div id="offSettings" class="noselect bar-pil">Settings</div>-->
  68. </div>
  69. <div class="window-cp" id="control-panel">
  70. <div class="bar-header">
  71. <div id="toggleGUI" class="bar-button noselect">Show/Hide GUI</div>
  72. <div id="showTabs" class="bar-button noselect">Windows</div>
  73. <!--<div id="runSimulation" class="bar-button noselect">Run</div>-->
  74. <!---
  75. <div id="testTrigger" class="bar-button noselect">Test Trigger</div>
  76. -->
  77. </div>
  78. </div>
  79. <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  80. <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
  81. <script src="{{ static_url("scripts.js") }}"></script>
  82. <script src="{{ static_url("three.min.js") }}"></script>
  83. <script src="{{ static_url("OrbitControls.js") }}"></script>
  84. <script>
  85. // Global variable
  86. var img = null,
  87. needle = null,
  88. ctx = null;
  89. function clearCanvas() {
  90. // clear canvas
  91. ctx.clearRect(0, 0, 200, 200);
  92. }
  93. function draw(degrees) {
  94. //console.log("Draw degree");
  95. //console.log(degrees);
  96. clearCanvas();
  97. // Draw the compass onto the canvas
  98. ctx.drawImage(img, 0, 0);
  99. // Save the current drawing state
  100. ctx.save();
  101. // Now move across and down half the
  102. ctx.translate(100, 100);
  103. // Rotate around this point
  104. ctx.rotate(degrees * (Math.PI / 180));
  105. // Draw the image back and up
  106. ctx.drawImage(needle, -100, -100);
  107. // Restore the previous drawing state
  108. ctx.restore();
  109. // Increment the angle of the needle by 5 degrees
  110. //degrees += 5;
  111. }
  112. function imgLoaded() {
  113. // Image loaded event complete. Start the timer
  114. draw(myvalue);
  115. //setInterval(draw, 100);
  116. }
  117. function init() {
  118. // Grab the compass element
  119. var canvas = document.getElementById('compass');
  120. // Canvas supported?
  121. if (canvas.getContext('2d')) {
  122. ctx = canvas.getContext('2d');
  123. // Load the needle image
  124. needle = new Image();
  125. needle.src = 'http://katrin.kit.edu/static/needle_01.svg';
  126. // Load the compass image
  127. img = new Image();
  128. img.src = 'http://katrin.kit.edu/static/compass_01.svg';
  129. img.onload = imgLoaded;
  130. } else {
  131. alert("Canvas not supported!");
  132. }
  133. }
  134. var myvalue = 0;
  135. init();
  136. </script>
  137. <script src="https://dl.dropboxusercontent.com/u/3587259/Code/Threejs/CSS3DRenderer.js"></script>
  138. <script>
  139. var camera, scene, renderer;
  140. var container;
  141. var mycontrol;
  142. var enableControls = true;
  143. var enableRotate = false;
  144. var data;
  145. var labelFlag;
  146. var raycaster = new THREE.Raycaster();
  147. var mouse = new THREE.Vector2();
  148. $("#mylabel").change(function() {
  149. if(this.checked) {
  150. labelFlag = true;
  151. } else {
  152. labelFlag = false;
  153. }
  154. });
  155. function onMouseMove( event ) {
  156. // calculate mouse position in normalized device coordinates
  157. // (-1 to +1) for both components
  158. mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
  159. mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
  160. }
  161. init();
  162. animate();
  163. window.addEventListener( 'mousemove', onMouseMove, false );
  164. function createLabel(name) {
  165. var text2 = document.createElement('div');
  166. text2.style.position = 'absolute';
  167. //text2.style.zIndex = 1; // if you still don't see the label, try uncommenting this
  168. text2.style.fontSize = "12px";
  169. text2.style.width = 100;
  170. text2.style.height = 100;
  171. text2.style.padding = "2px";
  172. text2.style.backgroundColor = '#303030';
  173. text2.style.color = '#fff';
  174. text2.innerHTML = name;
  175. //text2.style.top = 200 + 'px';
  176. //text2.style.left = 200 + 'px';
  177. text2.id = "text"+name;
  178. document.body.appendChild(text2);
  179. }
  180. function init() {
  181. setMessage("3D", "Initialization.");
  182. scene = new THREE.Scene();
  183. camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 10000);
  184. camera.position.set(0, 45, 100);
  185. camera.lookAt(scene.position);
  186. container = document.getElementById( 'container' );
  187. document.body.appendChild( container );
  188. renderer = new THREE.WebGLRenderer({ alpha: true, antialias: true });
  189. //renderer = new THREE.CSS3DRenderer();
  190. renderer.setSize(window.innerWidth, window.innerHeight);
  191. renderer.setClearColor( 0xffffff, 0);
  192. container.appendChild(renderer.domElement);
  193. mycontrol = new THREE.OrbitControls( camera );
  194. var size = 40, step = 1;
  195. var geometry = new THREE.Geometry();
  196. var material = new THREE.LineBasicMaterial({color: 0xe3e3e3, linewidth: 1, fog:true});
  197. for ( var i = - size; i <= size; i += step ) {
  198. geometry.vertices.push(new THREE.Vector3( -size, -0.04, i ));
  199. geometry.vertices.push(new THREE.Vector3( size, -0.04, i ));
  200. geometry.vertices.push(new THREE.Vector3( i, -0.04, -size ));
  201. geometry.vertices.push(new THREE.Vector3( i, -0.04, size ));
  202. }
  203. var line = new THREE.LineSegments( geometry, material );
  204. scene.add(line);
  205. setMessage("3D", "Added grid plane.");
  206. /*
  207. var geometry = new THREE.BoxGeometry( 1, 1, 1 );
  208. var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
  209. var cube = new THREE.Mesh( geometry, material );
  210. */
  211. var light = new THREE.DirectionalLight( 0xffffff );
  212. light.position.set( 0, 1, 1 ).normalize();
  213. scene.add(light);
  214. setMessage("3D", "Added directional light.");
  215. pv001 = new THREE.Mesh(
  216. new THREE.CubeGeometry( 4, 0.1,0.5),
  217. new THREE.MeshPhongMaterial( {
  218. color: 0xD3D3D3,
  219. specular: 0x050505,
  220. shininess: 100
  221. })
  222. );
  223. pv001.position.set(-18, 0.5, 29);
  224. pv001.rotateY( Math.PI / 3 );
  225. pv001.rotateX( Math.PI / 12);
  226. pv001.name = "2A_15_60e_001_02";
  227. scene.add(pv001);
  228. setMessage("3D", "Loaded PV001.");
  229. createLabel("001");
  230. pv002 = new THREE.Mesh(
  231. new THREE.CubeGeometry( 4, 0.1,0.5),
  232. new THREE.MeshPhongMaterial( {
  233. color: 0xD3D3D3,
  234. specular: 0x050505,
  235. shininess: 100
  236. })
  237. );
  238. pv002.position.set(-14, 0.5, 30);
  239. pv002.rotateY( Math.PI / 3 );
  240. pv002.rotateX( Math.PI / 12);
  241. pv002.name = "5A_15_60e_002_02";
  242. scene.add(pv002);
  243. setMessage("3D", "Loaded PV002.");
  244. createLabel("002");
  245. pv003 = new THREE.Mesh(
  246. new THREE.CubeGeometry( 4, 0.1,0.5),
  247. new THREE.MeshPhongMaterial( {
  248. color: 0xD3D3D3,
  249. specular: 0x050505,
  250. shininess: 100
  251. })
  252. );
  253. pv003.position.set(9.5, 0.5, 2);
  254. pv003.rotateY( Math.PI / 3 );
  255. pv003.rotateX( Math.PI / 6);
  256. pv003.name = "6A_30_60e_003_02";
  257. scene.add(pv003);
  258. setMessage("3D", "Loaded PV003.");
  259. createLabel("003");
  260. pv004 = new THREE.Mesh(
  261. new THREE.CubeGeometry( 4, 0.1,0.5),
  262. new THREE.MeshPhongMaterial( {
  263. color: 0xD3D3D3,
  264. specular: 0x050505,
  265. shininess: 100
  266. })
  267. );
  268. pv004.position.set(6, 0.5, 1);
  269. pv004.rotateY( Math.PI / 3 );
  270. pv004.rotateX( Math.PI / 6);
  271. pv004.name = "1A_30_60e_004_02";
  272. scene.add(pv004);
  273. setMessage("3D", "Loaded PV004.");
  274. createLabel("004");
  275. pv005 = new THREE.Mesh(
  276. new THREE.CubeGeometry( 4, 0.1,0.5),
  277. new THREE.MeshPhongMaterial( {
  278. color: 0xD3D3D3,
  279. specular: 0x050505,
  280. shininess: 100
  281. })
  282. );
  283. pv005.position.set(-8, 0.5, -3);
  284. pv005.rotateY( Math.PI / 3 );
  285. pv005.rotateX( Math.PI / 4);
  286. pv005.name = "6A_45_60e_005_02";
  287. scene.add(pv005);
  288. setMessage("3D", "Loaded PV005.");
  289. createLabel("005");
  290. pv006 = new THREE.Mesh(
  291. new THREE.CubeGeometry( 4, 0.1,0.5),
  292. new THREE.MeshPhongMaterial( {
  293. color: 0xD3D3D3,
  294. specular: 0x050505,
  295. shininess: 100
  296. })
  297. );
  298. pv006.position.set(-4.5, 0.5, -2);
  299. pv006.rotateY( Math.PI / 3 );
  300. pv006.rotateX( Math.PI / 4);
  301. pv006.name = "1A_45_60e_006_02";
  302. scene.add(pv006);
  303. setMessage("3D", "Loaded PV006.");
  304. createLabel("006");
  305. pv007 = new THREE.Mesh(
  306. new THREE.CubeGeometry( 4, 0.1,0.5),
  307. new THREE.MeshPhongMaterial( {
  308. color: 0xD3D3D3,
  309. specular: 0x050505,
  310. shininess: 100
  311. })
  312. );
  313. pv007.position.set(-5, 0.5, -16);
  314. pv007.rotateY( Math.PI / 3 );
  315. pv007.rotateX( Math.PI / 3);
  316. pv007.name = "6C_60_60e_007_02";
  317. scene.add(pv007);
  318. setMessage("3D", "Loaded PV007.");
  319. createLabel("007");
  320. pv008 = new THREE.Mesh(
  321. new THREE.CubeGeometry( 4, 0.1,0.5),
  322. new THREE.MeshPhongMaterial( {
  323. color: 0xD3D3D3,
  324. specular: 0x050505,
  325. shininess: 100
  326. })
  327. );
  328. pv008.position.set(-7, 0.5, -9);
  329. pv008.rotateY( Math.PI / 3 );
  330. pv008.rotateX( Math.PI / 3);
  331. pv008.name = "1C_60_60e_008_02";
  332. scene.add(pv008);
  333. setMessage("3D", "Loaded PV008.");
  334. createLabel("008");
  335. pv009 = new THREE.Mesh(
  336. new THREE.CubeGeometry( 4, 0.1,0.5),
  337. new THREE.MeshPhongMaterial( {
  338. color: 0xD3D3D3,
  339. specular: 0x050505,
  340. shininess: 100
  341. })
  342. );
  343. pv009.position.set(13, 0.5, 3);
  344. pv009.rotateY( Math.PI / 4 );
  345. pv009.rotateX( Math.PI / 12);
  346. pv009.name = "2A_15_45e_009_02";
  347. scene.add(pv009);
  348. setMessage("3D", "Loaded PV009.");
  349. createLabel("009");
  350. pv010 = new THREE.Mesh(
  351. new THREE.CubeGeometry( 4, 0.1,0.5),
  352. new THREE.MeshPhongMaterial( {
  353. color: 0xD3D3D3,
  354. specular: 0x050505,
  355. shininess: 100
  356. })
  357. );
  358. pv010.position.set(18, 0.5, 4);
  359. pv010.rotateY( Math.PI / 4 );
  360. pv010.rotateX( Math.PI / 12);
  361. pv010.name = "1A_15_45e_010_02";
  362. scene.add(pv010);
  363. setMessage("3D", "Loaded PV010.");
  364. createLabel("010");
  365. pv011 = new THREE.Mesh(
  366. new THREE.CubeGeometry( 4, 0.1,0.5),
  367. new THREE.MeshPhongMaterial( {
  368. color: 0xD3D3D3,
  369. specular: 0x050505,
  370. shininess: 100
  371. })
  372. );
  373. pv011.position.set(3.5, 0.5, -0.5);
  374. pv011.rotateY( Math.PI / 4 );
  375. pv011.rotateX( Math.PI / 12);
  376. pv011.name = "4A_15_45e_011_02";
  377. scene.add(pv011);
  378. setMessage("3D", "Loaded PV011.");
  379. createLabel("011");
  380. pv012 = new THREE.Mesh(
  381. new THREE.CubeGeometry( 4, 0.1,0.5),
  382. new THREE.MeshPhongMaterial( {
  383. color: 0xD3D3D3,
  384. specular: 0x050505,
  385. shininess: 100
  386. })
  387. );
  388. pv012.position.set(17, 0.5, -1);
  389. pv012.rotateY( Math.PI / 4 );
  390. pv012.rotateX( Math.PI / 6);
  391. pv012.name = "6A_30_45e_012_02";
  392. scene.add(pv012);
  393. setMessage("3D", "Loaded PV012.");
  394. createLabel("012");
  395. pv013 = new THREE.Mesh(
  396. new THREE.CubeGeometry( 4, 0.1,0.5),
  397. new THREE.MeshPhongMaterial( {
  398. color: 0xD3D3D3,
  399. specular: 0x050505,
  400. shininess: 100
  401. })
  402. );
  403. pv013.position.set(-2, 0.5, -1);
  404. pv013.rotateY( Math.PI / 4 );
  405. pv013.rotateX( Math.PI / 6);
  406. pv013.name = "2A_30_45e_013_02";
  407. scene.add(pv013);
  408. setMessage("3D", "Loaded PV013.");
  409. createLabel("013");
  410. pv014 = new THREE.Mesh(
  411. new THREE.CubeGeometry( 4, 0.1,0.5),
  412. new THREE.MeshPhongMaterial( {
  413. color: 0xD3D3D3,
  414. specular: 0x050505,
  415. shininess: 100
  416. })
  417. );
  418. pv014.position.set(9, 0.5, -3);
  419. pv014.rotateY( Math.PI / 4 );
  420. pv014.rotateX( Math.PI / 4);
  421. pv014.name = "2A_45_45e_014_02";
  422. scene.add(pv014);
  423. setMessage("3D", "Loaded PV014.");
  424. createLabel("014");
  425. pv015 = new THREE.Mesh(
  426. new THREE.CubeGeometry( 4, 0.1,0.5),
  427. new THREE.MeshPhongMaterial( {
  428. color: 0xD3D3D3,
  429. specular: 0x050505,
  430. shininess: 100
  431. })
  432. );
  433. pv015.position.set(12.5, 0.5, -2);
  434. pv015.rotateY( Math.PI / 4 );
  435. pv015.rotateX( Math.PI / 4);
  436. pv015.name = "4A_45_45e_015_02";
  437. scene.add(pv015);
  438. setMessage("3D", "Loaded PV015.");
  439. createLabel("015");
  440. pv016 = new THREE.Mesh(
  441. new THREE.CubeGeometry( 4, 0.1,0.5),
  442. new THREE.MeshPhongMaterial( {
  443. color: 0xD3D3D3,
  444. specular: 0x050505,
  445. shininess: 100
  446. })
  447. );
  448. pv016.position.set(-1, 0.5, -22);
  449. pv016.rotateY( Math.PI / 4 );
  450. pv016.rotateX( Math.PI / 3);
  451. pv016.name = "6A_60_45e_016_02";
  452. scene.add(pv016);
  453. setMessage("3D", "Loaded PV016.");
  454. createLabel("016");
  455. pv017 = new THREE.Mesh(
  456. new THREE.CubeGeometry( 4, 0.1,0.5),
  457. new THREE.MeshPhongMaterial( {
  458. color: 0xD3D3D3,
  459. specular: 0x050505,
  460. shininess: 100
  461. })
  462. );
  463. pv017.position.set(-2, 0.5, -26);
  464. pv017.rotateY( Math.PI / 4 );
  465. pv017.rotateX( Math.PI / 3);
  466. pv017.name = "2A_60_45e_017_02";
  467. scene.add(pv017);
  468. setMessage("3D", "Loaded PV017.");
  469. createLabel("017");
  470. pv018 = new THREE.Mesh(
  471. new THREE.CubeGeometry( 4, 0.1,0.5),
  472. new THREE.MeshPhongMaterial( {
  473. color: 0xD3D3D3,
  474. specular: 0x050505,
  475. shininess: 100
  476. })
  477. );
  478. pv018.position.set(-8.5, 0.5, 23);
  479. pv018.rotateY( Math.PI / 6 );
  480. pv018.rotateX( Math.PI / 12);
  481. pv018.name = "3A_15_30e_018_02";
  482. scene.add(pv018);
  483. setMessage("3D", "Loaded PV018.");
  484. createLabel("018");
  485. pv019 = new THREE.Mesh(
  486. new THREE.CubeGeometry( 4, 0.1,0.5),
  487. new THREE.MeshPhongMaterial( {
  488. color: 0xD3D3D3,
  489. specular: 0x050505,
  490. shininess: 100
  491. })
  492. );
  493. pv019.position.set(-10, 0.5, 26.5);
  494. pv019.rotateY( Math.PI / 6 );
  495. pv019.rotateX( Math.PI / 12);
  496. pv019.name = "1A_15_30e_019_02";
  497. scene.add(pv019);
  498. setMessage("3D", "Loaded PV019.");
  499. createLabel("019");
  500. pv020 = new THREE.Mesh(
  501. new THREE.CubeGeometry( 4, 0.1,0.5),
  502. new THREE.MeshPhongMaterial( {
  503. color: 0xD3D3D3,
  504. specular: 0x050505,
  505. shininess: 100
  506. })
  507. );
  508. pv020.position.set(6, 0.5, 14);
  509. pv020.rotateY( Math.PI / 6 );
  510. pv020.rotateX( Math.PI / 12);
  511. pv020.name = "1B_15_30e_020_02";
  512. scene.add(pv020);
  513. setMessage("3D", "Loaded PV020.");
  514. createLabel("020");
  515. pv021 = new THREE.Mesh(
  516. new THREE.CubeGeometry( 4, 0.1,0.5),
  517. new THREE.MeshPhongMaterial( {
  518. color: 0xD3D3D3,
  519. specular: 0x050505,
  520. shininess: 100
  521. })
  522. );
  523. pv021.position.set(12, 0.5, 19);
  524. pv021.rotateY( Math.PI / 6 );
  525. pv021.rotateX( Math.PI / 12);
  526. pv021.name = "1D_15_30e_021_02";
  527. scene.add(pv021);
  528. setMessage("3D", "Loaded PV021.");
  529. createLabel("021");
  530. pv022 = new THREE.Mesh(
  531. new THREE.CubeGeometry( 4, 0.1,0.5),
  532. new THREE.MeshPhongMaterial( {
  533. color: 0xD3D3D3,
  534. specular: 0x050505,
  535. shininess: 100
  536. })
  537. );
  538. pv022.position.set(6, 0.5, 17);
  539. pv022.rotateY( Math.PI / 6 );
  540. pv022.rotateX( Math.PI / 12);
  541. pv022.name = "1C_15_30e_022_02";
  542. scene.add(pv022);
  543. setMessage("3D", "Loaded PV022.");
  544. createLabel("022");
  545. pv023 = new THREE.Mesh(
  546. new THREE.CubeGeometry( 4, 0.1,0.5),
  547. new THREE.MeshPhongMaterial( {
  548. color: 0xD3D3D3,
  549. specular: 0x050505,
  550. shininess: 100
  551. })
  552. );
  553. pv023.position.set(9, 0.5, 18);
  554. pv023.rotateY( Math.PI / 6 );
  555. pv023.rotateX( Math.PI / 12);
  556. pv023.name = "5A_15_30e_023_02";
  557. scene.add(pv023);
  558. setMessage("3D", "Loaded PV023.");
  559. createLabel("023");
  560. pv024 = new THREE.Mesh(
  561. new THREE.CubeGeometry( 4, 0.1,0.5),
  562. new THREE.MeshPhongMaterial( {
  563. color: 0xD3D3D3,
  564. specular: 0x050505,
  565. shininess: 100
  566. })
  567. );
  568. pv024.position.set(-16, 0.5, 24);
  569. pv024.rotateY( Math.PI / 6 );
  570. pv024.rotateX( Math.PI / 6);
  571. pv024.name = "6D_30_30e_024_02";
  572. scene.add(pv024);
  573. setMessage("3D", "Loaded PV024.");
  574. createLabel("024");
  575. pv025 = new THREE.Mesh(
  576. new THREE.CubeGeometry( 4, 0.1,0.5),
  577. new THREE.MeshPhongMaterial( {
  578. color: 0xD3D3D3,
  579. specular: 0x050505,
  580. shininess: 100
  581. })
  582. );
  583. pv025.position.set(-15, 0.5, 26);
  584. pv025.rotateY( Math.PI / 6 );
  585. pv025.rotateX( Math.PI / 6);
  586. pv025.name = "3D_30_30e_025_02";
  587. scene.add(pv025);
  588. setMessage("3D", "Loaded PV025.");
  589. createLabel("025");
  590. pv026 = new THREE.Mesh(
  591. new THREE.CubeGeometry( 4, 0.1,0.5),
  592. new THREE.MeshPhongMaterial( {
  593. color: 0xD3D3D3,
  594. specular: 0x050505,
  595. shininess: 100
  596. })
  597. );
  598. pv026.position.set(1.5, 0.5, -7.5);
  599. pv026.rotateY( Math.PI / 6 );
  600. pv026.rotateX( Math.PI / 4);
  601. pv026.name = "6A_45_30e_026_02";
  602. scene.add(pv026);
  603. setMessage("3D", "Loaded PV026.");
  604. createLabel("026");
  605. pv027 = new THREE.Mesh(
  606. new THREE.CubeGeometry( 4, 0.1,0.5),
  607. new THREE.MeshPhongMaterial( {
  608. color: 0xD3D3D3,
  609. specular: 0x050505,
  610. shininess: 100
  611. })
  612. );
  613. pv027.position.set(-3, 0.5, -8.5);
  614. pv027.rotateY( Math.PI / 6 );
  615. pv027.rotateX( Math.PI / 4);
  616. pv027.name = "3A_45_30e_027_02";
  617. scene.add(pv027);
  618. setMessage("3D", "Loaded PV027.");
  619. createLabel("027");
  620. pv028 = new THREE.Mesh(
  621. new THREE.CubeGeometry( 4, 0.1,0.5),
  622. new THREE.MeshPhongMaterial( {
  623. color: 0xD3D3D3,
  624. specular: 0x050505,
  625. shininess: 100
  626. })
  627. );
  628. pv028.position.set(3, 0.5, -4.5);
  629. pv028.rotateY( Math.PI / 6 );
  630. pv028.rotateX( Math.PI / 4);
  631. pv028.name = "1A_45_30e_028_02";
  632. scene.add(pv028);
  633. setMessage("3D", "Loaded PV028.");
  634. createLabel("028");
  635. pv029 = new THREE.Mesh(
  636. new THREE.CubeGeometry( 4, 0.1,0.5),
  637. new THREE.MeshPhongMaterial( {
  638. color: 0xD3D3D3,
  639. specular: 0x050505,
  640. shininess: 100
  641. })
  642. );
  643. pv029.position.set(3, 0.5, -25);
  644. pv029.rotateY( Math.PI / 6 );
  645. pv029.rotateX( Math.PI / 3);
  646. pv029.name = "6A_60_30e_029_02";
  647. scene.add(pv029);
  648. setMessage("3D", "Loaded PV029.");
  649. createLabel("029");
  650. pv030 = new THREE.Mesh(
  651. new THREE.CubeGeometry( 4, 0.1,0.5),
  652. new THREE.MeshPhongMaterial( {
  653. color: 0xD3D3D3,
  654. specular: 0x050505,
  655. shininess: 100
  656. })
  657. );
  658. pv030.position.set(1, 0.5, -13);
  659. pv030.rotateY( Math.PI / 6 );
  660. pv030.rotateX( Math.PI / 3);
  661. pv030.name = "3A_60_30e_030_02";
  662. scene.add(pv030);
  663. setMessage("3D", "Loaded PV030.");
  664. createLabel("030");
  665. pv031 = new THREE.Mesh(
  666. new THREE.CubeGeometry( 4, 0.1,0.5),
  667. new THREE.MeshPhongMaterial( {
  668. color: 0xD3D3D3,
  669. specular: 0x050505,
  670. shininess: 100
  671. })
  672. );
  673. pv031.position.set(0, 0.5, -16);
  674. pv031.rotateY( Math.PI / 6 );
  675. pv031.rotateX( Math.PI / 3);
  676. pv031.name = "1A_60_30e_031_02";
  677. scene.add(pv031);
  678. setMessage("3D", "Loaded PV031.");
  679. createLabel("031");
  680. pv032 = new THREE.Mesh(
  681. new THREE.CubeGeometry( 4, 0.1,0.5),
  682. new THREE.MeshPhongMaterial( {
  683. color: 0xD3D3D3,
  684. specular: 0x050505,
  685. shininess: 100
  686. })
  687. );
  688. pv032.position.set(7, 0.5, 10.5);
  689. pv032.rotateY( Math.PI / 12 );
  690. pv032.rotateX( Math.PI / 12);
  691. pv032.name = "3A_15_15e_032_02";
  692. scene.add(pv032);
  693. setMessage("3D", "Loaded PV032.");
  694. createLabel("032");
  695. pv033 = new THREE.Mesh(
  696. new THREE.CubeGeometry( 4, 0.1,0.5),
  697. new THREE.MeshPhongMaterial( {
  698. color: 0xD3D3D3,
  699. specular: 0x050505,
  700. shininess: 100
  701. })
  702. );
  703. pv033.position.set(-10, 0.5, 29.5);
  704. pv033.rotateY( Math.PI / 12 );
  705. pv033.rotateX( Math.PI / 12);
  706. pv033.name = "1B_15_15e_033_02";
  707. scene.add(pv033);
  708. setMessage("3D", "Loaded PV033.");
  709. createLabel("033");
  710. pv034 = new THREE.Mesh(
  711. new THREE.CubeGeometry( 4, 0.1,0.5),
  712. new THREE.MeshPhongMaterial( {
  713. color: 0xD3D3D3,
  714. specular: 0x050505,
  715. shininess: 100
  716. })
  717. );
  718. pv034.position.set(-11, 0.5, 31.5);
  719. pv034.rotateY( Math.PI / 12 );
  720. pv034.rotateX( Math.PI / 12);
  721. pv034.name = "4B_15_15e_034_02";
  722. scene.add(pv034);
  723. setMessage("3D", "Loaded PV034.");
  724. createLabel("034");
  725. pv035 = new THREE.Mesh(
  726. new THREE.CubeGeometry( 4, 0.1,0.5),
  727. new THREE.MeshPhongMaterial( {
  728. color: 0xD3D3D3,
  729. specular: 0x050505,
  730. shininess: 100
  731. })
  732. );
  733. pv035.position.set(-13, 0.5, 19);
  734. pv035.rotateY( Math.PI / 12 );
  735. pv035.rotateX( Math.PI / 6);
  736. pv035.name = "3A_30_15e_035_02";
  737. scene.add(pv035);
  738. setMessage("3D", "Loaded PV035.");
  739. createLabel("035");
  740. pv036 = new THREE.Mesh(
  741. new THREE.CubeGeometry( 4, 0.1,0.5),
  742. new THREE.MeshPhongMaterial( {
  743. color: 0xD3D3D3,
  744. specular: 0x050505,
  745. shininess: 100
  746. })
  747. );
  748. pv036.position.set(-13, 0.5, 21);
  749. pv036.rotateY( Math.PI / 12 );
  750. pv036.rotateX( Math.PI / 6);
  751. pv036.name = "1A_30_15e_036_02";
  752. scene.add(pv036);
  753. setMessage("3D", "Loaded PV036.");
  754. createLabel("036");
  755. pv037 = new THREE.Mesh(
  756. new THREE.CubeGeometry( 4, 0.1,0.5),
  757. new THREE.MeshPhongMaterial( {
  758. color: 0xD3D3D3,
  759. specular: 0x050505,
  760. shininess: 100
  761. })
  762. );
  763. pv037.position.set(-7, 0.5, 20);
  764. pv037.rotateY( Math.PI / 12 );
  765. pv037.rotateX( Math.PI / 6);
  766. pv037.name = "5A_30_15e_037_02";
  767. scene.add(pv037);
  768. setMessage("3D", "Loaded PV037.");
  769. createLabel("037");
  770. pv038 = new THREE.Mesh(
  771. new THREE.CubeGeometry( 4, 0.1,0.5),
  772. new THREE.MeshPhongMaterial( {
  773. color: 0xD3D3D3,
  774. specular: 0x050505,
  775. shininess: 100
  776. })
  777. );
  778. pv038.position.set(8, 0.5, -14);
  779. pv038.rotateY( Math.PI / 12 );
  780. pv038.rotateX( Math.PI / 4);
  781. pv038.name = "3A_45_15e_038_02";
  782. scene.add(pv038);
  783. setMessage("3D", "Loaded PV038.");
  784. createLabel("038");
  785. pv039 = new THREE.Mesh(
  786. new THREE.CubeGeometry( 4, 0.1,0.5),
  787. new THREE.MeshPhongMaterial( {
  788. color: 0xD3D3D3,
  789. specular: 0x050505,
  790. shininess: 100
  791. })
  792. );
  793. pv039.position.set(8, 0.5, -10);
  794. pv039.rotateY( Math.PI / 12 );
  795. pv039.rotateX( Math.PI / 4);
  796. pv039.name = "1A_45_15e_039_02";
  797. scene.add(pv039);
  798. setMessage("3D", "Loaded PV039.");
  799. createLabel("039");
  800. pv040 = new THREE.Mesh(
  801. new THREE.CubeGeometry( 4, 0.1,0.5),
  802. new THREE.MeshPhongMaterial( {
  803. color: 0xD3D3D3,
  804. specular: 0x050505,
  805. shininess: 100
  806. })
  807. );
  808. pv040.position.set(9, 0.5, -6.5);
  809. pv040.rotateY( Math.PI / 12 );
  810. pv040.rotateX( Math.PI / 4);
  811. pv040.name = "4A_45_15e_040_02";
  812. scene.add(pv040);
  813. setMessage("3D", "Loaded PV040.");
  814. createLabel("040");
  815. pv041 = new THREE.Mesh(
  816. new THREE.CubeGeometry( 4, 0.1,0.5),
  817. new THREE.MeshPhongMaterial( {
  818. color: 0xD3D3D3,
  819. specular: 0x050505,
  820. shininess: 100
  821. })
  822. );
  823. pv041.position.set(4, 0.5, -20.5);
  824. pv041.rotateY( Math.PI / 12 );
  825. pv041.rotateX( Math.PI / 3);
  826. pv041.name = "6A_60_15e_041_02";
  827. scene.add(pv041);
  828. setMessage("3D", "Loaded PV041.");
  829. createLabel("041");
  830. pv042 = new THREE.Mesh(
  831. new THREE.CubeGeometry( 4, 0.1,0.5),
  832. new THREE.MeshPhongMaterial( {
  833. color: 0xD3D3D3,
  834. specular: 0x050505,
  835. shininess: 100
  836. })
  837. );
  838. pv042.position.set(9, 0.5, -22);
  839. pv042.rotateY( Math.PI / 12 );
  840. pv042.rotateX( Math.PI / 3);
  841. pv042.name = "3A_60_15e_042_02";
  842. scene.add(pv042);
  843. setMessage("3D", "Loaded PV042.");
  844. createLabel("042");
  845. pv043 = new THREE.Mesh(
  846. new THREE.CubeGeometry( 4, 0.1,0.5),
  847. new THREE.MeshPhongMaterial( {
  848. color: 0xD3D3D3,
  849. specular: 0x050505,
  850. shininess: 100
  851. })
  852. );
  853. pv043.position.set(8, 0.5, -17.5);
  854. pv043.rotateY( Math.PI / 12 );
  855. pv043.rotateX( Math.PI / 3);
  856. pv043.name = "1A_60_15e_043_02";
  857. scene.add(pv043);
  858. setMessage("3D", "Loaded PV043.");
  859. createLabel("043");
  860. pv044 = new THREE.Mesh(
  861. new THREE.CubeGeometry( 4, 0.1,0.5),
  862. new THREE.MeshPhongMaterial( {
  863. color: 0xD3D3D3,
  864. specular: 0x050505,
  865. shininess: 100
  866. })
  867. );
  868. pv044.position.set(2, 0.5, 33);
  869. pv044.rotateY( Math.PI );
  870. pv044.rotateX( 11 * Math.PI / 12);
  871. pv044.name = "3B_15_00s_044_02";
  872. scene.add(pv044);
  873. setMessage("3D", "Loaded PV044.");
  874. createLabel("044");
  875. pv045 = new THREE.Mesh(
  876. new THREE.CubeGeometry( 4, 0.1,0.5),
  877. new THREE.MeshPhongMaterial( {
  878. color: 0xD3D3D3,
  879. specular: 0x050505,
  880. shininess: 100
  881. })
  882. );
  883. pv045.position.set(5, 0.5, 34.5);
  884. pv045.rotateY( Math.PI );
  885. pv045.rotateX( 11 * Math.PI / 12);
  886. pv045.name = "4B_15_00s_045_02";
  887. scene.add(pv045);
  888. setMessage("3D", "Loaded PV045.");
  889. createLabel("045");
  890. pv046 = new THREE.Mesh(
  891. new THREE.CubeGeometry( 4, 0.1,0.5),
  892. new THREE.MeshPhongMaterial( {
  893. color: 0xD3D3D3,
  894. specular: 0x050505,
  895. shininess: 100
  896. })
  897. );
  898. pv046.position.set(-1, 0.5, 35);
  899. pv046.rotateY( Math.PI );
  900. pv046.rotateX( 89 * Math.PI / 90);
  901. pv046.name = "6A_02_00s_046_02";
  902. scene.add(pv046);
  903. setMessage("3D", "Loaded PV046.");
  904. createLabel("046");
  905. pv047 = new THREE.Mesh(
  906. new THREE.CubeGeometry( 4, 0.1,0.5),
  907. new THREE.MeshPhongMaterial( {
  908. color: 0xD3D3D3,
  909. specular: 0x050505,
  910. shininess: 100
  911. })
  912. );
  913. pv047.position.set(3, 0.5, 36);
  914. pv047.rotateY( Math.PI );
  915. pv047.rotateX( 89 * Math.PI / 90);
  916. pv047.name = "2A_02_00s_047_02";
  917. scene.add(pv047);
  918. setMessage("3D", "Loaded PV047.");
  919. createLabel("047");
  920. pv048 = new THREE.Mesh(
  921. new THREE.CubeGeometry( 4, 0.1,0.5),
  922. new THREE.MeshPhongMaterial( {
  923. color: 0xD3D3D3,
  924. specular: 0x050505,
  925. shininess: 100
  926. })
  927. );
  928. pv048.position.set(6, 0.5, 37);
  929. pv048.rotateY( Math.PI );
  930. pv048.rotateX( 89 * Math.PI / 90);
  931. pv048.name = "1A_02_00s_048_02";
  932. scene.add(pv048);
  933. setMessage("3D", "Loaded PV048.");
  934. createLabel("048");
  935. pv049 = new THREE.Mesh(
  936. new THREE.CubeGeometry( 4, 0.1,0.5),
  937. new THREE.MeshPhongMaterial( {
  938. color: 0xD3D3D3,
  939. specular: 0x050505,
  940. shininess: 100
  941. })
  942. );
  943. pv049.position.set(-11, 0.5, 14);
  944. pv049.rotateY( Math.PI );
  945. pv049.rotateX( 5 * Math.PI / 6);
  946. pv049.name = "3C_30_00s_049_02";
  947. scene.add(pv049);
  948. setMessage("3D", "Loaded PV049.");
  949. createLabel("049");
  950. pv050 = new THREE.Mesh(
  951. new THREE.CubeGeometry( 4, 0.1,0.5),
  952. new THREE.MeshPhongMaterial( {
  953. color: 0xD3D3D3,
  954. specular: 0x050505,
  955. shininess: 100
  956. })
  957. );
  958. pv050.position.set(-10.5, 0.5, 11);
  959. pv050.rotateY( Math.PI );
  960. pv050.rotateX( 5 * Math.PI / 6);
  961. pv050.name = "1A_30_00s_050_02";
  962. scene.add(pv050);
  963. setMessage("3D", "Loaded PV050.");
  964. createLabel("050");
  965. pv051 = new THREE.Mesh(
  966. new THREE.CubeGeometry( 4, 0.1,0.5),
  967. new THREE.MeshPhongMaterial( {
  968. color: 0xD3D3D3,
  969. specular: 0x050505,
  970. shininess: 100
  971. })
  972. );
  973. pv051.position.set(8, 0.5, 7.5);
  974. pv051.rotateY( Math.PI );
  975. pv051.rotateX( 5 * Math.PI / 6);
  976. pv051.name = "1B_30_00s_051_02";
  977. scene.add(pv051);
  978. setMessage("3D", "Loaded PV051.");
  979. createLabel("051");
  980. pv052 = new THREE.Mesh(
  981. new THREE.CubeGeometry( 4, 0.1,0.5),
  982. new THREE.MeshPhongMaterial( {
  983. color: 0xD3D3D3,
  984. specular: 0x050505,
  985. shininess: 100
  986. })
  987. );
  988. pv052.position.set(-10, 0.5, 8);
  989. pv052.rotateY( Math.PI );
  990. pv052.rotateX( 5 * Math.PI / 6);
  991. pv052.name = "1D_30_00s_052_02";
  992. scene.add(pv052);
  993. setMessage("3D", "Loaded PV052.");
  994. createLabel("052");
  995. pv053 = new THREE.Mesh(
  996. new THREE.CubeGeometry( 4, 0.1,0.5),
  997. new THREE.MeshPhongMaterial( {
  998. color: 0xD3D3D3,
  999. specular: 0x050505,
  1000. shininess: 100
  1001. })
  1002. );
  1003. pv053.position.set(3, 0.5, 25);
  1004. pv053.rotateY( Math.PI );
  1005. pv053.rotateX( 5 * Math.PI / 6);
  1006. pv053.name = "1C_30_00s_053_02";
  1007. scene.add(pv053);
  1008. setMessage("3D", "Loaded PV053.");
  1009. createLabel("053");
  1010. pv054 = new THREE.Mesh(
  1011. new THREE.CubeGeometry( 4, 0.1,0.5),
  1012. new THREE.MeshPhongMaterial( {
  1013. color: 0xD3D3D3,
  1014. specular: 0x050505,
  1015. shininess: 100
  1016. })
  1017. );
  1018. pv054.position.set(2.5, 0.5, 28);
  1019. pv054.rotateY( Math.PI );
  1020. pv054.rotateX( 5 * Math.PI / 6);
  1021. pv054.name = "4D_30_00s_054_02";
  1022. scene.add(pv054);
  1023. setMessage("3D", "Loaded PV054.");
  1024. createLabel("054");
  1025. pv055 = new THREE.Mesh(
  1026. new THREE.CubeGeometry( 4, 0.1,0.5),
  1027. new THREE.MeshPhongMaterial( {
  1028. color: 0xD3D3D3,
  1029. specular: 0x050505,
  1030. shininess: 100
  1031. })
  1032. );
  1033. pv055.position.set(15, 0.5, -7);
  1034. pv055.rotateY( Math.PI );
  1035. pv055.rotateX( 3 * Math.PI / 4);
  1036. pv055.name = "3A_45_00s_055_02";
  1037. scene.add(pv055);
  1038. setMessage("3D", "Loaded PV055.");
  1039. createLabel("055");
  1040. pv056 = new THREE.Mesh(
  1041. new THREE.CubeGeometry( 4, 0.1,0.5),
  1042. new THREE.MeshPhongMaterial( {
  1043. color: 0xD3D3D3,
  1044. specular: 0x050505,
  1045. shininess: 100
  1046. })
  1047. );
  1048. pv056.position.set(15, 0.5, -11);
  1049. pv056.rotateY( Math.PI );
  1050. pv056.rotateX( 3 * Math.PI / 4);
  1051. pv056.name = "4A_45_00s_056_02";
  1052. scene.add(pv056);
  1053. setMessage("3D", "Loaded PV056.");
  1054. createLabel("056");
  1055. pv057 = new THREE.Mesh(
  1056. new THREE.CubeGeometry( 4, 0.1,0.5),
  1057. new THREE.MeshPhongMaterial( {
  1058. color: 0xD3D3D3,
  1059. specular: 0x050505,
  1060. shininess: 100
  1061. })
  1062. );
  1063. pv057.position.set(9, 0.5, -27.5);
  1064. pv057.rotateY( Math.PI );
  1065. pv057.rotateX( 2 * Math.PI / 3);
  1066. pv057.name = "6A_60_00s_057_02";
  1067. scene.add(pv057);
  1068. setMessage("3D", "Loaded PV057.");
  1069. createLabel("057");
  1070. pv058 = new THREE.Mesh(
  1071. new THREE.CubeGeometry( 4, 0.1,0.5),
  1072. new THREE.MeshPhongMaterial( {
  1073. color: 0xD3D3D3,
  1074. specular: 0x050505,
  1075. shininess: 100
  1076. })
  1077. );
  1078. pv058.position.set(0, 0.5, -30);
  1079. pv058.rotateY( Math.PI );
  1080. pv058.rotateX( 2 * Math.PI / 3);
  1081. pv058.name = "3A_60_00s_058_02";
  1082. scene.add(pv058);
  1083. setMessage("3D", "Loaded PV058.");
  1084. createLabel("058");
  1085. pv059 = new THREE.Mesh(
  1086. new THREE.CubeGeometry( 4, 0.1,0.5),
  1087. new THREE.MeshPhongMaterial( {
  1088. color: 0xD3D3D3,
  1089. specular: 0x050505,
  1090. shininess: 100
  1091. })
  1092. );
  1093. pv059.position.set(8, 0.5, 25.5);
  1094. pv059.rotateY( 11 * Math.PI / 12 );
  1095. pv059.rotateX( 11 * Math.PI / 12);
  1096. pv059.name = "3B_15_15w_059_02";
  1097. scene.add(pv059);
  1098. setMessage("3D", "Loaded PV059.");
  1099. createLabel("059");
  1100. pv060 = new THREE.Mesh(
  1101. new THREE.CubeGeometry( 4, 0.1,0.5),
  1102. new THREE.MeshPhongMaterial( {
  1103. color: 0xD3D3D3,
  1104. specular: 0x050505,
  1105. shininess: 100
  1106. })
  1107. );
  1108. pv060.position.set(2.5, 0.5, 31);
  1109. pv060.rotateY( 11 * Math.PI / 12 );
  1110. pv060.rotateX( 11 * Math.PI / 12);
  1111. pv060.name = "1B_15_15w_060_02";
  1112. scene.add(pv060);
  1113. setMessage("3D", "Loaded PV060.");
  1114. createLabel("060");
  1115. pv061 = new THREE.Mesh(
  1116. new THREE.CubeGeometry( 4, 0.1,0.5),
  1117. new THREE.MeshPhongMaterial( {
  1118. color: 0xD3D3D3,
  1119. specular: 0x050505,
  1120. shininess: 100
  1121. })
  1122. );
  1123. pv061.position.set(9.5, 0.5, 35.5);
  1124. pv061.rotateY( 11 * Math.PI / 12 );
  1125. pv061.rotateX( 11 * Math.PI / 12);
  1126. pv061.name = "4B_15_15w_061_02";
  1127. scene.add(pv061);
  1128. setMessage("3D", "Loaded PV061.");
  1129. createLabel("061");
  1130. pv062 = new THREE.Mesh(
  1131. new THREE.CubeGeometry( 4, 0.1,0.5),
  1132. new THREE.MeshPhongMaterial( {
  1133. color: 0xD3D3D3,
  1134. specular: 0x050505,
  1135. shininess: 100
  1136. })
  1137. );
  1138. pv062.position.set(8, 0.5, 22.15);
  1139. pv062.rotateY( 11 * Math.PI / 12 );
  1140. pv062.rotateX( 5 * Math.PI / 6);
  1141. pv062.name = "3A_30_15w_062_02";
  1142. scene.add(pv062);
  1143. setMessage("3D", "Loaded PV062.");
  1144. createLabel("062");
  1145. pv063 = new THREE.Mesh(
  1146. new THREE.CubeGeometry( 4, 0.1,0.5),
  1147. new THREE.MeshPhongMaterial( {
  1148. color: 0xD3D3D3,
  1149. specular: 0x050505,
  1150. shininess: 100
  1151. })
  1152. );
  1153. pv063.position.set(12.5, 0.5, 23.25);
  1154. pv063.rotateY( 11 * Math.PI / 12 );
  1155. pv063.rotateX( 5 * Math.PI / 6);
  1156. pv063.name = "1A_30_15w_063_02";
  1157. scene.add(pv063);
  1158. setMessage("3D", "Loaded PV063.");
  1159. createLabel("063");
  1160. pv064 = new THREE.Mesh(
  1161. new THREE.CubeGeometry( 4, 0.1,0.5),
  1162. new THREE.MeshPhongMaterial( {
  1163. color: 0xD3D3D3,
  1164. specular: 0x050505,
  1165. shininess: 100
  1166. })
  1167. );
  1168. pv064.position.set(3.5, 0.5, 21);
  1169. pv064.rotateY( 11 * Math.PI / 12 );
  1170. pv064.rotateX( 5 * Math.PI / 6);
  1171. pv064.name = "5A_30_15w_064_02";
  1172. scene.add(pv064);
  1173. setMessage("3D", "Loaded PV064.");
  1174. createLabel("064");
  1175. pv065 = new THREE.Mesh(
  1176. new THREE.CubeGeometry( 4, 0.1,0.5),
  1177. new THREE.MeshPhongMaterial( {
  1178. color: 0xD3D3D3,
  1179. specular: 0x050505,
  1180. shininess: 100
  1181. })
  1182. );
  1183. pv065.position.set(16, 0.5, -19);
  1184. pv065.rotateY( 11 * Math.PI / 12 );
  1185. pv065.rotateX( 3 * Math.PI / 4);
  1186. pv065.name = "3A_45_15w_065_02";
  1187. scene.add(pv065);
  1188. setMessage("3D", "Loaded PV065.");
  1189. createLabel("065");
  1190. pv066 = new THREE.Mesh(
  1191. new THREE.CubeGeometry( 4, 0.1,0.5),
  1192. new THREE.MeshPhongMaterial( {
  1193. color: 0xD3D3D3,
  1194. specular: 0x050505,
  1195. shininess: 100
  1196. })
  1197. );
  1198. pv066.position.set(17, 0.5, -22);
  1199. pv066.rotateY( 11 * Math.PI / 12 );
  1200. pv066.rotateX( 3 * Math.PI / 4);
  1201. pv066.name = "1A_45_15w_066_02";
  1202. scene.add(pv066);
  1203. setMessage("3D", "Loaded PV066.");
  1204. createLabel("066");
  1205. pv067 = new THREE.Mesh(
  1206. new THREE.CubeGeometry( 4, 0.1,0.5),
  1207. new THREE.MeshPhongMaterial( {
  1208. color: 0xD3D3D3,
  1209. specular: 0x050505,
  1210. shininess: 100
  1211. })
  1212. );
  1213. pv067.position.set(15, 0.5, -15);
  1214. pv067.rotateY( 11 * Math.PI / 12 );
  1215. pv067.rotateX( 3 * Math.PI / 4);
  1216. pv067.name = "4A_45_15w_067_02";
  1217. scene.add(pv067);
  1218. setMessage("3D", "Loaded PV067.");
  1219. createLabel("067");
  1220. pv068 = new THREE.Mesh(
  1221. new THREE.CubeGeometry( 4, 0.1,0.5),
  1222. new THREE.MeshPhongMaterial( {
  1223. color: 0xD3D3D3,
  1224. specular: 0x050505,
  1225. shininess: 100
  1226. })
  1227. );
  1228. pv068.position.set(15, 0.5, -27);
  1229. pv068.rotateY( 11 * Math.PI / 12 );
  1230. pv068.rotateX( 2 * Math.PI / 3);
  1231. pv068.name = "6A_60_15w_068_02";
  1232. scene.add(pv068);
  1233. setMessage("3D", "Loaded PV068.");
  1234. createLabel("068");
  1235. pv069 = new THREE.Mesh(
  1236. new THREE.CubeGeometry( 4, 0.1,0.5),
  1237. new THREE.MeshPhongMaterial( {
  1238. color: 0xD3D3D3,
  1239. specular: 0x050505,
  1240. shininess: 100
  1241. })
  1242. );
  1243. pv069.position.set(20, 0.5, -25.75);
  1244. pv069.rotateY( 11 * Math.PI / 12 );
  1245. pv069.rotateX( 2 * Math.PI / 3);
  1246. pv069.name = "3A_60_15w_069_02";
  1247. scene.add(pv069);
  1248. setMessage("3D", "Loaded PV069.");
  1249. createLabel("069");
  1250. pv070 = new THREE.Mesh(
  1251. new THREE.CubeGeometry( 4, 0.1,0.5),
  1252. new THREE.MeshPhongMaterial( {
  1253. color: 0xD3D3D3,
  1254. specular: 0x050505,
  1255. shininess: 100
  1256. })
  1257. );
  1258. pv070.position.set(25, 0.5, -24.5);
  1259. pv070.rotateY( 11 * Math.PI / 12 );
  1260. pv070.rotateX( 2 * Math.PI / 3);
  1261. pv070.name = "1A_60_15w_070_02";
  1262. scene.add(pv070);
  1263. setMessage("3D", "Loaded PV070.");
  1264. createLabel("070");
  1265. pv071 = new THREE.Mesh(
  1266. new THREE.CubeGeometry( 4, 0.1,0.5),
  1267. new THREE.MeshPhongMaterial( {
  1268. color: 0xD3D3D3,
  1269. specular: 0x050505,
  1270. shininess: 100
  1271. })
  1272. );
  1273. pv071.position.set(17, 0.5, 25);
  1274. pv071.rotateY( 11 * Math.PI / 6 );
  1275. pv071.rotateX( Math.PI / 12);
  1276. pv071.name = "3A_15_30w_071_02";
  1277. scene.add(pv071);
  1278. setMessage("3D", "Loaded PV071.");
  1279. createLabel("071");
  1280. pv072 = new THREE.Mesh(
  1281. new THREE.CubeGeometry( 4, 0.1,0.5),
  1282. new THREE.MeshPhongMaterial( {
  1283. color: 0xD3D3D3,
  1284. specular: 0x050505,
  1285. shininess: 100
  1286. })
  1287. );
  1288. pv072.position.set(6.75, 0.5, 32.5);
  1289. pv072.rotateY( 11 * Math.PI / 6 );
  1290. pv072.rotateX( Math.PI / 12);
  1291. pv072.name = "1A_15_30w_072_02";
  1292. scene.add(pv072);
  1293. setMessage("3D", "Loaded PV072.");
  1294. createLabel("072");
  1295. pv073 = new THREE.Mesh(
  1296. new THREE.CubeGeometry( 4, 0.1,0.5),
  1297. new THREE.MeshPhongMaterial( {
  1298. color: 0xD3D3D3,
  1299. specular: 0x050505,
  1300. shininess: 100
  1301. })
  1302. );
  1303. pv073.position.set(10.5, 0.5, 38.25);
  1304. pv073.rotateY( 11 * Math.PI / 6 );
  1305. pv073.rotateX( Math.PI / 12);
  1306. pv073.name = "1B_15_30w_073_02";
  1307. scene.add(pv073);
  1308. setMessage("3D", "Loaded PV073.");
  1309. createLabel("073");
  1310. pv074 = new THREE.Mesh(
  1311. new THREE.CubeGeometry( 4, 0.1,0.5),
  1312. new THREE.MeshPhongMaterial( {
  1313. color: 0xD3D3D3,
  1314. specular: 0x050505,
  1315. shininess: 100
  1316. })
  1317. );
  1318. pv074.position.set(12.5, 0.5, 27.5);
  1319. pv074.rotateY( 11 * Math.PI / 6 );
  1320. pv074.rotateX( Math.PI / 12);
  1321. pv074.name = "1D_15_30w_074_02";
  1322. scene.add(pv074);
  1323. setMessage("3D", "Loaded PV074.");
  1324. createLabel("074");
  1325. pv075 = new THREE.Mesh(
  1326. new THREE.CubeGeometry( 4, 0.1,0.5),
  1327. new THREE.MeshPhongMaterial( {
  1328. color: 0xD3D3D3,
  1329. specular: 0x050505,
  1330. shininess: 100
  1331. })
  1332. );
  1333. pv075.position.set(7.5, 0.5, 29.5);
  1334. pv075.rotateY( 11 * Math.PI / 6 );
  1335. pv075.rotateX( Math.PI / 12);
  1336. pv075.name = "1C_15_30w_075_02";
  1337. scene.add(pv075);
  1338. createLabel("075");
  1339. pv076 = new THREE.Mesh(
  1340. new THREE.CubeGeometry( 4, 0.1,0.5),
  1341. new THREE.MeshPhongMaterial( {
  1342. color: 0xD3D3D3,
  1343. specular: 0x050505,
  1344. shininess: 100
  1345. })
  1346. );
  1347. pv076.position.set(11, 0.5, 33.5);
  1348. pv076.rotateY( 11 * Math.PI / 6 );
  1349. pv076.rotateX( Math.PI / 12);
  1350. pv076.name = "5D_15_30w_076_02";
  1351. scene.add(pv076);
  1352. setMessage("3D", "Loaded PV076.");
  1353. createLabel("076");
  1354. pv077 = new THREE.Mesh(
  1355. new THREE.CubeGeometry( 4, 0.1,0.5),
  1356. new THREE.MeshPhongMaterial( {
  1357. color: 0xD3D3D3,
  1358. specular: 0x050505,
  1359. shininess: 100
  1360. })
  1361. );
  1362. pv077.position.set(13, 0.5, 12);
  1363. pv077.rotateY( 11 * Math.PI / 6 );
  1364. pv077.rotateX( Math.PI / 6);
  1365. pv077.name = "6D_30_30w_077_02";
  1366. scene.add(pv077);
  1367. setMessage("3D", "Loaded PV077.");
  1368. createLabel("077");
  1369. pv078 = new THREE.Mesh(
  1370. new THREE.CubeGeometry( 4, 0.1,0.5),
  1371. new THREE.MeshPhongMaterial( {
  1372. color: 0xD3D3D3,
  1373. specular: 0x050505,
  1374. shininess: 100
  1375. })
  1376. );
  1377. pv078.position.set(12, 0.5, 15);
  1378. pv078.rotateY( 11 * Math.PI / 6 );
  1379. pv078.rotateX( Math.PI / 6);
  1380. pv078.name = "3D_30_30w_078_02";
  1381. scene.add(pv078);
  1382. setMessage("3D", "Loaded PV078.");
  1383. createLabel("078");
  1384. pv079 = new THREE.Mesh(
  1385. new THREE.CubeGeometry( 4, 0.1,0.5),
  1386. new THREE.MeshPhongMaterial( {
  1387. color: 0xD3D3D3,
  1388. specular: 0x050505,
  1389. shininess: 100
  1390. })
  1391. );
  1392. pv079.position.set(14, 0.5, 9);
  1393. pv079.rotateY( 11 * Math.PI / 6 );
  1394. pv079.rotateX( Math.PI / 6);
  1395. pv079.name = "1D_30_30w_079_02";
  1396. scene.add(pv079);
  1397. setMessage("3D", "Loaded PV079.");
  1398. createLabel("079");
  1399. pv080 = new THREE.Mesh(
  1400. new THREE.CubeGeometry( 4, 0.1,0.5),
  1401. new THREE.MeshPhongMaterial( {
  1402. color: 0xD3D3D3,
  1403. specular: 0x050505,
  1404. shininess: 100
  1405. })
  1406. );
  1407. pv080.position.set(20, 0.5, -4);
  1408. pv080.rotateY( 11 * Math.PI / 6 );
  1409. pv080.rotateX( Math.PI / 4);
  1410. pv080.name = "3A_45_30w_080_02";
  1411. scene.add(pv080);
  1412. setMessage("3D", "Loaded PV080.");
  1413. createLabel("080");
  1414. pv081 = new THREE.Mesh(
  1415. new THREE.CubeGeometry( 4, 0.1,0.5),
  1416. new THREE.MeshPhongMaterial( {
  1417. color: 0xD3D3D3,
  1418. specular: 0x050505,
  1419. shininess: 100
  1420. })
  1421. );
  1422. pv081.position.set(21, 0.5, -7);
  1423. pv081.rotateY( 11 * Math.PI / 6 );
  1424. pv081.rotateX( Math.PI / 4);
  1425. pv081.name = "1A_45_30w_081_02";
  1426. scene.add(pv081);
  1427. setMessage("3D", "Loaded PV081.");
  1428. createLabel("081");
  1429. pv082 = new THREE.Mesh(
  1430. new THREE.CubeGeometry( 4, 0.1,0.5),
  1431. new THREE.MeshPhongMaterial( {
  1432. color: 0xD3D3D3,
  1433. specular: 0x050505,
  1434. shininess: 100
  1435. })
  1436. );
  1437. pv082.position.set(21.5, 0.5, -11);
  1438. pv082.rotateY( 11 * Math.PI / 6 );
  1439. pv082.rotateX( Math.PI / 4);
  1440. pv082.name = "5A_45_30w_082_02";
  1441. scene.add(pv082);
  1442. setMessage("3D", "Loaded PV082.");
  1443. createLabel("082");
  1444. pv083 = new THREE.Mesh(
  1445. new THREE.CubeGeometry( 4, 0.1,0.5),
  1446. new THREE.MeshPhongMaterial( {
  1447. color: 0xD3D3D3,
  1448. specular: 0x050505,
  1449. shininess: 100
  1450. })
  1451. );
  1452. pv083.position.set(24, 0.5, -21);
  1453. pv083.rotateY( 11 * Math.PI / 6 );
  1454. pv083.rotateX( Math.PI / 3);
  1455. pv083.name = "6A_60_30w_083_02";
  1456. scene.add(pv083);
  1457. setMessage("3D", "Loaded PV083.");
  1458. createLabel("083");
  1459. pv084 = new THREE.Mesh(
  1460. new THREE.CubeGeometry( 4, 0.1,0.5),
  1461. new THREE.MeshPhongMaterial( {
  1462. color: 0xD3D3D3,
  1463. specular: 0x050505,
  1464. shininess: 100
  1465. })
  1466. );
  1467. pv084.position.set(23, 0.5, -18);
  1468. pv084.rotateY( 11 * Math.PI / 6 );
  1469. pv084.rotateX( Math.PI / 3);
  1470. pv084.name = "3A_60_30w_084_02";
  1471. scene.add(pv084);
  1472. setMessage("3D", "Loaded PV084.");
  1473. createLabel("084");
  1474. pv085 = new THREE.Mesh(
  1475. new THREE.CubeGeometry( 4, 0.1,0.5),
  1476. new THREE.MeshPhongMaterial( {
  1477. color: 0xD3D3D3,
  1478. specular: 0x050505,
  1479. shininess: 100
  1480. })
  1481. );
  1482. pv085.position.set(23, 0.5, -14);
  1483. pv085.rotateY( 11 * Math.PI / 6 );
  1484. pv085.rotateX( Math.PI / 3);
  1485. pv085.name = "1A_60_30w_085_02";
  1486. scene.add(pv085);
  1487. setMessage("3D", "Loaded PV085.");
  1488. createLabel("085");
  1489. pv086 = new THREE.Mesh(
  1490. new THREE.CubeGeometry( 4, 0.1,0.5),
  1491. new THREE.MeshPhongMaterial( {
  1492. color: 0xD3D3D3,
  1493. specular: 0x050505,
  1494. shininess: 100
  1495. })
  1496. );
  1497. pv086.position.set(12, 0.5, 30.5);
  1498. pv086.rotateY( 7 * Math.PI / 4 );
  1499. pv086.rotateX( Math.PI / 12);
  1500. pv086.name = "2A_15_45w_086_02";
  1501. scene.add(pv086);
  1502. setMessage("3D", "Loaded PV086.");
  1503. createLabel("086");
  1504. pv087 = new THREE.Mesh(
  1505. new THREE.CubeGeometry( 4, 0.1,0.5),
  1506. new THREE.MeshPhongMaterial( {
  1507. color: 0xD3D3D3,
  1508. specular: 0x050505,
  1509. shininess: 100
  1510. })
  1511. );
  1512. pv087.position.set(16, 0.5, 30.5);
  1513. pv087.rotateY( 7 * Math.PI / 4 );
  1514. pv087.rotateX( Math.PI / 12);
  1515. pv087.name = "1A_15_45w_087_02";
  1516. scene.add(pv087);
  1517. setMessage("3D", "Loaded PV087.");
  1518. createLabel("087");
  1519. pv088 = new THREE.Mesh(
  1520. new THREE.CubeGeometry( 4, 0.1,0.5),
  1521. new THREE.MeshPhongMaterial( {
  1522. color: 0xD3D3D3,
  1523. specular: 0x050505,
  1524. shininess: 100
  1525. })
  1526. );
  1527. pv088.position.set(17, 0.5, 27.5);
  1528. pv088.rotateY( 7 * Math.PI / 4 );
  1529. pv088.rotateX( Math.PI / 12);
  1530. pv088.name = "4A_15_45w_088_02";
  1531. scene.add(pv088);
  1532. setMessage("3D", "Loaded PV088.");
  1533. createLabel("088");
  1534. pv089 = new THREE.Mesh(
  1535. new THREE.CubeGeometry( 4, 0.1,0.5),
  1536. new THREE.MeshPhongMaterial( {
  1537. color: 0xD3D3D3,
  1538. specular: 0x050505,
  1539. shininess: 100
  1540. })
  1541. );
  1542. pv089.position.set(20, 0.5, 11);
  1543. pv089.rotateY( 7 * Math.PI / 4 );
  1544. pv089.rotateX( Math.PI / 6);
  1545. pv089.name = "6A_30_45w_089_02";
  1546. scene.add(pv089);
  1547. setMessage("3D", "Loaded PV089.");
  1548. createLabel("089");
  1549. pv090 = new THREE.Mesh(
  1550. new THREE.CubeGeometry( 4, 0.1,0.5),
  1551. new THREE.MeshPhongMaterial( {
  1552. color: 0xD3D3D3,
  1553. specular: 0x050505,
  1554. shininess: 100
  1555. })
  1556. );
  1557. pv090.position.set(19, 0.5, 14);
  1558. pv090.rotateY( 7 * Math.PI / 4 );
  1559. pv090.rotateX( Math.PI / 6);
  1560. pv090.name = "2A_30_45w_090_02";
  1561. scene.add(pv090);
  1562. setMessage("3D", "Loaded PV090.");
  1563. createLabel("090");
  1564. pv091 = new THREE.Mesh(
  1565. new THREE.CubeGeometry( 4, 0.1,0.5),
  1566. new THREE.MeshPhongMaterial( {
  1567. color: 0xD3D3D3,
  1568. specular: 0x050505,
  1569. shininess: 100
  1570. })
  1571. );
  1572. pv091.position.set(29, 0.5, -14);
  1573. pv091.rotateY( 7 * Math.PI / 4 );
  1574. pv091.rotateX( Math.PI / 4);
  1575. pv091.name = "2C_45_45w_091_02";
  1576. scene.add(pv091);
  1577. setMessage("3D", "Loaded PV091.");
  1578. createLabel("091");
  1579. pv092 = new THREE.Mesh(
  1580. new THREE.CubeGeometry( 4, 0.1,0.5),
  1581. new THREE.MeshPhongMaterial( {
  1582. color: 0xD3D3D3,
  1583. specular: 0x050505,
  1584. shininess: 100
  1585. })
  1586. );
  1587. pv092.position.set(23, 0.5, 7);
  1588. pv092.rotateY( 7 * Math.PI / 4 );
  1589. pv092.rotateX( Math.PI / 4);
  1590. pv092.name = "4C_45_45w_092_02";
  1591. scene.add(pv092);
  1592. setMessage("3D", "Loaded PV092.");
  1593. createLabel("092");
  1594. pv093 = new THREE.Mesh(
  1595. new THREE.CubeGeometry( 4, 0.1,0.5),
  1596. new THREE.MeshPhongMaterial( {
  1597. color: 0xD3D3D3,
  1598. specular: 0x050505,
  1599. shininess: 100
  1600. })
  1601. );
  1602. pv093.position.set(30, 0.5, -18);
  1603. pv093.rotateY( 7 * Math.PI / 4 );
  1604. pv093.rotateX( Math.PI / 3);
  1605. pv093.name = "6A_60_45w_093_02";
  1606. scene.add(pv093);
  1607. setMessage("3D", "Loaded PV093.");
  1608. createLabel("093");
  1609. pv094 = new THREE.Mesh(
  1610. new THREE.CubeGeometry( 4, 0.1,0.5),
  1611. new THREE.MeshPhongMaterial( {
  1612. color: 0xD3D3D3,
  1613. specular: 0x050505,
  1614. shininess: 100
  1615. })
  1616. );
  1617. pv094.position.set(30, 0.5, -22);
  1618. pv094.rotateY( 7 * Math.PI / 4 );
  1619. pv094.rotateX( Math.PI / 3);
  1620. pv094.name = "2A_60_45w_094_02";
  1621. scene.add(pv094);
  1622. setMessage("3D", "Loaded PV094.");
  1623. createLabel("094");
  1624. pv095 = new THREE.Mesh(
  1625. new THREE.CubeGeometry( 4, 0.1,0.5),
  1626. new THREE.MeshPhongMaterial( {
  1627. color: 0xD3D3D3,
  1628. specular: 0x050505,
  1629. shininess: 100
  1630. })
  1631. );
  1632. pv095.position.set(15, 0.5, 34);
  1633. pv095.rotateY( 5 * Math.PI / 3);
  1634. pv095.rotateX( Math.PI / 12);
  1635. pv095.name = "6A_15_60w_095_02";
  1636. scene.add(pv095);
  1637. setMessage("3D", "Loaded PV095.");
  1638. createLabel("095");
  1639. pv096 = new THREE.Mesh(
  1640. new THREE.CubeGeometry( 4, 0.1,0.5),
  1641. new THREE.MeshPhongMaterial( {
  1642. color: 0xD3D3D3,
  1643. specular: 0x050505,
  1644. shininess: 100
  1645. })
  1646. );
  1647. pv096.position.set(14, 0.5, 37);
  1648. pv096.rotateY( 5 * Math.PI / 3);
  1649. pv096.rotateX( Math.PI / 12);
  1650. pv096.name = "2A_15_60w_096_02";
  1651. scene.add(pv096);
  1652. setMessage("3D", "Loaded PV096.");
  1653. createLabel("096");
  1654. pv097 = new THREE.Mesh(
  1655. new THREE.CubeGeometry( 4, 0.1,0.5),
  1656. new THREE.MeshPhongMaterial( {
  1657. color: 0xD3D3D3,
  1658. specular: 0x050505,
  1659. shininess: 100
  1660. })
  1661. );
  1662. pv097.position.set(16, 0.5, 20);
  1663. pv097.rotateY( 5 * Math.PI / 3);
  1664. pv097.rotateX( Math.PI / 6);
  1665. pv097.name = "6A_30_60w_097_02";
  1666. scene.add(pv097);
  1667. setMessage("3D", "Loaded PV097.");
  1668. createLabel("097");
  1669. pv098 = new THREE.Mesh(
  1670. new THREE.CubeGeometry( 4, 0.1,0.5),
  1671. new THREE.MeshPhongMaterial( {
  1672. color: 0xD3D3D3,
  1673. specular: 0x050505,
  1674. shininess: 100
  1675. })
  1676. );
  1677. pv098.position.set(17, 0.5, 17);
  1678. pv098.rotateY( 5 * Math.PI / 3);
  1679. pv098.rotateX( Math.PI / 6);
  1680. pv098.name = "1A_30_60w_098_02";
  1681. scene.add(pv098);
  1682. setMessage("3D", "Loaded PV098.");
  1683. createLabel("098");
  1684. pv099 = new THREE.Mesh(
  1685. new THREE.CubeGeometry( 4, 0.1,0.5),
  1686. new THREE.MeshPhongMaterial( {
  1687. color: 0xD3D3D3,
  1688. specular: 0x050505,
  1689. shininess: 100
  1690. })
  1691. );
  1692. pv099.position.set(25, 0.5, -1);
  1693. pv099.rotateY( 5 * Math.PI / 3);
  1694. pv099.rotateX( Math.PI / 4);
  1695. pv099.name = "6A_45_60w_099_02";
  1696. scene.add(pv099);
  1697. setMessage("3D", "Loaded PV099.");
  1698. createLabel("099");
  1699. pv100 = new THREE.Mesh(
  1700. new THREE.CubeGeometry( 4, 0.1,0.5),
  1701. new THREE.MeshPhongMaterial( {
  1702. color: 0xD3D3D3,
  1703. specular: 0x050505,
  1704. shininess: 100
  1705. })
  1706. );
  1707. pv100.position.set(22, 0.5, 2);
  1708. pv100.rotateY( 5 * Math.PI / 3);
  1709. pv100.rotateX( Math.PI / 4);
  1710. pv100.name = "1A_45_60w_100_02";
  1711. scene.add(pv100);
  1712. setMessage("3D", "Loaded PV100.");
  1713. createLabel("100");
  1714. pv101 = new THREE.Mesh(
  1715. new THREE.CubeGeometry( 4, 0.1,0.5),
  1716. new THREE.MeshPhongMaterial( {
  1717. color: 0xD3D3D3,
  1718. specular: 0x050505,
  1719. shininess: 100
  1720. })
  1721. );
  1722. pv101.position.set(28, 0.5, -10);
  1723. pv101.rotateY( 5 * Math.PI / 3);
  1724. pv101.rotateX( Math.PI / 3);
  1725. pv101.name = "2C_60_60w_101_02";
  1726. scene.add(pv101);
  1727. setMessage("3D", "Loaded PV101.");
  1728. createLabel("101");
  1729. pv102 = new THREE.Mesh(
  1730. new THREE.CubeGeometry( 4, 0.1,0.5),
  1731. new THREE.MeshPhongMaterial( {
  1732. color: 0xD3D3D3,
  1733. specular: 0x050505,
  1734. shininess: 100
  1735. })
  1736. );
  1737. pv102.position.set(26, 0.5, -6);
  1738. pv102.rotateY( 5 * Math.PI / 3);
  1739. pv102.rotateX( Math.PI / 3);
  1740. pv102.name = "1C_60_60w_102_02";
  1741. scene.add(pv102);
  1742. setMessage("3D", "Loaded PV102.");
  1743. createLabel("102");
  1744. /* --------------------------------------------------- */
  1745. pv001a = new THREE.Mesh(
  1746. new THREE.CubeGeometry( 4, 0.1,0.5),
  1747. new THREE.MeshPhongMaterial( {
  1748. color: 0xD3D3D3,
  1749. specular: 0x050505,
  1750. shininess: 100
  1751. })
  1752. );
  1753. pv001a.position.set(-18.418, 0.6, 28.758);
  1754. pv001a.rotateY( Math.PI / 3 );
  1755. pv001a.rotateX( Math.PI / 12);
  1756. pv001a.name = "2A_15_60e_001_01";
  1757. scene.add(pv001a);
  1758. pv002a = new THREE.Mesh(
  1759. new THREE.CubeGeometry( 4, 0.1,0.5),
  1760. new THREE.MeshPhongMaterial( {
  1761. color: 0xD3D3D3,
  1762. specular: 0x050505,
  1763. shininess: 100
  1764. })
  1765. );
  1766. pv002a.position.set(-14.418, 0.6, 29.758);
  1767. pv002a.rotateY( Math.PI / 3 );
  1768. pv002a.rotateX( Math.PI / 12);
  1769. pv002a.name = "5A_15_60e_002_01";
  1770. scene.add(pv002a);
  1771. pv003a = new THREE.Mesh(
  1772. new THREE.CubeGeometry( 4, 0.1,0.5),
  1773. new THREE.MeshPhongMaterial( {
  1774. color: 0xD3D3D3,
  1775. specular: 0x050505,
  1776. shininess: 100
  1777. })
  1778. );
  1779. //pv003.position.set(9.5, 0.5, 2);
  1780. pv003a.position.set(9.125, 0.7, 1.783);
  1781. pv003a.rotateY( Math.PI / 3 );
  1782. pv003a.rotateX( Math.PI / 6);
  1783. pv003a.name = "6A_30_60e_003_01";
  1784. scene.add(pv003a);
  1785. pv004a = new THREE.Mesh(
  1786. new THREE.CubeGeometry( 4, 0.1,0.5),
  1787. new THREE.MeshPhongMaterial( {
  1788. color: 0xD3D3D3,
  1789. specular: 0x050505,
  1790. shininess: 100
  1791. })
  1792. );
  1793. //pv004.position.set(6, 0.5, 1);
  1794. pv004a.position.set(5.625, 0.7, 0.783);
  1795. pv004a.rotateY( Math.PI / 3 );
  1796. pv004a.rotateX( Math.PI / 6);
  1797. pv004a.name = "1A_30_60e_004_01";
  1798. scene.add(pv004a);
  1799. pv005a = new THREE.Mesh(
  1800. new THREE.CubeGeometry(4, 0.1, 0.5),
  1801. new THREE.MeshPhongMaterial( {
  1802. color: 0xD3D3D3,
  1803. specular: 0x050505,
  1804. shininess: 100
  1805. })
  1806. );
  1807. //pv005a.position.set(-8, 0.5, -3);
  1808. pv005a.position.set(-8.375, 0.8, -3.216);
  1809. pv005a.rotateY( Math.PI / 3 );
  1810. pv005a.rotateX( Math.PI / 4);
  1811. pv005a.name = "6A_45_60e_005_01";
  1812. scene.add(pv005a);
  1813. pv006a = new THREE.Mesh(
  1814. new THREE.CubeGeometry( 4, 0.1,0.5),
  1815. new THREE.MeshPhongMaterial( {
  1816. color: 0xD3D3D3,
  1817. specular: 0x050505,
  1818. shininess: 100
  1819. })
  1820. );
  1821. //pv006a.position.set(-4.5, 0.5, -2);
  1822. pv006a.position.set(-4.806, 0.8, -2.177);
  1823. pv006a.rotateY( Math.PI / 3 );
  1824. pv006a.rotateX( Math.PI / 4);
  1825. pv006a.name = "1A_45_60e_006_01";
  1826. scene.add(pv006a);
  1827. pv007a = new THREE.Mesh(
  1828. new THREE.CubeGeometry( 4, 0.1,0.5),
  1829. new THREE.MeshPhongMaterial( {
  1830. color: 0xD3D3D3,
  1831. specular: 0x050505,
  1832. shininess: 100
  1833. })
  1834. );
  1835. //pv007a.position.set(-5, 0.5, -16);
  1836. pv007a.position.set(-5.216, 0.9, -16.125);
  1837. pv007a.rotateY( Math.PI / 3 );
  1838. pv007a.rotateX( Math.PI / 3);
  1839. pv007a.name = "6C_60_60e_007_01";
  1840. scene.add(pv007a);
  1841. pv008a = new THREE.Mesh(
  1842. new THREE.CubeGeometry( 4, 0.1,0.5),
  1843. new THREE.MeshPhongMaterial( {
  1844. color: 0xD3D3D3,
  1845. specular: 0x050505,
  1846. shininess: 100
  1847. })
  1848. );
  1849. //pv008a.position.set(-7, 0.5, -9);
  1850. pv008a.position.set(-7.216, 0.9, -9.125);
  1851. pv008a.rotateY( Math.PI / 3 );
  1852. pv008a.rotateX( Math.PI / 3);
  1853. pv008a.name = "1C_60_60e_008_01";
  1854. scene.add(pv008a);
  1855. pv009a = new THREE.Mesh(
  1856. new THREE.CubeGeometry( 4, 0.1,0.5),
  1857. new THREE.MeshPhongMaterial( {
  1858. color: 0xD3D3D3,
  1859. specular: 0x050505,
  1860. shininess: 100
  1861. })
  1862. );
  1863. //pv009a.position.set(13, 0.5, 3);
  1864. pv009a.position.set(12.658, 0.6, 2.658);
  1865. pv009a.rotateY( Math.PI / 4 );
  1866. pv009a.rotateX( Math.PI / 12);
  1867. pv009a.name = "2A_15_45e_009_01";
  1868. scene.add(pv009a);
  1869. pv010a = new THREE.Mesh(
  1870. new THREE.CubeGeometry( 4, 0.1,0.5),
  1871. new THREE.MeshPhongMaterial( {
  1872. color: 0xD3D3D3,
  1873. specular: 0x050505,
  1874. shininess: 100
  1875. })
  1876. );
  1877. pv010a.position.set(17.658, 0.6, 3.658);
  1878. pv010a.rotateY( Math.PI / 4 );
  1879. pv010a.rotateX( Math.PI / 12);
  1880. pv010a.name = "1A_15_45e_010_01";
  1881. scene.add(pv010a);
  1882. pv011a = new THREE.Mesh(
  1883. new THREE.CubeGeometry( 4, 0.1,0.5),
  1884. new THREE.MeshPhongMaterial( {
  1885. color: 0xD3D3D3,
  1886. specular: 0x050505,
  1887. shininess: 100
  1888. })
  1889. );
  1890. //pv011a.position.set(3.5, 0.5, -0.5);
  1891. pv011a.position.set(3.158, 0.6, -0.841);
  1892. pv011a.rotateY( Math.PI / 4 );
  1893. pv011a.rotateX( Math.PI / 12);
  1894. pv011a.name = "4A_15_45e_011_01";
  1895. scene.add(pv011a);
  1896. pv012a = new THREE.Mesh(
  1897. new THREE.CubeGeometry( 4, 0.1,0.5),
  1898. new THREE.MeshPhongMaterial( {
  1899. color: 0xD3D3D3,
  1900. specular: 0x050505,
  1901. shininess: 100
  1902. })
  1903. );
  1904. //pv012a.position.set(17, 0.5, -1);
  1905. pv012a.position.set(16.693, 0.7, -1.306);
  1906. pv012a.rotateY( Math.PI / 4 );
  1907. pv012a.rotateX( Math.PI / 6);
  1908. pv012a.name = "6A_30_45e_012_01";
  1909. scene.add(pv012a);
  1910. pv013a = new THREE.Mesh(
  1911. new THREE.CubeGeometry( 4, 0.1,0.5),
  1912. new THREE.MeshPhongMaterial( {
  1913. color: 0xD3D3D3,
  1914. specular: 0x050505,
  1915. shininess: 100
  1916. })
  1917. );
  1918. //pv013a.position.set(-2, 0.5, -1);
  1919. pv013a.position.set(-2.306, 0.7, -1.306);
  1920. pv013a.rotateY( Math.PI / 4 );
  1921. pv013a.rotateX( Math.PI / 6);
  1922. pv013a.name = "2A_30_45e_013_01";
  1923. scene.add(pv013a);
  1924. pv014a = new THREE.Mesh(
  1925. new THREE.CubeGeometry( 4, 0.1,0.5),
  1926. new THREE.MeshPhongMaterial( {
  1927. color: 0xD3D3D3,
  1928. specular: 0x050505,
  1929. shininess: 100
  1930. })
  1931. );
  1932. //pv014a.position.set(9, 0.5, -3);
  1933. pv014a.position.set(8.75, 0.8, -3.25);
  1934. pv014a.rotateY( Math.PI / 4 );
  1935. pv014a.rotateX( Math.PI / 4);
  1936. pv014a.name = "2A_45_45e_014_01";
  1937. scene.add(pv014a);
  1938. pv015a = new THREE.Mesh(
  1939. new THREE.CubeGeometry(4, 0.1,0.5),
  1940. new THREE.MeshPhongMaterial({
  1941. color: 0xD3D3D3,
  1942. specular: 0x050505,
  1943. shininess: 100
  1944. })
  1945. );
  1946. //pv015a.position.set(12.5, 0.5, -2);
  1947. pv015a.position.set(12.25, 0.8, -2.25);
  1948. pv015a.rotateY( Math.PI / 4 );
  1949. pv015a.rotateX( Math.PI / 4);
  1950. pv015a.name = "4A_45_45e_015_01";
  1951. scene.add(pv015a);
  1952. pv016a = new THREE.Mesh(
  1953. new THREE.CubeGeometry( 4, 0.1,0.5),
  1954. new THREE.MeshPhongMaterial( {
  1955. color: 0xD3D3D3,
  1956. specular: 0x050505,
  1957. shininess: 100
  1958. })
  1959. );
  1960. //pv016a.position.set(-1, 0.5, -22);
  1961. pv016a.position.set(-1.176, 0.9, -22.176);
  1962. pv016a.rotateY( Math.PI / 4 );
  1963. pv016a.rotateX( Math.PI / 3);
  1964. pv016a.name = "6A_60_45e_016_01";
  1965. scene.add(pv016a);
  1966. pv017a = new THREE.Mesh(
  1967. new THREE.CubeGeometry( 4, 0.1,0.5),
  1968. new THREE.MeshPhongMaterial( {
  1969. color: 0xD3D3D3,
  1970. specular: 0x050505,
  1971. shininess: 100
  1972. })
  1973. );
  1974. pv017a.position.set(-2.176, 0.9, -26.176);
  1975. pv017a.rotateY( Math.PI / 4 );
  1976. pv017a.rotateX( Math.PI / 3);
  1977. pv017a.name = "2A_60_45e_017_01";
  1978. scene.add(pv017a);
  1979. pv018a = new THREE.Mesh(
  1980. new THREE.CubeGeometry( 4, 0.1,0.5),
  1981. new THREE.MeshPhongMaterial( {
  1982. color: 0xD3D3D3,
  1983. specular: 0x050505,
  1984. shininess: 100
  1985. })
  1986. );
  1987. //pv018a.position.set(-8.5, 0.5, 23);
  1988. pv018a.position.set(-8.741, 0.6, 22.581);
  1989. pv018a.rotateY( Math.PI / 6 );
  1990. pv018a.rotateX( Math.PI / 12);
  1991. pv018a.name = "3A_15_30e_018_01";
  1992. scene.add(pv018a);
  1993. pv019a = new THREE.Mesh(
  1994. new THREE.CubeGeometry( 4, 0.1,0.5),
  1995. new THREE.MeshPhongMaterial( {
  1996. color: 0xD3D3D3,
  1997. specular: 0x050505,
  1998. shininess: 100
  1999. })
  2000. );
  2001. //pv019a.position.set(-10, 0.5, 26.5);
  2002. pv019a.position.set(-10.241, 0.6, 26.082);
  2003. pv019a.rotateY( Math.PI / 6 );
  2004. pv019a.rotateX( Math.PI / 12);
  2005. pv019a.name = "1A_15_30e_019_01";
  2006. scene.add(pv019a);
  2007. pv020a = new THREE.Mesh(
  2008. new THREE.CubeGeometry( 4, 0.1,0.5),
  2009. new THREE.MeshPhongMaterial( {
  2010. color: 0xD3D3D3,
  2011. specular: 0x050505,
  2012. shininess: 100
  2013. })
  2014. );
  2015. //pv020a.position.set(6, 0.5, 14);
  2016. pv020a.position.set(5.758, 0.6, 13.582);
  2017. pv020a.rotateY( Math.PI / 6 );
  2018. pv020a.rotateX( Math.PI / 12);
  2019. pv020a.name = "1B_15_30e_020_01";
  2020. scene.add(pv020a);
  2021. pv021a = new THREE.Mesh(
  2022. new THREE.CubeGeometry( 4, 0.1,0.5),
  2023. new THREE.MeshPhongMaterial( {
  2024. color: 0xD3D3D3,
  2025. specular: 0x050505,
  2026. shininess: 100
  2027. })
  2028. );
  2029. //pv021a.position.set(12, 0.5, 19);
  2030. pv021a.position.set(11.785, 0.6, 18.582);
  2031. pv021a.rotateY( Math.PI / 6 );
  2032. pv021a.rotateX( Math.PI / 12);
  2033. pv021a.name = "1D_15_30e_021_01";
  2034. scene.add(pv021a);
  2035. pv022a = new THREE.Mesh(
  2036. new THREE.CubeGeometry( 4, 0.1,0.5),
  2037. new THREE.MeshPhongMaterial( {
  2038. color: 0xD3D3D3,
  2039. specular: 0x050505,
  2040. shininess: 100
  2041. })
  2042. );
  2043. //pv022a.position.set(6, 0.5, 17);
  2044. pv022a.position.set(5.758, 0.6, 16.582);
  2045. pv022a.rotateY( Math.PI / 6 );
  2046. pv022a.rotateX( Math.PI / 12);
  2047. pv022a.name = "1C_15_30e_022_01";
  2048. scene.add(pv022a);
  2049. pv023a = new THREE.Mesh(
  2050. new THREE.CubeGeometry( 4, 0.1,0.5),
  2051. new THREE.MeshPhongMaterial( {
  2052. color: 0xD3D3D3,
  2053. specular: 0x050505,
  2054. shininess: 100
  2055. })
  2056. );
  2057. //pv023a.position.set(9, 0.5, 18);
  2058. pv023a.position.set(8.758, 0.6, 17.582);
  2059. pv023a.rotateY( Math.PI / 6 );
  2060. pv023a.rotateX( Math.PI / 12);
  2061. pv023a.name = "5A_15_30e_023_01";
  2062. scene.add(pv023a);
  2063. pv024a = new THREE.Mesh(
  2064. new THREE.CubeGeometry( 4, 0.1,0.5),
  2065. new THREE.MeshPhongMaterial( {
  2066. color: 0xD3D3D3,
  2067. specular: 0x050505,
  2068. shininess: 100
  2069. })
  2070. );
  2071. //pv024a.position.set(-16, 0.5, 24);
  2072. pv024a.position.set(-16.216, 0.7, 23.625);
  2073. pv024a.rotateY( Math.PI / 6 );
  2074. pv024a.rotateX( Math.PI / 6);
  2075. pv024a.name = "6D_30_30e_024_01";
  2076. scene.add(pv024a);
  2077. pv025a = new THREE.Mesh(
  2078. new THREE.CubeGeometry( 4, 0.1,0.5),
  2079. new THREE.MeshPhongMaterial( {
  2080. color: 0xD3D3D3,
  2081. specular: 0x050505,
  2082. shininess: 100
  2083. })
  2084. );
  2085. //pv025a.position.set(-15, 0.5, 26);
  2086. pv025a.position.set(-15.216, 0.7, 25.625);
  2087. pv025a.rotateY( Math.PI / 6 );
  2088. pv025a.rotateX( Math.PI / 6);
  2089. pv025a.name = "3D_30_30e_025_01";
  2090. scene.add(pv025a);
  2091. pv026a = new THREE.Mesh(
  2092. new THREE.CubeGeometry( 4, 0.1,0.5),
  2093. new THREE.MeshPhongMaterial( {
  2094. color: 0xD3D3D3,
  2095. specular: 0x050505,
  2096. shininess: 100
  2097. })
  2098. );
  2099. //pv026a.position.set(1.5, 0.5, -7.5);
  2100. pv026a.position.set(1.323, 0.8, -7.806);
  2101. pv026a.rotateY( Math.PI / 6 );
  2102. pv026a.rotateX( Math.PI / 4);
  2103. pv026a.name = "6A_45_30e_026_01";
  2104. scene.add(pv026a);
  2105. pv027a = new THREE.Mesh(
  2106. new THREE.CubeGeometry( 4, 0.1,0.5),
  2107. new THREE.MeshPhongMaterial( {
  2108. color: 0xD3D3D3,
  2109. specular: 0x050505,
  2110. shininess: 100
  2111. })
  2112. );
  2113. //pv027a.position.set(-3, 0.5, -8.5);
  2114. pv027a.position.set(-3.177, 0.8, -8.806);
  2115. pv027a.rotateY( Math.PI / 6 );
  2116. pv027a.rotateX( Math.PI / 4);
  2117. pv027a.name = "3A_45_30e_027_01";
  2118. scene.add(pv027a);
  2119. pv028a = new THREE.Mesh(
  2120. new THREE.CubeGeometry( 4, 0.1,0.5),
  2121. new THREE.MeshPhongMaterial( {
  2122. color: 0xD3D3D3,
  2123. specular: 0x050505,
  2124. shininess: 100
  2125. })
  2126. );
  2127. //pv028a.position.set(3, 0.5, -4.5);
  2128. pv028a.position.set(2.823, 0.8, -4.806);
  2129. pv028a.rotateY( Math.PI / 6 );
  2130. pv028a.rotateX( Math.PI / 4);
  2131. pv028a.name = "1A_45_30e_028_01";
  2132. scene.add(pv028a);
  2133. pv029a = new THREE.Mesh(
  2134. new THREE.CubeGeometry( 4, 0.1,0.5),
  2135. new THREE.MeshPhongMaterial( {
  2136. color: 0xD3D3D3,
  2137. specular: 0x050505,
  2138. shininess: 100
  2139. })
  2140. );
  2141. //pv029a.position.set(3, 0.5, -25);
  2142. pv029a.position.set(2.875, 0.9, -25.216);
  2143. pv029a.rotateY( Math.PI / 6 );
  2144. pv029a.rotateX( Math.PI / 3);
  2145. pv029a.name = "6A_60_30e_029_01";
  2146. scene.add(pv029a);
  2147. pv030a = new THREE.Mesh(
  2148. new THREE.CubeGeometry( 4, 0.1,0.5),
  2149. new THREE.MeshPhongMaterial( {
  2150. color: 0xD3D3D3,
  2151. specular: 0x050505,
  2152. shininess: 100
  2153. })
  2154. );
  2155. //pv030a.position.set(1, 0.5, -13);
  2156. pv030a.position.set(0.875, 0.9, -13.216);
  2157. pv030a.rotateY( Math.PI / 6 );
  2158. pv030a.rotateX( Math.PI / 3);
  2159. pv030a.name = "3A_60_30e_030_01";
  2160. scene.add(pv030a);
  2161. pv031a = new THREE.Mesh(
  2162. new THREE.CubeGeometry( 4, 0.1,0.5),
  2163. new THREE.MeshPhongMaterial( {
  2164. color: 0xD3D3D3,
  2165. specular: 0x050505,
  2166. shininess: 100
  2167. })
  2168. );
  2169. //pv031a.position.set(0, 0.5, -16);
  2170. pv031a.position.set(-0.125, 0.9, -16.216);
  2171. pv031a.rotateY( Math.PI / 6 );
  2172. pv031a.rotateX( Math.PI / 3);
  2173. pv031a.name = "1A_60_30e_031_01";
  2174. scene.add(pv031a);
  2175. pv032a = new THREE.Mesh(
  2176. new THREE.CubeGeometry( 4, 0.1,0.5),
  2177. new THREE.MeshPhongMaterial( {
  2178. color: 0xD3D3D3,
  2179. specular: 0x050505,
  2180. shininess: 100
  2181. })
  2182. );
  2183. //pv032a.position.set(7, 0.5, 10.5);
  2184. pv032a.position.set(6.875, 0.6, 10.033);
  2185. pv032a.rotateY( Math.PI / 12 );
  2186. pv032a.rotateX( Math.PI / 12);
  2187. pv032a.name = "3A_15_15e_032_01";
  2188. scene.add(pv032a);
  2189. pv033a = new THREE.Mesh(
  2190. new THREE.CubeGeometry( 4, 0.1,0.5),
  2191. new THREE.MeshPhongMaterial( {
  2192. color: 0xD3D3D3,
  2193. specular: 0x050505,
  2194. shininess: 100
  2195. })
  2196. );
  2197. //pv033a.position.set(-10, 0.5, 29.5);
  2198. pv033a.position.set(-10.125, 0.6, 29.033);
  2199. pv033a.rotateY( Math.PI / 12 );
  2200. pv033a.rotateX( Math.PI / 12);
  2201. pv033a.name = "1B_15_15e_033_01";
  2202. scene.add(pv033a);
  2203. pv034a = new THREE.Mesh(
  2204. new THREE.CubeGeometry( 4, 0.1,0.5),
  2205. new THREE.MeshPhongMaterial( {
  2206. color: 0xD3D3D3,
  2207. specular: 0x050505,
  2208. shininess: 100
  2209. })
  2210. );
  2211. //pv034a.position.set(-11, 0.5, 31.5);
  2212. pv034a.position.set(-11.125, 0.6, 31.033);
  2213. pv034a.rotateY( Math.PI / 12 );
  2214. pv034a.rotateX( Math.PI / 12);
  2215. pv034a.name = "4B_15_15e_034_01";
  2216. scene.add(pv034a);
  2217. pv035a = new THREE.Mesh(
  2218. new THREE.CubeGeometry( 4, 0.1,0.5),
  2219. new THREE.MeshPhongMaterial( {
  2220. color: 0xD3D3D3,
  2221. specular: 0x050505,
  2222. shininess: 100
  2223. })
  2224. );
  2225. //pv035a.position.set(-13, 0.5, 19);
  2226. pv035a.position.set(-13.112, 0.7, 18.582);
  2227. pv035a.rotateY( Math.PI / 12 );
  2228. pv035a.rotateX( Math.PI / 6);
  2229. pv035a.name = "3A_30_15e_035_01";
  2230. scene.add(pv035a);
  2231. pv036a = new THREE.Mesh(
  2232. new THREE.CubeGeometry( 4, 0.1,0.5),
  2233. new THREE.MeshPhongMaterial( {
  2234. color: 0xD3D3D3,
  2235. specular: 0x050505,
  2236. shininess: 100
  2237. })
  2238. );
  2239. pv036a.position.set(-13.112, 0.7, 20.582);
  2240. pv036a.rotateY( Math.PI / 12 );
  2241. pv036a.rotateX( Math.PI / 6);
  2242. pv036a.name = "1A_30_15e_036_01";
  2243. scene.add(pv036a);
  2244. pv037a = new THREE.Mesh(
  2245. new THREE.CubeGeometry( 4, 0.1,0.5),
  2246. new THREE.MeshPhongMaterial( {
  2247. color: 0xD3D3D3,
  2248. specular: 0x050505,
  2249. shininess: 100
  2250. })
  2251. );
  2252. pv037a.position.set(-7.112, 0.7, 19.582);
  2253. pv037a.rotateY( Math.PI / 12 );
  2254. pv037a.rotateX( Math.PI / 6);
  2255. pv037a.name = "5A_30_15e_037_01";
  2256. scene.add(pv037a);
  2257. pv038a = new THREE.Mesh(
  2258. new THREE.CubeGeometry( 4, 0.1,0.5),
  2259. new THREE.MeshPhongMaterial( {
  2260. color: 0xD3D3D3,
  2261. specular: 0x050505,
  2262. shininess: 100
  2263. })
  2264. );
  2265. pv038a.position.set(7.908, 0.8, -14.342);
  2266. pv038a.rotateY( Math.PI / 12 );
  2267. pv038a.rotateX( Math.PI / 4);
  2268. pv038a.name = "3A_45_15e_038_01";
  2269. scene.add(pv038a);
  2270. pv039a = new THREE.Mesh(
  2271. new THREE.CubeGeometry( 4, 0.1,0.5),
  2272. new THREE.MeshPhongMaterial( {
  2273. color: 0xD3D3D3,
  2274. specular: 0x050505,
  2275. shininess: 100
  2276. })
  2277. );
  2278. pv039a.position.set(7.908, 0.8, -10.342);
  2279. pv039a.rotateY( Math.PI / 12 );
  2280. pv039a.rotateX( Math.PI / 4);
  2281. pv039a.name = "1A_45_15e_039_01";
  2282. scene.add(pv039a);
  2283. pv040a = new THREE.Mesh(
  2284. new THREE.CubeGeometry( 4, 0.1,0.5),
  2285. new THREE.MeshPhongMaterial( {
  2286. color: 0xD3D3D3,
  2287. specular: 0x050505,
  2288. shininess: 100
  2289. })
  2290. );
  2291. pv040a.position.set(8.908, 0.8, -6.842);
  2292. pv040a.rotateY( Math.PI / 12 );
  2293. pv040a.rotateX( Math.PI / 4);
  2294. pv040a.name = "4A_45_15e_040_01";
  2295. scene.add(pv040a);
  2296. pv041a = new THREE.Mesh(
  2297. new THREE.CubeGeometry( 4, 0.1,0.5),
  2298. new THREE.MeshPhongMaterial( {
  2299. color: 0xD3D3D3,
  2300. specular: 0x050505,
  2301. shininess: 100
  2302. })
  2303. );
  2304. pv041a.position.set(3.935, 0.9, -20.741);
  2305. pv041a.rotateY( Math.PI / 12 );
  2306. pv041a.rotateX( Math.PI / 3);
  2307. pv041a.name = "6A_60_15e_041_01";
  2308. scene.add(pv041a);
  2309. pv042a = new THREE.Mesh(
  2310. new THREE.CubeGeometry( 4, 0.1,0.5),
  2311. new THREE.MeshPhongMaterial( {
  2312. color: 0xD3D3D3,
  2313. specular: 0x050505,
  2314. shininess: 100
  2315. })
  2316. );
  2317. pv042a.position.set(8.935, 0.9, -22.241);
  2318. pv042a.rotateY( Math.PI / 12 );
  2319. pv042a.rotateX( Math.PI / 3);
  2320. pv042a.name = "3A_60_15e_042_01";
  2321. scene.add(pv042a);
  2322. pv043a = new THREE.Mesh(
  2323. new THREE.CubeGeometry( 4, 0.1,0.5),
  2324. new THREE.MeshPhongMaterial( {
  2325. color: 0xD3D3D3,
  2326. specular: 0x050505,
  2327. shininess: 100
  2328. })
  2329. );
  2330. pv043a.position.set(7.935, 0.9, -17.741);
  2331. pv043a.rotateY( Math.PI / 12 );
  2332. pv043a.rotateX( Math.PI / 3);
  2333. pv043a.name = "1A_60_15e_043_01";
  2334. scene.add(pv043a);
  2335. pv044a = new THREE.Mesh(
  2336. new THREE.CubeGeometry( 4, 0.1,0.5),
  2337. new THREE.MeshPhongMaterial( {
  2338. color: 0xD3D3D3,
  2339. specular: 0x050505,
  2340. shininess: 100
  2341. })
  2342. );
  2343. pv044a.position.set(2.000, 0.6, 32.517);
  2344. pv044a.rotateY( Math.PI );
  2345. pv044a.rotateX( 11 * Math.PI / 12);
  2346. pv044a.name = "3B_15_00s_044_01";
  2347. scene.add(pv044a);
  2348. pv045a = new THREE.Mesh(
  2349. new THREE.CubeGeometry( 4, 0.1,0.5),
  2350. new THREE.MeshPhongMaterial( {
  2351. color: 0xD3D3D3,
  2352. specular: 0x050505,
  2353. shininess: 100
  2354. })
  2355. );
  2356. pv045a.position.set(5.000, 0.6, 34.017);
  2357. pv045a.rotateY( Math.PI );
  2358. pv045a.rotateX( 11 * Math.PI / 12);
  2359. pv045a.name = "4B_15_00s_045_01";
  2360. scene.add(pv045a);
  2361. pv046a = new THREE.Mesh(
  2362. new THREE.CubeGeometry( 4, 0.1,0.5),
  2363. new THREE.MeshPhongMaterial( {
  2364. color: 0xD3D3D3,
  2365. specular: 0x050505,
  2366. shininess: 100
  2367. })
  2368. );
  2369. pv046a.position.set(-1.000, 0.5, 34.500);
  2370. pv046a.rotateY( Math.PI );
  2371. pv046a.rotateX( 89 * Math.PI / 90);
  2372. pv046a.name = "6A_02_00s_046_01";
  2373. scene.add(pv046a);
  2374. pv047a = new THREE.Mesh(
  2375. new THREE.CubeGeometry( 4, 0.1,0.5),
  2376. new THREE.MeshPhongMaterial( {
  2377. color: 0xD3D3D3,
  2378. specular: 0x050505,
  2379. shininess: 100
  2380. })
  2381. );
  2382. pv047a.position.set(3.000, 0.5, 35.500);
  2383. pv047a.rotateY( Math.PI );
  2384. pv047a.rotateX( 89 * Math.PI / 90);
  2385. pv047a.name = "2A_02_00s_047_01";
  2386. scene.add(pv047a);
  2387. pv048a = new THREE.Mesh(
  2388. new THREE.CubeGeometry( 4, 0.1,0.5),
  2389. new THREE.MeshPhongMaterial( {
  2390. color: 0xD3D3D3,
  2391. specular: 0x050505,
  2392. shininess: 100
  2393. })
  2394. );
  2395. pv048a.position.set(6.000, 0.5, 36.500);
  2396. pv048a.rotateY( Math.PI );
  2397. pv048a.rotateX( 89 * Math.PI / 90);
  2398. pv048a.name = "1A_02_00s_048_01";
  2399. scene.add(pv048a);
  2400. pv049a = new THREE.Mesh(
  2401. new THREE.CubeGeometry( 4, 0.1,0.5),
  2402. new THREE.MeshPhongMaterial( {
  2403. color: 0xD3D3D3,
  2404. specular: 0x050505,
  2405. shininess: 100
  2406. })
  2407. );
  2408. pv049a.position.set(-11.000, 0.7, 13.567);
  2409. pv049a.rotateY( Math.PI );
  2410. pv049a.rotateX( 5 * Math.PI / 6);
  2411. pv049a.name = "3C_30_00s_049_01";
  2412. scene.add(pv049a);
  2413. pv050a = new THREE.Mesh(
  2414. new THREE.CubeGeometry( 4, 0.1,0.5),
  2415. new THREE.MeshPhongMaterial( {
  2416. color: 0xD3D3D3,
  2417. specular: 0x050505,
  2418. shininess: 100
  2419. })
  2420. );
  2421. pv050a.position.set(-10.500, 0.7, 10.567);
  2422. pv050a.rotateY( Math.PI );
  2423. pv050a.rotateX( 5 * Math.PI / 6);
  2424. pv050a.name = "1A_30_00s_050_01";
  2425. scene.add(pv050a);
  2426. pv051a = new THREE.Mesh(
  2427. new THREE.CubeGeometry( 4, 0.1,0.5),
  2428. new THREE.MeshPhongMaterial( {
  2429. color: 0xD3D3D3,
  2430. specular: 0x050505,
  2431. shininess: 100
  2432. })
  2433. );
  2434. pv051a.position.set(8.000, 0.7, 7.067);
  2435. pv051a.rotateY( Math.PI );
  2436. pv051a.rotateX( 5 * Math.PI / 6);
  2437. pv051a.name = "1B_30_00s_051_01";
  2438. scene.add(pv051a);
  2439. pv052a = new THREE.Mesh(
  2440. new THREE.CubeGeometry( 4, 0.1,0.5),
  2441. new THREE.MeshPhongMaterial( {
  2442. color: 0xD3D3D3,
  2443. specular: 0x050505,
  2444. shininess: 100
  2445. })
  2446. );
  2447. pv052a.position.set(-10.000, 0.7, 7.567);
  2448. pv052a.rotateY( Math.PI );
  2449. pv052a.rotateX( 5 * Math.PI / 6);
  2450. pv052a.name = "1D_30_00s_052_01";
  2451. scene.add(pv052a);
  2452. pv053a = new THREE.Mesh(
  2453. new THREE.CubeGeometry( 4, 0.1,0.5),
  2454. new THREE.MeshPhongMaterial( {
  2455. color: 0xD3D3D3,
  2456. specular: 0x050505,
  2457. shininess: 100
  2458. })
  2459. );
  2460. pv053a.position.set(3.000, 0.7, 24.567);
  2461. pv053a.rotateY( Math.PI );
  2462. pv053a.rotateX( 5 * Math.PI / 6);
  2463. pv053a.name = "1C_30_00s_053_01";
  2464. scene.add(pv053a);
  2465. pv054a = new THREE.Mesh(
  2466. new THREE.CubeGeometry( 4, 0.1,0.5),
  2467. new THREE.MeshPhongMaterial( {
  2468. color: 0xD3D3D3,
  2469. specular: 0x050505,
  2470. shininess: 100
  2471. })
  2472. );
  2473. pv054a.position.set(2.500, 0.7, 27.567);
  2474. pv054a.rotateY( Math.PI );
  2475. pv054a.rotateX( 5 * Math.PI / 6);
  2476. pv054a.name = "4D_30_00s_054_01";
  2477. scene.add(pv054a);
  2478. pv055a = new THREE.Mesh(
  2479. new THREE.CubeGeometry( 4, 0.1,0.5),
  2480. new THREE.MeshPhongMaterial( {
  2481. color: 0xD3D3D3,
  2482. specular: 0x050505,
  2483. shininess: 100
  2484. })
  2485. );
  2486. pv055a.position.set(15.000, 0.8, -7.354);
  2487. pv055a.rotateY( Math.PI );
  2488. pv055a.rotateX( 3 * Math.PI / 4);
  2489. pv055a.name = "3A_45_00s_055_01";
  2490. scene.add(pv055a);
  2491. pv056a = new THREE.Mesh(
  2492. new THREE.CubeGeometry( 4, 0.1,0.5),
  2493. new THREE.MeshPhongMaterial( {
  2494. color: 0xD3D3D3,
  2495. specular: 0x050505,
  2496. shininess: 100
  2497. })
  2498. );
  2499. pv056a.position.set(15.000, 0.8, -11.354);
  2500. pv056a.rotateY( Math.PI );
  2501. pv056a.rotateX( 3 * Math.PI / 4);
  2502. pv056a.name = "4A_45_00s_056_01";
  2503. scene.add(pv056a);
  2504. pv057a = new THREE.Mesh(
  2505. new THREE.CubeGeometry( 4, 0.1,0.5),
  2506. new THREE.MeshPhongMaterial( {
  2507. color: 0xD3D3D3,
  2508. specular: 0x050505,
  2509. shininess: 100
  2510. })
  2511. );
  2512. pv057a.position.set(9.000, 0.9, -27.750);
  2513. pv057a.rotateY( Math.PI );
  2514. pv057a.rotateX( 2 * Math.PI / 3);
  2515. pv057a.name = "6A_60_00s_057_01";
  2516. scene.add(pv057a);
  2517. pv058a = new THREE.Mesh(
  2518. new THREE.CubeGeometry( 4, 0.1,0.5),
  2519. new THREE.MeshPhongMaterial( {
  2520. color: 0xD3D3D3,
  2521. specular: 0x050505,
  2522. shininess: 100
  2523. })
  2524. );
  2525. pv058a.position.set(0.000, 0.9, -30.250);
  2526. pv058a.rotateY( Math.PI );
  2527. pv058a.rotateX( 2 * Math.PI / 3);
  2528. pv058a.name = "3A_60_00s_058_01";
  2529. scene.add(pv058a);
  2530. pv059a = new THREE.Mesh(
  2531. new THREE.CubeGeometry( 4, 0.1,0.5),
  2532. new THREE.MeshPhongMaterial( {
  2533. color: 0xD3D3D3,
  2534. specular: 0x050505,
  2535. shininess: 100
  2536. })
  2537. );
  2538. pv059a.position.set(8.125, 0.6, 25.033);
  2539. pv059a.rotateY( 11 * Math.PI / 12 );
  2540. pv059a.rotateX( 11 * Math.PI / 12);
  2541. pv059a.name = "3B_15_15w_059_01";
  2542. scene.add(pv059a);
  2543. pv060a = new THREE.Mesh(
  2544. new THREE.CubeGeometry( 4, 0.1,0.5),
  2545. new THREE.MeshPhongMaterial( {
  2546. color: 0xD3D3D3,
  2547. specular: 0x050505,
  2548. shininess: 100
  2549. })
  2550. );
  2551. pv060a.position.set(2.625, 0.6, 30.533);
  2552. pv060a.rotateY( 11 * Math.PI / 12 );
  2553. pv060a.rotateX( 11 * Math.PI / 12);
  2554. pv060a.name = "1B_15_15w_060_01";
  2555. scene.add(pv060a);
  2556. pv061a = new THREE.Mesh(
  2557. new THREE.CubeGeometry( 4, 0.1,0.5),
  2558. new THREE.MeshPhongMaterial( {
  2559. color: 0xD3D3D3,
  2560. specular: 0x050505,
  2561. shininess: 100
  2562. })
  2563. );
  2564. pv061a.position.set(9.625, 0.6, 35.033);
  2565. pv061a.rotateY( 11 * Math.PI / 12 );
  2566. pv061a.rotateX( 11 * Math.PI / 12);
  2567. pv061a.name = "4B_15_15w_061_01";
  2568. scene.add(pv061a);
  2569. pv062a = new THREE.Mesh(
  2570. new THREE.CubeGeometry( 4, 0.1,0.5),
  2571. new THREE.MeshPhongMaterial( {
  2572. color: 0xD3D3D3,
  2573. specular: 0x050505,
  2574. shininess: 100
  2575. })
  2576. );
  2577. pv062a.position.set(8.112, 0.7, 21.732);
  2578. pv062a.rotateY( 11 * Math.PI / 12 );
  2579. pv062a.rotateX( 5 * Math.PI / 6);
  2580. pv062a.name = "3A_30_15w_062_01";
  2581. scene.add(pv062a);
  2582. pv063a = new THREE.Mesh(
  2583. new THREE.CubeGeometry( 4, 0.1,0.5),
  2584. new THREE.MeshPhongMaterial( {
  2585. color: 0xD3D3D3,
  2586. specular: 0x050505,
  2587. shininess: 100
  2588. })
  2589. );
  2590. pv063a.position.set(12.612, 0.7, 22.832);
  2591. pv063a.rotateY( 11 * Math.PI / 12 );
  2592. pv063a.rotateX( 5 * Math.PI / 6);
  2593. pv063a.name = "1A_30_15w_063_01";
  2594. scene.add(pv063a);
  2595. pv064a = new THREE.Mesh(
  2596. new THREE.CubeGeometry( 4, 0.1,0.5),
  2597. new THREE.MeshPhongMaterial( {
  2598. color: 0xD3D3D3,
  2599. specular: 0x050505,
  2600. shininess: 100
  2601. })
  2602. );
  2603. pv064a.position.set(3.612, 0.7, 20.582);
  2604. pv064a.rotateY( 11 * Math.PI / 12 );
  2605. pv064a.rotateX( 5 * Math.PI / 6);
  2606. pv064a.name = "5A_30_15w_064_01";
  2607. scene.add(pv064a);
  2608. pv065a = new THREE.Mesh(
  2609. new THREE.CubeGeometry( 4, 0.1,0.5),
  2610. new THREE.MeshPhongMaterial( {
  2611. color: 0xD3D3D3,
  2612. specular: 0x050505,
  2613. shininess: 100
  2614. })
  2615. );
  2616. pv065a.position.set(16.092, 0.8, -19.342);
  2617. pv065a.rotateY( 11 * Math.PI / 12 );
  2618. pv065a.rotateX( 3 * Math.PI / 4);
  2619. pv065a.name = "3A_45_15w_065_01";
  2620. scene.add(pv065a);
  2621. pv066a = new THREE.Mesh(
  2622. new THREE.CubeGeometry( 4, 0.1,0.5),
  2623. new THREE.MeshPhongMaterial( {
  2624. color: 0xD3D3D3,
  2625. specular: 0x050505,
  2626. shininess: 100
  2627. })
  2628. );
  2629. pv066a.position.set(17.092, 0.8, -22.342);
  2630. pv066a.rotateY( 11 * Math.PI / 12 );
  2631. pv066a.rotateX( 3 * Math.PI / 4);
  2632. pv066a.name = "1A_45_15w_066_01";
  2633. scene.add(pv066a);
  2634. pv067a = new THREE.Mesh(
  2635. new THREE.CubeGeometry( 4, 0.1,0.5),
  2636. new THREE.MeshPhongMaterial( {
  2637. color: 0xD3D3D3,
  2638. specular: 0x050505,
  2639. shininess: 100
  2640. })
  2641. );
  2642. pv067a.position.set(15.092, 0.8, -15.342);
  2643. pv067a.rotateY( 11 * Math.PI / 12 );
  2644. pv067a.rotateX( 3 * Math.PI / 4);
  2645. pv067a.name = "4A_45_15w_067_01";
  2646. scene.add(pv067a);
  2647. pv068a = new THREE.Mesh(
  2648. new THREE.CubeGeometry( 4, 0.1,0.5),
  2649. new THREE.MeshPhongMaterial( {
  2650. color: 0xD3D3D3,
  2651. specular: 0x050505,
  2652. shininess: 100
  2653. })
  2654. );
  2655. pv068a.position.set(15.065, 0.9, -27.241);
  2656. pv068a.rotateY( 11 * Math.PI / 12 );
  2657. pv068a.rotateX( 2 * Math.PI / 3);
  2658. pv068a.name = "6A_60_15w_068_01";
  2659. scene.add(pv068a);
  2660. pv069a = new THREE.Mesh(
  2661. new THREE.CubeGeometry( 4, 0.1,0.5),
  2662. new THREE.MeshPhongMaterial( {
  2663. color: 0xD3D3D3,
  2664. specular: 0x050505,
  2665. shininess: 100
  2666. })
  2667. );
  2668. pv069a.position.set(20.065, 0.9, -25.991);
  2669. pv069a.rotateY( 11 * Math.PI / 12 );
  2670. pv069a.rotateX( 2 * Math.PI / 3);
  2671. pv069a.name = "3A_60_15w_069_01";
  2672. scene.add(pv069a);
  2673. pv070a = new THREE.Mesh(
  2674. new THREE.CubeGeometry( 4, 0.1,0.5),
  2675. new THREE.MeshPhongMaterial( {
  2676. color: 0xD3D3D3,
  2677. specular: 0x050505,
  2678. shininess: 100
  2679. })
  2680. );
  2681. pv070a.position.set(25.065, 0.9, -24.741);
  2682. pv070a.rotateY( 11 * Math.PI / 12 );
  2683. pv070a.rotateX( 2 * Math.PI / 3);
  2684. pv070a.name = "1A_60_15w_070_01";
  2685. scene.add(pv070a);
  2686. pv071a = new THREE.Mesh(
  2687. new THREE.CubeGeometry( 4, 0.1,0.5),
  2688. new THREE.MeshPhongMaterial( {
  2689. color: 0xD3D3D3,
  2690. specular: 0x050505,
  2691. shininess: 100
  2692. })
  2693. );
  2694. pv071a.position.set(17.241, 0.6, 24.582);
  2695. pv071a.rotateY( 11 * Math.PI / 6 );
  2696. pv071a.rotateX( Math.PI / 12);
  2697. pv071a.name = "3A_15_30w_071_01";
  2698. scene.add(pv071a);
  2699. pv072a = new THREE.Mesh(
  2700. new THREE.CubeGeometry( 4, 0.1,0.5),
  2701. new THREE.MeshPhongMaterial( {
  2702. color: 0xD3D3D3,
  2703. specular: 0x050505,
  2704. shininess: 100
  2705. })
  2706. );
  2707. pv072a.position.set(6.991, 0.6, 32.082);
  2708. pv072a.rotateY( 11 * Math.PI / 6 );
  2709. pv072a.rotateX( Math.PI / 12);
  2710. pv072a.name = "1A_15_30w_072_01";
  2711. scene.add(pv072a);
  2712. pv073a = new THREE.Mesh(
  2713. new THREE.CubeGeometry( 4, 0.1,0.5),
  2714. new THREE.MeshPhongMaterial( {
  2715. color: 0xD3D3D3,
  2716. specular: 0x050505,
  2717. shininess: 100
  2718. })
  2719. );
  2720. pv073a.position.set(10.741, 0.6, 37.832);
  2721. pv073a.rotateY( 11 * Math.PI / 6 );
  2722. pv073a.rotateX( Math.PI / 12);
  2723. pv073a.name = "1B_15_30w_073_01";
  2724. scene.add(pv073a);
  2725. pv074a = new THREE.Mesh(
  2726. new THREE.CubeGeometry( 4, 0.1,0.5),
  2727. new THREE.MeshPhongMaterial( {
  2728. color: 0xD3D3D3,
  2729. specular: 0x050505,
  2730. shininess: 100
  2731. })
  2732. );
  2733. pv074a.position.set(12.741, 0.6, 27.082);
  2734. pv074a.rotateY( 11 * Math.PI / 6 );
  2735. pv074a.rotateX( Math.PI / 12);
  2736. pv074a.name = "1D_15_30w_074_01";
  2737. scene.add(pv074a);
  2738. pv075a = new THREE.Mesh(
  2739. new THREE.CubeGeometry( 4, 0.1,0.5),
  2740. new THREE.MeshPhongMaterial( {
  2741. color: 0xD3D3D3,
  2742. specular: 0x050505,
  2743. shininess: 100
  2744. })
  2745. );
  2746. pv075a.position.set(7.741, 0.6, 29.082);
  2747. pv075a.rotateY( 11 * Math.PI / 6 );
  2748. pv075a.rotateX( Math.PI / 12);
  2749. pv075a.name = "1C_15_30w_075_01";
  2750. pv076a = new THREE.Mesh(
  2751. new THREE.CubeGeometry( 4, 0.1,0.5),
  2752. new THREE.MeshPhongMaterial( {
  2753. color: 0xD3D3D3,
  2754. specular: 0x050505,
  2755. shininess: 100
  2756. })
  2757. );
  2758. pv076a.position.set(11.241, 0.6, 33.082);
  2759. pv076a.rotateY( 11 * Math.PI / 6 );
  2760. pv076a.rotateX( Math.PI / 12);
  2761. pv076a.name = "5D_15_30w_076_01";
  2762. scene.add(pv076a);
  2763. pv077a = new THREE.Mesh(
  2764. new THREE.CubeGeometry( 4, 0.1,0.5),
  2765. new THREE.MeshPhongMaterial( {
  2766. color: 0xD3D3D3,
  2767. specular: 0x050505,
  2768. shininess: 100
  2769. })
  2770. );
  2771. pv077a.position.set(13.217, 0.7, 11.625);
  2772. pv077a.rotateY( 11 * Math.PI / 6 );
  2773. pv077a.rotateX( Math.PI / 6);
  2774. pv077a.name = "6D_30_30w_077_01";
  2775. scene.add(pv077a);
  2776. pv078a = new THREE.Mesh(
  2777. new THREE.CubeGeometry( 4, 0.1,0.5),
  2778. new THREE.MeshPhongMaterial( {
  2779. color: 0xD3D3D3,
  2780. specular: 0x050505,
  2781. shininess: 100
  2782. })
  2783. );
  2784. pv078a.position.set(12.217, 0.7, 14.625);
  2785. pv078a.rotateY( 11 * Math.PI / 6 );
  2786. pv078a.rotateX( Math.PI / 6);
  2787. pv078a.name = "3D_30_30w_078_01";
  2788. scene.add(pv078a);
  2789. pv079a = new THREE.Mesh(
  2790. new THREE.CubeGeometry( 4, 0.1,0.5),
  2791. new THREE.MeshPhongMaterial( {
  2792. color: 0xD3D3D3,
  2793. specular: 0x050505,
  2794. shininess: 100
  2795. })
  2796. );
  2797. pv079a.position.set(14.217, 0.7, 8.625);
  2798. pv079a.rotateY( 11 * Math.PI / 6 );
  2799. pv079a.rotateX( Math.PI / 6);
  2800. pv079a.name = "1D_30_30w_079_01";
  2801. scene.add(pv079a);
  2802. pv080a = new THREE.Mesh(
  2803. new THREE.CubeGeometry( 4, 0.1,0.5),
  2804. new THREE.MeshPhongMaterial( {
  2805. color: 0xD3D3D3,
  2806. specular: 0x050505,
  2807. shininess: 100
  2808. })
  2809. );
  2810. pv080a.position.set(20.177, 0.8, -4.306);
  2811. pv080a.rotateY( 11 * Math.PI / 6 );
  2812. pv080a.rotateX( Math.PI / 4);
  2813. pv080a.name = "3A_45_30w_080_01";
  2814. scene.add(pv080a);
  2815. pv081a = new THREE.Mesh(
  2816. new THREE.CubeGeometry( 4, 0.1,0.5),
  2817. new THREE.MeshPhongMaterial( {
  2818. color: 0xD3D3D3,
  2819. specular: 0x050505,
  2820. shininess: 100
  2821. })
  2822. );
  2823. pv081a.position.set(21.177, 0.8, -7.306);
  2824. pv081a.rotateY( 11 * Math.PI / 6 );
  2825. pv081a.rotateX( Math.PI / 4);
  2826. pv081a.name = "1A_45_30w_081_01";
  2827. scene.add(pv081a);
  2828. pv082a = new THREE.Mesh(
  2829. new THREE.CubeGeometry( 4, 0.1,0.5),
  2830. new THREE.MeshPhongMaterial( {
  2831. color: 0xD3D3D3,
  2832. specular: 0x050505,
  2833. shininess: 100
  2834. })
  2835. );
  2836. pv082a.position.set(21.677, 0.8, -11.306);
  2837. pv082a.rotateY( 11 * Math.PI / 6 );
  2838. pv082a.rotateX( Math.PI / 4);
  2839. pv082a.name = "5A_45_30w_082_01";
  2840. scene.add(pv082a);
  2841. pv083a = new THREE.Mesh(
  2842. new THREE.CubeGeometry( 4, 0.1,0.5),
  2843. new THREE.MeshPhongMaterial( {
  2844. color: 0xD3D3D3,
  2845. specular: 0x050505,
  2846. shininess: 100
  2847. })
  2848. );
  2849. pv083a.position.set(24.125, 0.9, -21.217);
  2850. pv083a.rotateY( 11 * Math.PI / 6 );
  2851. pv083a.rotateX( Math.PI / 3);
  2852. pv083a.name = "6A_60_30w_083_01";
  2853. scene.add(pv083a);
  2854. pv084a = new THREE.Mesh(
  2855. new THREE.CubeGeometry( 4, 0.1,0.5),
  2856. new THREE.MeshPhongMaterial( {
  2857. color: 0xD3D3D3,
  2858. specular: 0x050505,
  2859. shininess: 100
  2860. })
  2861. );
  2862. pv084a.position.set(23.125, 0.9, -18.217);
  2863. pv084a.rotateY( 11 * Math.PI / 6 );
  2864. pv084a.rotateX( Math.PI / 3);
  2865. pv084a.name = "3A_60_30w_084_01";
  2866. scene.add(pv084a);
  2867. pv085a = new THREE.Mesh(
  2868. new THREE.CubeGeometry( 4, 0.1,0.5),
  2869. new THREE.MeshPhongMaterial( {
  2870. color: 0xD3D3D3,
  2871. specular: 0x050505,
  2872. shininess: 100
  2873. })
  2874. );
  2875. pv085a.position.set(23.125, 0.9, -14.217);
  2876. pv085a.rotateY( 11 * Math.PI / 6 );
  2877. pv085a.rotateX( Math.PI / 3);
  2878. pv085a.name = "1A_60_30w_085_01";
  2879. scene.add(pv085a);
  2880. pv086a = new THREE.Mesh(
  2881. new THREE.CubeGeometry( 4, 0.1,0.5),
  2882. new THREE.MeshPhongMaterial( {
  2883. color: 0xD3D3D3,
  2884. specular: 0x050505,
  2885. shininess: 100
  2886. })
  2887. );
  2888. pv086a.position.set(12.342, 0.6, 30.158);
  2889. pv086a.rotateY( 7 * Math.PI / 4 );
  2890. pv086a.rotateX( Math.PI / 12);
  2891. pv086a.name = "2A_15_45w_086_01";
  2892. scene.add(pv086a);
  2893. pv087a = new THREE.Mesh(
  2894. new THREE.CubeGeometry( 4, 0.1,0.5),
  2895. new THREE.MeshPhongMaterial( {
  2896. color: 0xD3D3D3,
  2897. specular: 0x050505,
  2898. shininess: 100
  2899. })
  2900. );
  2901. pv087a.position.set(16.342, 0.6, 30.158);
  2902. pv087a.rotateY( 7 * Math.PI / 4 );
  2903. pv087a.rotateX( Math.PI / 12);
  2904. pv087a.name = "1A_15_45w_087_01";
  2905. scene.add(pv087a);
  2906. pv088a = new THREE.Mesh(
  2907. new THREE.CubeGeometry( 4, 0.1,0.5),
  2908. new THREE.MeshPhongMaterial( {
  2909. color: 0xD3D3D3,
  2910. specular: 0x050505,
  2911. shininess: 100
  2912. })
  2913. );
  2914. pv088a.position.set(17.342, 0.6, 27.158);
  2915. pv088a.rotateY( 7 * Math.PI / 4 );
  2916. pv088a.rotateX( Math.PI / 12);
  2917. pv088a.name = "4A_15_45w_088_01";
  2918. scene.add(pv088a);
  2919. pv089a = new THREE.Mesh(
  2920. new THREE.CubeGeometry( 4, 0.1,0.5),
  2921. new THREE.MeshPhongMaterial( {
  2922. color: 0xD3D3D3,
  2923. specular: 0x050505,
  2924. shininess: 100
  2925. })
  2926. );
  2927. pv089a.position.set(20.306, 0.7, 10.694);
  2928. pv089a.rotateY( 7 * Math.PI / 4 );
  2929. pv089a.rotateX( Math.PI / 6);
  2930. pv089a.name = "6A_30_45w_089_01";
  2931. scene.add(pv089a);
  2932. pv090a = new THREE.Mesh(
  2933. new THREE.CubeGeometry( 4, 0.1,0.5),
  2934. new THREE.MeshPhongMaterial( {
  2935. color: 0xD3D3D3,
  2936. specular: 0x050505,
  2937. shininess: 100
  2938. })
  2939. );
  2940. pv090a.position.set(19.306, 0.7, 13.694);
  2941. pv090a.rotateY( 7 * Math.PI / 4 );
  2942. pv090a.rotateX( Math.PI / 6);
  2943. pv090a.name = "2A_30_45w_090_01";
  2944. scene.add(pv090a);
  2945. pv091a = new THREE.Mesh(
  2946. new THREE.CubeGeometry( 4, 0.1,0.5),
  2947. new THREE.MeshPhongMaterial( {
  2948. color: 0xD3D3D3,
  2949. specular: 0x050505,
  2950. shininess: 100
  2951. })
  2952. );
  2953. pv091a.position.set(29.250, 0.8, -14.250);
  2954. pv091a.rotateY( 7 * Math.PI / 4 );
  2955. pv091a.rotateX( Math.PI / 4);
  2956. pv091a.name = "2C_45_45w_091_01";
  2957. scene.add(pv091a);
  2958. pv092a = new THREE.Mesh(
  2959. new THREE.CubeGeometry( 4, 0.1,0.5),
  2960. new THREE.MeshPhongMaterial( {
  2961. color: 0xD3D3D3,
  2962. specular: 0x050505,
  2963. shininess: 100
  2964. })
  2965. );
  2966. pv092a.position.set(23.250, 0.8, 6.750);
  2967. pv092a.rotateY( 7 * Math.PI / 4 );
  2968. pv092a.rotateX( Math.PI / 4);
  2969. pv092a.name = "4C_45_45w_092_01";
  2970. scene.add(pv092a);
  2971. pv093a = new THREE.Mesh(
  2972. new THREE.CubeGeometry( 4, 0.1,0.5),
  2973. new THREE.MeshPhongMaterial( {
  2974. color: 0xD3D3D3,
  2975. specular: 0x050505,
  2976. shininess: 100
  2977. })
  2978. );
  2979. pv093a.position.set(30.177, 0.9, -18.177);
  2980. pv093a.rotateY( 7 * Math.PI / 4 );
  2981. pv093a.rotateX( Math.PI / 3);
  2982. pv093a.name = "6A_60_45w_093_01";
  2983. scene.add(pv093a);
  2984. pv094a = new THREE.Mesh(
  2985. new THREE.CubeGeometry( 4, 0.1,0.5),
  2986. new THREE.MeshPhongMaterial( {
  2987. color: 0xD3D3D3,
  2988. specular: 0x050505,
  2989. shininess: 100
  2990. })
  2991. );
  2992. pv094a.position.set(30.177, 0.9, -22.177);
  2993. pv094a.rotateY( 7 * Math.PI / 4 );
  2994. pv094a.rotateX( Math.PI / 3);
  2995. pv094a.name = "2A_60_45w_094_01";
  2996. scene.add(pv094a);
  2997. pv095a = new THREE.Mesh(
  2998. new THREE.CubeGeometry( 4, 0.1,0.5),
  2999. new THREE.MeshPhongMaterial( {
  3000. color: 0xD3D3D3,
  3001. specular: 0x050505,
  3002. shininess: 100
  3003. })
  3004. );
  3005. pv095a.position.set(15.418, 0.6, 33.759);
  3006. pv095a.rotateY( 5 * Math.PI / 3);
  3007. pv095a.rotateX( Math.PI / 12);
  3008. pv095a.name = "6A_15_60w_095_01";
  3009. scene.add(pv095a);
  3010. pv096a = new THREE.Mesh(
  3011. new THREE.CubeGeometry( 4, 0.1,0.5),
  3012. new THREE.MeshPhongMaterial( {
  3013. color: 0xD3D3D3,
  3014. specular: 0x050505,
  3015. shininess: 100
  3016. })
  3017. );
  3018. pv096a.position.set(14.418, 0.6, 36.759);
  3019. pv096a.rotateY( 5 * Math.PI / 3);
  3020. pv096a.rotateX( Math.PI / 12);
  3021. pv096a.name = "2A_15_60w_096_01";
  3022. scene.add(pv096a);
  3023. pv097a = new THREE.Mesh(
  3024. new THREE.CubeGeometry( 4, 0.1,0.5),
  3025. new THREE.MeshPhongMaterial( {
  3026. color: 0xD3D3D3,
  3027. specular: 0x050505,
  3028. shininess: 100
  3029. })
  3030. );
  3031. pv097a.position.set(16.375, 0.7, 19.783);
  3032. pv097a.rotateY( 5 * Math.PI / 3);
  3033. pv097a.rotateX( Math.PI / 6);
  3034. pv097a.name = "6A_30_60w_097_01";
  3035. scene.add(pv097a);
  3036. pv098a = new THREE.Mesh(
  3037. new THREE.CubeGeometry( 4, 0.1,0.5),
  3038. new THREE.MeshPhongMaterial( {
  3039. color: 0xD3D3D3,
  3040. specular: 0x050505,
  3041. shininess: 100
  3042. })
  3043. );
  3044. pv098a.position.set(17.375, 0.7, 16.783);
  3045. pv098a.rotateY( 5 * Math.PI / 3);
  3046. pv098a.rotateX( Math.PI / 6);
  3047. pv098a.name = "1A_30_60w_098_01";
  3048. scene.add(pv098a);
  3049. pv099a = new THREE.Mesh(
  3050. new THREE.CubeGeometry( 4, 0.1,0.5),
  3051. new THREE.MeshPhongMaterial( {
  3052. color: 0xD3D3D3,
  3053. specular: 0x050505,
  3054. shininess: 100
  3055. })
  3056. );
  3057. pv099a.position.set(25.306, 0.8, -1.177);
  3058. pv099a.rotateY( 5 * Math.PI / 3);
  3059. pv099a.rotateX( Math.PI / 4);
  3060. pv099a.name = "6A_45_60w_099_01";
  3061. scene.add(pv099a);
  3062. pv100a = new THREE.Mesh(
  3063. new THREE.CubeGeometry( 4, 0.1,0.5),
  3064. new THREE.MeshPhongMaterial( {
  3065. color: 0xD3D3D3,
  3066. specular: 0x050505,
  3067. shininess: 100
  3068. })
  3069. );
  3070. pv100a.position.set(22.306, 0.8, 1.823);
  3071. pv100a.rotateY( 5 * Math.PI / 3);
  3072. pv100a.rotateX( Math.PI / 4);
  3073. pv100a.name = "1A_45_60w_100_01";
  3074. scene.add(pv100a);
  3075. pv101a = new THREE.Mesh(
  3076. new THREE.CubeGeometry( 4, 0.1,0.5),
  3077. new THREE.MeshPhongMaterial( {
  3078. color: 0xD3D3D3,
  3079. specular: 0x050505,
  3080. shininess: 100
  3081. })
  3082. );
  3083. pv101a.position.set(28.217, 0.9, -10.125);
  3084. pv101a.rotateY( 5 * Math.PI / 3);
  3085. pv101a.rotateX( Math.PI / 3);
  3086. pv101a.name = "2C_60_60w_101_01";
  3087. scene.add(pv101a);
  3088. pv102a = new THREE.Mesh(
  3089. new THREE.CubeGeometry( 4, 0.1,0.5),
  3090. new THREE.MeshPhongMaterial( {
  3091. color: 0xD3D3D3,
  3092. specular: 0x050505,
  3093. shininess: 100
  3094. })
  3095. );
  3096. pv102a.position.set(26.216, 0.9, -6.125);
  3097. pv102a.rotateY( 5 * Math.PI / 3);
  3098. pv102a.rotateX( Math.PI / 3);
  3099. pv102a.name = "1C_60_60w_102_01";
  3100. scene.add(pv102a);
  3101. //scene.fog = new THREE.FogExp2( 0x000000, 0.0128 );
  3102. //renderer.setClearColor( scene.fog.color, 1 );
  3103. render();
  3104. }
  3105. function animate() {
  3106. requestAnimationFrame(animate);
  3107. if (enableControls){
  3108. mycontrol.enabled = true;
  3109. } else {
  3110. mycontrol.enabled = false;
  3111. }
  3112. if (enableRotate) {
  3113. mycontrol.rotate = true;
  3114. } else {
  3115. mycontrol.rotate = false;
  3116. }
  3117. mycontrol.update();
  3118. render();
  3119. }
  3120. var vector;
  3121. function render() {
  3122. //console.log(camera.position);
  3123. // if camera.position.y more than 90 then show module number
  3124. scene.traverse( function( node ) {
  3125. if (node.name != "") {
  3126. //console.log(node.name);
  3127. var _id = node.name;
  3128. _id = _id.split("_")[3];
  3129. //console.log(_id2[3]);
  3130. _id = "#text" + _id;
  3131. if (camera.position.y > 0 && labelFlag == true) {
  3132. //console.log(scene.children);
  3133. var obj1 = scene.getObjectByName( node.name );
  3134. var width = window.innerWidth, height = window.innerHeight;
  3135. var widthHalf = width / 2, heightHalf = height / 2;
  3136. var pos = obj1.position.clone();
  3137. pos.project(camera);
  3138. pos.x = ( pos.x * widthHalf ) + widthHalf;
  3139. pos.y = - ( pos.y * heightHalf ) + heightHalf;
  3140. $(_id).show();
  3141. $(_id).css("top", pos.y + 'px');
  3142. $(_id).css("left", (pos.x-10) + 'px');
  3143. //console.log(pos);
  3144. } else {
  3145. $(_id).hide();
  3146. }
  3147. }
  3148. });
  3149. // update the picking ray with the camera and mouse position
  3150. raycaster.setFromCamera( mouse, camera );
  3151. // calculate objects intersecting the picking ray
  3152. var intersects = raycaster.intersectObjects( scene.children );
  3153. //console.log("Check intersection");
  3154. //console.log(intersects);
  3155. for ( var i = 0; i < intersects.length; i++ ) {
  3156. //intersects[ i ].object.material.color.set( 0xff0000 );
  3157. //$("#obj-tooltip").text(intersects[ i ].object.name);
  3158. if (intersects[ i ].object.name != "") {
  3159. $("#obj-tooltip").text("Module: " + intersects[ i ].object.name);
  3160. $("#val-tooltip").text("Value: " + data[ intersects[ i ].object.name ]);
  3161. }
  3162. }
  3163. renderer.render(scene, camera);
  3164. vector = camera.getWorldDirection();
  3165. theta = Math.atan2(vector.x,vector.z);
  3166. theta = theta + 3.142; // add/minux pi to inverse
  3167. var degree = theta * (180/3.142);
  3168. //console.log(degree);
  3169. draw(degree);
  3170. }
  3171. $("#message").mousedown(function() {
  3172. enableControls = false;
  3173. setMessage("GUI", "De-select main scene. Click on main scene to re-select.");
  3174. //render();
  3175. });
  3176. $("#orientation").mousedown(function() {
  3177. enableControls = false;
  3178. setMessage("GUI", "De-select main scene. Click on main scene to re-select.");
  3179. //render();
  3180. });
  3181. $("#settings").mousedown(function() {
  3182. enableControls = false;
  3183. setMessage("GUI", "De-select main scene. Click on main scene to re-select.");
  3184. //render();
  3185. });
  3186. $("#slider").mousedown(function() {
  3187. enableControls = false;
  3188. setMessage("GUI", "De-select main scene. Click on main scene to re-select.");
  3189. //render();
  3190. });
  3191. $("#container").mousedown(function() {
  3192. enableControls = true;
  3193. enableRotate = true;
  3194. animate();
  3195. setMessage("GUI", "Selected main scene.");
  3196. });
  3197. $("#container").mouseup(function() {
  3198. enableRotate = false;
  3199. //animate();
  3200. setMessage("GUI", "Selected main scene.");
  3201. });
  3202. </script>
  3203. <script>
  3204. jQuery(window).load(function () {
  3205. myTimer();
  3206. var myVar = setInterval(myTimer, 10000);
  3207. function myTimer() {
  3208. var dataToSend = {};
  3209. var object;
  3210. var colour;
  3211. var value;
  3212. $.ajax({
  3213. url: '/getdata/',
  3214. type: 'GET',
  3215. data: dataToSend,
  3216. success: function (response) {
  3217. //var objresponse = JSON.parse(response);
  3218. console.log(response);
  3219. data = response;
  3220. var obj = response;
  3221. for (var prop in obj) {
  3222. value = obj[prop];
  3223. if (prop == "time") {
  3224. $("#slider-tooltip").text(value);
  3225. } else {
  3226. // 0 = red
  3227. // 1 = green
  3228. if (value <= 0) {
  3229. colour = "0xff0000";
  3230. } else {
  3231. colour = "0x00ff00";
  3232. }
  3233. object = scene.getObjectByName( prop, true );
  3234. if (object) {
  3235. object.material.color.setHex( colour );
  3236. }
  3237. }
  3238. }
  3239. },
  3240. error: function () {
  3241. console.log("Error.")
  3242. }
  3243. });
  3244. }
  3245. });
  3246. </script>
  3247. </body>
  3248. </html>