index.html 110 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528
  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. scene.add(pv075a);
  2751. pv076a = new THREE.Mesh(
  2752. new THREE.CubeGeometry( 4, 0.1,0.5),
  2753. new THREE.MeshPhongMaterial( {
  2754. color: 0xD3D3D3,
  2755. specular: 0x050505,
  2756. shininess: 100
  2757. })
  2758. );
  2759. pv076a.position.set(11.241, 0.6, 33.082);
  2760. pv076a.rotateY( 11 * Math.PI / 6 );
  2761. pv076a.rotateX( Math.PI / 12);
  2762. pv076a.name = "5D_15_30w_076_01";
  2763. scene.add(pv076a);
  2764. pv077a = new THREE.Mesh(
  2765. new THREE.CubeGeometry( 4, 0.1,0.5),
  2766. new THREE.MeshPhongMaterial( {
  2767. color: 0xD3D3D3,
  2768. specular: 0x050505,
  2769. shininess: 100
  2770. })
  2771. );
  2772. pv077a.position.set(13.217, 0.7, 11.625);
  2773. pv077a.rotateY( 11 * Math.PI / 6 );
  2774. pv077a.rotateX( Math.PI / 6);
  2775. pv077a.name = "6D_30_30w_077_01";
  2776. scene.add(pv077a);
  2777. pv078a = new THREE.Mesh(
  2778. new THREE.CubeGeometry( 4, 0.1,0.5),
  2779. new THREE.MeshPhongMaterial( {
  2780. color: 0xD3D3D3,
  2781. specular: 0x050505,
  2782. shininess: 100
  2783. })
  2784. );
  2785. pv078a.position.set(12.217, 0.7, 14.625);
  2786. pv078a.rotateY( 11 * Math.PI / 6 );
  2787. pv078a.rotateX( Math.PI / 6);
  2788. pv078a.name = "3D_30_30w_078_01";
  2789. scene.add(pv078a);
  2790. pv079a = new THREE.Mesh(
  2791. new THREE.CubeGeometry( 4, 0.1,0.5),
  2792. new THREE.MeshPhongMaterial( {
  2793. color: 0xD3D3D3,
  2794. specular: 0x050505,
  2795. shininess: 100
  2796. })
  2797. );
  2798. pv079a.position.set(14.217, 0.7, 8.625);
  2799. pv079a.rotateY( 11 * Math.PI / 6 );
  2800. pv079a.rotateX( Math.PI / 6);
  2801. pv079a.name = "1D_30_30w_079_01";
  2802. scene.add(pv079a);
  2803. pv080a = new THREE.Mesh(
  2804. new THREE.CubeGeometry( 4, 0.1,0.5),
  2805. new THREE.MeshPhongMaterial( {
  2806. color: 0xD3D3D3,
  2807. specular: 0x050505,
  2808. shininess: 100
  2809. })
  2810. );
  2811. pv080a.position.set(20.177, 0.8, -4.306);
  2812. pv080a.rotateY( 11 * Math.PI / 6 );
  2813. pv080a.rotateX( Math.PI / 4);
  2814. pv080a.name = "3A_45_30w_080_01";
  2815. scene.add(pv080a);
  2816. pv081a = new THREE.Mesh(
  2817. new THREE.CubeGeometry( 4, 0.1,0.5),
  2818. new THREE.MeshPhongMaterial( {
  2819. color: 0xD3D3D3,
  2820. specular: 0x050505,
  2821. shininess: 100
  2822. })
  2823. );
  2824. pv081a.position.set(21.177, 0.8, -7.306);
  2825. pv081a.rotateY( 11 * Math.PI / 6 );
  2826. pv081a.rotateX( Math.PI / 4);
  2827. pv081a.name = "1A_45_30w_081_01";
  2828. scene.add(pv081a);
  2829. pv082a = new THREE.Mesh(
  2830. new THREE.CubeGeometry( 4, 0.1,0.5),
  2831. new THREE.MeshPhongMaterial( {
  2832. color: 0xD3D3D3,
  2833. specular: 0x050505,
  2834. shininess: 100
  2835. })
  2836. );
  2837. pv082a.position.set(21.677, 0.8, -11.306);
  2838. pv082a.rotateY( 11 * Math.PI / 6 );
  2839. pv082a.rotateX( Math.PI / 4);
  2840. pv082a.name = "5A_45_30w_082_01";
  2841. scene.add(pv082a);
  2842. pv083a = new THREE.Mesh(
  2843. new THREE.CubeGeometry( 4, 0.1,0.5),
  2844. new THREE.MeshPhongMaterial( {
  2845. color: 0xD3D3D3,
  2846. specular: 0x050505,
  2847. shininess: 100
  2848. })
  2849. );
  2850. pv083a.position.set(24.125, 0.9, -21.217);
  2851. pv083a.rotateY( 11 * Math.PI / 6 );
  2852. pv083a.rotateX( Math.PI / 3);
  2853. pv083a.name = "6A_60_30w_083_01";
  2854. scene.add(pv083a);
  2855. pv084a = new THREE.Mesh(
  2856. new THREE.CubeGeometry( 4, 0.1,0.5),
  2857. new THREE.MeshPhongMaterial( {
  2858. color: 0xD3D3D3,
  2859. specular: 0x050505,
  2860. shininess: 100
  2861. })
  2862. );
  2863. pv084a.position.set(23.125, 0.9, -18.217);
  2864. pv084a.rotateY( 11 * Math.PI / 6 );
  2865. pv084a.rotateX( Math.PI / 3);
  2866. pv084a.name = "3A_60_30w_084_01";
  2867. scene.add(pv084a);
  2868. pv085a = new THREE.Mesh(
  2869. new THREE.CubeGeometry( 4, 0.1,0.5),
  2870. new THREE.MeshPhongMaterial( {
  2871. color: 0xD3D3D3,
  2872. specular: 0x050505,
  2873. shininess: 100
  2874. })
  2875. );
  2876. pv085a.position.set(23.125, 0.9, -14.217);
  2877. pv085a.rotateY( 11 * Math.PI / 6 );
  2878. pv085a.rotateX( Math.PI / 3);
  2879. pv085a.name = "1A_60_30w_085_01";
  2880. scene.add(pv085a);
  2881. pv086a = new THREE.Mesh(
  2882. new THREE.CubeGeometry( 4, 0.1,0.5),
  2883. new THREE.MeshPhongMaterial( {
  2884. color: 0xD3D3D3,
  2885. specular: 0x050505,
  2886. shininess: 100
  2887. })
  2888. );
  2889. pv086a.position.set(12.342, 0.6, 30.158);
  2890. pv086a.rotateY( 7 * Math.PI / 4 );
  2891. pv086a.rotateX( Math.PI / 12);
  2892. pv086a.name = "2A_15_45w_086_01";
  2893. scene.add(pv086a);
  2894. pv087a = new THREE.Mesh(
  2895. new THREE.CubeGeometry( 4, 0.1,0.5),
  2896. new THREE.MeshPhongMaterial( {
  2897. color: 0xD3D3D3,
  2898. specular: 0x050505,
  2899. shininess: 100
  2900. })
  2901. );
  2902. pv087a.position.set(16.342, 0.6, 30.158);
  2903. pv087a.rotateY( 7 * Math.PI / 4 );
  2904. pv087a.rotateX( Math.PI / 12);
  2905. pv087a.name = "1A_15_45w_087_01";
  2906. scene.add(pv087a);
  2907. pv088a = new THREE.Mesh(
  2908. new THREE.CubeGeometry( 4, 0.1,0.5),
  2909. new THREE.MeshPhongMaterial( {
  2910. color: 0xD3D3D3,
  2911. specular: 0x050505,
  2912. shininess: 100
  2913. })
  2914. );
  2915. pv088a.position.set(17.342, 0.6, 27.158);
  2916. pv088a.rotateY( 7 * Math.PI / 4 );
  2917. pv088a.rotateX( Math.PI / 12);
  2918. pv088a.name = "4A_15_45w_088_01";
  2919. scene.add(pv088a);
  2920. pv089a = new THREE.Mesh(
  2921. new THREE.CubeGeometry( 4, 0.1,0.5),
  2922. new THREE.MeshPhongMaterial( {
  2923. color: 0xD3D3D3,
  2924. specular: 0x050505,
  2925. shininess: 100
  2926. })
  2927. );
  2928. pv089a.position.set(20.306, 0.7, 10.694);
  2929. pv089a.rotateY( 7 * Math.PI / 4 );
  2930. pv089a.rotateX( Math.PI / 6);
  2931. pv089a.name = "6A_30_45w_089_01";
  2932. scene.add(pv089a);
  2933. pv090a = new THREE.Mesh(
  2934. new THREE.CubeGeometry( 4, 0.1,0.5),
  2935. new THREE.MeshPhongMaterial( {
  2936. color: 0xD3D3D3,
  2937. specular: 0x050505,
  2938. shininess: 100
  2939. })
  2940. );
  2941. pv090a.position.set(19.306, 0.7, 13.694);
  2942. pv090a.rotateY( 7 * Math.PI / 4 );
  2943. pv090a.rotateX( Math.PI / 6);
  2944. pv090a.name = "2A_30_45w_090_01";
  2945. scene.add(pv090a);
  2946. pv091a = new THREE.Mesh(
  2947. new THREE.CubeGeometry( 4, 0.1,0.5),
  2948. new THREE.MeshPhongMaterial( {
  2949. color: 0xD3D3D3,
  2950. specular: 0x050505,
  2951. shininess: 100
  2952. })
  2953. );
  2954. pv091a.position.set(29.250, 0.8, -14.250);
  2955. pv091a.rotateY( 7 * Math.PI / 4 );
  2956. pv091a.rotateX( Math.PI / 4);
  2957. pv091a.name = "2C_45_45w_091_01";
  2958. scene.add(pv091a);
  2959. pv092a = new THREE.Mesh(
  2960. new THREE.CubeGeometry( 4, 0.1,0.5),
  2961. new THREE.MeshPhongMaterial( {
  2962. color: 0xD3D3D3,
  2963. specular: 0x050505,
  2964. shininess: 100
  2965. })
  2966. );
  2967. pv092a.position.set(23.250, 0.8, 6.750);
  2968. pv092a.rotateY( 7 * Math.PI / 4 );
  2969. pv092a.rotateX( Math.PI / 4);
  2970. pv092a.name = "4C_45_45w_092_01";
  2971. scene.add(pv092a);
  2972. pv093a = new THREE.Mesh(
  2973. new THREE.CubeGeometry( 4, 0.1,0.5),
  2974. new THREE.MeshPhongMaterial( {
  2975. color: 0xD3D3D3,
  2976. specular: 0x050505,
  2977. shininess: 100
  2978. })
  2979. );
  2980. pv093a.position.set(30.177, 0.9, -18.177);
  2981. pv093a.rotateY( 7 * Math.PI / 4 );
  2982. pv093a.rotateX( Math.PI / 3);
  2983. pv093a.name = "6A_60_45w_093_01";
  2984. scene.add(pv093a);
  2985. pv094a = new THREE.Mesh(
  2986. new THREE.CubeGeometry( 4, 0.1,0.5),
  2987. new THREE.MeshPhongMaterial( {
  2988. color: 0xD3D3D3,
  2989. specular: 0x050505,
  2990. shininess: 100
  2991. })
  2992. );
  2993. pv094a.position.set(30.177, 0.9, -22.177);
  2994. pv094a.rotateY( 7 * Math.PI / 4 );
  2995. pv094a.rotateX( Math.PI / 3);
  2996. pv094a.name = "2A_60_45w_094_01";
  2997. scene.add(pv094a);
  2998. pv095a = new THREE.Mesh(
  2999. new THREE.CubeGeometry( 4, 0.1,0.5),
  3000. new THREE.MeshPhongMaterial( {
  3001. color: 0xD3D3D3,
  3002. specular: 0x050505,
  3003. shininess: 100
  3004. })
  3005. );
  3006. pv095a.position.set(15.418, 0.6, 33.759);
  3007. pv095a.rotateY( 5 * Math.PI / 3);
  3008. pv095a.rotateX( Math.PI / 12);
  3009. pv095a.name = "6A_15_60w_095_01";
  3010. scene.add(pv095a);
  3011. pv096a = new THREE.Mesh(
  3012. new THREE.CubeGeometry( 4, 0.1,0.5),
  3013. new THREE.MeshPhongMaterial( {
  3014. color: 0xD3D3D3,
  3015. specular: 0x050505,
  3016. shininess: 100
  3017. })
  3018. );
  3019. pv096a.position.set(14.418, 0.6, 36.759);
  3020. pv096a.rotateY( 5 * Math.PI / 3);
  3021. pv096a.rotateX( Math.PI / 12);
  3022. pv096a.name = "2A_15_60w_096_01";
  3023. scene.add(pv096a);
  3024. pv097a = new THREE.Mesh(
  3025. new THREE.CubeGeometry( 4, 0.1,0.5),
  3026. new THREE.MeshPhongMaterial( {
  3027. color: 0xD3D3D3,
  3028. specular: 0x050505,
  3029. shininess: 100
  3030. })
  3031. );
  3032. pv097a.position.set(16.375, 0.7, 19.783);
  3033. pv097a.rotateY( 5 * Math.PI / 3);
  3034. pv097a.rotateX( Math.PI / 6);
  3035. pv097a.name = "6A_30_60w_097_01";
  3036. scene.add(pv097a);
  3037. pv098a = new THREE.Mesh(
  3038. new THREE.CubeGeometry( 4, 0.1,0.5),
  3039. new THREE.MeshPhongMaterial( {
  3040. color: 0xD3D3D3,
  3041. specular: 0x050505,
  3042. shininess: 100
  3043. })
  3044. );
  3045. pv098a.position.set(17.375, 0.7, 16.783);
  3046. pv098a.rotateY( 5 * Math.PI / 3);
  3047. pv098a.rotateX( Math.PI / 6);
  3048. pv098a.name = "1A_30_60w_098_01";
  3049. scene.add(pv098a);
  3050. pv099a = new THREE.Mesh(
  3051. new THREE.CubeGeometry( 4, 0.1,0.5),
  3052. new THREE.MeshPhongMaterial( {
  3053. color: 0xD3D3D3,
  3054. specular: 0x050505,
  3055. shininess: 100
  3056. })
  3057. );
  3058. pv099a.position.set(25.306, 0.8, -1.177);
  3059. pv099a.rotateY( 5 * Math.PI / 3);
  3060. pv099a.rotateX( Math.PI / 4);
  3061. pv099a.name = "6A_45_60w_099_01";
  3062. scene.add(pv099a);
  3063. pv100a = new THREE.Mesh(
  3064. new THREE.CubeGeometry( 4, 0.1,0.5),
  3065. new THREE.MeshPhongMaterial( {
  3066. color: 0xD3D3D3,
  3067. specular: 0x050505,
  3068. shininess: 100
  3069. })
  3070. );
  3071. pv100a.position.set(22.306, 0.8, 1.823);
  3072. pv100a.rotateY( 5 * Math.PI / 3);
  3073. pv100a.rotateX( Math.PI / 4);
  3074. pv100a.name = "1A_45_60w_100_01";
  3075. scene.add(pv100a);
  3076. pv101a = new THREE.Mesh(
  3077. new THREE.CubeGeometry( 4, 0.1,0.5),
  3078. new THREE.MeshPhongMaterial( {
  3079. color: 0xD3D3D3,
  3080. specular: 0x050505,
  3081. shininess: 100
  3082. })
  3083. );
  3084. pv101a.position.set(28.217, 0.9, -10.125);
  3085. pv101a.rotateY( 5 * Math.PI / 3);
  3086. pv101a.rotateX( Math.PI / 3);
  3087. pv101a.name = "2C_60_60w_101_01";
  3088. scene.add(pv101a);
  3089. pv102a = new THREE.Mesh(
  3090. new THREE.CubeGeometry( 4, 0.1,0.5),
  3091. new THREE.MeshPhongMaterial( {
  3092. color: 0xD3D3D3,
  3093. specular: 0x050505,
  3094. shininess: 100
  3095. })
  3096. );
  3097. pv102a.position.set(26.216, 0.9, -6.125);
  3098. pv102a.rotateY( 5 * Math.PI / 3);
  3099. pv102a.rotateX( Math.PI / 3);
  3100. pv102a.name = "1C_60_60w_102_01";
  3101. scene.add(pv102a);
  3102. //scene.fog = new THREE.FogExp2( 0x000000, 0.0128 );
  3103. //renderer.setClearColor( scene.fog.color, 1 );
  3104. render();
  3105. }
  3106. function animate() {
  3107. requestAnimationFrame(animate);
  3108. if (enableControls){
  3109. mycontrol.enabled = true;
  3110. } else {
  3111. mycontrol.enabled = false;
  3112. }
  3113. if (enableRotate) {
  3114. mycontrol.rotate = true;
  3115. } else {
  3116. mycontrol.rotate = false;
  3117. }
  3118. mycontrol.update();
  3119. render();
  3120. }
  3121. var vector;
  3122. function render() {
  3123. //console.log(camera.position);
  3124. // if camera.position.y more than 90 then show module number
  3125. scene.traverse( function( node ) {
  3126. if (node.name != "") {
  3127. //console.log(node.name);
  3128. var _id = node.name;
  3129. _id = _id.split("_")[3];
  3130. //console.log(_id2[3]);
  3131. _id = "#text" + _id;
  3132. if (camera.position.y > 0 && labelFlag == true) {
  3133. //console.log(scene.children);
  3134. var obj1 = scene.getObjectByName( node.name );
  3135. var width = window.innerWidth, height = window.innerHeight;
  3136. var widthHalf = width / 2, heightHalf = height / 2;
  3137. var pos = obj1.position.clone();
  3138. pos.project(camera);
  3139. pos.x = ( pos.x * widthHalf ) + widthHalf;
  3140. pos.y = - ( pos.y * heightHalf ) + heightHalf;
  3141. $(_id).show();
  3142. $(_id).css("top", pos.y + 'px');
  3143. $(_id).css("left", (pos.x-10) + 'px');
  3144. //console.log(pos);
  3145. } else {
  3146. $(_id).hide();
  3147. }
  3148. }
  3149. });
  3150. // update the picking ray with the camera and mouse position
  3151. raycaster.setFromCamera( mouse, camera );
  3152. // calculate objects intersecting the picking ray
  3153. var intersects = raycaster.intersectObjects( scene.children );
  3154. //console.log("Check intersection");
  3155. //console.log(intersects);
  3156. for ( var i = 0; i < intersects.length; i++ ) {
  3157. //intersects[ i ].object.material.color.set( 0xff0000 );
  3158. //$("#obj-tooltip").text(intersects[ i ].object.name);
  3159. if (intersects[ i ].object.name != "") {
  3160. $("#obj-tooltip").text("Module: " + intersects[ i ].object.name);
  3161. $("#val-tooltip").text("Value: " + data[ intersects[ i ].object.name ]);
  3162. }
  3163. }
  3164. renderer.render(scene, camera);
  3165. vector = camera.getWorldDirection();
  3166. theta = Math.atan2(vector.x,vector.z);
  3167. theta = theta + 3.142; // add/minux pi to inverse
  3168. var degree = theta * (180/3.142);
  3169. //console.log(degree);
  3170. draw(degree);
  3171. }
  3172. $("#message").mousedown(function() {
  3173. enableControls = false;
  3174. setMessage("GUI", "De-select main scene. Click on main scene to re-select.");
  3175. //render();
  3176. });
  3177. $("#orientation").mousedown(function() {
  3178. enableControls = false;
  3179. setMessage("GUI", "De-select main scene. Click on main scene to re-select.");
  3180. //render();
  3181. });
  3182. $("#settings").mousedown(function() {
  3183. enableControls = false;
  3184. setMessage("GUI", "De-select main scene. Click on main scene to re-select.");
  3185. //render();
  3186. });
  3187. $("#slider").mousedown(function() {
  3188. enableControls = false;
  3189. setMessage("GUI", "De-select main scene. Click on main scene to re-select.");
  3190. //render();
  3191. });
  3192. $("#container").mousedown(function() {
  3193. enableControls = true;
  3194. enableRotate = true;
  3195. animate();
  3196. setMessage("GUI", "Selected main scene.");
  3197. });
  3198. $("#container").mouseup(function() {
  3199. enableRotate = false;
  3200. //animate();
  3201. setMessage("GUI", "Selected main scene.");
  3202. });
  3203. </script>
  3204. <script>
  3205. jQuery(window).load(function () {
  3206. myTimer();
  3207. var myVar = setInterval(myTimer, 10000);
  3208. function myTimer() {
  3209. var dataToSend = {};
  3210. var object;
  3211. var colour;
  3212. var value;
  3213. $.ajax({
  3214. url: '/getdata/',
  3215. type: 'GET',
  3216. data: dataToSend,
  3217. success: function (response) {
  3218. //var objresponse = JSON.parse(response);
  3219. console.log(response);
  3220. data = response;
  3221. var obj = response;
  3222. for (var prop in obj) {
  3223. value = obj[prop];
  3224. if (prop == "time") {
  3225. $("#slider-tooltip").text(value);
  3226. } else {
  3227. // 0 = red
  3228. // 1 = green
  3229. if (value <= 0) {
  3230. colour = "0xff0000";
  3231. } else {
  3232. colour = "0x00ff00";
  3233. }
  3234. object = scene.getObjectByName( prop, true );
  3235. if (object) {
  3236. object.material.color.setHex( colour );
  3237. }
  3238. }
  3239. }
  3240. },
  3241. error: function () {
  3242. console.log("Error.")
  3243. }
  3244. });
  3245. }
  3246. });
  3247. </script>
  3248. </body>
  3249. </html>