index.html 109 KB

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