1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237202382023920240202412024220243202442024520246202472024820249202502025120252202532025420255202562025720258202592026020261202622026320264202652026620267202682026920270202712027220273202742027520276202772027820279202802028120282202832028420285202862028720288202892029020291202922029320294202952029620297202982029920300203012030220303203042030520306203072030820309203102031120312203132031420315203162031720318203192032020321203222032320324203252032620327203282032920330203312033220333203342033520336203372033820339203402034120342203432034420345203462034720348203492035020351203522035320354203552035620357203582035920360203612036220363203642036520366203672036820369203702037120372203732037420375203762037720378203792038020381203822038320384203852038620387203882038920390203912039220393203942039520396203972039820399204002040120402204032040420405204062040720408204092041020411204122041320414204152041620417204182041920420204212042220423204242042520426204272042820429204302043120432204332043420435204362043720438204392044020441204422044320444204452044620447204482044920450204512045220453204542045520456204572045820459204602046120462204632046420465204662046720468204692047020471204722047320474204752047620477204782047920480204812048220483204842048520486204872048820489204902049120492204932049420495204962049720498204992050020501205022050320504205052050620507205082050920510205112051220513205142051520516205172051820519205202052120522205232052420525205262052720528205292053020531205322053320534205352053620537205382053920540205412054220543205442054520546205472054820549205502055120552205532055420555205562055720558205592056020561205622056320564205652056620567205682056920570205712057220573205742057520576205772057820579205802058120582205832058420585205862058720588205892059020591205922059320594205952059620597205982059920600206012060220603206042060520606206072060820609206102061120612206132061420615206162061720618206192062020621206222062320624206252062620627206282062920630206312063220633206342063520636206372063820639206402064120642206432064420645206462064720648206492065020651206522065320654206552065620657206582065920660206612066220663206642066520666206672066820669206702067120672206732067420675206762067720678206792068020681206822068320684206852068620687206882068920690206912069220693206942069520696206972069820699207002070120702207032070420705207062070720708207092071020711207122071320714207152071620717207182071920720207212072220723207242072520726207272072820729207302073120732207332073420735207362073720738207392074020741207422074320744207452074620747207482074920750207512075220753207542075520756207572075820759207602076120762207632076420765207662076720768207692077020771207722077320774207752077620777207782077920780207812078220783207842078520786207872078820789207902079120792207932079420795207962079720798207992080020801208022080320804208052080620807208082080920810208112081220813208142081520816208172081820819208202082120822208232082420825208262082720828208292083020831208322083320834208352083620837208382083920840208412084220843208442084520846208472084820849208502085120852208532085420855208562085720858208592086020861208622086320864208652086620867208682086920870208712087220873208742087520876208772087820879208802088120882208832088420885208862088720888208892089020891208922089320894208952089620897208982089920900209012090220903209042090520906209072090820909209102091120912209132091420915209162091720918209192092020921209222092320924209252092620927209282092920930209312093220933209342093520936209372093820939209402094120942209432094420945209462094720948209492095020951209522095320954209552095620957209582095920960209612096220963209642096520966209672096820969209702097120972209732097420975209762097720978209792098020981209822098320984209852098620987209882098920990209912099220993209942099520996209972099820999210002100121002210032100421005210062100721008210092101021011210122101321014210152101621017210182101921020210212102221023210242102521026210272102821029210302103121032210332103421035210362103721038210392104021041210422104321044210452104621047210482104921050210512105221053210542105521056210572105821059210602106121062210632106421065210662106721068210692107021071210722107321074210752107621077210782107921080210812108221083210842108521086210872108821089210902109121092210932109421095210962109721098210992110021101211022110321104211052110621107211082110921110211112111221113211142111521116211172111821119211202112121122211232112421125211262112721128211292113021131211322113321134211352113621137211382113921140211412114221143211442114521146211472114821149211502115121152211532115421155211562115721158211592116021161211622116321164211652116621167211682116921170211712117221173211742117521176211772117821179211802118121182211832118421185211862118721188211892119021191211922119321194211952119621197211982119921200212012120221203212042120521206212072120821209212102121121212212132121421215212162121721218212192122021221212222122321224212252122621227212282122921230212312123221233212342123521236212372123821239212402124121242212432124421245212462124721248212492125021251212522125321254212552125621257212582125921260212612126221263212642126521266212672126821269212702127121272212732127421275212762127721278212792128021281212822128321284212852128621287212882128921290212912129221293212942129521296212972129821299213002130121302213032130421305213062130721308213092131021311213122131321314213152131621317213182131921320213212132221323213242132521326213272132821329213302133121332213332133421335213362133721338213392134021341213422134321344213452134621347213482134921350213512135221353213542135521356213572135821359213602136121362213632136421365213662136721368213692137021371213722137321374213752137621377213782137921380213812138221383213842138521386213872138821389213902139121392213932139421395213962139721398213992140021401214022140321404214052140621407214082140921410214112141221413214142141521416214172141821419214202142121422214232142421425214262142721428214292143021431214322143321434214352143621437214382143921440214412144221443214442144521446214472144821449214502145121452214532145421455214562145721458214592146021461214622146321464214652146621467214682146921470214712147221473214742147521476214772147821479214802148121482214832148421485214862148721488214892149021491214922149321494214952149621497214982149921500215012150221503215042150521506215072150821509215102151121512215132151421515215162151721518215192152021521215222152321524215252152621527215282152921530215312153221533215342153521536215372153821539215402154121542215432154421545215462154721548215492155021551215522155321554215552155621557215582155921560215612156221563215642156521566215672156821569215702157121572215732157421575215762157721578215792158021581215822158321584215852158621587215882158921590215912159221593215942159521596215972159821599216002160121602216032160421605216062160721608216092161021611216122161321614216152161621617216182161921620216212162221623216242162521626216272162821629216302163121632216332163421635216362163721638216392164021641216422164321644216452164621647216482164921650216512165221653216542165521656216572165821659216602166121662216632166421665216662166721668216692167021671216722167321674216752167621677216782167921680216812168221683216842168521686216872168821689216902169121692216932169421695216962169721698216992170021701217022170321704217052170621707217082170921710217112171221713217142171521716217172171821719217202172121722217232172421725217262172721728217292173021731217322173321734217352173621737217382173921740217412174221743217442174521746217472174821749217502175121752217532175421755217562175721758217592176021761217622176321764217652176621767217682176921770217712177221773217742177521776217772177821779217802178121782217832178421785217862178721788217892179021791217922179321794217952179621797217982179921800218012180221803218042180521806218072180821809218102181121812218132181421815218162181721818218192182021821218222182321824218252182621827218282182921830218312183221833218342183521836218372183821839218402184121842218432184421845218462184721848218492185021851218522185321854218552185621857218582185921860218612186221863218642186521866218672186821869218702187121872218732187421875218762187721878218792188021881218822188321884218852188621887218882188921890218912189221893218942189521896218972189821899219002190121902219032190421905219062190721908219092191021911219122191321914219152191621917219182191921920219212192221923219242192521926219272192821929219302193121932219332193421935219362193721938219392194021941219422194321944219452194621947219482194921950219512195221953219542195521956219572195821959219602196121962219632196421965219662196721968219692197021971219722197321974219752197621977219782197921980219812198221983219842198521986219872198821989219902199121992219932199421995219962199721998219992200022001220022200322004220052200622007220082200922010220112201222013220142201522016220172201822019220202202122022220232202422025220262202722028220292203022031220322203322034220352203622037220382203922040220412204222043220442204522046220472204822049220502205122052220532205422055220562205722058220592206022061220622206322064220652206622067220682206922070220712207222073220742207522076220772207822079220802208122082220832208422085220862208722088220892209022091220922209322094220952209622097220982209922100221012210222103221042210522106221072210822109221102211122112221132211422115221162211722118221192212022121221222212322124221252212622127221282212922130221312213222133221342213522136221372213822139221402214122142221432214422145221462214722148221492215022151221522215322154221552215622157221582215922160221612216222163221642216522166221672216822169221702217122172221732217422175221762217722178221792218022181221822218322184221852218622187221882218922190221912219222193221942219522196221972219822199222002220122202222032220422205222062220722208222092221022211222122221322214222152221622217222182221922220222212222222223222242222522226222272222822229222302223122232222332223422235222362223722238222392224022241222422224322244222452224622247222482224922250222512225222253222542225522256222572225822259222602226122262222632226422265222662226722268222692227022271222722227322274222752227622277222782227922280222812228222283222842228522286222872228822289222902229122292222932229422295222962229722298222992230022301223022230322304223052230622307223082230922310223112231222313223142231522316223172231822319223202232122322223232232422325223262232722328223292233022331223322233322334223352233622337223382233922340223412234222343223442234522346223472234822349223502235122352223532235422355223562235722358223592236022361223622236322364223652236622367223682236922370223712237222373223742237522376223772237822379223802238122382223832238422385223862238722388223892239022391223922239322394223952239622397223982239922400224012240222403224042240522406224072240822409224102241122412224132241422415224162241722418224192242022421224222242322424224252242622427224282242922430224312243222433224342243522436224372243822439224402244122442224432244422445224462244722448224492245022451224522245322454224552245622457224582245922460224612246222463224642246522466224672246822469224702247122472224732247422475224762247722478224792248022481224822248322484224852248622487224882248922490224912249222493224942249522496224972249822499225002250122502225032250422505225062250722508225092251022511225122251322514225152251622517225182251922520225212252222523225242252522526225272252822529225302253122532225332253422535225362253722538225392254022541225422254322544225452254622547225482254922550225512255222553225542255522556225572255822559225602256122562225632256422565225662256722568225692257022571225722257322574225752257622577225782257922580225812258222583225842258522586225872258822589225902259122592225932259422595225962259722598225992260022601226022260322604226052260622607226082260922610226112261222613226142261522616226172261822619226202262122622226232262422625226262262722628226292263022631226322263322634226352263622637226382263922640226412264222643226442264522646226472264822649226502265122652226532265422655226562265722658226592266022661226622266322664226652266622667226682266922670226712267222673226742267522676226772267822679226802268122682226832268422685226862268722688226892269022691226922269322694226952269622697226982269922700227012270222703227042270522706227072270822709227102271122712227132271422715227162271722718227192272022721227222272322724227252272622727227282272922730227312273222733227342273522736227372273822739227402274122742227432274422745227462274722748227492275022751227522275322754227552275622757227582275922760227612276222763227642276522766227672276822769227702277122772227732277422775227762277722778227792278022781227822278322784227852278622787227882278922790227912279222793227942279522796227972279822799228002280122802228032280422805228062280722808228092281022811228122281322814228152281622817228182281922820228212282222823228242282522826228272282822829228302283122832228332283422835228362283722838228392284022841228422284322844228452284622847228482284922850228512285222853228542285522856228572285822859228602286122862228632286422865228662286722868228692287022871228722287322874228752287622877228782287922880228812288222883228842288522886228872288822889228902289122892228932289422895228962289722898228992290022901229022290322904229052290622907229082290922910229112291222913229142291522916229172291822919229202292122922229232292422925229262292722928229292293022931229322293322934229352293622937229382293922940229412294222943229442294522946229472294822949229502295122952229532295422955229562295722958229592296022961229622296322964229652296622967229682296922970229712297222973229742297522976229772297822979229802298122982229832298422985229862298722988229892299022991229922299322994229952299622997229982299923000230012300223003230042300523006230072300823009230102301123012230132301423015230162301723018230192302023021230222302323024230252302623027230282302923030230312303223033230342303523036230372303823039230402304123042230432304423045230462304723048230492305023051230522305323054230552305623057230582305923060230612306223063230642306523066230672306823069230702307123072230732307423075230762307723078230792308023081230822308323084230852308623087230882308923090230912309223093230942309523096230972309823099231002310123102231032310423105231062310723108231092311023111231122311323114231152311623117231182311923120231212312223123231242312523126231272312823129231302313123132231332313423135231362313723138231392314023141231422314323144231452314623147231482314923150231512315223153231542315523156231572315823159231602316123162231632316423165231662316723168231692317023171231722317323174231752317623177231782317923180231812318223183231842318523186231872318823189231902319123192231932319423195231962319723198231992320023201232022320323204232052320623207232082320923210232112321223213232142321523216232172321823219232202322123222232232322423225232262322723228232292323023231232322323323234232352323623237232382323923240232412324223243232442324523246232472324823249232502325123252232532325423255232562325723258232592326023261232622326323264232652326623267232682326923270232712327223273232742327523276232772327823279232802328123282232832328423285232862328723288232892329023291232922329323294232952329623297232982329923300233012330223303233042330523306233072330823309233102331123312233132331423315233162331723318233192332023321233222332323324233252332623327233282332923330233312333223333233342333523336233372333823339233402334123342233432334423345233462334723348233492335023351233522335323354233552335623357233582335923360233612336223363233642336523366233672336823369233702337123372233732337423375233762337723378233792338023381233822338323384233852338623387233882338923390233912339223393233942339523396233972339823399234002340123402234032340423405234062340723408234092341023411234122341323414234152341623417234182341923420234212342223423234242342523426234272342823429234302343123432234332343423435234362343723438234392344023441234422344323444234452344623447234482344923450234512345223453234542345523456234572345823459234602346123462234632346423465234662346723468234692347023471234722347323474234752347623477234782347923480234812348223483234842348523486234872348823489234902349123492234932349423495234962349723498234992350023501235022350323504235052350623507235082350923510235112351223513235142351523516235172351823519235202352123522235232352423525235262352723528235292353023531235322353323534235352353623537235382353923540235412354223543235442354523546235472354823549235502355123552235532355423555235562355723558235592356023561235622356323564235652356623567235682356923570235712357223573235742357523576235772357823579235802358123582235832358423585235862358723588235892359023591235922359323594235952359623597235982359923600236012360223603236042360523606236072360823609236102361123612236132361423615236162361723618236192362023621236222362323624236252362623627236282362923630236312363223633236342363523636236372363823639236402364123642236432364423645236462364723648236492365023651236522365323654236552365623657236582365923660236612366223663236642366523666236672366823669236702367123672236732367423675236762367723678236792368023681236822368323684236852368623687236882368923690236912369223693236942369523696236972369823699237002370123702237032370423705237062370723708237092371023711237122371323714237152371623717237182371923720237212372223723237242372523726237272372823729237302373123732237332373423735237362373723738237392374023741237422374323744237452374623747237482374923750237512375223753237542375523756237572375823759237602376123762237632376423765237662376723768237692377023771237722377323774237752377623777237782377923780237812378223783237842378523786237872378823789237902379123792237932379423795237962379723798237992380023801238022380323804238052380623807238082380923810238112381223813238142381523816238172381823819238202382123822238232382423825238262382723828238292383023831238322383323834238352383623837238382383923840238412384223843238442384523846238472384823849238502385123852238532385423855238562385723858238592386023861238622386323864238652386623867238682386923870238712387223873238742387523876238772387823879238802388123882238832388423885238862388723888238892389023891238922389323894238952389623897238982389923900239012390223903239042390523906239072390823909239102391123912239132391423915239162391723918239192392023921239222392323924239252392623927239282392923930239312393223933239342393523936239372393823939239402394123942239432394423945239462394723948239492395023951239522395323954239552395623957239582395923960239612396223963239642396523966239672396823969239702397123972239732397423975239762397723978239792398023981239822398323984239852398623987239882398923990239912399223993239942399523996239972399823999240002400124002240032400424005240062400724008240092401024011240122401324014240152401624017240182401924020240212402224023240242402524026240272402824029240302403124032240332403424035240362403724038240392404024041240422404324044240452404624047240482404924050240512405224053240542405524056240572405824059240602406124062240632406424065240662406724068240692407024071240722407324074240752407624077240782407924080240812408224083240842408524086240872408824089240902409124092240932409424095240962409724098240992410024101241022410324104241052410624107241082410924110241112411224113241142411524116241172411824119241202412124122241232412424125241262412724128241292413024131241322413324134241352413624137241382413924140241412414224143241442414524146241472414824149241502415124152241532415424155241562415724158241592416024161241622416324164241652416624167241682416924170241712417224173241742417524176241772417824179241802418124182241832418424185241862418724188241892419024191241922419324194241952419624197241982419924200242012420224203242042420524206242072420824209242102421124212242132421424215242162421724218242192422024221242222422324224242252422624227242282422924230242312423224233242342423524236242372423824239242402424124242242432424424245242462424724248242492425024251242522425324254242552425624257242582425924260242612426224263242642426524266242672426824269242702427124272242732427424275242762427724278242792428024281242822428324284242852428624287242882428924290242912429224293242942429524296242972429824299243002430124302243032430424305243062430724308243092431024311243122431324314243152431624317243182431924320243212432224323243242432524326243272432824329243302433124332243332433424335243362433724338243392434024341243422434324344243452434624347243482434924350243512435224353243542435524356243572435824359243602436124362243632436424365243662436724368243692437024371243722437324374243752437624377243782437924380243812438224383243842438524386243872438824389243902439124392243932439424395243962439724398243992440024401244022440324404244052440624407244082440924410244112441224413244142441524416244172441824419244202442124422244232442424425244262442724428244292443024431244322443324434244352443624437244382443924440244412444224443244442444524446244472444824449244502445124452244532445424455244562445724458244592446024461244622446324464244652446624467244682446924470244712447224473244742447524476244772447824479244802448124482244832448424485244862448724488244892449024491244922449324494244952449624497244982449924500245012450224503245042450524506245072450824509245102451124512245132451424515245162451724518245192452024521245222452324524245252452624527245282452924530245312453224533245342453524536245372453824539245402454124542245432454424545245462454724548245492455024551245522455324554245552455624557245582455924560245612456224563245642456524566245672456824569245702457124572245732457424575245762457724578245792458024581245822458324584245852458624587245882458924590245912459224593245942459524596245972459824599246002460124602246032460424605246062460724608246092461024611246122461324614246152461624617246182461924620246212462224623246242462524626246272462824629246302463124632246332463424635246362463724638246392464024641246422464324644246452464624647246482464924650246512465224653246542465524656246572465824659246602466124662246632466424665246662466724668246692467024671246722467324674246752467624677246782467924680246812468224683246842468524686246872468824689246902469124692246932469424695246962469724698246992470024701247022470324704247052470624707247082470924710247112471224713247142471524716247172471824719247202472124722247232472424725247262472724728247292473024731247322473324734247352473624737247382473924740247412474224743247442474524746247472474824749247502475124752247532475424755247562475724758247592476024761247622476324764247652476624767247682476924770247712477224773247742477524776247772477824779247802478124782247832478424785247862478724788247892479024791247922479324794247952479624797247982479924800248012480224803248042480524806248072480824809248102481124812248132481424815248162481724818248192482024821248222482324824248252482624827248282482924830248312483224833248342483524836248372483824839248402484124842248432484424845248462484724848248492485024851248522485324854248552485624857248582485924860248612486224863248642486524866248672486824869248702487124872248732487424875248762487724878248792488024881248822488324884248852488624887248882488924890248912489224893248942489524896248972489824899249002490124902249032490424905249062490724908249092491024911249122491324914249152491624917249182491924920249212492224923249242492524926249272492824929249302493124932249332493424935249362493724938249392494024941249422494324944249452494624947249482494924950249512495224953249542495524956249572495824959249602496124962249632496424965249662496724968249692497024971249722497324974249752497624977249782497924980249812498224983249842498524986249872498824989249902499124992249932499424995249962499724998249992500025001250022500325004250052500625007250082500925010250112501225013250142501525016250172501825019250202502125022250232502425025250262502725028250292503025031250322503325034250352503625037250382503925040250412504225043250442504525046250472504825049250502505125052250532505425055250562505725058250592506025061250622506325064250652506625067250682506925070250712507225073250742507525076250772507825079250802508125082250832508425085250862508725088250892509025091250922509325094250952509625097250982509925100251012510225103251042510525106251072510825109251102511125112251132511425115251162511725118251192512025121251222512325124251252512625127251282512925130251312513225133251342513525136251372513825139251402514125142251432514425145251462514725148251492515025151251522515325154251552515625157251582515925160251612516225163251642516525166251672516825169251702517125172251732517425175251762517725178251792518025181251822518325184251852518625187251882518925190251912519225193251942519525196251972519825199252002520125202252032520425205252062520725208252092521025211252122521325214252152521625217252182521925220252212522225223252242522525226252272522825229252302523125232252332523425235252362523725238252392524025241252422524325244252452524625247252482524925250252512525225253252542525525256252572525825259252602526125262252632526425265252662526725268252692527025271252722527325274252752527625277252782527925280252812528225283252842528525286252872528825289252902529125292252932529425295252962529725298252992530025301253022530325304253052530625307253082530925310253112531225313253142531525316253172531825319253202532125322253232532425325253262532725328253292533025331253322533325334253352533625337253382533925340253412534225343253442534525346253472534825349253502535125352253532535425355253562535725358253592536025361253622536325364253652536625367253682536925370253712537225373253742537525376253772537825379253802538125382253832538425385253862538725388253892539025391253922539325394253952539625397253982539925400254012540225403254042540525406254072540825409254102541125412254132541425415254162541725418254192542025421254222542325424254252542625427254282542925430254312543225433254342543525436254372543825439254402544125442254432544425445254462544725448254492545025451254522545325454254552545625457254582545925460254612546225463254642546525466254672546825469254702547125472254732547425475254762547725478254792548025481254822548325484254852548625487254882548925490254912549225493254942549525496254972549825499255002550125502255032550425505255062550725508255092551025511255122551325514255152551625517255182551925520255212552225523255242552525526255272552825529255302553125532255332553425535255362553725538255392554025541255422554325544255452554625547255482554925550255512555225553255542555525556255572555825559255602556125562255632556425565255662556725568255692557025571255722557325574255752557625577255782557925580255812558225583255842558525586255872558825589255902559125592255932559425595255962559725598255992560025601256022560325604256052560625607256082560925610256112561225613256142561525616256172561825619256202562125622256232562425625256262562725628256292563025631256322563325634256352563625637256382563925640256412564225643256442564525646256472564825649256502565125652256532565425655256562565725658256592566025661256622566325664256652566625667256682566925670256712567225673256742567525676256772567825679256802568125682256832568425685256862568725688256892569025691256922569325694256952569625697256982569925700257012570225703257042570525706257072570825709257102571125712257132571425715257162571725718257192572025721257222572325724257252572625727257282572925730257312573225733257342573525736257372573825739257402574125742257432574425745257462574725748257492575025751257522575325754257552575625757257582575925760257612576225763257642576525766257672576825769257702577125772257732577425775257762577725778257792578025781257822578325784257852578625787257882578925790257912579225793257942579525796257972579825799258002580125802258032580425805258062580725808258092581025811258122581325814258152581625817258182581925820258212582225823258242582525826258272582825829258302583125832258332583425835258362583725838258392584025841258422584325844258452584625847258482584925850258512585225853258542585525856258572585825859258602586125862258632586425865258662586725868258692587025871258722587325874258752587625877258782587925880258812588225883258842588525886258872588825889258902589125892258932589425895258962589725898258992590025901259022590325904259052590625907259082590925910259112591225913259142591525916259172591825919259202592125922259232592425925259262592725928259292593025931259322593325934259352593625937259382593925940259412594225943259442594525946259472594825949259502595125952259532595425955259562595725958259592596025961259622596325964259652596625967259682596925970259712597225973259742597525976259772597825979259802598125982259832598425985259862598725988259892599025991259922599325994259952599625997259982599926000260012600226003260042600526006260072600826009260102601126012260132601426015260162601726018260192602026021260222602326024260252602626027260282602926030260312603226033260342603526036260372603826039260402604126042260432604426045260462604726048260492605026051260522605326054260552605626057260582605926060260612606226063260642606526066260672606826069260702607126072260732607426075260762607726078260792608026081260822608326084260852608626087260882608926090260912609226093260942609526096260972609826099261002610126102261032610426105261062610726108261092611026111261122611326114261152611626117261182611926120261212612226123261242612526126261272612826129261302613126132261332613426135261362613726138261392614026141261422614326144261452614626147261482614926150261512615226153261542615526156261572615826159261602616126162261632616426165261662616726168261692617026171261722617326174261752617626177261782617926180261812618226183261842618526186261872618826189261902619126192261932619426195261962619726198261992620026201262022620326204262052620626207262082620926210262112621226213262142621526216262172621826219262202622126222262232622426225262262622726228262292623026231262322623326234262352623626237262382623926240262412624226243262442624526246262472624826249262502625126252262532625426255262562625726258262592626026261262622626326264262652626626267262682626926270262712627226273262742627526276262772627826279262802628126282262832628426285262862628726288262892629026291262922629326294262952629626297262982629926300263012630226303263042630526306263072630826309263102631126312263132631426315263162631726318263192632026321263222632326324263252632626327263282632926330263312633226333263342633526336263372633826339263402634126342263432634426345263462634726348263492635026351263522635326354263552635626357263582635926360263612636226363263642636526366263672636826369263702637126372263732637426375263762637726378263792638026381263822638326384263852638626387263882638926390263912639226393263942639526396263972639826399264002640126402264032640426405264062640726408264092641026411264122641326414264152641626417264182641926420264212642226423264242642526426264272642826429264302643126432264332643426435264362643726438264392644026441264422644326444264452644626447264482644926450264512645226453264542645526456264572645826459264602646126462264632646426465264662646726468264692647026471264722647326474264752647626477264782647926480264812648226483264842648526486264872648826489264902649126492264932649426495264962649726498264992650026501265022650326504265052650626507265082650926510265112651226513265142651526516265172651826519265202652126522265232652426525265262652726528265292653026531265322653326534265352653626537265382653926540265412654226543265442654526546265472654826549265502655126552265532655426555265562655726558265592656026561265622656326564265652656626567265682656926570265712657226573265742657526576265772657826579265802658126582265832658426585265862658726588265892659026591265922659326594265952659626597265982659926600266012660226603266042660526606266072660826609266102661126612266132661426615266162661726618266192662026621266222662326624266252662626627266282662926630266312663226633266342663526636266372663826639266402664126642266432664426645266462664726648266492665026651266522665326654266552665626657266582665926660266612666226663266642666526666266672666826669266702667126672266732667426675266762667726678266792668026681266822668326684266852668626687266882668926690266912669226693266942669526696266972669826699267002670126702267032670426705267062670726708267092671026711267122671326714267152671626717267182671926720267212672226723267242672526726267272672826729267302673126732267332673426735267362673726738267392674026741267422674326744267452674626747267482674926750267512675226753267542675526756267572675826759267602676126762267632676426765267662676726768267692677026771267722677326774267752677626777267782677926780267812678226783267842678526786267872678826789267902679126792267932679426795267962679726798267992680026801268022680326804268052680626807268082680926810268112681226813268142681526816268172681826819268202682126822268232682426825268262682726828268292683026831268322683326834268352683626837268382683926840268412684226843268442684526846268472684826849268502685126852268532685426855268562685726858268592686026861268622686326864268652686626867268682686926870268712687226873268742687526876268772687826879268802688126882268832688426885268862688726888268892689026891268922689326894268952689626897268982689926900269012690226903269042690526906269072690826909269102691126912269132691426915269162691726918269192692026921269222692326924269252692626927269282692926930269312693226933269342693526936269372693826939269402694126942269432694426945269462694726948269492695026951269522695326954269552695626957269582695926960269612696226963269642696526966269672696826969269702697126972269732697426975269762697726978269792698026981269822698326984269852698626987269882698926990269912699226993269942699526996269972699826999270002700127002270032700427005270062700727008270092701027011270122701327014270152701627017270182701927020270212702227023270242702527026270272702827029270302703127032270332703427035270362703727038270392704027041270422704327044270452704627047270482704927050270512705227053270542705527056270572705827059270602706127062270632706427065270662706727068270692707027071270722707327074270752707627077270782707927080270812708227083270842708527086270872708827089270902709127092270932709427095270962709727098270992710027101271022710327104271052710627107271082710927110271112711227113271142711527116271172711827119271202712127122271232712427125271262712727128271292713027131271322713327134271352713627137271382713927140271412714227143271442714527146271472714827149271502715127152271532715427155271562715727158271592716027161271622716327164271652716627167271682716927170271712717227173271742717527176271772717827179271802718127182271832718427185271862718727188271892719027191271922719327194271952719627197271982719927200272012720227203272042720527206272072720827209272102721127212272132721427215272162721727218272192722027221272222722327224272252722627227272282722927230272312723227233272342723527236272372723827239272402724127242272432724427245272462724727248272492725027251272522725327254272552725627257272582725927260272612726227263272642726527266272672726827269272702727127272272732727427275272762727727278272792728027281272822728327284272852728627287272882728927290272912729227293272942729527296272972729827299273002730127302273032730427305273062730727308273092731027311273122731327314273152731627317273182731927320273212732227323273242732527326273272732827329273302733127332273332733427335273362733727338273392734027341273422734327344273452734627347273482734927350273512735227353273542735527356273572735827359273602736127362273632736427365273662736727368273692737027371273722737327374273752737627377273782737927380273812738227383273842738527386273872738827389273902739127392273932739427395273962739727398273992740027401274022740327404274052740627407274082740927410274112741227413274142741527416274172741827419274202742127422274232742427425274262742727428274292743027431274322743327434274352743627437274382743927440274412744227443274442744527446274472744827449274502745127452274532745427455274562745727458274592746027461274622746327464274652746627467274682746927470274712747227473274742747527476274772747827479274802748127482274832748427485274862748727488274892749027491274922749327494274952749627497274982749927500275012750227503275042750527506275072750827509275102751127512275132751427515275162751727518275192752027521275222752327524275252752627527275282752927530275312753227533275342753527536275372753827539275402754127542275432754427545275462754727548275492755027551275522755327554275552755627557275582755927560275612756227563275642756527566275672756827569275702757127572275732757427575275762757727578275792758027581275822758327584275852758627587275882758927590275912759227593275942759527596275972759827599276002760127602276032760427605276062760727608276092761027611276122761327614276152761627617276182761927620276212762227623276242762527626276272762827629276302763127632276332763427635276362763727638276392764027641276422764327644276452764627647276482764927650276512765227653276542765527656276572765827659276602766127662276632766427665276662766727668276692767027671276722767327674276752767627677276782767927680276812768227683276842768527686276872768827689276902769127692276932769427695276962769727698276992770027701277022770327704277052770627707277082770927710277112771227713277142771527716277172771827719277202772127722277232772427725277262772727728277292773027731277322773327734277352773627737277382773927740277412774227743277442774527746277472774827749277502775127752277532775427755277562775727758277592776027761277622776327764277652776627767277682776927770277712777227773277742777527776277772777827779277802778127782277832778427785277862778727788277892779027791277922779327794277952779627797277982779927800278012780227803278042780527806278072780827809278102781127812278132781427815278162781727818278192782027821278222782327824278252782627827278282782927830278312783227833278342783527836278372783827839278402784127842278432784427845278462784727848278492785027851278522785327854278552785627857278582785927860278612786227863278642786527866278672786827869278702787127872278732787427875278762787727878278792788027881278822788327884278852788627887278882788927890278912789227893278942789527896278972789827899279002790127902279032790427905279062790727908279092791027911279122791327914279152791627917279182791927920279212792227923279242792527926279272792827929279302793127932279332793427935279362793727938279392794027941279422794327944279452794627947279482794927950279512795227953279542795527956279572795827959279602796127962279632796427965279662796727968279692797027971279722797327974279752797627977279782797927980279812798227983279842798527986279872798827989279902799127992279932799427995279962799727998279992800028001280022800328004280052800628007280082800928010280112801228013280142801528016280172801828019280202802128022280232802428025280262802728028280292803028031280322803328034280352803628037280382803928040280412804228043280442804528046280472804828049280502805128052280532805428055280562805728058280592806028061280622806328064280652806628067280682806928070280712807228073280742807528076280772807828079280802808128082280832808428085280862808728088280892809028091280922809328094280952809628097280982809928100281012810228103281042810528106281072810828109281102811128112281132811428115281162811728118281192812028121281222812328124281252812628127281282812928130281312813228133281342813528136281372813828139281402814128142281432814428145281462814728148281492815028151281522815328154281552815628157281582815928160281612816228163281642816528166281672816828169281702817128172281732817428175281762817728178281792818028181281822818328184281852818628187281882818928190281912819228193281942819528196281972819828199282002820128202282032820428205282062820728208282092821028211282122821328214282152821628217282182821928220282212822228223282242822528226282272822828229282302823128232282332823428235282362823728238282392824028241282422824328244282452824628247282482824928250282512825228253282542825528256282572825828259282602826128262282632826428265282662826728268282692827028271282722827328274282752827628277282782827928280282812828228283282842828528286282872828828289282902829128292282932829428295282962829728298282992830028301283022830328304283052830628307283082830928310283112831228313283142831528316283172831828319283202832128322283232832428325283262832728328283292833028331283322833328334283352833628337283382833928340283412834228343283442834528346283472834828349283502835128352283532835428355283562835728358283592836028361283622836328364283652836628367283682836928370283712837228373283742837528376283772837828379283802838128382283832838428385283862838728388283892839028391283922839328394283952839628397283982839928400284012840228403284042840528406284072840828409284102841128412284132841428415284162841728418284192842028421284222842328424284252842628427284282842928430284312843228433284342843528436284372843828439284402844128442284432844428445284462844728448284492845028451284522845328454284552845628457284582845928460284612846228463284642846528466284672846828469284702847128472284732847428475284762847728478284792848028481284822848328484284852848628487284882848928490284912849228493284942849528496284972849828499285002850128502285032850428505285062850728508285092851028511285122851328514285152851628517285182851928520285212852228523285242852528526285272852828529285302853128532285332853428535285362853728538285392854028541285422854328544285452854628547285482854928550285512855228553285542855528556285572855828559285602856128562285632856428565285662856728568285692857028571285722857328574285752857628577285782857928580285812858228583285842858528586285872858828589285902859128592285932859428595285962859728598285992860028601286022860328604286052860628607286082860928610286112861228613286142861528616286172861828619286202862128622286232862428625286262862728628286292863028631286322863328634286352863628637286382863928640286412864228643286442864528646286472864828649286502865128652286532865428655286562865728658286592866028661286622866328664286652866628667286682866928670286712867228673286742867528676286772867828679286802868128682286832868428685286862868728688286892869028691286922869328694286952869628697286982869928700287012870228703287042870528706287072870828709287102871128712287132871428715287162871728718287192872028721287222872328724287252872628727287282872928730287312873228733287342873528736287372873828739287402874128742287432874428745287462874728748287492875028751287522875328754287552875628757287582875928760287612876228763287642876528766287672876828769287702877128772287732877428775287762877728778287792878028781287822878328784287852878628787287882878928790287912879228793287942879528796287972879828799288002880128802288032880428805288062880728808288092881028811288122881328814288152881628817288182881928820288212882228823288242882528826288272882828829288302883128832288332883428835288362883728838288392884028841288422884328844288452884628847288482884928850288512885228853288542885528856288572885828859288602886128862288632886428865288662886728868288692887028871288722887328874288752887628877288782887928880288812888228883288842888528886288872888828889288902889128892288932889428895288962889728898288992890028901289022890328904289052890628907289082890928910289112891228913289142891528916289172891828919289202892128922289232892428925289262892728928289292893028931289322893328934289352893628937289382893928940289412894228943289442894528946289472894828949289502895128952289532895428955289562895728958289592896028961289622896328964289652896628967289682896928970289712897228973289742897528976289772897828979289802898128982289832898428985289862898728988289892899028991289922899328994289952899628997289982899929000290012900229003290042900529006290072900829009290102901129012290132901429015290162901729018290192902029021290222902329024290252902629027290282902929030290312903229033290342903529036290372903829039290402904129042290432904429045290462904729048290492905029051290522905329054290552905629057290582905929060290612906229063290642906529066290672906829069290702907129072290732907429075290762907729078290792908029081290822908329084290852908629087290882908929090290912909229093290942909529096290972909829099291002910129102291032910429105291062910729108291092911029111291122911329114291152911629117291182911929120291212912229123291242912529126291272912829129291302913129132291332913429135291362913729138291392914029141291422914329144291452914629147291482914929150291512915229153291542915529156291572915829159291602916129162291632916429165291662916729168291692917029171291722917329174291752917629177291782917929180291812918229183291842918529186291872918829189291902919129192291932919429195291962919729198291992920029201292022920329204292052920629207292082920929210292112921229213292142921529216292172921829219292202922129222292232922429225292262922729228292292923029231292322923329234292352923629237292382923929240292412924229243292442924529246292472924829249292502925129252292532925429255292562925729258292592926029261292622926329264292652926629267292682926929270292712927229273292742927529276292772927829279292802928129282292832928429285292862928729288292892929029291292922929329294292952929629297292982929929300293012930229303293042930529306293072930829309293102931129312293132931429315293162931729318293192932029321293222932329324293252932629327293282932929330293312933229333293342933529336293372933829339293402934129342293432934429345293462934729348293492935029351293522935329354293552935629357293582935929360293612936229363293642936529366293672936829369293702937129372293732937429375293762937729378293792938029381293822938329384293852938629387293882938929390293912939229393293942939529396293972939829399294002940129402294032940429405294062940729408294092941029411294122941329414294152941629417294182941929420294212942229423294242942529426294272942829429294302943129432294332943429435294362943729438294392944029441294422944329444294452944629447294482944929450294512945229453294542945529456294572945829459294602946129462294632946429465294662946729468294692947029471294722947329474294752947629477294782947929480294812948229483294842948529486294872948829489294902949129492294932949429495294962949729498294992950029501295022950329504295052950629507295082950929510295112951229513295142951529516295172951829519295202952129522295232952429525295262952729528295292953029531295322953329534295352953629537295382953929540295412954229543295442954529546295472954829549295502955129552295532955429555295562955729558295592956029561295622956329564295652956629567295682956929570295712957229573295742957529576295772957829579295802958129582295832958429585295862958729588295892959029591295922959329594295952959629597295982959929600296012960229603296042960529606296072960829609296102961129612296132961429615296162961729618296192962029621296222962329624296252962629627296282962929630296312963229633296342963529636296372963829639296402964129642296432964429645296462964729648296492965029651296522965329654296552965629657296582965929660296612966229663296642966529666296672966829669296702967129672296732967429675296762967729678296792968029681296822968329684296852968629687296882968929690296912969229693296942969529696296972969829699297002970129702297032970429705297062970729708297092971029711297122971329714297152971629717297182971929720297212972229723297242972529726297272972829729297302973129732297332973429735297362973729738297392974029741297422974329744297452974629747297482974929750297512975229753297542975529756297572975829759297602976129762297632976429765297662976729768297692977029771297722977329774297752977629777297782977929780297812978229783297842978529786297872978829789297902979129792297932979429795297962979729798297992980029801298022980329804298052980629807298082980929810298112981229813298142981529816298172981829819298202982129822298232982429825298262982729828298292983029831298322983329834298352983629837298382983929840298412984229843298442984529846298472984829849298502985129852298532985429855298562985729858298592986029861298622986329864298652986629867298682986929870298712987229873298742987529876298772987829879298802988129882298832988429885298862988729888298892989029891298922989329894298952989629897298982989929900299012990229903299042990529906299072990829909299102991129912299132991429915299162991729918299192992029921299222992329924299252992629927299282992929930299312993229933299342993529936299372993829939299402994129942299432994429945299462994729948299492995029951299522995329954299552995629957299582995929960299612996229963299642996529966299672996829969299702997129972299732997429975299762997729978299792998029981299822998329984299852998629987299882998929990299912999229993299942999529996299972999829999300003000130002300033000430005300063000730008300093001030011300123001330014300153001630017300183001930020300213002230023300243002530026300273002830029300303003130032300333003430035300363003730038300393004030041300423004330044300453004630047300483004930050300513005230053300543005530056300573005830059300603006130062300633006430065300663006730068300693007030071300723007330074300753007630077300783007930080300813008230083300843008530086300873008830089300903009130092300933009430095300963009730098300993010030101301023010330104301053010630107301083010930110301113011230113301143011530116301173011830119301203012130122301233012430125301263012730128301293013030131301323013330134301353013630137301383013930140301413014230143301443014530146301473014830149301503015130152301533015430155301563015730158301593016030161301623016330164301653016630167301683016930170301713017230173301743017530176301773017830179301803018130182301833018430185301863018730188301893019030191301923019330194301953019630197301983019930200302013020230203302043020530206302073020830209302103021130212302133021430215302163021730218302193022030221302223022330224302253022630227302283022930230302313023230233302343023530236302373023830239302403024130242302433024430245302463024730248302493025030251302523025330254302553025630257302583025930260302613026230263302643026530266302673026830269302703027130272302733027430275302763027730278302793028030281302823028330284302853028630287302883028930290302913029230293302943029530296302973029830299303003030130302303033030430305303063030730308303093031030311303123031330314303153031630317303183031930320303213032230323303243032530326303273032830329303303033130332303333033430335303363033730338303393034030341303423034330344303453034630347303483034930350303513035230353303543035530356303573035830359303603036130362303633036430365303663036730368303693037030371303723037330374303753037630377303783037930380303813038230383303843038530386303873038830389303903039130392303933039430395303963039730398303993040030401304023040330404304053040630407304083040930410304113041230413304143041530416304173041830419304203042130422304233042430425304263042730428304293043030431304323043330434304353043630437304383043930440304413044230443304443044530446304473044830449304503045130452304533045430455304563045730458304593046030461304623046330464304653046630467304683046930470304713047230473304743047530476304773047830479304803048130482304833048430485304863048730488304893049030491304923049330494304953049630497304983049930500305013050230503305043050530506305073050830509305103051130512305133051430515305163051730518305193052030521305223052330524305253052630527305283052930530305313053230533305343053530536305373053830539305403054130542305433054430545305463054730548305493055030551305523055330554305553055630557305583055930560305613056230563305643056530566305673056830569305703057130572305733057430575305763057730578305793058030581305823058330584305853058630587305883058930590305913059230593305943059530596305973059830599306003060130602306033060430605306063060730608306093061030611306123061330614306153061630617306183061930620306213062230623306243062530626306273062830629306303063130632306333063430635306363063730638306393064030641306423064330644306453064630647306483064930650306513065230653306543065530656306573065830659306603066130662306633066430665306663066730668306693067030671306723067330674306753067630677306783067930680306813068230683306843068530686306873068830689306903069130692306933069430695306963069730698306993070030701307023070330704307053070630707307083070930710307113071230713307143071530716307173071830719307203072130722307233072430725307263072730728307293073030731307323073330734307353073630737307383073930740307413074230743307443074530746307473074830749307503075130752307533075430755307563075730758307593076030761307623076330764307653076630767307683076930770307713077230773307743077530776307773077830779307803078130782307833078430785307863078730788307893079030791307923079330794307953079630797307983079930800308013080230803308043080530806308073080830809308103081130812308133081430815308163081730818308193082030821308223082330824308253082630827308283082930830308313083230833308343083530836308373083830839308403084130842308433084430845308463084730848308493085030851308523085330854308553085630857308583085930860308613086230863308643086530866308673086830869308703087130872308733087430875308763087730878308793088030881308823088330884308853088630887308883088930890308913089230893308943089530896308973089830899309003090130902309033090430905309063090730908309093091030911309123091330914309153091630917309183091930920309213092230923309243092530926309273092830929309303093130932309333093430935309363093730938309393094030941309423094330944309453094630947309483094930950309513095230953309543095530956309573095830959309603096130962309633096430965309663096730968309693097030971309723097330974309753097630977309783097930980309813098230983309843098530986309873098830989309903099130992309933099430995309963099730998309993100031001310023100331004310053100631007310083100931010310113101231013310143101531016310173101831019310203102131022310233102431025310263102731028310293103031031310323103331034310353103631037310383103931040310413104231043310443104531046310473104831049310503105131052310533105431055310563105731058310593106031061310623106331064310653106631067310683106931070310713107231073310743107531076310773107831079310803108131082310833108431085310863108731088310893109031091310923109331094310953109631097310983109931100311013110231103311043110531106311073110831109311103111131112311133111431115311163111731118311193112031121311223112331124311253112631127311283112931130311313113231133311343113531136311373113831139311403114131142311433114431145311463114731148311493115031151311523115331154311553115631157311583115931160311613116231163311643116531166311673116831169311703117131172311733117431175311763117731178311793118031181311823118331184311853118631187311883118931190311913119231193311943119531196311973119831199312003120131202312033120431205312063120731208312093121031211312123121331214312153121631217312183121931220312213122231223312243122531226312273122831229312303123131232312333123431235312363123731238312393124031241312423124331244312453124631247312483124931250312513125231253312543125531256312573125831259312603126131262312633126431265312663126731268312693127031271312723127331274312753127631277312783127931280312813128231283312843128531286312873128831289312903129131292312933129431295312963129731298312993130031301313023130331304313053130631307313083130931310313113131231313313143131531316313173131831319313203132131322313233132431325313263132731328313293133031331313323133331334313353133631337313383133931340313413134231343313443134531346313473134831349313503135131352313533135431355313563135731358313593136031361313623136331364313653136631367313683136931370313713137231373313743137531376313773137831379313803138131382313833138431385313863138731388313893139031391313923139331394313953139631397313983139931400314013140231403314043140531406314073140831409314103141131412314133141431415314163141731418314193142031421314223142331424314253142631427314283142931430314313143231433314343143531436314373143831439314403144131442314433144431445314463144731448314493145031451314523145331454314553145631457314583145931460314613146231463314643146531466314673146831469314703147131472314733147431475314763147731478314793148031481314823148331484314853148631487314883148931490314913149231493314943149531496314973149831499315003150131502315033150431505315063150731508315093151031511315123151331514315153151631517315183151931520315213152231523315243152531526315273152831529315303153131532315333153431535315363153731538315393154031541315423154331544315453154631547315483154931550315513155231553315543155531556315573155831559315603156131562315633156431565315663156731568315693157031571315723157331574315753157631577315783157931580315813158231583315843158531586315873158831589315903159131592315933159431595315963159731598315993160031601316023160331604316053160631607316083160931610316113161231613316143161531616316173161831619316203162131622316233162431625316263162731628316293163031631316323163331634316353163631637316383163931640316413164231643316443164531646316473164831649316503165131652316533165431655316563165731658316593166031661316623166331664316653166631667316683166931670316713167231673316743167531676316773167831679316803168131682316833168431685316863168731688316893169031691316923169331694316953169631697316983169931700317013170231703317043170531706317073170831709317103171131712317133171431715317163171731718317193172031721317223172331724317253172631727317283172931730317313173231733317343173531736317373173831739317403174131742317433174431745317463174731748317493175031751317523175331754317553175631757317583175931760317613176231763317643176531766317673176831769317703177131772317733177431775317763177731778317793178031781317823178331784317853178631787317883178931790317913179231793317943179531796317973179831799318003180131802318033180431805318063180731808318093181031811318123181331814318153181631817318183181931820318213182231823318243182531826318273182831829318303183131832318333183431835318363183731838318393184031841318423184331844318453184631847318483184931850318513185231853318543185531856318573185831859318603186131862318633186431865318663186731868318693187031871318723187331874318753187631877318783187931880318813188231883318843188531886318873188831889318903189131892318933189431895318963189731898318993190031901319023190331904319053190631907319083190931910319113191231913319143191531916319173191831919319203192131922319233192431925319263192731928319293193031931319323193331934319353193631937319383193931940319413194231943319443194531946319473194831949319503195131952319533195431955319563195731958319593196031961319623196331964319653196631967319683196931970319713197231973319743197531976319773197831979319803198131982319833198431985319863198731988319893199031991319923199331994319953199631997319983199932000320013200232003320043200532006320073200832009320103201132012320133201432015320163201732018320193202032021320223202332024320253202632027320283202932030320313203232033320343203532036320373203832039320403204132042320433204432045320463204732048320493205032051320523205332054320553205632057320583205932060320613206232063320643206532066320673206832069320703207132072320733207432075320763207732078320793208032081320823208332084320853208632087320883208932090320913209232093320943209532096320973209832099321003210132102321033210432105321063210732108321093211032111321123211332114321153211632117321183211932120321213212232123321243212532126321273212832129321303213132132321333213432135321363213732138321393214032141321423214332144321453214632147321483214932150321513215232153321543215532156321573215832159321603216132162321633216432165321663216732168321693217032171321723217332174321753217632177321783217932180321813218232183321843218532186321873218832189321903219132192321933219432195321963219732198321993220032201322023220332204322053220632207322083220932210322113221232213322143221532216322173221832219322203222132222322233222432225322263222732228322293223032231322323223332234322353223632237322383223932240322413224232243322443224532246322473224832249322503225132252322533225432255322563225732258322593226032261322623226332264322653226632267322683226932270322713227232273322743227532276322773227832279322803228132282322833228432285322863228732288322893229032291322923229332294322953229632297322983229932300323013230232303323043230532306323073230832309323103231132312323133231432315323163231732318323193232032321323223232332324323253232632327323283232932330323313233232333323343233532336323373233832339323403234132342323433234432345323463234732348323493235032351323523235332354323553235632357323583235932360323613236232363323643236532366323673236832369323703237132372323733237432375323763237732378323793238032381323823238332384323853238632387323883238932390323913239232393323943239532396323973239832399324003240132402324033240432405324063240732408324093241032411324123241332414324153241632417324183241932420324213242232423324243242532426324273242832429324303243132432324333243432435324363243732438324393244032441324423244332444324453244632447324483244932450324513245232453324543245532456324573245832459324603246132462324633246432465324663246732468324693247032471324723247332474324753247632477324783247932480324813248232483324843248532486324873248832489324903249132492324933249432495324963249732498324993250032501325023250332504325053250632507325083250932510325113251232513325143251532516325173251832519325203252132522325233252432525325263252732528325293253032531325323253332534325353253632537325383253932540325413254232543325443254532546325473254832549325503255132552325533255432555325563255732558325593256032561325623256332564325653256632567325683256932570325713257232573325743257532576325773257832579325803258132582325833258432585325863258732588325893259032591325923259332594325953259632597325983259932600326013260232603326043260532606326073260832609326103261132612326133261432615326163261732618326193262032621326223262332624326253262632627326283262932630326313263232633326343263532636326373263832639326403264132642326433264432645326463264732648326493265032651326523265332654326553265632657326583265932660326613266232663326643266532666326673266832669326703267132672326733267432675326763267732678326793268032681326823268332684326853268632687326883268932690326913269232693326943269532696326973269832699327003270132702327033270432705327063270732708327093271032711327123271332714327153271632717327183271932720327213272232723327243272532726327273272832729327303273132732327333273432735327363273732738327393274032741327423274332744327453274632747327483274932750327513275232753327543275532756327573275832759327603276132762327633276432765327663276732768327693277032771327723277332774327753277632777327783277932780327813278232783327843278532786327873278832789327903279132792327933279432795327963279732798327993280032801328023280332804328053280632807328083280932810328113281232813328143281532816328173281832819328203282132822328233282432825328263282732828328293283032831328323283332834328353283632837328383283932840328413284232843328443284532846328473284832849328503285132852328533285432855328563285732858328593286032861328623286332864328653286632867328683286932870328713287232873328743287532876328773287832879328803288132882328833288432885328863288732888328893289032891328923289332894328953289632897328983289932900329013290232903329043290532906329073290832909329103291132912329133291432915329163291732918329193292032921329223292332924329253292632927329283292932930329313293232933329343293532936329373293832939329403294132942329433294432945329463294732948329493295032951329523295332954329553295632957329583295932960329613296232963329643296532966329673296832969329703297132972329733297432975329763297732978329793298032981329823298332984329853298632987329883298932990329913299232993329943299532996329973299832999330003300133002330033300433005330063300733008330093301033011330123301333014330153301633017330183301933020330213302233023330243302533026330273302833029330303303133032330333303433035330363303733038330393304033041330423304333044330453304633047330483304933050330513305233053330543305533056330573305833059330603306133062330633306433065330663306733068330693307033071330723307333074330753307633077330783307933080330813308233083330843308533086330873308833089330903309133092330933309433095330963309733098330993310033101331023310333104331053310633107331083310933110331113311233113331143311533116331173311833119331203312133122331233312433125331263312733128331293313033131331323313333134331353313633137331383313933140331413314233143331443314533146331473314833149331503315133152331533315433155331563315733158331593316033161331623316333164331653316633167331683316933170331713317233173331743317533176331773317833179331803318133182331833318433185331863318733188331893319033191331923319333194331953319633197331983319933200332013320233203332043320533206332073320833209332103321133212332133321433215332163321733218332193322033221332223322333224332253322633227332283322933230332313323233233332343323533236332373323833239332403324133242332433324433245332463324733248332493325033251332523325333254332553325633257332583325933260332613326233263332643326533266332673326833269332703327133272332733327433275332763327733278332793328033281332823328333284332853328633287332883328933290332913329233293332943329533296332973329833299333003330133302333033330433305333063330733308333093331033311333123331333314333153331633317333183331933320333213332233323333243332533326333273332833329333303333133332333333333433335333363333733338333393334033341333423334333344333453334633347333483334933350333513335233353333543335533356333573335833359333603336133362333633336433365333663336733368333693337033371333723337333374333753337633377333783337933380333813338233383333843338533386333873338833389333903339133392333933339433395333963339733398333993340033401334023340333404334053340633407334083340933410334113341233413334143341533416334173341833419334203342133422334233342433425334263342733428334293343033431334323343333434334353343633437334383343933440334413344233443334443344533446334473344833449334503345133452334533345433455334563345733458334593346033461334623346333464334653346633467334683346933470334713347233473334743347533476334773347833479334803348133482334833348433485334863348733488334893349033491334923349333494334953349633497334983349933500335013350233503335043350533506335073350833509335103351133512335133351433515335163351733518335193352033521335223352333524335253352633527335283352933530335313353233533335343353533536335373353833539335403354133542335433354433545335463354733548335493355033551335523355333554335553355633557335583355933560335613356233563335643356533566335673356833569335703357133572335733357433575335763357733578335793358033581335823358333584335853358633587335883358933590335913359233593335943359533596335973359833599336003360133602336033360433605336063360733608336093361033611336123361333614336153361633617336183361933620336213362233623336243362533626336273362833629336303363133632336333363433635336363363733638336393364033641336423364333644336453364633647336483364933650336513365233653336543365533656336573365833659336603366133662336633366433665336663366733668336693367033671336723367333674336753367633677336783367933680336813368233683336843368533686336873368833689336903369133692336933369433695336963369733698336993370033701337023370333704337053370633707337083370933710337113371233713337143371533716337173371833719337203372133722337233372433725337263372733728337293373033731337323373333734337353373633737337383373933740337413374233743337443374533746337473374833749337503375133752337533375433755337563375733758337593376033761337623376333764337653376633767337683376933770337713377233773337743377533776337773377833779337803378133782337833378433785337863378733788337893379033791337923379333794337953379633797337983379933800338013380233803338043380533806338073380833809338103381133812338133381433815338163381733818338193382033821338223382333824338253382633827338283382933830338313383233833338343383533836338373383833839338403384133842338433384433845338463384733848338493385033851338523385333854338553385633857338583385933860338613386233863338643386533866338673386833869338703387133872338733387433875338763387733878338793388033881338823388333884338853388633887338883388933890338913389233893338943389533896338973389833899339003390133902339033390433905339063390733908339093391033911339123391333914339153391633917339183391933920339213392233923339243392533926339273392833929339303393133932339333393433935339363393733938339393394033941339423394333944339453394633947339483394933950339513395233953339543395533956339573395833959339603396133962339633396433965339663396733968339693397033971339723397333974339753397633977339783397933980339813398233983339843398533986339873398833989339903399133992339933399433995339963399733998339993400034001340023400334004340053400634007340083400934010340113401234013340143401534016340173401834019340203402134022340233402434025340263402734028340293403034031340323403334034340353403634037340383403934040340413404234043340443404534046340473404834049340503405134052340533405434055340563405734058340593406034061340623406334064340653406634067340683406934070340713407234073340743407534076340773407834079340803408134082340833408434085340863408734088340893409034091340923409334094340953409634097340983409934100341013410234103341043410534106341073410834109341103411134112341133411434115341163411734118341193412034121341223412334124341253412634127341283412934130341313413234133341343413534136341373413834139341403414134142341433414434145341463414734148341493415034151341523415334154341553415634157341583415934160341613416234163341643416534166341673416834169341703417134172341733417434175341763417734178341793418034181341823418334184341853418634187341883418934190341913419234193341943419534196341973419834199342003420134202342033420434205342063420734208342093421034211342123421334214342153421634217342183421934220342213422234223342243422534226342273422834229342303423134232342333423434235342363423734238342393424034241342423424334244342453424634247342483424934250342513425234253342543425534256342573425834259342603426134262342633426434265342663426734268342693427034271342723427334274342753427634277342783427934280342813428234283342843428534286342873428834289342903429134292342933429434295342963429734298342993430034301343023430334304343053430634307343083430934310343113431234313343143431534316343173431834319343203432134322343233432434325343263432734328343293433034331343323433334334343353433634337343383433934340343413434234343343443434534346343473434834349343503435134352343533435434355343563435734358343593436034361343623436334364343653436634367343683436934370343713437234373343743437534376343773437834379343803438134382343833438434385343863438734388343893439034391343923439334394343953439634397343983439934400344013440234403344043440534406344073440834409344103441134412344133441434415344163441734418344193442034421344223442334424344253442634427344283442934430344313443234433344343443534436344373443834439344403444134442344433444434445344463444734448344493445034451344523445334454344553445634457344583445934460344613446234463344643446534466344673446834469344703447134472344733447434475344763447734478344793448034481344823448334484344853448634487344883448934490344913449234493344943449534496344973449834499345003450134502345033450434505345063450734508345093451034511345123451334514345153451634517345183451934520345213452234523345243452534526345273452834529345303453134532345333453434535345363453734538345393454034541345423454334544345453454634547345483454934550345513455234553345543455534556345573455834559345603456134562345633456434565345663456734568345693457034571345723457334574345753457634577345783457934580345813458234583345843458534586345873458834589345903459134592345933459434595345963459734598345993460034601346023460334604346053460634607346083460934610346113461234613346143461534616346173461834619346203462134622346233462434625346263462734628346293463034631346323463334634346353463634637346383463934640346413464234643346443464534646346473464834649346503465134652346533465434655346563465734658346593466034661346623466334664346653466634667346683466934670346713467234673346743467534676346773467834679346803468134682346833468434685346863468734688346893469034691346923469334694346953469634697346983469934700347013470234703347043470534706347073470834709347103471134712347133471434715347163471734718347193472034721347223472334724347253472634727347283472934730347313473234733347343473534736347373473834739347403474134742347433474434745347463474734748347493475034751347523475334754347553475634757347583475934760347613476234763347643476534766347673476834769347703477134772347733477434775347763477734778347793478034781347823478334784347853478634787347883478934790347913479234793347943479534796347973479834799348003480134802348033480434805348063480734808348093481034811348123481334814348153481634817348183481934820348213482234823348243482534826348273482834829348303483134832348333483434835348363483734838348393484034841348423484334844348453484634847348483484934850348513485234853348543485534856348573485834859348603486134862348633486434865348663486734868348693487034871348723487334874348753487634877348783487934880348813488234883348843488534886348873488834889348903489134892348933489434895348963489734898348993490034901349023490334904349053490634907349083490934910349113491234913349143491534916349173491834919349203492134922349233492434925349263492734928349293493034931349323493334934349353493634937349383493934940349413494234943349443494534946349473494834949349503495134952349533495434955349563495734958349593496034961349623496334964349653496634967349683496934970349713497234973349743497534976349773497834979349803498134982349833498434985349863498734988349893499034991349923499334994349953499634997349983499935000350013500235003350043500535006350073500835009350103501135012350133501435015350163501735018350193502035021350223502335024350253502635027350283502935030350313503235033350343503535036350373503835039350403504135042350433504435045350463504735048350493505035051350523505335054350553505635057350583505935060350613506235063350643506535066350673506835069350703507135072350733507435075350763507735078350793508035081350823508335084350853508635087350883508935090350913509235093350943509535096350973509835099351003510135102351033510435105351063510735108351093511035111351123511335114351153511635117351183511935120351213512235123351243512535126351273512835129351303513135132351333513435135351363513735138351393514035141351423514335144351453514635147351483514935150351513515235153351543515535156351573515835159351603516135162351633516435165351663516735168351693517035171351723517335174351753517635177351783517935180351813518235183351843518535186351873518835189351903519135192351933519435195351963519735198351993520035201352023520335204352053520635207352083520935210352113521235213352143521535216352173521835219352203522135222352233522435225352263522735228352293523035231352323523335234352353523635237352383523935240352413524235243352443524535246352473524835249352503525135252352533525435255352563525735258352593526035261352623526335264352653526635267352683526935270352713527235273352743527535276352773527835279352803528135282352833528435285352863528735288352893529035291352923529335294352953529635297352983529935300353013530235303353043530535306353073530835309353103531135312353133531435315353163531735318353193532035321353223532335324353253532635327353283532935330353313533235333353343533535336353373533835339353403534135342353433534435345353463534735348353493535035351353523535335354353553535635357353583535935360353613536235363353643536535366353673536835369353703537135372353733537435375353763537735378353793538035381353823538335384353853538635387353883538935390353913539235393353943539535396353973539835399354003540135402354033540435405354063540735408354093541035411354123541335414354153541635417354183541935420354213542235423354243542535426354273542835429354303543135432354333543435435354363543735438354393544035441354423544335444354453544635447354483544935450354513545235453354543545535456354573545835459354603546135462354633546435465354663546735468354693547035471354723547335474354753547635477354783547935480354813548235483354843548535486354873548835489354903549135492354933549435495354963549735498354993550035501355023550335504355053550635507355083550935510355113551235513355143551535516355173551835519355203552135522355233552435525355263552735528355293553035531355323553335534355353553635537355383553935540355413554235543355443554535546355473554835549355503555135552355533555435555355563555735558355593556035561355623556335564355653556635567355683556935570355713557235573355743557535576355773557835579355803558135582355833558435585355863558735588355893559035591355923559335594355953559635597355983559935600356013560235603356043560535606356073560835609356103561135612356133561435615356163561735618356193562035621356223562335624356253562635627356283562935630356313563235633356343563535636356373563835639356403564135642356433564435645356463564735648356493565035651356523565335654356553565635657356583565935660356613566235663356643566535666356673566835669356703567135672356733567435675356763567735678356793568035681356823568335684356853568635687356883568935690356913569235693356943569535696356973569835699357003570135702357033570435705357063570735708357093571035711357123571335714357153571635717357183571935720357213572235723357243572535726357273572835729357303573135732357333573435735357363573735738357393574035741357423574335744357453574635747357483574935750357513575235753357543575535756357573575835759357603576135762357633576435765357663576735768357693577035771357723577335774357753577635777357783577935780357813578235783357843578535786357873578835789357903579135792357933579435795357963579735798357993580035801358023580335804358053580635807358083580935810358113581235813358143581535816358173581835819358203582135822358233582435825358263582735828358293583035831358323583335834358353583635837358383583935840358413584235843358443584535846358473584835849358503585135852358533585435855358563585735858358593586035861358623586335864358653586635867358683586935870358713587235873358743587535876358773587835879358803588135882358833588435885358863588735888358893589035891358923589335894358953589635897358983589935900359013590235903359043590535906359073590835909359103591135912359133591435915359163591735918359193592035921359223592335924359253592635927359283592935930359313593235933359343593535936359373593835939359403594135942359433594435945359463594735948359493595035951359523595335954359553595635957359583595935960359613596235963359643596535966359673596835969359703597135972359733597435975359763597735978359793598035981359823598335984359853598635987359883598935990359913599235993359943599535996359973599835999360003600136002360033600436005360063600736008360093601036011360123601336014360153601636017360183601936020360213602236023360243602536026360273602836029360303603136032360333603436035360363603736038360393604036041360423604336044360453604636047360483604936050360513605236053360543605536056360573605836059360603606136062360633606436065360663606736068360693607036071360723607336074360753607636077360783607936080360813608236083360843608536086360873608836089360903609136092360933609436095360963609736098360993610036101361023610336104361053610636107361083610936110361113611236113361143611536116361173611836119361203612136122361233612436125361263612736128361293613036131361323613336134361353613636137361383613936140361413614236143361443614536146361473614836149361503615136152361533615436155361563615736158361593616036161361623616336164361653616636167361683616936170361713617236173361743617536176361773617836179361803618136182361833618436185361863618736188361893619036191361923619336194361953619636197361983619936200362013620236203362043620536206362073620836209362103621136212362133621436215362163621736218362193622036221362223622336224362253622636227362283622936230362313623236233362343623536236362373623836239362403624136242362433624436245362463624736248362493625036251362523625336254362553625636257362583625936260362613626236263362643626536266362673626836269362703627136272362733627436275362763627736278362793628036281362823628336284362853628636287362883628936290362913629236293362943629536296362973629836299363003630136302363033630436305363063630736308363093631036311363123631336314363153631636317363183631936320363213632236323363243632536326363273632836329363303633136332363333633436335363363633736338363393634036341363423634336344363453634636347363483634936350363513635236353363543635536356363573635836359363603636136362363633636436365363663636736368363693637036371363723637336374363753637636377363783637936380363813638236383363843638536386363873638836389363903639136392363933639436395363963639736398363993640036401364023640336404364053640636407364083640936410364113641236413364143641536416364173641836419364203642136422364233642436425364263642736428364293643036431364323643336434364353643636437364383643936440364413644236443364443644536446364473644836449364503645136452364533645436455364563645736458364593646036461364623646336464364653646636467364683646936470364713647236473364743647536476364773647836479364803648136482364833648436485364863648736488364893649036491364923649336494364953649636497364983649936500365013650236503365043650536506365073650836509365103651136512365133651436515365163651736518365193652036521365223652336524365253652636527365283652936530365313653236533365343653536536365373653836539365403654136542365433654436545365463654736548365493655036551365523655336554365553655636557365583655936560365613656236563365643656536566365673656836569365703657136572365733657436575365763657736578365793658036581365823658336584365853658636587365883658936590365913659236593365943659536596365973659836599366003660136602366033660436605366063660736608366093661036611366123661336614366153661636617366183661936620366213662236623366243662536626366273662836629366303663136632366333663436635366363663736638366393664036641366423664336644366453664636647366483664936650366513665236653366543665536656366573665836659366603666136662366633666436665366663666736668366693667036671366723667336674366753667636677366783667936680366813668236683366843668536686366873668836689366903669136692366933669436695366963669736698366993670036701367023670336704367053670636707367083670936710367113671236713367143671536716367173671836719367203672136722367233672436725367263672736728367293673036731367323673336734367353673636737367383673936740367413674236743367443674536746367473674836749367503675136752367533675436755367563675736758367593676036761367623676336764367653676636767367683676936770367713677236773367743677536776367773677836779367803678136782367833678436785367863678736788367893679036791367923679336794367953679636797367983679936800368013680236803368043680536806368073680836809368103681136812368133681436815368163681736818368193682036821368223682336824368253682636827368283682936830368313683236833368343683536836368373683836839368403684136842368433684436845368463684736848368493685036851368523685336854368553685636857368583685936860368613686236863368643686536866368673686836869368703687136872368733687436875368763687736878368793688036881368823688336884368853688636887368883688936890368913689236893368943689536896368973689836899369003690136902369033690436905369063690736908369093691036911369123691336914369153691636917369183691936920369213692236923369243692536926369273692836929369303693136932369333693436935369363693736938369393694036941369423694336944369453694636947369483694936950369513695236953369543695536956369573695836959369603696136962369633696436965369663696736968369693697036971369723697336974369753697636977369783697936980369813698236983369843698536986369873698836989369903699136992369933699436995369963699736998369993700037001370023700337004370053700637007370083700937010370113701237013370143701537016370173701837019370203702137022370233702437025370263702737028370293703037031370323703337034370353703637037370383703937040370413704237043370443704537046370473704837049370503705137052370533705437055370563705737058370593706037061370623706337064370653706637067370683706937070370713707237073370743707537076370773707837079370803708137082370833708437085370863708737088370893709037091370923709337094370953709637097370983709937100371013710237103371043710537106371073710837109371103711137112371133711437115371163711737118371193712037121371223712337124371253712637127371283712937130371313713237133371343713537136371373713837139371403714137142371433714437145371463714737148371493715037151371523715337154371553715637157371583715937160371613716237163371643716537166371673716837169371703717137172371733717437175371763717737178371793718037181371823718337184371853718637187371883718937190371913719237193371943719537196371973719837199372003720137202372033720437205372063720737208372093721037211372123721337214372153721637217372183721937220372213722237223372243722537226372273722837229372303723137232372333723437235372363723737238372393724037241372423724337244372453724637247372483724937250372513725237253372543725537256372573725837259372603726137262372633726437265372663726737268372693727037271372723727337274372753727637277372783727937280372813728237283372843728537286372873728837289372903729137292372933729437295372963729737298372993730037301373023730337304373053730637307373083730937310373113731237313373143731537316373173731837319373203732137322373233732437325373263732737328373293733037331373323733337334373353733637337373383733937340373413734237343373443734537346373473734837349373503735137352373533735437355373563735737358373593736037361373623736337364373653736637367373683736937370373713737237373373743737537376373773737837379373803738137382373833738437385373863738737388373893739037391373923739337394373953739637397373983739937400374013740237403374043740537406374073740837409374103741137412374133741437415374163741737418374193742037421374223742337424374253742637427374283742937430374313743237433374343743537436374373743837439374403744137442374433744437445374463744737448374493745037451374523745337454374553745637457374583745937460374613746237463374643746537466374673746837469374703747137472374733747437475374763747737478374793748037481374823748337484374853748637487374883748937490374913749237493374943749537496374973749837499375003750137502375033750437505375063750737508375093751037511375123751337514375153751637517375183751937520375213752237523375243752537526375273752837529375303753137532375333753437535375363753737538375393754037541375423754337544375453754637547375483754937550375513755237553375543755537556375573755837559375603756137562375633756437565375663756737568375693757037571375723757337574375753757637577375783757937580375813758237583375843758537586375873758837589375903759137592375933759437595375963759737598375993760037601376023760337604376053760637607376083760937610376113761237613376143761537616376173761837619376203762137622376233762437625376263762737628376293763037631376323763337634376353763637637376383763937640376413764237643376443764537646376473764837649376503765137652376533765437655376563765737658376593766037661376623766337664376653766637667376683766937670376713767237673376743767537676376773767837679376803768137682376833768437685376863768737688376893769037691376923769337694376953769637697376983769937700377013770237703377043770537706377073770837709377103771137712377133771437715377163771737718377193772037721377223772337724377253772637727377283772937730377313773237733377343773537736377373773837739377403774137742377433774437745377463774737748377493775037751377523775337754377553775637757377583775937760377613776237763377643776537766377673776837769377703777137772377733777437775377763777737778377793778037781377823778337784377853778637787377883778937790377913779237793377943779537796377973779837799378003780137802378033780437805378063780737808378093781037811378123781337814378153781637817378183781937820378213782237823378243782537826378273782837829378303783137832378333783437835378363783737838378393784037841378423784337844378453784637847378483784937850378513785237853378543785537856378573785837859378603786137862378633786437865378663786737868378693787037871378723787337874378753787637877378783787937880378813788237883378843788537886378873788837889378903789137892378933789437895378963789737898378993790037901379023790337904379053790637907379083790937910379113791237913379143791537916379173791837919379203792137922379233792437925379263792737928379293793037931379323793337934379353793637937379383793937940379413794237943379443794537946379473794837949379503795137952379533795437955379563795737958379593796037961379623796337964379653796637967379683796937970379713797237973379743797537976379773797837979379803798137982379833798437985379863798737988379893799037991379923799337994379953799637997379983799938000380013800238003380043800538006380073800838009380103801138012380133801438015380163801738018380193802038021380223802338024380253802638027380283802938030380313803238033380343803538036380373803838039380403804138042380433804438045380463804738048380493805038051380523805338054380553805638057380583805938060380613806238063380643806538066380673806838069380703807138072380733807438075380763807738078380793808038081380823808338084380853808638087380883808938090380913809238093380943809538096380973809838099381003810138102381033810438105381063810738108381093811038111381123811338114381153811638117381183811938120381213812238123381243812538126381273812838129381303813138132381333813438135381363813738138381393814038141381423814338144381453814638147381483814938150381513815238153381543815538156381573815838159381603816138162381633816438165381663816738168381693817038171381723817338174381753817638177381783817938180381813818238183381843818538186381873818838189381903819138192381933819438195381963819738198381993820038201382023820338204382053820638207382083820938210382113821238213382143821538216382173821838219382203822138222382233822438225382263822738228382293823038231382323823338234382353823638237382383823938240382413824238243382443824538246382473824838249382503825138252382533825438255382563825738258382593826038261382623826338264382653826638267382683826938270382713827238273382743827538276382773827838279382803828138282382833828438285382863828738288382893829038291382923829338294382953829638297382983829938300383013830238303383043830538306383073830838309383103831138312383133831438315383163831738318383193832038321383223832338324383253832638327383283832938330383313833238333383343833538336383373833838339383403834138342383433834438345383463834738348383493835038351383523835338354383553835638357383583835938360383613836238363383643836538366383673836838369383703837138372383733837438375383763837738378383793838038381383823838338384383853838638387383883838938390383913839238393383943839538396383973839838399384003840138402384033840438405384063840738408384093841038411384123841338414384153841638417384183841938420384213842238423384243842538426384273842838429384303843138432384333843438435384363843738438384393844038441384423844338444384453844638447384483844938450384513845238453384543845538456384573845838459384603846138462384633846438465384663846738468384693847038471384723847338474384753847638477384783847938480384813848238483384843848538486384873848838489384903849138492384933849438495384963849738498384993850038501385023850338504385053850638507385083850938510385113851238513385143851538516385173851838519385203852138522385233852438525385263852738528385293853038531385323853338534385353853638537385383853938540385413854238543385443854538546385473854838549385503855138552385533855438555385563855738558385593856038561385623856338564385653856638567385683856938570385713857238573385743857538576385773857838579385803858138582385833858438585385863858738588385893859038591385923859338594385953859638597385983859938600386013860238603386043860538606386073860838609386103861138612386133861438615386163861738618386193862038621386223862338624386253862638627386283862938630386313863238633386343863538636386373863838639386403864138642386433864438645386463864738648386493865038651386523865338654386553865638657386583865938660386613866238663386643866538666386673866838669386703867138672386733867438675386763867738678386793868038681386823868338684386853868638687386883868938690386913869238693386943869538696386973869838699387003870138702387033870438705387063870738708387093871038711387123871338714387153871638717387183871938720387213872238723387243872538726387273872838729387303873138732387333873438735387363873738738387393874038741387423874338744387453874638747387483874938750387513875238753387543875538756387573875838759387603876138762387633876438765387663876738768387693877038771387723877338774387753877638777387783877938780387813878238783387843878538786387873878838789387903879138792387933879438795387963879738798387993880038801388023880338804388053880638807388083880938810388113881238813388143881538816388173881838819388203882138822388233882438825388263882738828388293883038831388323883338834388353883638837388383883938840388413884238843388443884538846388473884838849388503885138852388533885438855388563885738858388593886038861388623886338864388653886638867388683886938870388713887238873388743887538876388773887838879388803888138882388833888438885388863888738888388893889038891388923889338894388953889638897388983889938900389013890238903389043890538906389073890838909389103891138912389133891438915389163891738918389193892038921389223892338924389253892638927389283892938930389313893238933389343893538936389373893838939389403894138942389433894438945389463894738948389493895038951389523895338954389553895638957389583895938960389613896238963389643896538966389673896838969389703897138972389733897438975389763897738978389793898038981389823898338984389853898638987389883898938990389913899238993389943899538996389973899838999390003900139002390033900439005390063900739008390093901039011390123901339014390153901639017390183901939020390213902239023390243902539026390273902839029390303903139032390333903439035390363903739038390393904039041390423904339044390453904639047390483904939050390513905239053390543905539056390573905839059390603906139062390633906439065390663906739068390693907039071390723907339074390753907639077390783907939080390813908239083390843908539086390873908839089390903909139092390933909439095390963909739098390993910039101391023910339104391053910639107391083910939110391113911239113391143911539116391173911839119391203912139122391233912439125391263912739128391293913039131391323913339134391353913639137391383913939140391413914239143391443914539146391473914839149391503915139152391533915439155391563915739158391593916039161391623916339164391653916639167391683916939170391713917239173391743917539176391773917839179391803918139182391833918439185391863918739188391893919039191391923919339194391953919639197391983919939200392013920239203392043920539206392073920839209392103921139212392133921439215392163921739218392193922039221392223922339224392253922639227392283922939230392313923239233392343923539236392373923839239392403924139242392433924439245392463924739248392493925039251392523925339254392553925639257392583925939260392613926239263392643926539266392673926839269392703927139272392733927439275392763927739278392793928039281392823928339284392853928639287392883928939290392913929239293392943929539296392973929839299393003930139302393033930439305393063930739308393093931039311393123931339314393153931639317393183931939320393213932239323393243932539326393273932839329393303933139332393333933439335393363933739338393393934039341393423934339344393453934639347393483934939350393513935239353393543935539356393573935839359393603936139362393633936439365393663936739368393693937039371393723937339374393753937639377393783937939380393813938239383393843938539386393873938839389393903939139392393933939439395393963939739398393993940039401394023940339404394053940639407394083940939410394113941239413394143941539416394173941839419394203942139422394233942439425394263942739428394293943039431394323943339434394353943639437394383943939440394413944239443394443944539446394473944839449394503945139452394533945439455394563945739458394593946039461394623946339464394653946639467394683946939470394713947239473394743947539476394773947839479394803948139482394833948439485394863948739488394893949039491394923949339494394953949639497394983949939500395013950239503395043950539506395073950839509395103951139512395133951439515395163951739518395193952039521395223952339524395253952639527395283952939530395313953239533395343953539536395373953839539395403954139542395433954439545395463954739548395493955039551395523955339554395553955639557395583955939560395613956239563395643956539566395673956839569395703957139572395733957439575395763957739578395793958039581395823958339584395853958639587395883958939590395913959239593395943959539596395973959839599396003960139602396033960439605396063960739608396093961039611396123961339614396153961639617396183961939620396213962239623396243962539626396273962839629396303963139632396333963439635396363963739638396393964039641396423964339644396453964639647396483964939650396513965239653396543965539656396573965839659396603966139662396633966439665396663966739668396693967039671396723967339674396753967639677396783967939680396813968239683396843968539686396873968839689396903969139692396933969439695396963969739698396993970039701397023970339704397053970639707397083970939710397113971239713397143971539716397173971839719397203972139722397233972439725397263972739728397293973039731397323973339734397353973639737397383973939740397413974239743397443974539746397473974839749397503975139752397533975439755397563975739758397593976039761397623976339764397653976639767397683976939770397713977239773397743977539776397773977839779397803978139782397833978439785397863978739788397893979039791397923979339794397953979639797397983979939800398013980239803398043980539806398073980839809398103981139812398133981439815398163981739818398193982039821398223982339824398253982639827398283982939830398313983239833398343983539836398373983839839398403984139842398433984439845398463984739848398493985039851398523985339854398553985639857398583985939860398613986239863398643986539866398673986839869398703987139872398733987439875398763987739878398793988039881398823988339884398853988639887398883988939890398913989239893398943989539896398973989839899399003990139902399033990439905399063990739908399093991039911399123991339914399153991639917399183991939920399213992239923399243992539926399273992839929399303993139932399333993439935399363993739938399393994039941399423994339944399453994639947399483994939950399513995239953399543995539956399573995839959399603996139962399633996439965399663996739968399693997039971399723997339974399753997639977399783997939980399813998239983399843998539986399873998839989399903999139992399933999439995399963999739998399994000040001400024000340004400054000640007400084000940010400114001240013400144001540016400174001840019400204002140022400234002440025400264002740028400294003040031400324003340034400354003640037400384003940040400414004240043400444004540046400474004840049400504005140052400534005440055400564005740058400594006040061400624006340064400654006640067400684006940070400714007240073400744007540076400774007840079400804008140082400834008440085400864008740088400894009040091400924009340094400954009640097400984009940100401014010240103401044010540106401074010840109401104011140112401134011440115401164011740118401194012040121401224012340124401254012640127401284012940130401314013240133401344013540136401374013840139401404014140142401434014440145401464014740148401494015040151401524015340154401554015640157401584015940160401614016240163401644016540166401674016840169401704017140172401734017440175401764017740178401794018040181401824018340184401854018640187401884018940190401914019240193401944019540196401974019840199402004020140202402034020440205402064020740208402094021040211402124021340214402154021640217402184021940220402214022240223402244022540226402274022840229402304023140232402334023440235402364023740238402394024040241402424024340244402454024640247402484024940250402514025240253402544025540256402574025840259402604026140262402634026440265402664026740268402694027040271402724027340274402754027640277402784027940280402814028240283402844028540286402874028840289402904029140292402934029440295402964029740298402994030040301403024030340304403054030640307403084030940310403114031240313403144031540316403174031840319403204032140322403234032440325403264032740328403294033040331403324033340334403354033640337403384033940340403414034240343403444034540346403474034840349403504035140352403534035440355403564035740358403594036040361403624036340364403654036640367403684036940370403714037240373403744037540376403774037840379403804038140382403834038440385403864038740388403894039040391403924039340394403954039640397403984039940400404014040240403404044040540406404074040840409404104041140412404134041440415404164041740418404194042040421404224042340424404254042640427404284042940430404314043240433404344043540436404374043840439404404044140442404434044440445404464044740448404494045040451404524045340454404554045640457404584045940460404614046240463404644046540466404674046840469404704047140472404734047440475404764047740478404794048040481404824048340484404854048640487404884048940490404914049240493404944049540496404974049840499405004050140502405034050440505405064050740508405094051040511405124051340514405154051640517405184051940520405214052240523405244052540526405274052840529405304053140532405334053440535405364053740538405394054040541405424054340544405454054640547405484054940550405514055240553405544055540556405574055840559405604056140562405634056440565405664056740568405694057040571405724057340574405754057640577405784057940580405814058240583405844058540586405874058840589405904059140592405934059440595405964059740598405994060040601406024060340604406054060640607406084060940610406114061240613406144061540616406174061840619406204062140622406234062440625406264062740628406294063040631406324063340634406354063640637406384063940640406414064240643406444064540646406474064840649406504065140652406534065440655406564065740658406594066040661406624066340664406654066640667406684066940670406714067240673406744067540676406774067840679406804068140682406834068440685406864068740688406894069040691406924069340694406954069640697406984069940700407014070240703407044070540706407074070840709407104071140712407134071440715407164071740718407194072040721407224072340724407254072640727407284072940730407314073240733407344073540736407374073840739407404074140742407434074440745407464074740748407494075040751407524075340754407554075640757407584075940760407614076240763407644076540766407674076840769407704077140772407734077440775407764077740778407794078040781407824078340784407854078640787407884078940790407914079240793407944079540796407974079840799408004080140802408034080440805408064080740808408094081040811408124081340814408154081640817408184081940820408214082240823408244082540826408274082840829408304083140832408334083440835408364083740838408394084040841408424084340844408454084640847408484084940850408514085240853408544085540856408574085840859408604086140862408634086440865408664086740868408694087040871408724087340874408754087640877408784087940880408814088240883408844088540886408874088840889408904089140892408934089440895408964089740898408994090040901409024090340904409054090640907409084090940910409114091240913409144091540916409174091840919409204092140922409234092440925409264092740928409294093040931409324093340934409354093640937409384093940940409414094240943409444094540946409474094840949409504095140952409534095440955409564095740958409594096040961409624096340964409654096640967409684096940970409714097240973409744097540976409774097840979409804098140982409834098440985409864098740988409894099040991409924099340994409954099640997409984099941000410014100241003410044100541006410074100841009410104101141012410134101441015410164101741018410194102041021410224102341024410254102641027410284102941030410314103241033410344103541036410374103841039410404104141042410434104441045410464104741048410494105041051410524105341054410554105641057410584105941060410614106241063410644106541066410674106841069410704107141072410734107441075410764107741078410794108041081410824108341084410854108641087410884108941090410914109241093410944109541096410974109841099411004110141102411034110441105411064110741108411094111041111411124111341114411154111641117411184111941120411214112241123411244112541126411274112841129411304113141132411334113441135411364113741138411394114041141411424114341144411454114641147411484114941150411514115241153411544115541156411574115841159411604116141162411634116441165411664116741168411694117041171411724117341174411754117641177411784117941180411814118241183411844118541186411874118841189411904119141192411934119441195411964119741198411994120041201412024120341204412054120641207412084120941210412114121241213412144121541216412174121841219412204122141222412234122441225412264122741228412294123041231412324123341234412354123641237412384123941240412414124241243412444124541246412474124841249412504125141252412534125441255412564125741258412594126041261412624126341264412654126641267412684126941270412714127241273412744127541276412774127841279412804128141282412834128441285412864128741288412894129041291412924129341294412954129641297412984129941300413014130241303413044130541306413074130841309413104131141312413134131441315413164131741318413194132041321413224132341324413254132641327413284132941330413314133241333413344133541336413374133841339413404134141342413434134441345413464134741348413494135041351413524135341354413554135641357413584135941360413614136241363413644136541366413674136841369413704137141372413734137441375413764137741378413794138041381413824138341384413854138641387413884138941390413914139241393413944139541396413974139841399414004140141402414034140441405414064140741408414094141041411414124141341414414154141641417414184141941420414214142241423414244142541426414274142841429414304143141432414334143441435414364143741438414394144041441414424144341444414454144641447414484144941450414514145241453414544145541456414574145841459414604146141462414634146441465414664146741468414694147041471414724147341474414754147641477414784147941480414814148241483414844148541486414874148841489414904149141492414934149441495414964149741498414994150041501415024150341504415054150641507415084150941510415114151241513415144151541516415174151841519415204152141522415234152441525415264152741528415294153041531415324153341534415354153641537415384153941540415414154241543415444154541546415474154841549415504155141552415534155441555415564155741558415594156041561415624156341564415654156641567415684156941570415714157241573415744157541576415774157841579415804158141582415834158441585415864158741588415894159041591415924159341594415954159641597415984159941600416014160241603416044160541606416074160841609416104161141612416134161441615416164161741618416194162041621416224162341624416254162641627416284162941630416314163241633416344163541636416374163841639416404164141642416434164441645416464164741648416494165041651416524165341654416554165641657416584165941660416614166241663416644166541666416674166841669416704167141672416734167441675416764167741678416794168041681416824168341684416854168641687416884168941690416914169241693416944169541696416974169841699417004170141702417034170441705417064170741708417094171041711417124171341714417154171641717417184171941720417214172241723417244172541726417274172841729417304173141732417334173441735417364173741738417394174041741417424174341744417454174641747417484174941750417514175241753417544175541756417574175841759417604176141762417634176441765417664176741768417694177041771417724177341774417754177641777417784177941780417814178241783417844178541786417874178841789417904179141792417934179441795417964179741798417994180041801418024180341804418054180641807418084180941810418114181241813418144181541816418174181841819418204182141822418234182441825418264182741828418294183041831418324183341834418354183641837418384183941840418414184241843418444184541846418474184841849418504185141852418534185441855418564185741858418594186041861418624186341864418654186641867418684186941870418714187241873418744187541876418774187841879418804188141882418834188441885418864188741888418894189041891418924189341894418954189641897418984189941900419014190241903419044190541906419074190841909419104191141912419134191441915419164191741918419194192041921419224192341924419254192641927419284192941930419314193241933419344193541936419374193841939419404194141942419434194441945419464194741948419494195041951419524195341954419554195641957419584195941960419614196241963419644196541966419674196841969419704197141972419734197441975419764197741978419794198041981419824198341984419854198641987419884198941990419914199241993419944199541996419974199841999420004200142002420034200442005420064200742008420094201042011420124201342014420154201642017420184201942020420214202242023420244202542026420274202842029420304203142032420334203442035420364203742038420394204042041420424204342044420454204642047420484204942050420514205242053420544205542056420574205842059420604206142062420634206442065420664206742068420694207042071420724207342074420754207642077420784207942080420814208242083420844208542086420874208842089420904209142092420934209442095420964209742098420994210042101421024210342104421054210642107421084210942110421114211242113421144211542116421174211842119421204212142122421234212442125421264212742128421294213042131421324213342134421354213642137421384213942140421414214242143421444214542146421474214842149421504215142152421534215442155421564215742158421594216042161421624216342164421654216642167421684216942170421714217242173421744217542176421774217842179421804218142182421834218442185421864218742188421894219042191421924219342194421954219642197421984219942200422014220242203422044220542206422074220842209422104221142212422134221442215422164221742218422194222042221422224222342224422254222642227422284222942230422314223242233422344223542236422374223842239422404224142242422434224442245422464224742248422494225042251422524225342254422554225642257422584225942260422614226242263422644226542266422674226842269422704227142272422734227442275422764227742278422794228042281422824228342284422854228642287422884228942290422914229242293422944229542296422974229842299423004230142302423034230442305423064230742308423094231042311423124231342314423154231642317423184231942320423214232242323423244232542326423274232842329423304233142332423334233442335423364233742338423394234042341423424234342344423454234642347423484234942350423514235242353423544235542356423574235842359423604236142362423634236442365423664236742368423694237042371423724237342374423754237642377423784237942380423814238242383423844238542386423874238842389423904239142392423934239442395423964239742398423994240042401424024240342404424054240642407424084240942410424114241242413424144241542416424174241842419424204242142422424234242442425424264242742428424294243042431424324243342434424354243642437424384243942440424414244242443424444244542446424474244842449424504245142452424534245442455424564245742458424594246042461424624246342464424654246642467424684246942470424714247242473424744247542476424774247842479424804248142482424834248442485424864248742488424894249042491424924249342494424954249642497424984249942500425014250242503425044250542506425074250842509425104251142512425134251442515425164251742518425194252042521425224252342524425254252642527425284252942530425314253242533425344253542536425374253842539425404254142542425434254442545425464254742548425494255042551425524255342554425554255642557425584255942560425614256242563425644256542566425674256842569425704257142572425734257442575425764257742578425794258042581425824258342584425854258642587425884258942590425914259242593425944259542596425974259842599426004260142602426034260442605426064260742608426094261042611426124261342614426154261642617426184261942620426214262242623426244262542626426274262842629426304263142632426334263442635426364263742638426394264042641426424264342644426454264642647426484264942650426514265242653426544265542656426574265842659426604266142662426634266442665426664266742668426694267042671426724267342674426754267642677426784267942680426814268242683426844268542686426874268842689426904269142692426934269442695426964269742698426994270042701427024270342704427054270642707427084270942710427114271242713427144271542716427174271842719427204272142722427234272442725427264272742728427294273042731427324273342734427354273642737427384273942740427414274242743427444274542746427474274842749427504275142752427534275442755427564275742758427594276042761427624276342764427654276642767427684276942770427714277242773427744277542776427774277842779427804278142782427834278442785427864278742788427894279042791427924279342794427954279642797427984279942800428014280242803428044280542806428074280842809428104281142812428134281442815428164281742818428194282042821428224282342824428254282642827428284282942830428314283242833428344283542836428374283842839428404284142842428434284442845428464284742848428494285042851428524285342854428554285642857428584285942860428614286242863428644286542866428674286842869428704287142872428734287442875428764287742878428794288042881428824288342884428854288642887428884288942890428914289242893428944289542896428974289842899429004290142902429034290442905429064290742908429094291042911429124291342914429154291642917429184291942920429214292242923429244292542926429274292842929429304293142932429334293442935429364293742938429394294042941429424294342944429454294642947429484294942950429514295242953429544295542956429574295842959429604296142962429634296442965429664296742968429694297042971429724297342974429754297642977429784297942980429814298242983429844298542986429874298842989429904299142992429934299442995429964299742998429994300043001430024300343004430054300643007430084300943010430114301243013430144301543016430174301843019430204302143022430234302443025430264302743028430294303043031430324303343034430354303643037430384303943040430414304243043430444304543046430474304843049430504305143052430534305443055430564305743058430594306043061430624306343064430654306643067430684306943070430714307243073430744307543076430774307843079430804308143082430834308443085430864308743088430894309043091430924309343094430954309643097430984309943100431014310243103431044310543106431074310843109431104311143112431134311443115431164311743118431194312043121431224312343124431254312643127431284312943130431314313243133431344313543136431374313843139431404314143142431434314443145431464314743148431494315043151431524315343154431554315643157431584315943160431614316243163431644316543166431674316843169431704317143172431734317443175431764317743178431794318043181431824318343184431854318643187431884318943190431914319243193431944319543196431974319843199432004320143202432034320443205432064320743208432094321043211432124321343214432154321643217432184321943220432214322243223432244322543226432274322843229432304323143232432334323443235432364323743238432394324043241432424324343244432454324643247432484324943250432514325243253432544325543256432574325843259432604326143262432634326443265432664326743268432694327043271432724327343274432754327643277432784327943280432814328243283432844328543286432874328843289432904329143292432934329443295432964329743298432994330043301433024330343304433054330643307433084330943310433114331243313433144331543316433174331843319433204332143322433234332443325433264332743328433294333043331433324333343334433354333643337433384333943340433414334243343433444334543346433474334843349433504335143352433534335443355433564335743358433594336043361433624336343364433654336643367433684336943370433714337243373433744337543376433774337843379433804338143382433834338443385433864338743388433894339043391433924339343394433954339643397433984339943400434014340243403434044340543406434074340843409434104341143412434134341443415434164341743418434194342043421434224342343424434254342643427434284342943430434314343243433434344343543436434374343843439434404344143442434434344443445434464344743448434494345043451434524345343454434554345643457434584345943460434614346243463434644346543466434674346843469434704347143472434734347443475434764347743478434794348043481434824348343484434854348643487434884348943490434914349243493434944349543496434974349843499435004350143502435034350443505435064350743508435094351043511435124351343514435154351643517435184351943520435214352243523435244352543526435274352843529435304353143532435334353443535435364353743538435394354043541435424354343544435454354643547435484354943550435514355243553435544355543556435574355843559435604356143562435634356443565435664356743568435694357043571435724357343574435754357643577435784357943580435814358243583435844358543586435874358843589435904359143592435934359443595435964359743598435994360043601436024360343604436054360643607436084360943610436114361243613436144361543616436174361843619436204362143622436234362443625436264362743628436294363043631436324363343634436354363643637436384363943640436414364243643436444364543646436474364843649436504365143652436534365443655436564365743658436594366043661436624366343664436654366643667436684366943670436714367243673436744367543676436774367843679436804368143682436834368443685436864368743688436894369043691436924369343694436954369643697436984369943700437014370243703437044370543706437074370843709437104371143712437134371443715437164371743718437194372043721437224372343724437254372643727437284372943730437314373243733437344373543736437374373843739437404374143742437434374443745437464374743748437494375043751437524375343754437554375643757437584375943760437614376243763437644376543766437674376843769437704377143772437734377443775437764377743778437794378043781437824378343784437854378643787437884378943790437914379243793437944379543796437974379843799438004380143802438034380443805438064380743808438094381043811438124381343814438154381643817438184381943820438214382243823438244382543826438274382843829438304383143832438334383443835438364383743838438394384043841438424384343844438454384643847438484384943850438514385243853438544385543856438574385843859438604386143862438634386443865438664386743868438694387043871438724387343874438754387643877438784387943880438814388243883438844388543886438874388843889438904389143892438934389443895438964389743898438994390043901439024390343904439054390643907439084390943910439114391243913439144391543916439174391843919439204392143922439234392443925439264392743928439294393043931439324393343934439354393643937439384393943940439414394243943439444394543946439474394843949439504395143952439534395443955439564395743958439594396043961439624396343964439654396643967439684396943970439714397243973439744397543976439774397843979439804398143982439834398443985439864398743988439894399043991439924399343994439954399643997439984399944000440014400244003440044400544006440074400844009440104401144012440134401444015440164401744018440194402044021440224402344024440254402644027440284402944030440314403244033440344403544036440374403844039440404404144042440434404444045440464404744048440494405044051440524405344054440554405644057440584405944060440614406244063440644406544066440674406844069440704407144072440734407444075440764407744078440794408044081440824408344084440854408644087440884408944090440914409244093440944409544096440974409844099441004410144102441034410444105441064410744108441094411044111441124411344114441154411644117441184411944120441214412244123441244412544126441274412844129441304413144132441334413444135441364413744138441394414044141441424414344144441454414644147441484414944150441514415244153441544415544156441574415844159441604416144162441634416444165441664416744168441694417044171441724417344174441754417644177441784417944180441814418244183441844418544186441874418844189441904419144192441934419444195441964419744198441994420044201442024420344204442054420644207442084420944210442114421244213442144421544216442174421844219442204422144222442234422444225442264422744228442294423044231442324423344234442354423644237442384423944240442414424244243442444424544246442474424844249442504425144252442534425444255442564425744258442594426044261442624426344264442654426644267442684426944270442714427244273442744427544276442774427844279442804428144282442834428444285442864428744288442894429044291442924429344294442954429644297442984429944300443014430244303443044430544306443074430844309443104431144312443134431444315443164431744318443194432044321443224432344324443254432644327443284432944330443314433244333443344433544336443374433844339443404434144342443434434444345443464434744348443494435044351443524435344354443554435644357443584435944360443614436244363443644436544366443674436844369443704437144372443734437444375443764437744378443794438044381443824438344384443854438644387443884438944390443914439244393443944439544396443974439844399444004440144402444034440444405444064440744408444094441044411444124441344414444154441644417444184441944420444214442244423444244442544426444274442844429444304443144432444334443444435444364443744438444394444044441444424444344444444454444644447444484444944450444514445244453444544445544456444574445844459444604446144462444634446444465444664446744468444694447044471444724447344474444754447644477444784447944480444814448244483444844448544486444874448844489444904449144492444934449444495444964449744498444994450044501445024450344504445054450644507445084450944510445114451244513445144451544516445174451844519445204452144522445234452444525445264452744528445294453044531445324453344534445354453644537445384453944540445414454244543445444454544546445474454844549445504455144552445534455444555445564455744558445594456044561445624456344564445654456644567445684456944570445714457244573445744457544576445774457844579445804458144582445834458444585445864458744588445894459044591445924459344594445954459644597445984459944600446014460244603446044460544606446074460844609446104461144612446134461444615446164461744618446194462044621446224462344624446254462644627446284462944630446314463244633446344463544636446374463844639446404464144642446434464444645446464464744648446494465044651446524465344654446554465644657446584465944660446614466244663446644466544666446674466844669446704467144672446734467444675446764467744678446794468044681446824468344684446854468644687446884468944690446914469244693446944469544696446974469844699447004470144702447034470444705447064470744708447094471044711447124471344714447154471644717447184471944720447214472244723447244472544726447274472844729447304473144732447334473444735447364473744738447394474044741447424474344744447454474644747447484474944750447514475244753447544475544756447574475844759447604476144762447634476444765447664476744768447694477044771447724477344774447754477644777447784477944780447814478244783447844478544786447874478844789447904479144792447934479444795447964479744798447994480044801448024480344804448054480644807448084480944810448114481244813448144481544816448174481844819448204482144822448234482444825448264482744828448294483044831448324483344834448354483644837448384483944840448414484244843448444484544846448474484844849448504485144852448534485444855448564485744858448594486044861448624486344864448654486644867448684486944870448714487244873448744487544876448774487844879448804488144882448834488444885448864488744888448894489044891448924489344894448954489644897448984489944900449014490244903449044490544906449074490844909449104491144912449134491444915449164491744918449194492044921449224492344924449254492644927449284492944930449314493244933449344493544936449374493844939449404494144942449434494444945449464494744948449494495044951449524495344954449554495644957449584495944960449614496244963449644496544966449674496844969449704497144972449734497444975449764497744978449794498044981449824498344984449854498644987449884498944990449914499244993449944499544996449974499844999450004500145002450034500445005450064500745008450094501045011450124501345014450154501645017450184501945020450214502245023450244502545026450274502845029450304503145032450334503445035450364503745038450394504045041450424504345044450454504645047450484504945050450514505245053450544505545056450574505845059450604506145062450634506445065450664506745068450694507045071450724507345074450754507645077450784507945080450814508245083450844508545086450874508845089450904509145092450934509445095450964509745098450994510045101451024510345104451054510645107451084510945110451114511245113451144511545116451174511845119451204512145122451234512445125451264512745128451294513045131451324513345134451354513645137451384513945140451414514245143451444514545146451474514845149451504515145152451534515445155451564515745158451594516045161451624516345164451654516645167451684516945170451714517245173451744517545176451774517845179451804518145182451834518445185451864518745188451894519045191451924519345194451954519645197451984519945200452014520245203452044520545206452074520845209452104521145212452134521445215452164521745218452194522045221452224522345224452254522645227452284522945230452314523245233452344523545236452374523845239452404524145242452434524445245452464524745248452494525045251452524525345254452554525645257452584525945260452614526245263452644526545266452674526845269452704527145272452734527445275452764527745278452794528045281452824528345284452854528645287452884528945290452914529245293452944529545296452974529845299453004530145302453034530445305453064530745308453094531045311453124531345314453154531645317453184531945320453214532245323453244532545326453274532845329453304533145332453334533445335453364533745338453394534045341453424534345344453454534645347453484534945350453514535245353453544535545356453574535845359453604536145362453634536445365453664536745368453694537045371453724537345374453754537645377453784537945380453814538245383453844538545386453874538845389453904539145392453934539445395453964539745398453994540045401454024540345404454054540645407454084540945410454114541245413454144541545416454174541845419454204542145422454234542445425454264542745428454294543045431454324543345434454354543645437454384543945440454414544245443454444544545446454474544845449454504545145452454534545445455454564545745458454594546045461454624546345464454654546645467454684546945470454714547245473454744547545476454774547845479454804548145482454834548445485454864548745488454894549045491454924549345494454954549645497454984549945500455014550245503455044550545506455074550845509455104551145512455134551445515455164551745518455194552045521455224552345524455254552645527455284552945530455314553245533455344553545536455374553845539455404554145542455434554445545455464554745548455494555045551455524555345554455554555645557455584555945560455614556245563455644556545566455674556845569455704557145572455734557445575455764557745578455794558045581455824558345584455854558645587455884558945590455914559245593455944559545596455974559845599456004560145602456034560445605456064560745608456094561045611456124561345614456154561645617456184561945620456214562245623456244562545626456274562845629456304563145632456334563445635456364563745638456394564045641456424564345644456454564645647456484564945650456514565245653456544565545656456574565845659456604566145662456634566445665456664566745668456694567045671456724567345674456754567645677456784567945680456814568245683456844568545686456874568845689456904569145692456934569445695456964569745698456994570045701457024570345704457054570645707457084570945710457114571245713457144571545716457174571845719457204572145722457234572445725457264572745728457294573045731457324573345734457354573645737457384573945740457414574245743457444574545746457474574845749457504575145752457534575445755457564575745758457594576045761457624576345764457654576645767457684576945770457714577245773457744577545776457774577845779457804578145782457834578445785457864578745788457894579045791457924579345794457954579645797457984579945800458014580245803458044580545806458074580845809458104581145812458134581445815458164581745818458194582045821458224582345824458254582645827458284582945830458314583245833458344583545836458374583845839458404584145842458434584445845458464584745848458494585045851458524585345854458554585645857458584585945860458614586245863458644586545866458674586845869458704587145872458734587445875458764587745878458794588045881458824588345884458854588645887458884588945890458914589245893458944589545896458974589845899459004590145902459034590445905459064590745908459094591045911459124591345914459154591645917459184591945920459214592245923459244592545926459274592845929459304593145932459334593445935459364593745938459394594045941459424594345944459454594645947459484594945950459514595245953459544595545956459574595845959459604596145962459634596445965459664596745968459694597045971459724597345974459754597645977459784597945980459814598245983459844598545986459874598845989459904599145992459934599445995459964599745998459994600046001460024600346004460054600646007460084600946010460114601246013460144601546016460174601846019460204602146022460234602446025460264602746028460294603046031460324603346034460354603646037460384603946040460414604246043460444604546046460474604846049460504605146052460534605446055460564605746058460594606046061460624606346064460654606646067460684606946070460714607246073460744607546076460774607846079460804608146082460834608446085460864608746088460894609046091460924609346094460954609646097460984609946100461014610246103461044610546106461074610846109461104611146112461134611446115461164611746118461194612046121461224612346124461254612646127461284612946130461314613246133461344613546136461374613846139461404614146142461434614446145461464614746148461494615046151461524615346154461554615646157461584615946160461614616246163461644616546166461674616846169461704617146172461734617446175461764617746178461794618046181461824618346184461854618646187461884618946190461914619246193461944619546196461974619846199462004620146202462034620446205462064620746208462094621046211462124621346214462154621646217462184621946220462214622246223462244622546226462274622846229462304623146232462334623446235462364623746238462394624046241462424624346244462454624646247462484624946250462514625246253462544625546256462574625846259462604626146262462634626446265462664626746268462694627046271462724627346274462754627646277462784627946280462814628246283462844628546286462874628846289462904629146292462934629446295462964629746298462994630046301463024630346304463054630646307463084630946310463114631246313463144631546316463174631846319463204632146322463234632446325463264632746328463294633046331463324633346334463354633646337463384633946340463414634246343463444634546346463474634846349463504635146352463534635446355463564635746358463594636046361463624636346364463654636646367463684636946370463714637246373463744637546376463774637846379463804638146382463834638446385463864638746388463894639046391463924639346394463954639646397463984639946400464014640246403464044640546406464074640846409464104641146412464134641446415464164641746418464194642046421464224642346424464254642646427464284642946430464314643246433464344643546436464374643846439464404644146442464434644446445464464644746448464494645046451464524645346454464554645646457464584645946460464614646246463464644646546466464674646846469464704647146472464734647446475464764647746478464794648046481464824648346484464854648646487464884648946490464914649246493464944649546496464974649846499465004650146502465034650446505465064650746508465094651046511465124651346514465154651646517465184651946520465214652246523465244652546526465274652846529465304653146532465334653446535465364653746538465394654046541465424654346544465454654646547465484654946550465514655246553465544655546556465574655846559465604656146562465634656446565465664656746568465694657046571465724657346574465754657646577465784657946580465814658246583465844658546586465874658846589465904659146592465934659446595465964659746598465994660046601466024660346604466054660646607466084660946610466114661246613466144661546616466174661846619466204662146622466234662446625466264662746628466294663046631466324663346634466354663646637466384663946640466414664246643466444664546646466474664846649466504665146652466534665446655466564665746658466594666046661466624666346664466654666646667466684666946670466714667246673466744667546676466774667846679466804668146682466834668446685466864668746688466894669046691466924669346694466954669646697466984669946700467014670246703467044670546706467074670846709467104671146712467134671446715467164671746718467194672046721467224672346724467254672646727467284672946730467314673246733467344673546736467374673846739467404674146742467434674446745467464674746748467494675046751467524675346754467554675646757467584675946760467614676246763467644676546766467674676846769467704677146772467734677446775467764677746778467794678046781467824678346784467854678646787467884678946790467914679246793467944679546796467974679846799468004680146802468034680446805468064680746808468094681046811468124681346814468154681646817468184681946820468214682246823468244682546826468274682846829468304683146832468334683446835468364683746838468394684046841468424684346844468454684646847468484684946850468514685246853468544685546856468574685846859468604686146862468634686446865468664686746868468694687046871468724687346874468754687646877468784687946880468814688246883468844688546886468874688846889468904689146892468934689446895468964689746898468994690046901469024690346904469054690646907469084690946910469114691246913469144691546916469174691846919469204692146922469234692446925469264692746928469294693046931469324693346934469354693646937469384693946940469414694246943469444694546946469474694846949469504695146952469534695446955469564695746958469594696046961469624696346964469654696646967469684696946970469714697246973469744697546976469774697846979469804698146982469834698446985469864698746988469894699046991469924699346994469954699646997469984699947000470014700247003470044700547006470074700847009470104701147012470134701447015470164701747018470194702047021470224702347024470254702647027470284702947030470314703247033470344703547036470374703847039470404704147042470434704447045470464704747048470494705047051470524705347054470554705647057470584705947060470614706247063470644706547066470674706847069470704707147072470734707447075470764707747078470794708047081470824708347084470854708647087470884708947090470914709247093470944709547096470974709847099471004710147102471034710447105471064710747108471094711047111471124711347114471154711647117471184711947120471214712247123471244712547126471274712847129471304713147132471334713447135471364713747138471394714047141471424714347144471454714647147471484714947150471514715247153471544715547156471574715847159471604716147162471634716447165471664716747168471694717047171471724717347174471754717647177471784717947180471814718247183471844718547186471874718847189471904719147192471934719447195471964719747198471994720047201472024720347204472054720647207472084720947210472114721247213472144721547216472174721847219472204722147222472234722447225472264722747228472294723047231472324723347234472354723647237472384723947240472414724247243472444724547246472474724847249472504725147252472534725447255472564725747258472594726047261472624726347264472654726647267472684726947270472714727247273472744727547276472774727847279472804728147282472834728447285472864728747288472894729047291472924729347294472954729647297472984729947300473014730247303473044730547306473074730847309473104731147312473134731447315473164731747318473194732047321473224732347324473254732647327473284732947330473314733247333473344733547336473374733847339473404734147342473434734447345473464734747348473494735047351473524735347354473554735647357473584735947360473614736247363473644736547366473674736847369473704737147372473734737447375473764737747378473794738047381473824738347384473854738647387473884738947390473914739247393473944739547396473974739847399474004740147402474034740447405474064740747408474094741047411474124741347414474154741647417474184741947420474214742247423474244742547426474274742847429474304743147432474334743447435474364743747438474394744047441474424744347444474454744647447474484744947450474514745247453474544745547456474574745847459474604746147462474634746447465474664746747468474694747047471474724747347474474754747647477474784747947480474814748247483474844748547486474874748847489474904749147492474934749447495474964749747498474994750047501475024750347504475054750647507475084750947510475114751247513475144751547516475174751847519475204752147522475234752447525475264752747528475294753047531475324753347534475354753647537475384753947540475414754247543475444754547546475474754847549475504755147552475534755447555475564755747558475594756047561475624756347564475654756647567475684756947570475714757247573475744757547576475774757847579475804758147582475834758447585475864758747588475894759047591475924759347594475954759647597475984759947600476014760247603476044760547606476074760847609476104761147612476134761447615476164761747618476194762047621476224762347624476254762647627476284762947630476314763247633476344763547636476374763847639476404764147642476434764447645476464764747648476494765047651476524765347654476554765647657476584765947660476614766247663476644766547666476674766847669476704767147672476734767447675476764767747678476794768047681476824768347684476854768647687476884768947690476914769247693476944769547696476974769847699477004770147702477034770447705477064770747708477094771047711477124771347714477154771647717477184771947720477214772247723477244772547726477274772847729477304773147732477334773447735477364773747738477394774047741477424774347744477454774647747477484774947750477514775247753477544775547756477574775847759477604776147762477634776447765477664776747768477694777047771477724777347774477754777647777477784777947780477814778247783477844778547786477874778847789477904779147792477934779447795477964779747798477994780047801478024780347804478054780647807478084780947810478114781247813478144781547816478174781847819478204782147822478234782447825478264782747828478294783047831478324783347834478354783647837478384783947840478414784247843478444784547846478474784847849478504785147852478534785447855478564785747858478594786047861478624786347864478654786647867478684786947870478714787247873478744787547876478774787847879478804788147882478834788447885478864788747888478894789047891478924789347894478954789647897478984789947900479014790247903479044790547906479074790847909479104791147912479134791447915479164791747918479194792047921479224792347924479254792647927479284792947930479314793247933479344793547936479374793847939479404794147942479434794447945479464794747948479494795047951479524795347954479554795647957479584795947960479614796247963479644796547966479674796847969479704797147972479734797447975479764797747978479794798047981479824798347984479854798647987479884798947990479914799247993479944799547996479974799847999480004800148002480034800448005480064800748008480094801048011480124801348014480154801648017480184801948020480214802248023480244802548026480274802848029480304803148032480334803448035480364803748038480394804048041480424804348044480454804648047480484804948050480514805248053480544805548056480574805848059480604806148062480634806448065480664806748068480694807048071480724807348074480754807648077480784807948080480814808248083480844808548086480874808848089480904809148092480934809448095480964809748098480994810048101481024810348104481054810648107481084810948110481114811248113481144811548116481174811848119481204812148122481234812448125481264812748128481294813048131481324813348134481354813648137481384813948140481414814248143481444814548146481474814848149481504815148152481534815448155481564815748158481594816048161481624816348164481654816648167481684816948170481714817248173481744817548176481774817848179481804818148182481834818448185481864818748188481894819048191481924819348194481954819648197481984819948200482014820248203482044820548206482074820848209482104821148212482134821448215482164821748218482194822048221482224822348224482254822648227482284822948230482314823248233482344823548236482374823848239482404824148242482434824448245482464824748248482494825048251482524825348254482554825648257482584825948260482614826248263482644826548266482674826848269482704827148272482734827448275482764827748278482794828048281482824828348284482854828648287482884828948290482914829248293482944829548296482974829848299483004830148302483034830448305483064830748308483094831048311483124831348314483154831648317483184831948320483214832248323483244832548326483274832848329483304833148332483334833448335483364833748338483394834048341483424834348344483454834648347483484834948350483514835248353483544835548356483574835848359483604836148362483634836448365483664836748368483694837048371483724837348374483754837648377483784837948380483814838248383483844838548386483874838848389483904839148392483934839448395483964839748398483994840048401484024840348404484054840648407484084840948410484114841248413484144841548416484174841848419484204842148422484234842448425484264842748428484294843048431484324843348434484354843648437484384843948440484414844248443484444844548446484474844848449484504845148452484534845448455484564845748458484594846048461484624846348464484654846648467484684846948470484714847248473484744847548476484774847848479484804848148482484834848448485484864848748488484894849048491484924849348494484954849648497484984849948500485014850248503485044850548506485074850848509485104851148512485134851448515485164851748518485194852048521485224852348524485254852648527485284852948530485314853248533485344853548536485374853848539485404854148542485434854448545485464854748548485494855048551485524855348554485554855648557485584855948560485614856248563485644856548566485674856848569485704857148572485734857448575485764857748578485794858048581485824858348584485854858648587485884858948590485914859248593485944859548596485974859848599486004860148602486034860448605486064860748608486094861048611486124861348614486154861648617486184861948620486214862248623486244862548626486274862848629486304863148632486334863448635486364863748638486394864048641486424864348644486454864648647486484864948650486514865248653486544865548656486574865848659486604866148662486634866448665486664866748668486694867048671486724867348674486754867648677486784867948680486814868248683486844868548686486874868848689486904869148692486934869448695486964869748698486994870048701487024870348704487054870648707487084870948710487114871248713487144871548716487174871848719487204872148722487234872448725487264872748728487294873048731487324873348734487354873648737487384873948740487414874248743487444874548746487474874848749487504875148752487534875448755487564875748758487594876048761487624876348764487654876648767487684876948770487714877248773487744877548776487774877848779487804878148782487834878448785487864878748788487894879048791487924879348794487954879648797487984879948800488014880248803488044880548806488074880848809488104881148812488134881448815488164881748818488194882048821488224882348824488254882648827488284882948830488314883248833488344883548836488374883848839488404884148842488434884448845488464884748848488494885048851488524885348854488554885648857488584885948860488614886248863488644886548866488674886848869488704887148872488734887448875488764887748878488794888048881488824888348884488854888648887488884888948890488914889248893488944889548896488974889848899489004890148902489034890448905489064890748908489094891048911489124891348914489154891648917489184891948920489214892248923489244892548926489274892848929489304893148932489334893448935489364893748938489394894048941489424894348944489454894648947489484894948950489514895248953489544895548956489574895848959489604896148962489634896448965489664896748968489694897048971489724897348974489754897648977489784897948980489814898248983489844898548986489874898848989489904899148992489934899448995489964899748998489994900049001490024900349004490054900649007490084900949010490114901249013490144901549016490174901849019490204902149022490234902449025490264902749028490294903049031490324903349034490354903649037490384903949040490414904249043490444904549046490474904849049490504905149052490534905449055490564905749058490594906049061490624906349064490654906649067490684906949070490714907249073490744907549076490774907849079490804908149082490834908449085490864908749088490894909049091490924909349094490954909649097490984909949100491014910249103491044910549106491074910849109491104911149112491134911449115491164911749118491194912049121491224912349124491254912649127491284912949130491314913249133491344913549136491374913849139491404914149142491434914449145491464914749148491494915049151491524915349154491554915649157491584915949160491614916249163491644916549166491674916849169491704917149172491734917449175491764917749178491794918049181491824918349184491854918649187491884918949190491914919249193491944919549196491974919849199492004920149202492034920449205492064920749208492094921049211492124921349214492154921649217492184921949220492214922249223492244922549226492274922849229492304923149232492334923449235492364923749238492394924049241492424924349244492454924649247492484924949250492514925249253492544925549256492574925849259492604926149262492634926449265492664926749268492694927049271492724927349274492754927649277492784927949280492814928249283492844928549286492874928849289492904929149292492934929449295492964929749298492994930049301493024930349304493054930649307493084930949310493114931249313493144931549316493174931849319493204932149322493234932449325493264932749328493294933049331493324933349334493354933649337493384933949340493414934249343493444934549346493474934849349493504935149352493534935449355493564935749358493594936049361493624936349364493654936649367493684936949370493714937249373493744937549376493774937849379493804938149382493834938449385493864938749388493894939049391493924939349394493954939649397493984939949400494014940249403494044940549406494074940849409494104941149412494134941449415494164941749418494194942049421494224942349424494254942649427494284942949430494314943249433494344943549436494374943849439494404944149442494434944449445494464944749448494494945049451494524945349454494554945649457494584945949460494614946249463494644946549466494674946849469494704947149472494734947449475494764947749478494794948049481494824948349484494854948649487494884948949490494914949249493494944949549496494974949849499495004950149502495034950449505495064950749508495094951049511495124951349514495154951649517495184951949520495214952249523495244952549526495274952849529495304953149532495334953449535495364953749538495394954049541495424954349544495454954649547495484954949550495514955249553495544955549556495574955849559495604956149562495634956449565495664956749568495694957049571495724957349574495754957649577495784957949580495814958249583495844958549586495874958849589495904959149592495934959449595495964959749598495994960049601496024960349604496054960649607496084960949610496114961249613496144961549616496174961849619496204962149622496234962449625496264962749628496294963049631496324963349634496354963649637496384963949640496414964249643496444964549646496474964849649496504965149652496534965449655496564965749658496594966049661496624966349664496654966649667496684966949670496714967249673496744967549676496774967849679496804968149682496834968449685496864968749688496894969049691496924969349694496954969649697496984969949700497014970249703497044970549706497074970849709497104971149712497134971449715497164971749718497194972049721497224972349724497254972649727497284972949730497314973249733497344973549736497374973849739497404974149742497434974449745497464974749748497494975049751497524975349754497554975649757497584975949760497614976249763497644976549766497674976849769497704977149772497734977449775497764977749778497794978049781497824978349784497854978649787497884978949790497914979249793497944979549796497974979849799498004980149802498034980449805498064980749808498094981049811498124981349814498154981649817498184981949820498214982249823498244982549826498274982849829498304983149832498334983449835498364983749838498394984049841498424984349844498454984649847498484984949850498514985249853498544985549856498574985849859498604986149862498634986449865498664986749868498694987049871498724987349874498754987649877498784987949880498814988249883498844988549886498874988849889498904989149892498934989449895498964989749898498994990049901499024990349904499054990649907499084990949910499114991249913499144991549916499174991849919499204992149922499234992449925499264992749928499294993049931499324993349934499354993649937499384993949940499414994249943499444994549946499474994849949499504995149952499534995449955499564995749958499594996049961499624996349964499654996649967499684996949970499714997249973499744997549976499774997849979499804998149982499834998449985499864998749988499894999049991499924999349994499954999649997499984999950000500015000250003500045000550006500075000850009500105001150012500135001450015500165001750018500195002050021500225002350024500255002650027500285002950030500315003250033500345003550036500375003850039500405004150042500435004450045500465004750048500495005050051500525005350054500555005650057500585005950060500615006250063500645006550066500675006850069500705007150072500735007450075500765007750078500795008050081500825008350084500855008650087500885008950090500915009250093500945009550096500975009850099501005010150102501035010450105501065010750108501095011050111501125011350114501155011650117501185011950120501215012250123501245012550126501275012850129501305013150132501335013450135501365013750138501395014050141501425014350144501455014650147501485014950150501515015250153501545015550156501575015850159501605016150162501635016450165501665016750168501695017050171501725017350174501755017650177501785017950180501815018250183501845018550186501875018850189501905019150192501935019450195501965019750198501995020050201502025020350204502055020650207502085020950210502115021250213502145021550216502175021850219502205022150222502235022450225502265022750228502295023050231502325023350234502355023650237502385023950240502415024250243502445024550246502475024850249502505025150252502535025450255502565025750258502595026050261502625026350264502655026650267502685026950270502715027250273502745027550276502775027850279502805028150282502835028450285502865028750288502895029050291502925029350294502955029650297502985029950300503015030250303503045030550306503075030850309503105031150312503135031450315503165031750318503195032050321503225032350324503255032650327503285032950330503315033250333503345033550336503375033850339503405034150342503435034450345503465034750348503495035050351503525035350354503555035650357503585035950360503615036250363503645036550366503675036850369503705037150372503735037450375503765037750378503795038050381503825038350384503855038650387503885038950390503915039250393503945039550396503975039850399504005040150402504035040450405504065040750408504095041050411504125041350414504155041650417504185041950420504215042250423504245042550426504275042850429504305043150432504335043450435504365043750438504395044050441504425044350444504455044650447504485044950450504515045250453504545045550456504575045850459504605046150462504635046450465504665046750468504695047050471504725047350474504755047650477504785047950480504815048250483504845048550486504875048850489504905049150492504935049450495504965049750498504995050050501505025050350504505055050650507505085050950510505115051250513505145051550516505175051850519505205052150522505235052450525505265052750528505295053050531505325053350534505355053650537505385053950540505415054250543505445054550546505475054850549505505055150552505535055450555505565055750558505595056050561505625056350564505655056650567505685056950570505715057250573505745057550576505775057850579505805058150582505835058450585505865058750588505895059050591505925059350594505955059650597505985059950600506015060250603506045060550606506075060850609506105061150612506135061450615506165061750618506195062050621506225062350624506255062650627506285062950630506315063250633506345063550636506375063850639506405064150642506435064450645506465064750648506495065050651506525065350654506555065650657506585065950660506615066250663506645066550666506675066850669506705067150672506735067450675506765067750678506795068050681506825068350684506855068650687506885068950690506915069250693506945069550696506975069850699507005070150702507035070450705507065070750708507095071050711507125071350714507155071650717507185071950720507215072250723507245072550726507275072850729507305073150732507335073450735507365073750738507395074050741507425074350744507455074650747507485074950750507515075250753507545075550756507575075850759507605076150762507635076450765507665076750768507695077050771507725077350774507755077650777507785077950780507815078250783507845078550786507875078850789507905079150792507935079450795507965079750798507995080050801508025080350804508055080650807508085080950810508115081250813508145081550816508175081850819508205082150822508235082450825508265082750828508295083050831508325083350834508355083650837508385083950840508415084250843508445084550846508475084850849508505085150852508535085450855508565085750858508595086050861508625086350864508655086650867508685086950870508715087250873508745087550876508775087850879508805088150882508835088450885508865088750888508895089050891508925089350894508955089650897508985089950900509015090250903509045090550906509075090850909509105091150912509135091450915509165091750918509195092050921509225092350924509255092650927509285092950930509315093250933509345093550936509375093850939509405094150942509435094450945509465094750948509495095050951509525095350954509555095650957509585095950960509615096250963509645096550966509675096850969509705097150972509735097450975509765097750978509795098050981509825098350984509855098650987509885098950990509915099250993509945099550996509975099850999510005100151002510035100451005510065100751008510095101051011510125101351014510155101651017510185101951020510215102251023510245102551026510275102851029510305103151032510335103451035510365103751038510395104051041510425104351044510455104651047510485104951050510515105251053510545105551056510575105851059510605106151062510635106451065510665106751068510695107051071510725107351074510755107651077510785107951080510815108251083510845108551086510875108851089510905109151092510935109451095510965109751098510995110051101511025110351104511055110651107511085110951110511115111251113511145111551116511175111851119511205112151122511235112451125511265112751128511295113051131511325113351134511355113651137511385113951140511415114251143511445114551146511475114851149511505115151152511535115451155511565115751158511595116051161511625116351164511655116651167511685116951170511715117251173511745117551176511775117851179511805118151182511835118451185511865118751188511895119051191511925119351194511955119651197511985119951200512015120251203512045120551206512075120851209512105121151212512135121451215512165121751218512195122051221512225122351224512255122651227512285122951230512315123251233512345123551236512375123851239512405124151242512435124451245512465124751248512495125051251512525125351254512555125651257512585125951260512615126251263512645126551266512675126851269512705127151272512735127451275512765127751278512795128051281512825128351284512855128651287512885128951290512915129251293512945129551296512975129851299513005130151302513035130451305513065130751308513095131051311513125131351314513155131651317513185131951320513215132251323513245132551326513275132851329513305133151332513335133451335513365133751338513395134051341513425134351344513455134651347513485134951350513515135251353513545135551356513575135851359513605136151362513635136451365513665136751368513695137051371513725137351374513755137651377513785137951380513815138251383513845138551386513875138851389513905139151392513935139451395513965139751398513995140051401514025140351404514055140651407514085140951410514115141251413514145141551416514175141851419514205142151422514235142451425514265142751428514295143051431514325143351434514355143651437514385143951440514415144251443514445144551446514475144851449514505145151452514535145451455514565145751458514595146051461514625146351464514655146651467514685146951470514715147251473514745147551476514775147851479514805148151482514835148451485514865148751488514895149051491514925149351494514955149651497514985149951500515015150251503515045150551506515075150851509515105151151512515135151451515515165151751518515195152051521515225152351524515255152651527515285152951530515315153251533515345153551536515375153851539515405154151542515435154451545515465154751548515495155051551515525155351554515555155651557515585155951560515615156251563515645156551566515675156851569515705157151572515735157451575515765157751578515795158051581515825158351584515855158651587515885158951590515915159251593515945159551596515975159851599516005160151602516035160451605516065160751608516095161051611516125161351614516155161651617516185161951620516215162251623516245162551626516275162851629516305163151632516335163451635516365163751638516395164051641516425164351644516455164651647516485164951650516515165251653516545165551656516575165851659516605166151662516635166451665516665166751668516695167051671516725167351674516755167651677516785167951680516815168251683516845168551686516875168851689516905169151692516935169451695516965169751698516995170051701517025170351704517055170651707517085170951710517115171251713517145171551716517175171851719517205172151722517235172451725517265172751728517295173051731517325173351734517355173651737517385173951740517415174251743517445174551746517475174851749517505175151752517535175451755517565175751758517595176051761517625176351764517655176651767517685176951770517715177251773517745177551776517775177851779517805178151782517835178451785517865178751788517895179051791517925179351794517955179651797517985179951800518015180251803518045180551806518075180851809518105181151812518135181451815518165181751818518195182051821518225182351824518255182651827518285182951830518315183251833518345183551836518375183851839518405184151842518435184451845518465184751848518495185051851518525185351854518555185651857518585185951860518615186251863518645186551866518675186851869518705187151872518735187451875518765187751878518795188051881518825188351884518855188651887518885188951890518915189251893518945189551896518975189851899519005190151902519035190451905519065190751908519095191051911519125191351914519155191651917519185191951920519215192251923519245192551926519275192851929519305193151932519335193451935519365193751938519395194051941519425194351944519455194651947519485194951950519515195251953519545195551956519575195851959519605196151962519635196451965519665196751968519695197051971519725197351974519755197651977519785197951980519815198251983519845198551986519875198851989519905199151992519935199451995519965199751998519995200052001520025200352004520055200652007520085200952010520115201252013520145201552016520175201852019520205202152022520235202452025520265202752028520295203052031520325203352034520355203652037520385203952040520415204252043520445204552046520475204852049520505205152052520535205452055520565205752058520595206052061520625206352064520655206652067520685206952070520715207252073520745207552076520775207852079520805208152082520835208452085520865208752088520895209052091520925209352094520955209652097520985209952100521015210252103521045210552106521075210852109521105211152112521135211452115521165211752118521195212052121521225212352124521255212652127521285212952130521315213252133521345213552136521375213852139521405214152142521435214452145521465214752148521495215052151521525215352154521555215652157521585215952160521615216252163521645216552166521675216852169521705217152172521735217452175521765217752178521795218052181521825218352184521855218652187521885218952190521915219252193521945219552196521975219852199522005220152202522035220452205522065220752208522095221052211522125221352214522155221652217522185221952220522215222252223522245222552226522275222852229522305223152232522335223452235522365223752238522395224052241522425224352244522455224652247522485224952250522515225252253522545225552256522575225852259522605226152262522635226452265522665226752268522695227052271522725227352274522755227652277522785227952280522815228252283522845228552286522875228852289522905229152292522935229452295522965229752298522995230052301523025230352304523055230652307523085230952310523115231252313523145231552316523175231852319523205232152322523235232452325523265232752328523295233052331523325233352334523355233652337523385233952340523415234252343523445234552346523475234852349523505235152352523535235452355523565235752358523595236052361523625236352364523655236652367523685236952370523715237252373523745237552376523775237852379523805238152382523835238452385523865238752388523895239052391523925239352394523955239652397523985239952400524015240252403524045240552406524075240852409524105241152412524135241452415524165241752418524195242052421524225242352424524255242652427524285242952430524315243252433524345243552436524375243852439524405244152442524435244452445524465244752448524495245052451524525245352454524555245652457524585245952460524615246252463524645246552466524675246852469524705247152472524735247452475524765247752478524795248052481524825248352484524855248652487524885248952490524915249252493524945249552496524975249852499525005250152502525035250452505525065250752508525095251052511525125251352514525155251652517525185251952520525215252252523525245252552526525275252852529525305253152532525335253452535525365253752538525395254052541525425254352544525455254652547525485254952550525515255252553525545255552556525575255852559525605256152562525635256452565525665256752568525695257052571525725257352574525755257652577525785257952580525815258252583525845258552586525875258852589525905259152592525935259452595525965259752598525995260052601526025260352604526055260652607526085260952610526115261252613526145261552616526175261852619526205262152622526235262452625526265262752628526295263052631526325263352634526355263652637526385263952640526415264252643526445264552646526475264852649526505265152652526535265452655526565265752658526595266052661526625266352664526655266652667526685266952670526715267252673526745267552676526775267852679526805268152682526835268452685526865268752688526895269052691526925269352694526955269652697526985269952700527015270252703527045270552706527075270852709527105271152712527135271452715527165271752718527195272052721527225272352724527255272652727527285272952730527315273252733527345273552736527375273852739527405274152742527435274452745527465274752748527495275052751527525275352754527555275652757527585275952760527615276252763527645276552766527675276852769527705277152772527735277452775527765277752778527795278052781527825278352784527855278652787527885278952790527915279252793527945279552796527975279852799528005280152802528035280452805528065280752808528095281052811528125281352814528155281652817528185281952820528215282252823528245282552826528275282852829528305283152832528335283452835528365283752838528395284052841528425284352844528455284652847528485284952850528515285252853528545285552856528575285852859528605286152862528635286452865528665286752868528695287052871528725287352874528755287652877528785287952880528815288252883528845288552886528875288852889528905289152892528935289452895528965289752898528995290052901529025290352904529055290652907529085290952910529115291252913529145291552916529175291852919529205292152922529235292452925529265292752928529295293052931529325293352934529355293652937529385293952940529415294252943529445294552946529475294852949529505295152952529535295452955529565295752958529595296052961529625296352964529655296652967529685296952970529715297252973529745297552976529775297852979529805298152982529835298452985529865298752988529895299052991529925299352994529955299652997529985299953000530015300253003530045300553006530075300853009530105301153012530135301453015530165301753018530195302053021530225302353024530255302653027530285302953030530315303253033530345303553036530375303853039530405304153042530435304453045530465304753048530495305053051530525305353054530555305653057530585305953060530615306253063530645306553066530675306853069530705307153072530735307453075530765307753078530795308053081530825308353084530855308653087530885308953090530915309253093530945309553096530975309853099531005310153102531035310453105531065310753108531095311053111531125311353114531155311653117531185311953120531215312253123531245312553126531275312853129531305313153132531335313453135531365313753138531395314053141531425314353144531455314653147531485314953150531515315253153531545315553156531575315853159531605316153162531635316453165531665316753168531695317053171531725317353174531755317653177531785317953180531815318253183531845318553186531875318853189531905319153192531935319453195531965319753198531995320053201532025320353204532055320653207532085320953210532115321253213532145321553216532175321853219532205322153222532235322453225532265322753228532295323053231532325323353234532355323653237532385323953240532415324253243532445324553246532475324853249532505325153252532535325453255532565325753258532595326053261532625326353264532655326653267532685326953270532715327253273532745327553276532775327853279532805328153282532835328453285532865328753288532895329053291532925329353294532955329653297532985329953300533015330253303533045330553306533075330853309533105331153312533135331453315533165331753318533195332053321533225332353324533255332653327533285332953330533315333253333533345333553336533375333853339533405334153342533435334453345533465334753348533495335053351533525335353354533555335653357533585335953360533615336253363533645336553366533675336853369533705337153372533735337453375533765337753378533795338053381533825338353384533855338653387533885338953390533915339253393533945339553396533975339853399534005340153402534035340453405534065340753408534095341053411534125341353414534155341653417534185341953420534215342253423534245342553426534275342853429534305343153432534335343453435534365343753438534395344053441534425344353444534455344653447534485344953450534515345253453534545345553456534575345853459534605346153462534635346453465534665346753468534695347053471534725347353474534755347653477534785347953480534815348253483534845348553486534875348853489534905349153492534935349453495534965349753498534995350053501535025350353504535055350653507535085350953510535115351253513535145351553516535175351853519535205352153522535235352453525535265352753528535295353053531535325353353534535355353653537535385353953540535415354253543535445354553546535475354853549535505355153552535535355453555535565355753558535595356053561535625356353564535655356653567535685356953570535715357253573535745357553576535775357853579535805358153582535835358453585535865358753588535895359053591535925359353594535955359653597535985359953600536015360253603536045360553606536075360853609536105361153612536135361453615536165361753618536195362053621536225362353624536255362653627536285362953630536315363253633536345363553636536375363853639536405364153642536435364453645536465364753648536495365053651536525365353654536555365653657536585365953660536615366253663536645366553666536675366853669536705367153672536735367453675536765367753678536795368053681536825368353684536855368653687536885368953690536915369253693536945369553696536975369853699537005370153702537035370453705537065370753708537095371053711537125371353714537155371653717537185371953720537215372253723537245372553726537275372853729537305373153732537335373453735537365373753738537395374053741537425374353744537455374653747537485374953750537515375253753537545375553756537575375853759537605376153762537635376453765537665376753768537695377053771537725377353774537755377653777537785377953780537815378253783537845378553786537875378853789537905379153792537935379453795537965379753798537995380053801538025380353804538055380653807538085380953810538115381253813538145381553816538175381853819538205382153822538235382453825538265382753828538295383053831538325383353834538355383653837538385383953840538415384253843538445384553846538475384853849538505385153852538535385453855538565385753858538595386053861538625386353864538655386653867538685386953870538715387253873538745387553876538775387853879538805388153882538835388453885538865388753888538895389053891538925389353894538955389653897538985389953900539015390253903539045390553906539075390853909539105391153912539135391453915539165391753918539195392053921539225392353924539255392653927539285392953930539315393253933539345393553936539375393853939539405394153942539435394453945539465394753948539495395053951539525395353954539555395653957539585395953960539615396253963539645396553966539675396853969539705397153972539735397453975539765397753978539795398053981539825398353984539855398653987539885398953990539915399253993539945399553996539975399853999540005400154002540035400454005540065400754008540095401054011540125401354014540155401654017540185401954020540215402254023540245402554026540275402854029540305403154032540335403454035540365403754038540395404054041540425404354044540455404654047540485404954050540515405254053540545405554056540575405854059540605406154062540635406454065540665406754068540695407054071540725407354074540755407654077540785407954080540815408254083540845408554086540875408854089540905409154092540935409454095540965409754098540995410054101541025410354104541055410654107541085410954110541115411254113541145411554116541175411854119541205412154122541235412454125541265412754128541295413054131541325413354134541355413654137541385413954140541415414254143541445414554146541475414854149541505415154152541535415454155541565415754158541595416054161541625416354164541655416654167541685416954170541715417254173541745417554176541775417854179541805418154182541835418454185541865418754188541895419054191541925419354194541955419654197541985419954200542015420254203542045420554206542075420854209542105421154212542135421454215542165421754218542195422054221542225422354224542255422654227542285422954230542315423254233542345423554236542375423854239542405424154242542435424454245542465424754248542495425054251542525425354254542555425654257542585425954260542615426254263542645426554266542675426854269542705427154272542735427454275542765427754278542795428054281542825428354284542855428654287542885428954290542915429254293542945429554296542975429854299543005430154302543035430454305543065430754308543095431054311543125431354314543155431654317543185431954320543215432254323543245432554326543275432854329543305433154332543335433454335543365433754338543395434054341543425434354344543455434654347543485434954350543515435254353543545435554356543575435854359543605436154362543635436454365543665436754368543695437054371543725437354374543755437654377543785437954380543815438254383543845438554386543875438854389543905439154392543935439454395543965439754398543995440054401544025440354404544055440654407544085440954410544115441254413544145441554416544175441854419544205442154422544235442454425544265442754428544295443054431544325443354434544355443654437544385443954440544415444254443544445444554446544475444854449544505445154452544535445454455544565445754458544595446054461544625446354464544655446654467544685446954470544715447254473544745447554476544775447854479544805448154482544835448454485544865448754488544895449054491544925449354494544955449654497544985449954500545015450254503545045450554506545075450854509545105451154512545135451454515545165451754518545195452054521545225452354524545255452654527545285452954530545315453254533545345453554536545375453854539545405454154542545435454454545545465454754548545495455054551545525455354554545555455654557545585455954560545615456254563545645456554566545675456854569545705457154572545735457454575545765457754578545795458054581545825458354584545855458654587545885458954590545915459254593545945459554596545975459854599546005460154602546035460454605546065460754608546095461054611546125461354614546155461654617546185461954620546215462254623546245462554626546275462854629546305463154632546335463454635546365463754638546395464054641546425464354644546455464654647546485464954650546515465254653546545465554656546575465854659546605466154662546635466454665546665466754668546695467054671546725467354674546755467654677546785467954680546815468254683546845468554686546875468854689546905469154692546935469454695546965469754698546995470054701547025470354704547055470654707547085470954710547115471254713547145471554716547175471854719547205472154722547235472454725547265472754728547295473054731547325473354734547355473654737547385473954740547415474254743547445474554746547475474854749547505475154752547535475454755547565475754758547595476054761547625476354764547655476654767547685476954770547715477254773547745477554776547775477854779547805478154782547835478454785547865478754788547895479054791547925479354794547955479654797547985479954800548015480254803548045480554806548075480854809548105481154812548135481454815548165481754818548195482054821548225482354824548255482654827548285482954830548315483254833548345483554836548375483854839548405484154842548435484454845548465484754848548495485054851548525485354854548555485654857548585485954860548615486254863548645486554866548675486854869548705487154872548735487454875548765487754878548795488054881 |
- var oimo = oimo || {};
- if(!oimo.collision) oimo.collision = {};
- if(!oimo.collision.broadphase) oimo.collision.broadphase = {};
- oimo.collision.broadphase.BroadPhase = class oimo_collision_broadphase_BroadPhase {
- constructor(type) {
- this._type = type;
- this._numProxies = 0;
- this._proxyList = null;
- this._proxyListLast = null;
- this._proxyPairList = null;
- this._incremental = false;
- this._testCount = 0;
- this._proxyPairPool = null;
- this._idCount = 0;
- this._convexSweep = new oimo.collision.broadphase._BroadPhase.ConvexSweepGeometry();
- this._aabb = new oimo.collision.broadphase._BroadPhase.AabbGeometry();
- this.identity = new oimo.common.Transform();
- this.zero = new oimo.common.Vec3();
- this.rayCastHit = new oimo.collision.geometry.RayCastHit();
- }
- createProxy(userData,aabb) {
- return null;
- }
- destroyProxy(proxy) {
- }
- moveProxy(proxy,aabb,displacement) {
- }
- isOverlapping(proxy1,proxy2) {
- if(proxy1._aabbMinX < proxy2._aabbMaxX && proxy1._aabbMaxX > proxy2._aabbMinX && proxy1._aabbMinY < proxy2._aabbMaxY && proxy1._aabbMaxY > proxy2._aabbMinY && proxy1._aabbMinZ < proxy2._aabbMaxZ) {
- return proxy1._aabbMaxZ > proxy2._aabbMinZ;
- } else {
- return false;
- }
- }
- collectPairs() {
- }
- getProxyPairList() {
- return this._proxyPairList;
- }
- isIncremental() {
- return this._incremental;
- }
- getTestCount() {
- return this._testCount;
- }
- rayCast(begin,end,callback) {
- }
- convexCast(convex,begin,translation,callback) {
- }
- aabbTest(aabb,callback) {
- }
- }
- if(!oimo.collision.geometry) oimo.collision.geometry = {};
- oimo.collision.geometry.Geometry = class oimo_collision_geometry_Geometry {
- constructor(type) {
- this._type = type;
- this._volume = 0;
- }
- _updateMass() {
- }
- _computeAabb(aabb,tf) {
- }
- _rayCastLocal(beginX,beginY,beginZ,endX,endY,endZ,hit) {
- return false;
- }
- getType() {
- return this._type;
- }
- getVolume() {
- return this._volume;
- }
- rayCast(begin,end,transform,hit) {
- var beginLocal;
- var beginLocalX;
- var beginLocalY;
- var beginLocalZ;
- var endLocal;
- var endLocalX;
- var endLocalY;
- var endLocalZ;
- var v = begin;
- beginLocalX = v.x;
- beginLocalY = v.y;
- beginLocalZ = v.z;
- var v1 = end;
- endLocalX = v1.x;
- endLocalY = v1.y;
- endLocalZ = v1.z;
- beginLocalX -= transform._positionX;
- beginLocalY -= transform._positionY;
- beginLocalZ -= transform._positionZ;
- endLocalX -= transform._positionX;
- endLocalY -= transform._positionY;
- endLocalZ -= transform._positionZ;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = transform._rotation00 * beginLocalX + transform._rotation10 * beginLocalY + transform._rotation20 * beginLocalZ;
- __tmp__Y = transform._rotation01 * beginLocalX + transform._rotation11 * beginLocalY + transform._rotation21 * beginLocalZ;
- __tmp__Z = transform._rotation02 * beginLocalX + transform._rotation12 * beginLocalY + transform._rotation22 * beginLocalZ;
- beginLocalX = __tmp__X;
- beginLocalY = __tmp__Y;
- beginLocalZ = __tmp__Z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = transform._rotation00 * endLocalX + transform._rotation10 * endLocalY + transform._rotation20 * endLocalZ;
- __tmp__Y1 = transform._rotation01 * endLocalX + transform._rotation11 * endLocalY + transform._rotation21 * endLocalZ;
- __tmp__Z1 = transform._rotation02 * endLocalX + transform._rotation12 * endLocalY + transform._rotation22 * endLocalZ;
- endLocalX = __tmp__X1;
- endLocalY = __tmp__Y1;
- endLocalZ = __tmp__Z1;
- if(this._rayCastLocal(beginLocalX,beginLocalY,beginLocalZ,endLocalX,endLocalY,endLocalZ,hit)) {
- var localPos;
- var localPosX;
- var localPosY;
- var localPosZ;
- var localNormal;
- var localNormalX;
- var localNormalY;
- var localNormalZ;
- var v2 = hit.position;
- localPosX = v2.x;
- localPosY = v2.y;
- localPosZ = v2.z;
- var v3 = hit.normal;
- localNormalX = v3.x;
- localNormalY = v3.y;
- localNormalZ = v3.z;
- var __tmp__X2;
- var __tmp__Y2;
- var __tmp__Z2;
- __tmp__X2 = transform._rotation00 * localPosX + transform._rotation01 * localPosY + transform._rotation02 * localPosZ;
- __tmp__Y2 = transform._rotation10 * localPosX + transform._rotation11 * localPosY + transform._rotation12 * localPosZ;
- __tmp__Z2 = transform._rotation20 * localPosX + transform._rotation21 * localPosY + transform._rotation22 * localPosZ;
- localPosX = __tmp__X2;
- localPosY = __tmp__Y2;
- localPosZ = __tmp__Z2;
- var __tmp__X3;
- var __tmp__Y3;
- var __tmp__Z3;
- __tmp__X3 = transform._rotation00 * localNormalX + transform._rotation01 * localNormalY + transform._rotation02 * localNormalZ;
- __tmp__Y3 = transform._rotation10 * localNormalX + transform._rotation11 * localNormalY + transform._rotation12 * localNormalZ;
- __tmp__Z3 = transform._rotation20 * localNormalX + transform._rotation21 * localNormalY + transform._rotation22 * localNormalZ;
- localNormalX = __tmp__X3;
- localNormalY = __tmp__Y3;
- localNormalZ = __tmp__Z3;
- localPosX += transform._positionX;
- localPosY += transform._positionY;
- localPosZ += transform._positionZ;
- var v4 = hit.position;
- v4.x = localPosX;
- v4.y = localPosY;
- v4.z = localPosZ;
- var v5 = hit.normal;
- v5.x = localNormalX;
- v5.y = localNormalY;
- v5.z = localNormalZ;
- return true;
- }
- return false;
- }
- }
- oimo.collision.geometry.ConvexGeometry = class oimo_collision_geometry_ConvexGeometry extends oimo.collision.geometry.Geometry {
- constructor(type) {
- super(type);
- this._gjkMargin = oimo.common.Setting.defaultGJKMargin;
- this._useGjkRayCast = false;
- }
- getGjkMergin() {
- return this._gjkMargin;
- }
- setGjkMergin(gjkMergin) {
- if(gjkMergin < 0) {
- gjkMergin = 0;
- }
- this._gjkMargin = gjkMergin;
- }
- computeLocalSupportingVertex(dir,out) {
- }
- rayCast(begin,end,transform,hit) {
- if(this._useGjkRayCast) {
- return oimo.collision.narrowphase.detector.gjkepa.GjkEpa.instance.rayCast(this,transform,begin,end,hit);
- } else {
- return super.rayCast(begin,end,transform,hit);
- }
- }
- }
- if(!oimo.collision.broadphase._BroadPhase) oimo.collision.broadphase._BroadPhase = {};
- oimo.collision.broadphase._BroadPhase.ConvexSweepGeometry = class oimo_collision_broadphase__$BroadPhase_ConvexSweepGeometry extends oimo.collision.geometry.ConvexGeometry {
- constructor() {
- super(-1);
- }
- init(c,transform,translation) {
- this.c = c;
- var tr;
- var trX;
- var trY;
- var trZ;
- var v = translation;
- trX = v.x;
- trY = v.y;
- trZ = v.z;
- var localTr;
- var localTrX;
- var localTrY;
- var localTrZ;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = transform._rotation00 * trX + transform._rotation10 * trY + transform._rotation20 * trZ;
- __tmp__Y = transform._rotation01 * trX + transform._rotation11 * trY + transform._rotation21 * trZ;
- __tmp__Z = transform._rotation02 * trX + transform._rotation12 * trY + transform._rotation22 * trZ;
- localTrX = __tmp__X;
- localTrY = __tmp__Y;
- localTrZ = __tmp__Z;
- this.localTranslation = new oimo.common.Vec3();
- var v1 = this.localTranslation;
- v1.x = localTrX;
- v1.y = localTrY;
- v1.z = localTrZ;
- this._gjkMargin = c._gjkMargin;
- }
- computeLocalSupportingVertex(dir,out) {
- this.c.computeLocalSupportingVertex(dir,out);
- var v = this.localTranslation;
- if(dir.x * v.x + dir.y * v.y + dir.z * v.z > 0) {
- var v1 = this.localTranslation;
- var tx = out.x + v1.x;
- var ty = out.y + v1.y;
- var tz = out.z + v1.z;
- out.x = tx;
- out.y = ty;
- out.z = tz;
- }
- }
- }
- oimo.collision.broadphase._BroadPhase.AabbGeometry = class oimo_collision_broadphase__$BroadPhase_AabbGeometry extends oimo.collision.geometry.ConvexGeometry {
- constructor() {
- super(-1);
- this.min = new oimo.common.Vec3();
- this.max = new oimo.common.Vec3();
- }
- computeLocalSupportingVertex(dir,out) {
- out.x = dir.x > 0 ? this.max.x : this.min.x;
- out.y = dir.y > 0 ? this.max.y : this.min.y;
- out.z = dir.z > 0 ? this.max.z : this.min.z;
- }
- }
- oimo.collision.broadphase.BroadPhaseProxyCallback = class oimo_collision_broadphase_BroadPhaseProxyCallback {
- constructor() {
- }
- process(proxy) {
- }
- }
- oimo.collision.broadphase.BroadPhaseType = class oimo_collision_broadphase_BroadPhaseType {
- }
- oimo.collision.broadphase.Proxy = class oimo_collision_broadphase_Proxy {
- constructor(userData,id) {
- this.userData = userData;
- this._id = id;
- this._prev = null;
- this._next = null;
- this._aabbMinX = 0;
- this._aabbMinY = 0;
- this._aabbMinZ = 0;
- this._aabbMaxX = 0;
- this._aabbMaxY = 0;
- this._aabbMaxZ = 0;
- }
- getId() {
- return this._id;
- }
- getFatAabb() {
- var aabb = new oimo.collision.geometry.Aabb();
- aabb._minX = this._aabbMinX;
- aabb._minY = this._aabbMinY;
- aabb._minZ = this._aabbMinZ;
- aabb._maxX = this._aabbMaxX;
- aabb._maxY = this._aabbMaxY;
- aabb._maxZ = this._aabbMaxZ;
- return aabb;
- }
- getFatAabbTo(aabb) {
- aabb._minX = this._aabbMinX;
- aabb._minY = this._aabbMinY;
- aabb._minZ = this._aabbMinZ;
- aabb._maxX = this._aabbMaxX;
- aabb._maxY = this._aabbMaxY;
- aabb._maxZ = this._aabbMaxZ;
- }
- }
- oimo.collision.broadphase.ProxyPair = class oimo_collision_broadphase_ProxyPair {
- constructor() {
- this._p1 = null;
- this._p2 = null;
- }
- getProxy1() {
- return this._p1;
- }
- getProxy2() {
- return this._p2;
- }
- getNext() {
- return this._next;
- }
- }
- if(!oimo.collision.broadphase.bruteforce) oimo.collision.broadphase.bruteforce = {};
- oimo.collision.broadphase.bruteforce.BruteForceBroadPhase = class oimo_collision_broadphase_bruteforce_BruteForceBroadPhase extends oimo.collision.broadphase.BroadPhase {
- constructor() {
- super(1);
- this._incremental = false;
- }
- createProxy(userData,aabb) {
- var proxy = new oimo.collision.broadphase.Proxy(userData,this._idCount++);
- this._numProxies++;
- if(this._proxyList == null) {
- this._proxyList = proxy;
- this._proxyListLast = proxy;
- } else {
- this._proxyListLast._next = proxy;
- proxy._prev = this._proxyListLast;
- this._proxyListLast = proxy;
- }
- proxy._aabbMinX = aabb._minX;
- proxy._aabbMinY = aabb._minY;
- proxy._aabbMinZ = aabb._minZ;
- proxy._aabbMaxX = aabb._maxX;
- proxy._aabbMaxY = aabb._maxY;
- proxy._aabbMaxZ = aabb._maxZ;
- return proxy;
- }
- destroyProxy(proxy) {
- this._numProxies--;
- var prev = proxy._prev;
- var next = proxy._next;
- if(prev != null) {
- prev._next = next;
- }
- if(next != null) {
- next._prev = prev;
- }
- if(proxy == this._proxyList) {
- this._proxyList = this._proxyList._next;
- }
- if(proxy == this._proxyListLast) {
- this._proxyListLast = this._proxyListLast._prev;
- }
- proxy._next = null;
- proxy._prev = null;
- proxy.userData = null;
- }
- moveProxy(proxy,aabb,dislacement) {
- proxy._aabbMinX = aabb._minX;
- proxy._aabbMinY = aabb._minY;
- proxy._aabbMinZ = aabb._minZ;
- proxy._aabbMaxX = aabb._maxX;
- proxy._aabbMaxY = aabb._maxY;
- proxy._aabbMaxZ = aabb._maxZ;
- }
- collectPairs() {
- var p = this._proxyPairList;
- if(p != null) {
- while(true) {
- p._p1 = null;
- p._p2 = null;
- p = p._next;
- if(!(p != null)) {
- break;
- }
- }
- this._proxyPairList._next = this._proxyPairPool;
- this._proxyPairPool = this._proxyPairList;
- this._proxyPairList = null;
- }
- this._testCount = 0;
- var p1 = this._proxyList;
- while(p1 != null) {
- var n = p1._next;
- var p2 = p1._next;
- while(p2 != null) {
- var n1 = p2._next;
- this._testCount++;
- if(p1._aabbMinX < p2._aabbMaxX && p1._aabbMaxX > p2._aabbMinX && p1._aabbMinY < p2._aabbMaxY && p1._aabbMaxY > p2._aabbMinY && p1._aabbMinZ < p2._aabbMaxZ && p1._aabbMaxZ > p2._aabbMinZ) {
- var first = this._proxyPairPool;
- if(first != null) {
- this._proxyPairPool = first._next;
- first._next = null;
- } else {
- first = new oimo.collision.broadphase.ProxyPair();
- }
- var pp = first;
- if(this._proxyPairList == null) {
- this._proxyPairList = pp;
- } else {
- pp._next = this._proxyPairList;
- this._proxyPairList = pp;
- }
- pp._p1 = p1;
- pp._p2 = p2;
- }
- p2 = n1;
- }
- p1 = n;
- }
- }
- rayCast(begin,end,callback) {
- var p1;
- var p1X;
- var p1Y;
- var p1Z;
- var p2;
- var p2X;
- var p2Y;
- var p2Z;
- var dir;
- var dirX;
- var dirY;
- var dirZ;
- var v = begin;
- p1X = v.x;
- p1Y = v.y;
- p1Z = v.z;
- var v1 = end;
- p2X = v1.x;
- p2Y = v1.y;
- p2Z = v1.z;
- dirX = p2X - p1X;
- dirY = p2Y - p1Y;
- dirZ = p2Z - p1Z;
- var min;
- var minX;
- var minY;
- var minZ;
- var max;
- var maxX;
- var maxY;
- var maxZ;
- minX = p1X < p2X ? p1X : p2X;
- minY = p1Y < p2Y ? p1Y : p2Y;
- minZ = p1Z < p2Z ? p1Z : p2Z;
- maxX = p1X > p2X ? p1X : p2X;
- maxY = p1Y > p2Y ? p1Y : p2Y;
- maxZ = p1Z > p2Z ? p1Z : p2Z;
- var p = this._proxyList;
- while(p != null) {
- var n = p._next;
- var x1 = p1X;
- var y1 = p1Y;
- var z1 = p1Z;
- var x2 = p2X;
- var y2 = p2Y;
- var z2 = p2Z;
- var sminx = x1 < x2 ? x1 : x2;
- var sminy = y1 < y2 ? y1 : y2;
- var sminz = z1 < z2 ? z1 : z2;
- var smaxx = x1 > x2 ? x1 : x2;
- var smaxy = y1 > y2 ? y1 : y2;
- var smaxz = z1 > z2 ? z1 : z2;
- var pminx = p._aabbMinX;
- var pminy = p._aabbMinY;
- var pminz = p._aabbMinZ;
- var pmaxx = p._aabbMaxX;
- var pmaxy = p._aabbMaxY;
- var pmaxz = p._aabbMaxZ;
- var tmp;
- if(pminx > smaxx || pmaxx < sminx || pminy > smaxy || pmaxy < sminy || pminz > smaxz || pmaxz < sminz) {
- tmp = false;
- } else {
- var dx = x2 - x1;
- var dy = y2 - y1;
- var dz = z2 - z1;
- var adx = dx < 0 ? -dx : dx;
- var ady = dy < 0 ? -dy : dy;
- var adz = dz < 0 ? -dz : dz;
- var pextx = (pmaxx - pminx) * 0.5;
- var pexty = (pmaxy - pminy) * 0.5;
- var pextz = (pmaxz - pminz) * 0.5;
- var pcntx = (pmaxx + pminx) * 0.5;
- var pcnty = (pmaxy + pminy) * 0.5;
- var pcntz = (pmaxz + pminz) * 0.5;
- var cpx = x1 - pcntx;
- var cpy = y1 - pcnty;
- var cpz = z1 - pcntz;
- var tmp1;
- var tmp2;
- var x = cpy * dz - cpz * dy;
- if(!((x < 0 ? -x : x) - (pexty * adz + pextz * ady) > 0)) {
- var x3 = cpz * dx - cpx * dz;
- tmp2 = (x3 < 0 ? -x3 : x3) - (pextz * adx + pextx * adz) > 0;
- } else {
- tmp2 = true;
- }
- if(!tmp2) {
- var x4 = cpx * dy - cpy * dx;
- tmp1 = (x4 < 0 ? -x4 : x4) - (pextx * ady + pexty * adx) > 0;
- } else {
- tmp1 = true;
- }
- tmp = tmp1 ? false : true;
- }
- if(tmp) {
- callback.process(p);
- }
- p = n;
- }
- }
- convexCast(convex,begin,translation,callback) {
- var p = this._proxyList;
- while(p != null) {
- var n = p._next;
- var v = this._aabb.min;
- v.x = p._aabbMinX;
- v.y = p._aabbMinY;
- v.z = p._aabbMinZ;
- var v1 = this._aabb.max;
- v1.x = p._aabbMaxX;
- v1.y = p._aabbMaxY;
- v1.z = p._aabbMaxZ;
- this._convexSweep.init(convex,begin,translation);
- var gjkEpa = oimo.collision.narrowphase.detector.gjkepa.GjkEpa.instance;
- if(gjkEpa.computeClosestPointsImpl(this._convexSweep,this._aabb,begin,this.identity,null,false) == 0 && gjkEpa.distance <= 0) {
- callback.process(p);
- }
- p = n;
- }
- }
- aabbTest(aabb,callback) {
- var p = this._proxyList;
- while(p != null) {
- var n = p._next;
- if(aabb._minX < p._aabbMaxX && aabb._maxX > p._aabbMinX && aabb._minY < p._aabbMaxY && aabb._maxY > p._aabbMinY && aabb._minZ < p._aabbMaxZ && aabb._maxZ > p._aabbMinZ) {
- callback.process(p);
- }
- p = n;
- }
- }
- }
- if(!oimo.collision.broadphase.bvh) oimo.collision.broadphase.bvh = {};
- oimo.collision.broadphase.bvh.BvhBroadPhase = class oimo_collision_broadphase_bvh_BvhBroadPhase extends oimo.collision.broadphase.BroadPhase {
- constructor() {
- super(2);
- this._incremental = true;
- this._tree = new oimo.collision.broadphase.bvh.BvhTree();
- var this1 = new Array(1024);
- this.movedProxies = this1;
- this.numMovedProxies = 0;
- }
- collide(n1,n2) {
- this._testCount++;
- var l1 = n1._height == 0;
- var l2 = n2._height == 0;
- if(n1 == n2) {
- if(l1) {
- return;
- }
- this.collide(n1._children[0],n2);
- this.collide(n1._children[1],n2);
- return;
- }
- if(!(n1._aabbMinX < n2._aabbMaxX && n1._aabbMaxX > n2._aabbMinX && n1._aabbMinY < n2._aabbMaxY && n1._aabbMaxY > n2._aabbMinY && n1._aabbMinZ < n2._aabbMaxZ && n1._aabbMaxZ > n2._aabbMinZ)) {
- return;
- }
- if(l1 && l2) {
- var p1 = n1._proxy;
- var p2 = n2._proxy;
- var first = this._proxyPairPool;
- if(first != null) {
- this._proxyPairPool = first._next;
- first._next = null;
- } else {
- first = new oimo.collision.broadphase.ProxyPair();
- }
- var pp = first;
- if(this._proxyPairList == null) {
- this._proxyPairList = pp;
- } else {
- pp._next = this._proxyPairList;
- this._proxyPairList = pp;
- }
- pp._p1 = p1;
- pp._p2 = p2;
- return;
- }
- if(l2 || n1._height > n2._height) {
- this.collide(n1._children[0],n2);
- this.collide(n1._children[1],n2);
- } else {
- this.collide(n2._children[0],n1);
- this.collide(n2._children[1],n1);
- }
- }
- rayCastRecursive(node,_p1X,_p1Y,_p1Z,_p2X,_p2Y,_p2Z,callback) {
- var p1;
- var p1X;
- var p1Y;
- var p1Z;
- var p2;
- var p2X;
- var p2Y;
- var p2Z;
- p1X = _p1X;
- p1Y = _p1Y;
- p1Z = _p1Z;
- p2X = _p2X;
- p2Y = _p2Y;
- p2Z = _p2Z;
- var x1 = p1X;
- var y1 = p1Y;
- var z1 = p1Z;
- var x2 = p2X;
- var y2 = p2Y;
- var z2 = p2Z;
- var sminx = x1 < x2 ? x1 : x2;
- var sminy = y1 < y2 ? y1 : y2;
- var sminz = z1 < z2 ? z1 : z2;
- var smaxx = x1 > x2 ? x1 : x2;
- var smaxy = y1 > y2 ? y1 : y2;
- var smaxz = z1 > z2 ? z1 : z2;
- var pminx = node._aabbMinX;
- var pminy = node._aabbMinY;
- var pminz = node._aabbMinZ;
- var pmaxx = node._aabbMaxX;
- var pmaxy = node._aabbMaxY;
- var pmaxz = node._aabbMaxZ;
- var tmp;
- if(pminx > smaxx || pmaxx < sminx || pminy > smaxy || pmaxy < sminy || pminz > smaxz || pmaxz < sminz) {
- tmp = false;
- } else {
- var dx = x2 - x1;
- var dy = y2 - y1;
- var dz = z2 - z1;
- var adx = dx < 0 ? -dx : dx;
- var ady = dy < 0 ? -dy : dy;
- var adz = dz < 0 ? -dz : dz;
- var pextx = (pmaxx - pminx) * 0.5;
- var pexty = (pmaxy - pminy) * 0.5;
- var pextz = (pmaxz - pminz) * 0.5;
- var pcntx = (pmaxx + pminx) * 0.5;
- var pcnty = (pmaxy + pminy) * 0.5;
- var pcntz = (pmaxz + pminz) * 0.5;
- var cpx = x1 - pcntx;
- var cpy = y1 - pcnty;
- var cpz = z1 - pcntz;
- var tmp1;
- var tmp2;
- var x = cpy * dz - cpz * dy;
- if(!((x < 0 ? -x : x) - (pexty * adz + pextz * ady) > 0)) {
- var x3 = cpz * dx - cpx * dz;
- tmp2 = (x3 < 0 ? -x3 : x3) - (pextz * adx + pextx * adz) > 0;
- } else {
- tmp2 = true;
- }
- if(!tmp2) {
- var x4 = cpx * dy - cpy * dx;
- tmp1 = (x4 < 0 ? -x4 : x4) - (pextx * ady + pexty * adx) > 0;
- } else {
- tmp1 = true;
- }
- tmp = tmp1 ? false : true;
- }
- if(!tmp) {
- return;
- }
- if(node._height == 0) {
- callback.process(node._proxy);
- return;
- }
- this.rayCastRecursive(node._children[0],p1X,p1Y,p1Z,p2X,p2Y,p2Z,callback);
- this.rayCastRecursive(node._children[1],p1X,p1Y,p1Z,p2X,p2Y,p2Z,callback);
- }
- convexCastRecursive(node,convex,begin,translation,callback) {
- var v = this._aabb.min;
- v.x = node._aabbMinX;
- v.y = node._aabbMinY;
- v.z = node._aabbMinZ;
- var v1 = this._aabb.max;
- v1.x = node._aabbMaxX;
- v1.y = node._aabbMaxY;
- v1.z = node._aabbMaxZ;
- this._convexSweep.init(convex,begin,translation);
- var gjkEpa = oimo.collision.narrowphase.detector.gjkepa.GjkEpa.instance;
- if(!(gjkEpa.computeClosestPointsImpl(this._convexSweep,this._aabb,begin,this.identity,null,false) == 0 && gjkEpa.distance <= 0)) {
- return;
- }
- if(node._height == 0) {
- callback.process(node._proxy);
- return;
- }
- this.convexCastRecursive(node._children[0],convex,begin,translation,callback);
- this.convexCastRecursive(node._children[1],convex,begin,translation,callback);
- }
- aabbTestRecursive(node,aabb,callback) {
- if(!(node._aabbMinX < aabb._maxX && node._aabbMaxX > aabb._minX && node._aabbMinY < aabb._maxY && node._aabbMaxY > aabb._minY && node._aabbMinZ < aabb._maxZ && node._aabbMaxZ > aabb._minZ)) {
- return;
- }
- if(node._height == 0) {
- callback.process(node._proxy);
- return;
- }
- this.aabbTestRecursive(node._children[0],aabb,callback);
- this.aabbTestRecursive(node._children[1],aabb,callback);
- }
- createProxy(userData,aabb) {
- var p = new oimo.collision.broadphase.bvh.BvhProxy(userData,this._idCount++);
- this._numProxies++;
- if(this._proxyList == null) {
- this._proxyList = p;
- this._proxyListLast = p;
- } else {
- this._proxyListLast._next = p;
- p._prev = this._proxyListLast;
- this._proxyListLast = p;
- }
- var displacement = null;
- p._aabbMinX = aabb._minX;
- p._aabbMinY = aabb._minY;
- p._aabbMinZ = aabb._minZ;
- p._aabbMaxX = aabb._maxX;
- p._aabbMaxY = aabb._maxY;
- p._aabbMaxZ = aabb._maxZ;
- var padding = oimo.common.Setting.bvhProxyPadding;
- var paddingVec;
- var paddingVecX;
- var paddingVecY;
- var paddingVecZ;
- paddingVecX = padding;
- paddingVecY = padding;
- paddingVecZ = padding;
- p._aabbMinX -= paddingVecX;
- p._aabbMinY -= paddingVecY;
- p._aabbMinZ -= paddingVecZ;
- p._aabbMaxX += paddingVecX;
- p._aabbMaxY += paddingVecY;
- p._aabbMaxZ += paddingVecZ;
- if(displacement != null) {
- var d;
- var dX;
- var dY;
- var dZ;
- var zero;
- var zeroX;
- var zeroY;
- var zeroZ;
- var addToMin;
- var addToMinX;
- var addToMinY;
- var addToMinZ;
- var addToMax;
- var addToMaxX;
- var addToMaxY;
- var addToMaxZ;
- zeroX = 0;
- zeroY = 0;
- zeroZ = 0;
- var v = displacement;
- dX = v.x;
- dY = v.y;
- dZ = v.z;
- addToMinX = zeroX < dX ? zeroX : dX;
- addToMinY = zeroY < dY ? zeroY : dY;
- addToMinZ = zeroZ < dZ ? zeroZ : dZ;
- addToMaxX = zeroX > dX ? zeroX : dX;
- addToMaxY = zeroY > dY ? zeroY : dY;
- addToMaxZ = zeroZ > dZ ? zeroZ : dZ;
- p._aabbMinX += addToMinX;
- p._aabbMinY += addToMinY;
- p._aabbMinZ += addToMinZ;
- p._aabbMaxX += addToMaxX;
- p._aabbMaxY += addToMaxY;
- p._aabbMaxZ += addToMaxZ;
- }
- var _this = this._tree;
- var first = _this._nodePool;
- if(first != null) {
- _this._nodePool = first._next;
- first._next = null;
- } else {
- first = new oimo.collision.broadphase.bvh.BvhNode();
- }
- var leaf = first;
- leaf._proxy = p;
- p._leaf = leaf;
- leaf._aabbMinX = p._aabbMinX;
- leaf._aabbMinY = p._aabbMinY;
- leaf._aabbMinZ = p._aabbMinZ;
- leaf._aabbMaxX = p._aabbMaxX;
- leaf._aabbMaxY = p._aabbMaxY;
- leaf._aabbMaxZ = p._aabbMaxZ;
- _this._numLeaves++;
- if(_this.leafList == null) {
- _this.leafList = leaf;
- _this.leafListLast = leaf;
- } else {
- _this.leafListLast._nextLeaf = leaf;
- leaf._prevLeaf = _this.leafListLast;
- _this.leafListLast = leaf;
- }
- if(_this._root == null) {
- _this._root = leaf;
- } else {
- var sibling = _this._root;
- while(sibling._height > 0) {
- var nextStep = _this._strategy._decideInsertion(sibling,leaf);
- if(nextStep == -1) {
- break;
- } else {
- sibling = sibling._children[nextStep];
- }
- }
- var parent = sibling._parent;
- var first1 = _this._nodePool;
- if(first1 != null) {
- _this._nodePool = first1._next;
- first1._next = null;
- } else {
- first1 = new oimo.collision.broadphase.bvh.BvhNode();
- }
- var node = first1;
- if(parent == null) {
- _this._root = node;
- } else {
- var index = sibling._childIndex;
- parent._children[index] = node;
- node._parent = parent;
- node._childIndex = index;
- }
- var index1 = sibling._childIndex;
- node._children[index1] = sibling;
- sibling._parent = node;
- sibling._childIndex = index1;
- var index2 = sibling._childIndex ^ 1;
- node._children[index2] = leaf;
- leaf._parent = node;
- leaf._childIndex = index2;
- while(node != null) {
- if(_this._strategy._balancingEnabled) {
- var nh = node._height;
- if(nh < 2) {
- node = node;
- } else {
- var p1 = node._parent;
- var l = node._children[0];
- var r = node._children[1];
- var lh = l._height;
- var rh = r._height;
- var balance = lh - rh;
- var nodeIndex = node._childIndex;
- if(balance > 1) {
- var ll = l._children[0];
- var lr = l._children[1];
- var llh = ll._height;
- var lrh = lr._height;
- if(llh > lrh) {
- l._children[1] = node;
- node._parent = l;
- node._childIndex = 1;
- node._children[0] = lr;
- lr._parent = node;
- lr._childIndex = 0;
- var c1 = l._children[0];
- var c2 = l._children[1];
- l._aabbMinX = c1._aabbMinX < c2._aabbMinX ? c1._aabbMinX : c2._aabbMinX;
- l._aabbMinY = c1._aabbMinY < c2._aabbMinY ? c1._aabbMinY : c2._aabbMinY;
- l._aabbMinZ = c1._aabbMinZ < c2._aabbMinZ ? c1._aabbMinZ : c2._aabbMinZ;
- l._aabbMaxX = c1._aabbMaxX > c2._aabbMaxX ? c1._aabbMaxX : c2._aabbMaxX;
- l._aabbMaxY = c1._aabbMaxY > c2._aabbMaxY ? c1._aabbMaxY : c2._aabbMaxY;
- l._aabbMaxZ = c1._aabbMaxZ > c2._aabbMaxZ ? c1._aabbMaxZ : c2._aabbMaxZ;
- var h1 = l._children[0]._height;
- var h2 = l._children[1]._height;
- l._height = (h1 > h2 ? h1 : h2) + 1;
- var c11 = node._children[0];
- var c21 = node._children[1];
- node._aabbMinX = c11._aabbMinX < c21._aabbMinX ? c11._aabbMinX : c21._aabbMinX;
- node._aabbMinY = c11._aabbMinY < c21._aabbMinY ? c11._aabbMinY : c21._aabbMinY;
- node._aabbMinZ = c11._aabbMinZ < c21._aabbMinZ ? c11._aabbMinZ : c21._aabbMinZ;
- node._aabbMaxX = c11._aabbMaxX > c21._aabbMaxX ? c11._aabbMaxX : c21._aabbMaxX;
- node._aabbMaxY = c11._aabbMaxY > c21._aabbMaxY ? c11._aabbMaxY : c21._aabbMaxY;
- node._aabbMaxZ = c11._aabbMaxZ > c21._aabbMaxZ ? c11._aabbMaxZ : c21._aabbMaxZ;
- var h11 = node._children[0]._height;
- var h21 = node._children[1]._height;
- node._height = (h11 > h21 ? h11 : h21) + 1;
- } else {
- l._children[0] = node;
- node._parent = l;
- node._childIndex = 0;
- node._children[0] = ll;
- ll._parent = node;
- ll._childIndex = 0;
- var c12 = l._children[0];
- var c22 = l._children[1];
- l._aabbMinX = c12._aabbMinX < c22._aabbMinX ? c12._aabbMinX : c22._aabbMinX;
- l._aabbMinY = c12._aabbMinY < c22._aabbMinY ? c12._aabbMinY : c22._aabbMinY;
- l._aabbMinZ = c12._aabbMinZ < c22._aabbMinZ ? c12._aabbMinZ : c22._aabbMinZ;
- l._aabbMaxX = c12._aabbMaxX > c22._aabbMaxX ? c12._aabbMaxX : c22._aabbMaxX;
- l._aabbMaxY = c12._aabbMaxY > c22._aabbMaxY ? c12._aabbMaxY : c22._aabbMaxY;
- l._aabbMaxZ = c12._aabbMaxZ > c22._aabbMaxZ ? c12._aabbMaxZ : c22._aabbMaxZ;
- var h12 = l._children[0]._height;
- var h22 = l._children[1]._height;
- l._height = (h12 > h22 ? h12 : h22) + 1;
- var c13 = node._children[0];
- var c23 = node._children[1];
- node._aabbMinX = c13._aabbMinX < c23._aabbMinX ? c13._aabbMinX : c23._aabbMinX;
- node._aabbMinY = c13._aabbMinY < c23._aabbMinY ? c13._aabbMinY : c23._aabbMinY;
- node._aabbMinZ = c13._aabbMinZ < c23._aabbMinZ ? c13._aabbMinZ : c23._aabbMinZ;
- node._aabbMaxX = c13._aabbMaxX > c23._aabbMaxX ? c13._aabbMaxX : c23._aabbMaxX;
- node._aabbMaxY = c13._aabbMaxY > c23._aabbMaxY ? c13._aabbMaxY : c23._aabbMaxY;
- node._aabbMaxZ = c13._aabbMaxZ > c23._aabbMaxZ ? c13._aabbMaxZ : c23._aabbMaxZ;
- var h13 = node._children[0]._height;
- var h23 = node._children[1]._height;
- node._height = (h13 > h23 ? h13 : h23) + 1;
- }
- if(p1 != null) {
- p1._children[nodeIndex] = l;
- l._parent = p1;
- l._childIndex = nodeIndex;
- } else {
- _this._root = l;
- l._parent = null;
- }
- node = l;
- } else if(balance < -1) {
- var rl = r._children[0];
- var rr = r._children[1];
- var rlh = rl._height;
- var rrh = rr._height;
- if(rlh > rrh) {
- r._children[1] = node;
- node._parent = r;
- node._childIndex = 1;
- node._children[1] = rr;
- rr._parent = node;
- rr._childIndex = 1;
- var c14 = r._children[0];
- var c24 = r._children[1];
- r._aabbMinX = c14._aabbMinX < c24._aabbMinX ? c14._aabbMinX : c24._aabbMinX;
- r._aabbMinY = c14._aabbMinY < c24._aabbMinY ? c14._aabbMinY : c24._aabbMinY;
- r._aabbMinZ = c14._aabbMinZ < c24._aabbMinZ ? c14._aabbMinZ : c24._aabbMinZ;
- r._aabbMaxX = c14._aabbMaxX > c24._aabbMaxX ? c14._aabbMaxX : c24._aabbMaxX;
- r._aabbMaxY = c14._aabbMaxY > c24._aabbMaxY ? c14._aabbMaxY : c24._aabbMaxY;
- r._aabbMaxZ = c14._aabbMaxZ > c24._aabbMaxZ ? c14._aabbMaxZ : c24._aabbMaxZ;
- var h14 = r._children[0]._height;
- var h24 = r._children[1]._height;
- r._height = (h14 > h24 ? h14 : h24) + 1;
- var c15 = node._children[0];
- var c25 = node._children[1];
- node._aabbMinX = c15._aabbMinX < c25._aabbMinX ? c15._aabbMinX : c25._aabbMinX;
- node._aabbMinY = c15._aabbMinY < c25._aabbMinY ? c15._aabbMinY : c25._aabbMinY;
- node._aabbMinZ = c15._aabbMinZ < c25._aabbMinZ ? c15._aabbMinZ : c25._aabbMinZ;
- node._aabbMaxX = c15._aabbMaxX > c25._aabbMaxX ? c15._aabbMaxX : c25._aabbMaxX;
- node._aabbMaxY = c15._aabbMaxY > c25._aabbMaxY ? c15._aabbMaxY : c25._aabbMaxY;
- node._aabbMaxZ = c15._aabbMaxZ > c25._aabbMaxZ ? c15._aabbMaxZ : c25._aabbMaxZ;
- var h15 = node._children[0]._height;
- var h25 = node._children[1]._height;
- node._height = (h15 > h25 ? h15 : h25) + 1;
- } else {
- r._children[0] = node;
- node._parent = r;
- node._childIndex = 0;
- node._children[1] = rl;
- rl._parent = node;
- rl._childIndex = 1;
- var c16 = r._children[0];
- var c26 = r._children[1];
- r._aabbMinX = c16._aabbMinX < c26._aabbMinX ? c16._aabbMinX : c26._aabbMinX;
- r._aabbMinY = c16._aabbMinY < c26._aabbMinY ? c16._aabbMinY : c26._aabbMinY;
- r._aabbMinZ = c16._aabbMinZ < c26._aabbMinZ ? c16._aabbMinZ : c26._aabbMinZ;
- r._aabbMaxX = c16._aabbMaxX > c26._aabbMaxX ? c16._aabbMaxX : c26._aabbMaxX;
- r._aabbMaxY = c16._aabbMaxY > c26._aabbMaxY ? c16._aabbMaxY : c26._aabbMaxY;
- r._aabbMaxZ = c16._aabbMaxZ > c26._aabbMaxZ ? c16._aabbMaxZ : c26._aabbMaxZ;
- var h16 = r._children[0]._height;
- var h26 = r._children[1]._height;
- r._height = (h16 > h26 ? h16 : h26) + 1;
- var c17 = node._children[0];
- var c27 = node._children[1];
- node._aabbMinX = c17._aabbMinX < c27._aabbMinX ? c17._aabbMinX : c27._aabbMinX;
- node._aabbMinY = c17._aabbMinY < c27._aabbMinY ? c17._aabbMinY : c27._aabbMinY;
- node._aabbMinZ = c17._aabbMinZ < c27._aabbMinZ ? c17._aabbMinZ : c27._aabbMinZ;
- node._aabbMaxX = c17._aabbMaxX > c27._aabbMaxX ? c17._aabbMaxX : c27._aabbMaxX;
- node._aabbMaxY = c17._aabbMaxY > c27._aabbMaxY ? c17._aabbMaxY : c27._aabbMaxY;
- node._aabbMaxZ = c17._aabbMaxZ > c27._aabbMaxZ ? c17._aabbMaxZ : c27._aabbMaxZ;
- var h17 = node._children[0]._height;
- var h27 = node._children[1]._height;
- node._height = (h17 > h27 ? h17 : h27) + 1;
- }
- if(p1 != null) {
- p1._children[nodeIndex] = r;
- r._parent = p1;
- r._childIndex = nodeIndex;
- } else {
- _this._root = r;
- r._parent = null;
- }
- node = r;
- } else {
- node = node;
- }
- }
- }
- var h18 = node._children[0]._height;
- var h28 = node._children[1]._height;
- node._height = (h18 > h28 ? h18 : h28) + 1;
- var c18 = node._children[0];
- var c28 = node._children[1];
- node._aabbMinX = c18._aabbMinX < c28._aabbMinX ? c18._aabbMinX : c28._aabbMinX;
- node._aabbMinY = c18._aabbMinY < c28._aabbMinY ? c18._aabbMinY : c28._aabbMinY;
- node._aabbMinZ = c18._aabbMinZ < c28._aabbMinZ ? c18._aabbMinZ : c28._aabbMinZ;
- node._aabbMaxX = c18._aabbMaxX > c28._aabbMaxX ? c18._aabbMaxX : c28._aabbMaxX;
- node._aabbMaxY = c18._aabbMaxY > c28._aabbMaxY ? c18._aabbMaxY : c28._aabbMaxY;
- node._aabbMaxZ = c18._aabbMaxZ > c28._aabbMaxZ ? c18._aabbMaxZ : c28._aabbMaxZ;
- node = node._parent;
- }
- }
- if(!p._moved) {
- p._moved = true;
- if(this.movedProxies.length == this.numMovedProxies) {
- var newLength = this.numMovedProxies << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = this.numMovedProxies;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = this.movedProxies[i];
- this.movedProxies[i] = null;
- }
- this.movedProxies = newArray;
- }
- this.movedProxies[this.numMovedProxies++] = p;
- }
- return p;
- }
- destroyProxy(proxy) {
- this._numProxies--;
- var prev = proxy._prev;
- var next = proxy._next;
- if(prev != null) {
- prev._next = next;
- }
- if(next != null) {
- next._prev = prev;
- }
- if(proxy == this._proxyList) {
- this._proxyList = this._proxyList._next;
- }
- if(proxy == this._proxyListLast) {
- this._proxyListLast = this._proxyListLast._prev;
- }
- proxy._next = null;
- proxy._prev = null;
- var bvhProxy = proxy;
- var _this = this._tree;
- var leaf = bvhProxy._leaf;
- _this._numLeaves--;
- var prev1 = leaf._prevLeaf;
- var next1 = leaf._nextLeaf;
- if(prev1 != null) {
- prev1._nextLeaf = next1;
- }
- if(next1 != null) {
- next1._prevLeaf = prev1;
- }
- if(leaf == _this.leafList) {
- _this.leafList = _this.leafList._nextLeaf;
- }
- if(leaf == _this.leafListLast) {
- _this.leafListLast = _this.leafListLast._prevLeaf;
- }
- leaf._nextLeaf = null;
- leaf._prevLeaf = null;
- if(_this._root == leaf) {
- _this._root = null;
- } else {
- var parent = leaf._parent;
- var sibling = parent._children[leaf._childIndex ^ 1];
- var grandParent = parent._parent;
- if(grandParent == null) {
- sibling._parent = null;
- sibling._childIndex = 0;
- _this._root = sibling;
- parent._next = null;
- parent._childIndex = 0;
- parent._children[0] = null;
- parent._children[1] = null;
- parent._childIndex = 0;
- parent._parent = null;
- parent._height = 0;
- parent._proxy = null;
- parent._next = _this._nodePool;
- _this._nodePool = parent;
- } else {
- sibling._parent = grandParent;
- var index = parent._childIndex;
- grandParent._children[index] = sibling;
- sibling._parent = grandParent;
- sibling._childIndex = index;
- parent._next = null;
- parent._childIndex = 0;
- parent._children[0] = null;
- parent._children[1] = null;
- parent._childIndex = 0;
- parent._parent = null;
- parent._height = 0;
- parent._proxy = null;
- parent._next = _this._nodePool;
- _this._nodePool = parent;
- var node = grandParent;
- while(node != null) {
- if(_this._strategy._balancingEnabled) {
- var nh = node._height;
- if(nh < 2) {
- node = node;
- } else {
- var p = node._parent;
- var l = node._children[0];
- var r = node._children[1];
- var lh = l._height;
- var rh = r._height;
- var balance = lh - rh;
- var nodeIndex = node._childIndex;
- if(balance > 1) {
- var ll = l._children[0];
- var lr = l._children[1];
- var llh = ll._height;
- var lrh = lr._height;
- if(llh > lrh) {
- l._children[1] = node;
- node._parent = l;
- node._childIndex = 1;
- node._children[0] = lr;
- lr._parent = node;
- lr._childIndex = 0;
- var c1 = l._children[0];
- var c2 = l._children[1];
- l._aabbMinX = c1._aabbMinX < c2._aabbMinX ? c1._aabbMinX : c2._aabbMinX;
- l._aabbMinY = c1._aabbMinY < c2._aabbMinY ? c1._aabbMinY : c2._aabbMinY;
- l._aabbMinZ = c1._aabbMinZ < c2._aabbMinZ ? c1._aabbMinZ : c2._aabbMinZ;
- l._aabbMaxX = c1._aabbMaxX > c2._aabbMaxX ? c1._aabbMaxX : c2._aabbMaxX;
- l._aabbMaxY = c1._aabbMaxY > c2._aabbMaxY ? c1._aabbMaxY : c2._aabbMaxY;
- l._aabbMaxZ = c1._aabbMaxZ > c2._aabbMaxZ ? c1._aabbMaxZ : c2._aabbMaxZ;
- var h1 = l._children[0]._height;
- var h2 = l._children[1]._height;
- l._height = (h1 > h2 ? h1 : h2) + 1;
- var c11 = node._children[0];
- var c21 = node._children[1];
- node._aabbMinX = c11._aabbMinX < c21._aabbMinX ? c11._aabbMinX : c21._aabbMinX;
- node._aabbMinY = c11._aabbMinY < c21._aabbMinY ? c11._aabbMinY : c21._aabbMinY;
- node._aabbMinZ = c11._aabbMinZ < c21._aabbMinZ ? c11._aabbMinZ : c21._aabbMinZ;
- node._aabbMaxX = c11._aabbMaxX > c21._aabbMaxX ? c11._aabbMaxX : c21._aabbMaxX;
- node._aabbMaxY = c11._aabbMaxY > c21._aabbMaxY ? c11._aabbMaxY : c21._aabbMaxY;
- node._aabbMaxZ = c11._aabbMaxZ > c21._aabbMaxZ ? c11._aabbMaxZ : c21._aabbMaxZ;
- var h11 = node._children[0]._height;
- var h21 = node._children[1]._height;
- node._height = (h11 > h21 ? h11 : h21) + 1;
- } else {
- l._children[0] = node;
- node._parent = l;
- node._childIndex = 0;
- node._children[0] = ll;
- ll._parent = node;
- ll._childIndex = 0;
- var c12 = l._children[0];
- var c22 = l._children[1];
- l._aabbMinX = c12._aabbMinX < c22._aabbMinX ? c12._aabbMinX : c22._aabbMinX;
- l._aabbMinY = c12._aabbMinY < c22._aabbMinY ? c12._aabbMinY : c22._aabbMinY;
- l._aabbMinZ = c12._aabbMinZ < c22._aabbMinZ ? c12._aabbMinZ : c22._aabbMinZ;
- l._aabbMaxX = c12._aabbMaxX > c22._aabbMaxX ? c12._aabbMaxX : c22._aabbMaxX;
- l._aabbMaxY = c12._aabbMaxY > c22._aabbMaxY ? c12._aabbMaxY : c22._aabbMaxY;
- l._aabbMaxZ = c12._aabbMaxZ > c22._aabbMaxZ ? c12._aabbMaxZ : c22._aabbMaxZ;
- var h12 = l._children[0]._height;
- var h22 = l._children[1]._height;
- l._height = (h12 > h22 ? h12 : h22) + 1;
- var c13 = node._children[0];
- var c23 = node._children[1];
- node._aabbMinX = c13._aabbMinX < c23._aabbMinX ? c13._aabbMinX : c23._aabbMinX;
- node._aabbMinY = c13._aabbMinY < c23._aabbMinY ? c13._aabbMinY : c23._aabbMinY;
- node._aabbMinZ = c13._aabbMinZ < c23._aabbMinZ ? c13._aabbMinZ : c23._aabbMinZ;
- node._aabbMaxX = c13._aabbMaxX > c23._aabbMaxX ? c13._aabbMaxX : c23._aabbMaxX;
- node._aabbMaxY = c13._aabbMaxY > c23._aabbMaxY ? c13._aabbMaxY : c23._aabbMaxY;
- node._aabbMaxZ = c13._aabbMaxZ > c23._aabbMaxZ ? c13._aabbMaxZ : c23._aabbMaxZ;
- var h13 = node._children[0]._height;
- var h23 = node._children[1]._height;
- node._height = (h13 > h23 ? h13 : h23) + 1;
- }
- if(p != null) {
- p._children[nodeIndex] = l;
- l._parent = p;
- l._childIndex = nodeIndex;
- } else {
- _this._root = l;
- l._parent = null;
- }
- node = l;
- } else if(balance < -1) {
- var rl = r._children[0];
- var rr = r._children[1];
- var rlh = rl._height;
- var rrh = rr._height;
- if(rlh > rrh) {
- r._children[1] = node;
- node._parent = r;
- node._childIndex = 1;
- node._children[1] = rr;
- rr._parent = node;
- rr._childIndex = 1;
- var c14 = r._children[0];
- var c24 = r._children[1];
- r._aabbMinX = c14._aabbMinX < c24._aabbMinX ? c14._aabbMinX : c24._aabbMinX;
- r._aabbMinY = c14._aabbMinY < c24._aabbMinY ? c14._aabbMinY : c24._aabbMinY;
- r._aabbMinZ = c14._aabbMinZ < c24._aabbMinZ ? c14._aabbMinZ : c24._aabbMinZ;
- r._aabbMaxX = c14._aabbMaxX > c24._aabbMaxX ? c14._aabbMaxX : c24._aabbMaxX;
- r._aabbMaxY = c14._aabbMaxY > c24._aabbMaxY ? c14._aabbMaxY : c24._aabbMaxY;
- r._aabbMaxZ = c14._aabbMaxZ > c24._aabbMaxZ ? c14._aabbMaxZ : c24._aabbMaxZ;
- var h14 = r._children[0]._height;
- var h24 = r._children[1]._height;
- r._height = (h14 > h24 ? h14 : h24) + 1;
- var c15 = node._children[0];
- var c25 = node._children[1];
- node._aabbMinX = c15._aabbMinX < c25._aabbMinX ? c15._aabbMinX : c25._aabbMinX;
- node._aabbMinY = c15._aabbMinY < c25._aabbMinY ? c15._aabbMinY : c25._aabbMinY;
- node._aabbMinZ = c15._aabbMinZ < c25._aabbMinZ ? c15._aabbMinZ : c25._aabbMinZ;
- node._aabbMaxX = c15._aabbMaxX > c25._aabbMaxX ? c15._aabbMaxX : c25._aabbMaxX;
- node._aabbMaxY = c15._aabbMaxY > c25._aabbMaxY ? c15._aabbMaxY : c25._aabbMaxY;
- node._aabbMaxZ = c15._aabbMaxZ > c25._aabbMaxZ ? c15._aabbMaxZ : c25._aabbMaxZ;
- var h15 = node._children[0]._height;
- var h25 = node._children[1]._height;
- node._height = (h15 > h25 ? h15 : h25) + 1;
- } else {
- r._children[0] = node;
- node._parent = r;
- node._childIndex = 0;
- node._children[1] = rl;
- rl._parent = node;
- rl._childIndex = 1;
- var c16 = r._children[0];
- var c26 = r._children[1];
- r._aabbMinX = c16._aabbMinX < c26._aabbMinX ? c16._aabbMinX : c26._aabbMinX;
- r._aabbMinY = c16._aabbMinY < c26._aabbMinY ? c16._aabbMinY : c26._aabbMinY;
- r._aabbMinZ = c16._aabbMinZ < c26._aabbMinZ ? c16._aabbMinZ : c26._aabbMinZ;
- r._aabbMaxX = c16._aabbMaxX > c26._aabbMaxX ? c16._aabbMaxX : c26._aabbMaxX;
- r._aabbMaxY = c16._aabbMaxY > c26._aabbMaxY ? c16._aabbMaxY : c26._aabbMaxY;
- r._aabbMaxZ = c16._aabbMaxZ > c26._aabbMaxZ ? c16._aabbMaxZ : c26._aabbMaxZ;
- var h16 = r._children[0]._height;
- var h26 = r._children[1]._height;
- r._height = (h16 > h26 ? h16 : h26) + 1;
- var c17 = node._children[0];
- var c27 = node._children[1];
- node._aabbMinX = c17._aabbMinX < c27._aabbMinX ? c17._aabbMinX : c27._aabbMinX;
- node._aabbMinY = c17._aabbMinY < c27._aabbMinY ? c17._aabbMinY : c27._aabbMinY;
- node._aabbMinZ = c17._aabbMinZ < c27._aabbMinZ ? c17._aabbMinZ : c27._aabbMinZ;
- node._aabbMaxX = c17._aabbMaxX > c27._aabbMaxX ? c17._aabbMaxX : c27._aabbMaxX;
- node._aabbMaxY = c17._aabbMaxY > c27._aabbMaxY ? c17._aabbMaxY : c27._aabbMaxY;
- node._aabbMaxZ = c17._aabbMaxZ > c27._aabbMaxZ ? c17._aabbMaxZ : c27._aabbMaxZ;
- var h17 = node._children[0]._height;
- var h27 = node._children[1]._height;
- node._height = (h17 > h27 ? h17 : h27) + 1;
- }
- if(p != null) {
- p._children[nodeIndex] = r;
- r._parent = p;
- r._childIndex = nodeIndex;
- } else {
- _this._root = r;
- r._parent = null;
- }
- node = r;
- } else {
- node = node;
- }
- }
- }
- var h18 = node._children[0]._height;
- var h28 = node._children[1]._height;
- node._height = (h18 > h28 ? h18 : h28) + 1;
- var c18 = node._children[0];
- var c28 = node._children[1];
- node._aabbMinX = c18._aabbMinX < c28._aabbMinX ? c18._aabbMinX : c28._aabbMinX;
- node._aabbMinY = c18._aabbMinY < c28._aabbMinY ? c18._aabbMinY : c28._aabbMinY;
- node._aabbMinZ = c18._aabbMinZ < c28._aabbMinZ ? c18._aabbMinZ : c28._aabbMinZ;
- node._aabbMaxX = c18._aabbMaxX > c28._aabbMaxX ? c18._aabbMaxX : c28._aabbMaxX;
- node._aabbMaxY = c18._aabbMaxY > c28._aabbMaxY ? c18._aabbMaxY : c28._aabbMaxY;
- node._aabbMaxZ = c18._aabbMaxZ > c28._aabbMaxZ ? c18._aabbMaxZ : c28._aabbMaxZ;
- node = node._parent;
- }
- }
- }
- bvhProxy._leaf = null;
- leaf._next = null;
- leaf._childIndex = 0;
- leaf._children[0] = null;
- leaf._children[1] = null;
- leaf._childIndex = 0;
- leaf._parent = null;
- leaf._height = 0;
- leaf._proxy = null;
- leaf._next = _this._nodePool;
- _this._nodePool = leaf;
- bvhProxy.userData = null;
- bvhProxy._next = null;
- bvhProxy._prev = null;
- if(bvhProxy._moved) {
- bvhProxy._moved = false;
- }
- }
- moveProxy(proxy,aabb,displacement) {
- var p = proxy;
- if(p._aabbMinX <= aabb._minX && p._aabbMaxX >= aabb._maxX && p._aabbMinY <= aabb._minY && p._aabbMaxY >= aabb._maxY && p._aabbMinZ <= aabb._minZ && p._aabbMaxZ >= aabb._maxZ) {
- return;
- }
- p._aabbMinX = aabb._minX;
- p._aabbMinY = aabb._minY;
- p._aabbMinZ = aabb._minZ;
- p._aabbMaxX = aabb._maxX;
- p._aabbMaxY = aabb._maxY;
- p._aabbMaxZ = aabb._maxZ;
- var padding = oimo.common.Setting.bvhProxyPadding;
- var paddingVec;
- var paddingVecX;
- var paddingVecY;
- var paddingVecZ;
- paddingVecX = padding;
- paddingVecY = padding;
- paddingVecZ = padding;
- p._aabbMinX -= paddingVecX;
- p._aabbMinY -= paddingVecY;
- p._aabbMinZ -= paddingVecZ;
- p._aabbMaxX += paddingVecX;
- p._aabbMaxY += paddingVecY;
- p._aabbMaxZ += paddingVecZ;
- if(displacement != null) {
- var d;
- var dX;
- var dY;
- var dZ;
- var zero;
- var zeroX;
- var zeroY;
- var zeroZ;
- var addToMin;
- var addToMinX;
- var addToMinY;
- var addToMinZ;
- var addToMax;
- var addToMaxX;
- var addToMaxY;
- var addToMaxZ;
- zeroX = 0;
- zeroY = 0;
- zeroZ = 0;
- var v = displacement;
- dX = v.x;
- dY = v.y;
- dZ = v.z;
- addToMinX = zeroX < dX ? zeroX : dX;
- addToMinY = zeroY < dY ? zeroY : dY;
- addToMinZ = zeroZ < dZ ? zeroZ : dZ;
- addToMaxX = zeroX > dX ? zeroX : dX;
- addToMaxY = zeroY > dY ? zeroY : dY;
- addToMaxZ = zeroZ > dZ ? zeroZ : dZ;
- p._aabbMinX += addToMinX;
- p._aabbMinY += addToMinY;
- p._aabbMinZ += addToMinZ;
- p._aabbMaxX += addToMaxX;
- p._aabbMaxY += addToMaxY;
- p._aabbMaxZ += addToMaxZ;
- }
- if(!p._moved) {
- p._moved = true;
- if(this.movedProxies.length == this.numMovedProxies) {
- var newLength = this.numMovedProxies << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = this.numMovedProxies;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = this.movedProxies[i];
- this.movedProxies[i] = null;
- }
- this.movedProxies = newArray;
- }
- this.movedProxies[this.numMovedProxies++] = p;
- }
- }
- collectPairs() {
- var p = this._proxyPairList;
- if(p != null) {
- while(true) {
- p._p1 = null;
- p._p2 = null;
- p = p._next;
- if(!(p != null)) {
- break;
- }
- }
- this._proxyPairList._next = this._proxyPairPool;
- this._proxyPairPool = this._proxyPairList;
- this._proxyPairList = null;
- }
- this._testCount = 0;
- if(this._numProxies < 2) {
- return;
- }
- var topDown = false;
- if(topDown) {
- while(this.numMovedProxies > 0) this.movedProxies[--this.numMovedProxies] = null;
- var _this = this._tree;
- if(_this._root != null) {
- if(_this._root != null) {
- _this.decomposeRecursive(_this._root);
- _this._root = null;
- }
- while(_this.tmp.length < _this._numLeaves) {
- var newLength = _this.tmp.length << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = _this.tmp.length;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = _this.tmp[i];
- _this.tmp[i] = null;
- }
- _this.tmp = newArray;
- }
- var idx = 0;
- var leaf = _this.leafList;
- while(leaf != null) {
- var n = leaf._nextLeaf;
- _this.tmp[idx] = leaf;
- ++idx;
- leaf = n;
- }
- _this._root = _this.buildTopDownRecursive(_this.tmp,0,_this._numLeaves);
- }
- this.collide(this._tree._root,this._tree._root);
- return;
- }
- var incrementalCollision = this.numMovedProxies / this._numProxies < oimo.common.Setting.bvhIncrementalCollisionThreshold;
- var _g2 = 0;
- var _g11 = this.numMovedProxies;
- while(_g2 < _g11) {
- var i1 = _g2++;
- var p1 = this.movedProxies[i1];
- if(p1._moved) {
- var _this1 = this._tree;
- var leaf1 = p1._leaf;
- _this1._numLeaves--;
- var prev = leaf1._prevLeaf;
- var next = leaf1._nextLeaf;
- if(prev != null) {
- prev._nextLeaf = next;
- }
- if(next != null) {
- next._prevLeaf = prev;
- }
- if(leaf1 == _this1.leafList) {
- _this1.leafList = _this1.leafList._nextLeaf;
- }
- if(leaf1 == _this1.leafListLast) {
- _this1.leafListLast = _this1.leafListLast._prevLeaf;
- }
- leaf1._nextLeaf = null;
- leaf1._prevLeaf = null;
- if(_this1._root == leaf1) {
- _this1._root = null;
- } else {
- var parent = leaf1._parent;
- var sibling = parent._children[leaf1._childIndex ^ 1];
- var grandParent = parent._parent;
- if(grandParent == null) {
- sibling._parent = null;
- sibling._childIndex = 0;
- _this1._root = sibling;
- parent._next = null;
- parent._childIndex = 0;
- parent._children[0] = null;
- parent._children[1] = null;
- parent._childIndex = 0;
- parent._parent = null;
- parent._height = 0;
- parent._proxy = null;
- parent._next = _this1._nodePool;
- _this1._nodePool = parent;
- } else {
- sibling._parent = grandParent;
- var index = parent._childIndex;
- grandParent._children[index] = sibling;
- sibling._parent = grandParent;
- sibling._childIndex = index;
- parent._next = null;
- parent._childIndex = 0;
- parent._children[0] = null;
- parent._children[1] = null;
- parent._childIndex = 0;
- parent._parent = null;
- parent._height = 0;
- parent._proxy = null;
- parent._next = _this1._nodePool;
- _this1._nodePool = parent;
- var node = grandParent;
- while(node != null) {
- if(_this1._strategy._balancingEnabled) {
- var nh = node._height;
- if(nh < 2) {
- node = node;
- } else {
- var p2 = node._parent;
- var l = node._children[0];
- var r = node._children[1];
- var lh = l._height;
- var rh = r._height;
- var balance = lh - rh;
- var nodeIndex = node._childIndex;
- if(balance > 1) {
- var ll = l._children[0];
- var lr = l._children[1];
- var llh = ll._height;
- var lrh = lr._height;
- if(llh > lrh) {
- l._children[1] = node;
- node._parent = l;
- node._childIndex = 1;
- node._children[0] = lr;
- lr._parent = node;
- lr._childIndex = 0;
- var c1 = l._children[0];
- var c2 = l._children[1];
- l._aabbMinX = c1._aabbMinX < c2._aabbMinX ? c1._aabbMinX : c2._aabbMinX;
- l._aabbMinY = c1._aabbMinY < c2._aabbMinY ? c1._aabbMinY : c2._aabbMinY;
- l._aabbMinZ = c1._aabbMinZ < c2._aabbMinZ ? c1._aabbMinZ : c2._aabbMinZ;
- l._aabbMaxX = c1._aabbMaxX > c2._aabbMaxX ? c1._aabbMaxX : c2._aabbMaxX;
- l._aabbMaxY = c1._aabbMaxY > c2._aabbMaxY ? c1._aabbMaxY : c2._aabbMaxY;
- l._aabbMaxZ = c1._aabbMaxZ > c2._aabbMaxZ ? c1._aabbMaxZ : c2._aabbMaxZ;
- var h1 = l._children[0]._height;
- var h2 = l._children[1]._height;
- l._height = (h1 > h2 ? h1 : h2) + 1;
- var c11 = node._children[0];
- var c21 = node._children[1];
- node._aabbMinX = c11._aabbMinX < c21._aabbMinX ? c11._aabbMinX : c21._aabbMinX;
- node._aabbMinY = c11._aabbMinY < c21._aabbMinY ? c11._aabbMinY : c21._aabbMinY;
- node._aabbMinZ = c11._aabbMinZ < c21._aabbMinZ ? c11._aabbMinZ : c21._aabbMinZ;
- node._aabbMaxX = c11._aabbMaxX > c21._aabbMaxX ? c11._aabbMaxX : c21._aabbMaxX;
- node._aabbMaxY = c11._aabbMaxY > c21._aabbMaxY ? c11._aabbMaxY : c21._aabbMaxY;
- node._aabbMaxZ = c11._aabbMaxZ > c21._aabbMaxZ ? c11._aabbMaxZ : c21._aabbMaxZ;
- var h11 = node._children[0]._height;
- var h21 = node._children[1]._height;
- node._height = (h11 > h21 ? h11 : h21) + 1;
- } else {
- l._children[0] = node;
- node._parent = l;
- node._childIndex = 0;
- node._children[0] = ll;
- ll._parent = node;
- ll._childIndex = 0;
- var c12 = l._children[0];
- var c22 = l._children[1];
- l._aabbMinX = c12._aabbMinX < c22._aabbMinX ? c12._aabbMinX : c22._aabbMinX;
- l._aabbMinY = c12._aabbMinY < c22._aabbMinY ? c12._aabbMinY : c22._aabbMinY;
- l._aabbMinZ = c12._aabbMinZ < c22._aabbMinZ ? c12._aabbMinZ : c22._aabbMinZ;
- l._aabbMaxX = c12._aabbMaxX > c22._aabbMaxX ? c12._aabbMaxX : c22._aabbMaxX;
- l._aabbMaxY = c12._aabbMaxY > c22._aabbMaxY ? c12._aabbMaxY : c22._aabbMaxY;
- l._aabbMaxZ = c12._aabbMaxZ > c22._aabbMaxZ ? c12._aabbMaxZ : c22._aabbMaxZ;
- var h12 = l._children[0]._height;
- var h22 = l._children[1]._height;
- l._height = (h12 > h22 ? h12 : h22) + 1;
- var c13 = node._children[0];
- var c23 = node._children[1];
- node._aabbMinX = c13._aabbMinX < c23._aabbMinX ? c13._aabbMinX : c23._aabbMinX;
- node._aabbMinY = c13._aabbMinY < c23._aabbMinY ? c13._aabbMinY : c23._aabbMinY;
- node._aabbMinZ = c13._aabbMinZ < c23._aabbMinZ ? c13._aabbMinZ : c23._aabbMinZ;
- node._aabbMaxX = c13._aabbMaxX > c23._aabbMaxX ? c13._aabbMaxX : c23._aabbMaxX;
- node._aabbMaxY = c13._aabbMaxY > c23._aabbMaxY ? c13._aabbMaxY : c23._aabbMaxY;
- node._aabbMaxZ = c13._aabbMaxZ > c23._aabbMaxZ ? c13._aabbMaxZ : c23._aabbMaxZ;
- var h13 = node._children[0]._height;
- var h23 = node._children[1]._height;
- node._height = (h13 > h23 ? h13 : h23) + 1;
- }
- if(p2 != null) {
- p2._children[nodeIndex] = l;
- l._parent = p2;
- l._childIndex = nodeIndex;
- } else {
- _this1._root = l;
- l._parent = null;
- }
- node = l;
- } else if(balance < -1) {
- var rl = r._children[0];
- var rr = r._children[1];
- var rlh = rl._height;
- var rrh = rr._height;
- if(rlh > rrh) {
- r._children[1] = node;
- node._parent = r;
- node._childIndex = 1;
- node._children[1] = rr;
- rr._parent = node;
- rr._childIndex = 1;
- var c14 = r._children[0];
- var c24 = r._children[1];
- r._aabbMinX = c14._aabbMinX < c24._aabbMinX ? c14._aabbMinX : c24._aabbMinX;
- r._aabbMinY = c14._aabbMinY < c24._aabbMinY ? c14._aabbMinY : c24._aabbMinY;
- r._aabbMinZ = c14._aabbMinZ < c24._aabbMinZ ? c14._aabbMinZ : c24._aabbMinZ;
- r._aabbMaxX = c14._aabbMaxX > c24._aabbMaxX ? c14._aabbMaxX : c24._aabbMaxX;
- r._aabbMaxY = c14._aabbMaxY > c24._aabbMaxY ? c14._aabbMaxY : c24._aabbMaxY;
- r._aabbMaxZ = c14._aabbMaxZ > c24._aabbMaxZ ? c14._aabbMaxZ : c24._aabbMaxZ;
- var h14 = r._children[0]._height;
- var h24 = r._children[1]._height;
- r._height = (h14 > h24 ? h14 : h24) + 1;
- var c15 = node._children[0];
- var c25 = node._children[1];
- node._aabbMinX = c15._aabbMinX < c25._aabbMinX ? c15._aabbMinX : c25._aabbMinX;
- node._aabbMinY = c15._aabbMinY < c25._aabbMinY ? c15._aabbMinY : c25._aabbMinY;
- node._aabbMinZ = c15._aabbMinZ < c25._aabbMinZ ? c15._aabbMinZ : c25._aabbMinZ;
- node._aabbMaxX = c15._aabbMaxX > c25._aabbMaxX ? c15._aabbMaxX : c25._aabbMaxX;
- node._aabbMaxY = c15._aabbMaxY > c25._aabbMaxY ? c15._aabbMaxY : c25._aabbMaxY;
- node._aabbMaxZ = c15._aabbMaxZ > c25._aabbMaxZ ? c15._aabbMaxZ : c25._aabbMaxZ;
- var h15 = node._children[0]._height;
- var h25 = node._children[1]._height;
- node._height = (h15 > h25 ? h15 : h25) + 1;
- } else {
- r._children[0] = node;
- node._parent = r;
- node._childIndex = 0;
- node._children[1] = rl;
- rl._parent = node;
- rl._childIndex = 1;
- var c16 = r._children[0];
- var c26 = r._children[1];
- r._aabbMinX = c16._aabbMinX < c26._aabbMinX ? c16._aabbMinX : c26._aabbMinX;
- r._aabbMinY = c16._aabbMinY < c26._aabbMinY ? c16._aabbMinY : c26._aabbMinY;
- r._aabbMinZ = c16._aabbMinZ < c26._aabbMinZ ? c16._aabbMinZ : c26._aabbMinZ;
- r._aabbMaxX = c16._aabbMaxX > c26._aabbMaxX ? c16._aabbMaxX : c26._aabbMaxX;
- r._aabbMaxY = c16._aabbMaxY > c26._aabbMaxY ? c16._aabbMaxY : c26._aabbMaxY;
- r._aabbMaxZ = c16._aabbMaxZ > c26._aabbMaxZ ? c16._aabbMaxZ : c26._aabbMaxZ;
- var h16 = r._children[0]._height;
- var h26 = r._children[1]._height;
- r._height = (h16 > h26 ? h16 : h26) + 1;
- var c17 = node._children[0];
- var c27 = node._children[1];
- node._aabbMinX = c17._aabbMinX < c27._aabbMinX ? c17._aabbMinX : c27._aabbMinX;
- node._aabbMinY = c17._aabbMinY < c27._aabbMinY ? c17._aabbMinY : c27._aabbMinY;
- node._aabbMinZ = c17._aabbMinZ < c27._aabbMinZ ? c17._aabbMinZ : c27._aabbMinZ;
- node._aabbMaxX = c17._aabbMaxX > c27._aabbMaxX ? c17._aabbMaxX : c27._aabbMaxX;
- node._aabbMaxY = c17._aabbMaxY > c27._aabbMaxY ? c17._aabbMaxY : c27._aabbMaxY;
- node._aabbMaxZ = c17._aabbMaxZ > c27._aabbMaxZ ? c17._aabbMaxZ : c27._aabbMaxZ;
- var h17 = node._children[0]._height;
- var h27 = node._children[1]._height;
- node._height = (h17 > h27 ? h17 : h27) + 1;
- }
- if(p2 != null) {
- p2._children[nodeIndex] = r;
- r._parent = p2;
- r._childIndex = nodeIndex;
- } else {
- _this1._root = r;
- r._parent = null;
- }
- node = r;
- } else {
- node = node;
- }
- }
- }
- var h18 = node._children[0]._height;
- var h28 = node._children[1]._height;
- node._height = (h18 > h28 ? h18 : h28) + 1;
- var c18 = node._children[0];
- var c28 = node._children[1];
- node._aabbMinX = c18._aabbMinX < c28._aabbMinX ? c18._aabbMinX : c28._aabbMinX;
- node._aabbMinY = c18._aabbMinY < c28._aabbMinY ? c18._aabbMinY : c28._aabbMinY;
- node._aabbMinZ = c18._aabbMinZ < c28._aabbMinZ ? c18._aabbMinZ : c28._aabbMinZ;
- node._aabbMaxX = c18._aabbMaxX > c28._aabbMaxX ? c18._aabbMaxX : c28._aabbMaxX;
- node._aabbMaxY = c18._aabbMaxY > c28._aabbMaxY ? c18._aabbMaxY : c28._aabbMaxY;
- node._aabbMaxZ = c18._aabbMaxZ > c28._aabbMaxZ ? c18._aabbMaxZ : c28._aabbMaxZ;
- node = node._parent;
- }
- }
- }
- p1._leaf = null;
- leaf1._next = null;
- leaf1._childIndex = 0;
- leaf1._children[0] = null;
- leaf1._children[1] = null;
- leaf1._childIndex = 0;
- leaf1._parent = null;
- leaf1._height = 0;
- leaf1._proxy = null;
- leaf1._next = _this1._nodePool;
- _this1._nodePool = leaf1;
- var _this2 = this._tree;
- var first = _this2._nodePool;
- if(first != null) {
- _this2._nodePool = first._next;
- first._next = null;
- } else {
- first = new oimo.collision.broadphase.bvh.BvhNode();
- }
- var leaf2 = first;
- leaf2._proxy = p1;
- p1._leaf = leaf2;
- leaf2._aabbMinX = p1._aabbMinX;
- leaf2._aabbMinY = p1._aabbMinY;
- leaf2._aabbMinZ = p1._aabbMinZ;
- leaf2._aabbMaxX = p1._aabbMaxX;
- leaf2._aabbMaxY = p1._aabbMaxY;
- leaf2._aabbMaxZ = p1._aabbMaxZ;
- _this2._numLeaves++;
- if(_this2.leafList == null) {
- _this2.leafList = leaf2;
- _this2.leafListLast = leaf2;
- } else {
- _this2.leafListLast._nextLeaf = leaf2;
- leaf2._prevLeaf = _this2.leafListLast;
- _this2.leafListLast = leaf2;
- }
- if(_this2._root == null) {
- _this2._root = leaf2;
- } else {
- var sibling1 = _this2._root;
- while(sibling1._height > 0) {
- var nextStep = _this2._strategy._decideInsertion(sibling1,leaf2);
- if(nextStep == -1) {
- break;
- } else {
- sibling1 = sibling1._children[nextStep];
- }
- }
- var parent1 = sibling1._parent;
- var first1 = _this2._nodePool;
- if(first1 != null) {
- _this2._nodePool = first1._next;
- first1._next = null;
- } else {
- first1 = new oimo.collision.broadphase.bvh.BvhNode();
- }
- var node1 = first1;
- if(parent1 == null) {
- _this2._root = node1;
- } else {
- var index1 = sibling1._childIndex;
- parent1._children[index1] = node1;
- node1._parent = parent1;
- node1._childIndex = index1;
- }
- var index2 = sibling1._childIndex;
- node1._children[index2] = sibling1;
- sibling1._parent = node1;
- sibling1._childIndex = index2;
- var index3 = sibling1._childIndex ^ 1;
- node1._children[index3] = leaf2;
- leaf2._parent = node1;
- leaf2._childIndex = index3;
- while(node1 != null) {
- if(_this2._strategy._balancingEnabled) {
- var nh1 = node1._height;
- if(nh1 < 2) {
- node1 = node1;
- } else {
- var p3 = node1._parent;
- var l1 = node1._children[0];
- var r1 = node1._children[1];
- var lh1 = l1._height;
- var rh1 = r1._height;
- var balance1 = lh1 - rh1;
- var nodeIndex1 = node1._childIndex;
- if(balance1 > 1) {
- var ll1 = l1._children[0];
- var lr1 = l1._children[1];
- var llh1 = ll1._height;
- var lrh1 = lr1._height;
- if(llh1 > lrh1) {
- l1._children[1] = node1;
- node1._parent = l1;
- node1._childIndex = 1;
- node1._children[0] = lr1;
- lr1._parent = node1;
- lr1._childIndex = 0;
- var c19 = l1._children[0];
- var c29 = l1._children[1];
- l1._aabbMinX = c19._aabbMinX < c29._aabbMinX ? c19._aabbMinX : c29._aabbMinX;
- l1._aabbMinY = c19._aabbMinY < c29._aabbMinY ? c19._aabbMinY : c29._aabbMinY;
- l1._aabbMinZ = c19._aabbMinZ < c29._aabbMinZ ? c19._aabbMinZ : c29._aabbMinZ;
- l1._aabbMaxX = c19._aabbMaxX > c29._aabbMaxX ? c19._aabbMaxX : c29._aabbMaxX;
- l1._aabbMaxY = c19._aabbMaxY > c29._aabbMaxY ? c19._aabbMaxY : c29._aabbMaxY;
- l1._aabbMaxZ = c19._aabbMaxZ > c29._aabbMaxZ ? c19._aabbMaxZ : c29._aabbMaxZ;
- var h19 = l1._children[0]._height;
- var h29 = l1._children[1]._height;
- l1._height = (h19 > h29 ? h19 : h29) + 1;
- var c110 = node1._children[0];
- var c210 = node1._children[1];
- node1._aabbMinX = c110._aabbMinX < c210._aabbMinX ? c110._aabbMinX : c210._aabbMinX;
- node1._aabbMinY = c110._aabbMinY < c210._aabbMinY ? c110._aabbMinY : c210._aabbMinY;
- node1._aabbMinZ = c110._aabbMinZ < c210._aabbMinZ ? c110._aabbMinZ : c210._aabbMinZ;
- node1._aabbMaxX = c110._aabbMaxX > c210._aabbMaxX ? c110._aabbMaxX : c210._aabbMaxX;
- node1._aabbMaxY = c110._aabbMaxY > c210._aabbMaxY ? c110._aabbMaxY : c210._aabbMaxY;
- node1._aabbMaxZ = c110._aabbMaxZ > c210._aabbMaxZ ? c110._aabbMaxZ : c210._aabbMaxZ;
- var h110 = node1._children[0]._height;
- var h210 = node1._children[1]._height;
- node1._height = (h110 > h210 ? h110 : h210) + 1;
- } else {
- l1._children[0] = node1;
- node1._parent = l1;
- node1._childIndex = 0;
- node1._children[0] = ll1;
- ll1._parent = node1;
- ll1._childIndex = 0;
- var c111 = l1._children[0];
- var c211 = l1._children[1];
- l1._aabbMinX = c111._aabbMinX < c211._aabbMinX ? c111._aabbMinX : c211._aabbMinX;
- l1._aabbMinY = c111._aabbMinY < c211._aabbMinY ? c111._aabbMinY : c211._aabbMinY;
- l1._aabbMinZ = c111._aabbMinZ < c211._aabbMinZ ? c111._aabbMinZ : c211._aabbMinZ;
- l1._aabbMaxX = c111._aabbMaxX > c211._aabbMaxX ? c111._aabbMaxX : c211._aabbMaxX;
- l1._aabbMaxY = c111._aabbMaxY > c211._aabbMaxY ? c111._aabbMaxY : c211._aabbMaxY;
- l1._aabbMaxZ = c111._aabbMaxZ > c211._aabbMaxZ ? c111._aabbMaxZ : c211._aabbMaxZ;
- var h111 = l1._children[0]._height;
- var h211 = l1._children[1]._height;
- l1._height = (h111 > h211 ? h111 : h211) + 1;
- var c112 = node1._children[0];
- var c212 = node1._children[1];
- node1._aabbMinX = c112._aabbMinX < c212._aabbMinX ? c112._aabbMinX : c212._aabbMinX;
- node1._aabbMinY = c112._aabbMinY < c212._aabbMinY ? c112._aabbMinY : c212._aabbMinY;
- node1._aabbMinZ = c112._aabbMinZ < c212._aabbMinZ ? c112._aabbMinZ : c212._aabbMinZ;
- node1._aabbMaxX = c112._aabbMaxX > c212._aabbMaxX ? c112._aabbMaxX : c212._aabbMaxX;
- node1._aabbMaxY = c112._aabbMaxY > c212._aabbMaxY ? c112._aabbMaxY : c212._aabbMaxY;
- node1._aabbMaxZ = c112._aabbMaxZ > c212._aabbMaxZ ? c112._aabbMaxZ : c212._aabbMaxZ;
- var h112 = node1._children[0]._height;
- var h212 = node1._children[1]._height;
- node1._height = (h112 > h212 ? h112 : h212) + 1;
- }
- if(p3 != null) {
- p3._children[nodeIndex1] = l1;
- l1._parent = p3;
- l1._childIndex = nodeIndex1;
- } else {
- _this2._root = l1;
- l1._parent = null;
- }
- node1 = l1;
- } else if(balance1 < -1) {
- var rl1 = r1._children[0];
- var rr1 = r1._children[1];
- var rlh1 = rl1._height;
- var rrh1 = rr1._height;
- if(rlh1 > rrh1) {
- r1._children[1] = node1;
- node1._parent = r1;
- node1._childIndex = 1;
- node1._children[1] = rr1;
- rr1._parent = node1;
- rr1._childIndex = 1;
- var c113 = r1._children[0];
- var c213 = r1._children[1];
- r1._aabbMinX = c113._aabbMinX < c213._aabbMinX ? c113._aabbMinX : c213._aabbMinX;
- r1._aabbMinY = c113._aabbMinY < c213._aabbMinY ? c113._aabbMinY : c213._aabbMinY;
- r1._aabbMinZ = c113._aabbMinZ < c213._aabbMinZ ? c113._aabbMinZ : c213._aabbMinZ;
- r1._aabbMaxX = c113._aabbMaxX > c213._aabbMaxX ? c113._aabbMaxX : c213._aabbMaxX;
- r1._aabbMaxY = c113._aabbMaxY > c213._aabbMaxY ? c113._aabbMaxY : c213._aabbMaxY;
- r1._aabbMaxZ = c113._aabbMaxZ > c213._aabbMaxZ ? c113._aabbMaxZ : c213._aabbMaxZ;
- var h113 = r1._children[0]._height;
- var h213 = r1._children[1]._height;
- r1._height = (h113 > h213 ? h113 : h213) + 1;
- var c114 = node1._children[0];
- var c214 = node1._children[1];
- node1._aabbMinX = c114._aabbMinX < c214._aabbMinX ? c114._aabbMinX : c214._aabbMinX;
- node1._aabbMinY = c114._aabbMinY < c214._aabbMinY ? c114._aabbMinY : c214._aabbMinY;
- node1._aabbMinZ = c114._aabbMinZ < c214._aabbMinZ ? c114._aabbMinZ : c214._aabbMinZ;
- node1._aabbMaxX = c114._aabbMaxX > c214._aabbMaxX ? c114._aabbMaxX : c214._aabbMaxX;
- node1._aabbMaxY = c114._aabbMaxY > c214._aabbMaxY ? c114._aabbMaxY : c214._aabbMaxY;
- node1._aabbMaxZ = c114._aabbMaxZ > c214._aabbMaxZ ? c114._aabbMaxZ : c214._aabbMaxZ;
- var h114 = node1._children[0]._height;
- var h214 = node1._children[1]._height;
- node1._height = (h114 > h214 ? h114 : h214) + 1;
- } else {
- r1._children[0] = node1;
- node1._parent = r1;
- node1._childIndex = 0;
- node1._children[1] = rl1;
- rl1._parent = node1;
- rl1._childIndex = 1;
- var c115 = r1._children[0];
- var c215 = r1._children[1];
- r1._aabbMinX = c115._aabbMinX < c215._aabbMinX ? c115._aabbMinX : c215._aabbMinX;
- r1._aabbMinY = c115._aabbMinY < c215._aabbMinY ? c115._aabbMinY : c215._aabbMinY;
- r1._aabbMinZ = c115._aabbMinZ < c215._aabbMinZ ? c115._aabbMinZ : c215._aabbMinZ;
- r1._aabbMaxX = c115._aabbMaxX > c215._aabbMaxX ? c115._aabbMaxX : c215._aabbMaxX;
- r1._aabbMaxY = c115._aabbMaxY > c215._aabbMaxY ? c115._aabbMaxY : c215._aabbMaxY;
- r1._aabbMaxZ = c115._aabbMaxZ > c215._aabbMaxZ ? c115._aabbMaxZ : c215._aabbMaxZ;
- var h115 = r1._children[0]._height;
- var h215 = r1._children[1]._height;
- r1._height = (h115 > h215 ? h115 : h215) + 1;
- var c116 = node1._children[0];
- var c216 = node1._children[1];
- node1._aabbMinX = c116._aabbMinX < c216._aabbMinX ? c116._aabbMinX : c216._aabbMinX;
- node1._aabbMinY = c116._aabbMinY < c216._aabbMinY ? c116._aabbMinY : c216._aabbMinY;
- node1._aabbMinZ = c116._aabbMinZ < c216._aabbMinZ ? c116._aabbMinZ : c216._aabbMinZ;
- node1._aabbMaxX = c116._aabbMaxX > c216._aabbMaxX ? c116._aabbMaxX : c216._aabbMaxX;
- node1._aabbMaxY = c116._aabbMaxY > c216._aabbMaxY ? c116._aabbMaxY : c216._aabbMaxY;
- node1._aabbMaxZ = c116._aabbMaxZ > c216._aabbMaxZ ? c116._aabbMaxZ : c216._aabbMaxZ;
- var h116 = node1._children[0]._height;
- var h216 = node1._children[1]._height;
- node1._height = (h116 > h216 ? h116 : h216) + 1;
- }
- if(p3 != null) {
- p3._children[nodeIndex1] = r1;
- r1._parent = p3;
- r1._childIndex = nodeIndex1;
- } else {
- _this2._root = r1;
- r1._parent = null;
- }
- node1 = r1;
- } else {
- node1 = node1;
- }
- }
- }
- var h117 = node1._children[0]._height;
- var h217 = node1._children[1]._height;
- node1._height = (h117 > h217 ? h117 : h217) + 1;
- var c117 = node1._children[0];
- var c217 = node1._children[1];
- node1._aabbMinX = c117._aabbMinX < c217._aabbMinX ? c117._aabbMinX : c217._aabbMinX;
- node1._aabbMinY = c117._aabbMinY < c217._aabbMinY ? c117._aabbMinY : c217._aabbMinY;
- node1._aabbMinZ = c117._aabbMinZ < c217._aabbMinZ ? c117._aabbMinZ : c217._aabbMinZ;
- node1._aabbMaxX = c117._aabbMaxX > c217._aabbMaxX ? c117._aabbMaxX : c217._aabbMaxX;
- node1._aabbMaxY = c117._aabbMaxY > c217._aabbMaxY ? c117._aabbMaxY : c217._aabbMaxY;
- node1._aabbMaxZ = c117._aabbMaxZ > c217._aabbMaxZ ? c117._aabbMaxZ : c217._aabbMaxZ;
- node1 = node1._parent;
- }
- }
- if(incrementalCollision) {
- this.collide(this._tree._root,p1._leaf);
- }
- p1._moved = false;
- }
- this.movedProxies[i1] = null;
- }
- if(!incrementalCollision) {
- this.collide(this._tree._root,this._tree._root);
- }
- this.numMovedProxies = 0;
- }
- rayCast(begin,end,callback) {
- if(this._tree._root == null) {
- return;
- }
- var p1;
- var p1X;
- var p1Y;
- var p1Z;
- var p2;
- var p2X;
- var p2Y;
- var p2Z;
- var v = begin;
- p1X = v.x;
- p1Y = v.y;
- p1Z = v.z;
- var v1 = end;
- p2X = v1.x;
- p2Y = v1.y;
- p2Z = v1.z;
- this.rayCastRecursive(this._tree._root,p1X,p1Y,p1Z,p2X,p2Y,p2Z,callback);
- }
- convexCast(convex,begin,translation,callback) {
- if(this._tree._root == null) {
- return;
- }
- this.convexCastRecursive(this._tree._root,convex,begin,translation,callback);
- }
- aabbTest(aabb,callback) {
- if(this._tree._root == null) {
- return;
- }
- this.aabbTestRecursive(this._tree._root,aabb,callback);
- }
- getTreeBalance() {
- return this._tree._getBalance();
- }
- }
- oimo.collision.broadphase.bvh.BvhInsertionStrategy = class oimo_collision_broadphase_bvh_BvhInsertionStrategy {
- }
- oimo.collision.broadphase.bvh.BvhNode = class oimo_collision_broadphase_bvh_BvhNode {
- constructor() {
- this._next = null;
- this._prevLeaf = null;
- this._nextLeaf = null;
- var this1 = new Array(2);
- this._children = this1;
- this._childIndex = 0;
- this._parent = null;
- this._height = 0;
- this._proxy = null;
- this._aabbMinX = 0;
- this._aabbMinY = 0;
- this._aabbMinZ = 0;
- this._aabbMaxX = 0;
- this._aabbMaxY = 0;
- this._aabbMaxZ = 0;
- }
- }
- oimo.collision.broadphase.bvh.BvhProxy = class oimo_collision_broadphase_bvh_BvhProxy extends oimo.collision.broadphase.Proxy {
- constructor(userData,id) {
- super(userData,id);
- this._leaf = null;
- this._moved = false;
- }
- }
- oimo.collision.broadphase.bvh.BvhStrategy = class oimo_collision_broadphase_bvh_BvhStrategy {
- constructor() {
- this._insertionStrategy = 0;
- this._balancingEnabled = false;
- }
- _decideInsertion(currentNode,leaf) {
- switch(this._insertionStrategy) {
- case 0:
- var center;
- var centerX;
- var centerY;
- var centerZ;
- centerX = leaf._aabbMinX + leaf._aabbMaxX;
- centerY = leaf._aabbMinY + leaf._aabbMaxY;
- centerZ = leaf._aabbMinZ + leaf._aabbMaxZ;
- var c1 = currentNode._children[0];
- var c2 = currentNode._children[1];
- var diff1;
- var diff1X;
- var diff1Y;
- var diff1Z;
- var diff2;
- var diff2X;
- var diff2Y;
- var diff2Z;
- diff1X = c1._aabbMinX + c1._aabbMaxX;
- diff1Y = c1._aabbMinY + c1._aabbMaxY;
- diff1Z = c1._aabbMinZ + c1._aabbMaxZ;
- diff2X = c2._aabbMinX + c2._aabbMaxX;
- diff2Y = c2._aabbMinY + c2._aabbMaxY;
- diff2Z = c2._aabbMinZ + c2._aabbMaxZ;
- diff1X -= centerX;
- diff1Y -= centerY;
- diff1Z -= centerZ;
- diff2X -= centerX;
- diff2Y -= centerY;
- diff2Z -= centerZ;
- var dist1 = diff1X * diff1X + diff1Y * diff1Y + diff1Z * diff1Z;
- var dist2 = diff2X * diff2X + diff2Y * diff2Y + diff2Z * diff2Z;
- if(dist1 < dist2) {
- return 0;
- } else {
- return 1;
- }
- break;
- case 1:
- var c11 = currentNode._children[0];
- var c21 = currentNode._children[1];
- var ex = currentNode._aabbMaxX - currentNode._aabbMinX;
- var ey = currentNode._aabbMaxY - currentNode._aabbMinY;
- var ez = currentNode._aabbMaxZ - currentNode._aabbMinZ;
- var oldArea = (ex * (ey + ez) + ey * ez) * 2;
- var combinedMin;
- var combinedMinX;
- var combinedMinY;
- var combinedMinZ;
- var combinedMax;
- var combinedMaxX;
- var combinedMaxY;
- var combinedMaxZ;
- combinedMinX = currentNode._aabbMinX < leaf._aabbMinX ? currentNode._aabbMinX : leaf._aabbMinX;
- combinedMinY = currentNode._aabbMinY < leaf._aabbMinY ? currentNode._aabbMinY : leaf._aabbMinY;
- combinedMinZ = currentNode._aabbMinZ < leaf._aabbMinZ ? currentNode._aabbMinZ : leaf._aabbMinZ;
- combinedMaxX = currentNode._aabbMaxX > leaf._aabbMaxX ? currentNode._aabbMaxX : leaf._aabbMaxX;
- combinedMaxY = currentNode._aabbMaxY > leaf._aabbMaxY ? currentNode._aabbMaxY : leaf._aabbMaxY;
- combinedMaxZ = currentNode._aabbMaxZ > leaf._aabbMaxZ ? currentNode._aabbMaxZ : leaf._aabbMaxZ;
- var ex1 = combinedMaxX - combinedMinX;
- var ey1 = combinedMaxY - combinedMinY;
- var ez1 = combinedMaxZ - combinedMinZ;
- var newArea = (ex1 * (ey1 + ez1) + ey1 * ez1) * 2;
- var creatingCost = newArea * 2;
- var incrementalCost = (newArea - oldArea) * 2;
- var descendingCost1 = incrementalCost;
- combinedMinX = c11._aabbMinX < leaf._aabbMinX ? c11._aabbMinX : leaf._aabbMinX;
- combinedMinY = c11._aabbMinY < leaf._aabbMinY ? c11._aabbMinY : leaf._aabbMinY;
- combinedMinZ = c11._aabbMinZ < leaf._aabbMinZ ? c11._aabbMinZ : leaf._aabbMinZ;
- combinedMaxX = c11._aabbMaxX > leaf._aabbMaxX ? c11._aabbMaxX : leaf._aabbMaxX;
- combinedMaxY = c11._aabbMaxY > leaf._aabbMaxY ? c11._aabbMaxY : leaf._aabbMaxY;
- combinedMaxZ = c11._aabbMaxZ > leaf._aabbMaxZ ? c11._aabbMaxZ : leaf._aabbMaxZ;
- if(c11._height == 0) {
- var ex2 = combinedMaxX - combinedMinX;
- var ey2 = combinedMaxY - combinedMinY;
- var ez2 = combinedMaxZ - combinedMinZ;
- descendingCost1 += (ex2 * (ey2 + ez2) + ey2 * ez2) * 2;
- } else {
- var ex3 = combinedMaxX - combinedMinX;
- var ey3 = combinedMaxY - combinedMinY;
- var ez3 = combinedMaxZ - combinedMinZ;
- var ex4 = c11._aabbMaxX - c11._aabbMinX;
- var ey4 = c11._aabbMaxY - c11._aabbMinY;
- var ez4 = c11._aabbMaxZ - c11._aabbMinZ;
- descendingCost1 += (ex3 * (ey3 + ez3) + ey3 * ez3) * 2 - (ex4 * (ey4 + ez4) + ey4 * ez4) * 2;
- }
- var descendingCost2 = incrementalCost;
- combinedMinX = c21._aabbMinX < leaf._aabbMinX ? c21._aabbMinX : leaf._aabbMinX;
- combinedMinY = c21._aabbMinY < leaf._aabbMinY ? c21._aabbMinY : leaf._aabbMinY;
- combinedMinZ = c21._aabbMinZ < leaf._aabbMinZ ? c21._aabbMinZ : leaf._aabbMinZ;
- combinedMaxX = c21._aabbMaxX > leaf._aabbMaxX ? c21._aabbMaxX : leaf._aabbMaxX;
- combinedMaxY = c21._aabbMaxY > leaf._aabbMaxY ? c21._aabbMaxY : leaf._aabbMaxY;
- combinedMaxZ = c21._aabbMaxZ > leaf._aabbMaxZ ? c21._aabbMaxZ : leaf._aabbMaxZ;
- if(c21._height == 0) {
- var ex5 = combinedMaxX - combinedMinX;
- var ey5 = combinedMaxY - combinedMinY;
- var ez5 = combinedMaxZ - combinedMinZ;
- descendingCost2 += (ex5 * (ey5 + ez5) + ey5 * ez5) * 2;
- } else {
- var ex6 = combinedMaxX - combinedMinX;
- var ey6 = combinedMaxY - combinedMinY;
- var ez6 = combinedMaxZ - combinedMinZ;
- var ex7 = c21._aabbMaxX - c21._aabbMinX;
- var ey7 = c21._aabbMaxY - c21._aabbMinY;
- var ez7 = c21._aabbMaxZ - c21._aabbMinZ;
- descendingCost2 += (ex6 * (ey6 + ez6) + ey6 * ez6) * 2 - (ex7 * (ey7 + ez7) + ey7 * ez7) * 2;
- }
- if(creatingCost < descendingCost1) {
- if(creatingCost < descendingCost2) {
- return -1;
- } else {
- return 1;
- }
- } else if(descendingCost1 < descendingCost2) {
- return 0;
- } else {
- return 1;
- }
- break;
- default:
- console.log("src/oimo/collision/broadphase/bvh/BvhStrategy.hx:37:","invalid BVH insertion strategy: " + this._insertionStrategy);
- return -1;
- }
- }
- _splitLeaves(leaves,from,until) {
- var invN = 1.0 / (until - from);
- var centerMean;
- var centerMeanX;
- var centerMeanY;
- var centerMeanZ;
- centerMeanX = 0;
- centerMeanY = 0;
- centerMeanZ = 0;
- var _g = from;
- var _g1 = until;
- while(_g < _g1) {
- var i = _g++;
- var leaf = leaves[i];
- leaf._tmpX = leaf._aabbMaxX + leaf._aabbMinX;
- leaf._tmpY = leaf._aabbMaxY + leaf._aabbMinY;
- leaf._tmpZ = leaf._aabbMaxZ + leaf._aabbMinZ;
- centerMeanX += leaf._tmpX;
- centerMeanY += leaf._tmpY;
- centerMeanZ += leaf._tmpZ;
- }
- centerMeanX *= invN;
- centerMeanY *= invN;
- centerMeanZ *= invN;
- var variance;
- var varianceX;
- var varianceY;
- var varianceZ;
- varianceX = 0;
- varianceY = 0;
- varianceZ = 0;
- var _g2 = from;
- var _g3 = until;
- while(_g2 < _g3) {
- var i1 = _g2++;
- var leaf1 = leaves[i1];
- var diff;
- var diffX;
- var diffY;
- var diffZ;
- diffX = leaf1._tmpX - centerMeanX;
- diffY = leaf1._tmpY - centerMeanY;
- diffZ = leaf1._tmpZ - centerMeanZ;
- diffX *= diffX;
- diffY *= diffY;
- diffZ *= diffZ;
- varianceX += diffX;
- varianceY += diffY;
- varianceZ += diffZ;
- }
- var varX = varianceX;
- var varY = varianceY;
- var varZ = varianceZ;
- var l = from;
- var r = until - 1;
- if(varX > varY) {
- if(varX > varZ) {
- var mean = centerMeanX;
- while(true) {
- while(true) {
- var leaf2 = leaves[l];
- if(leaf2._tmpX <= mean) {
- break;
- }
- ++l;
- }
- while(true) {
- var leaf3 = leaves[r];
- if(leaf3._tmpX >= mean) {
- break;
- }
- --r;
- }
- if(l >= r) {
- break;
- }
- var tmp = leaves[l];
- leaves[l] = leaves[r];
- leaves[r] = tmp;
- ++l;
- --r;
- }
- } else {
- var mean1 = centerMeanZ;
- while(true) {
- while(true) {
- var leaf4 = leaves[l];
- if(leaf4._tmpZ <= mean1) {
- break;
- }
- ++l;
- }
- while(true) {
- var leaf5 = leaves[r];
- if(leaf5._tmpZ >= mean1) {
- break;
- }
- --r;
- }
- if(l >= r) {
- break;
- }
- var tmp1 = leaves[l];
- leaves[l] = leaves[r];
- leaves[r] = tmp1;
- ++l;
- --r;
- }
- }
- } else if(varY > varZ) {
- var mean2 = centerMeanY;
- while(true) {
- while(true) {
- var leaf6 = leaves[l];
- if(leaf6._tmpY <= mean2) {
- break;
- }
- ++l;
- }
- while(true) {
- var leaf7 = leaves[r];
- if(leaf7._tmpY >= mean2) {
- break;
- }
- --r;
- }
- if(l >= r) {
- break;
- }
- var tmp2 = leaves[l];
- leaves[l] = leaves[r];
- leaves[r] = tmp2;
- ++l;
- --r;
- }
- } else {
- var mean3 = centerMeanZ;
- while(true) {
- while(true) {
- var leaf8 = leaves[l];
- if(leaf8._tmpZ <= mean3) {
- break;
- }
- ++l;
- }
- while(true) {
- var leaf9 = leaves[r];
- if(leaf9._tmpZ >= mean3) {
- break;
- }
- --r;
- }
- if(l >= r) {
- break;
- }
- var tmp3 = leaves[l];
- leaves[l] = leaves[r];
- leaves[r] = tmp3;
- ++l;
- --r;
- }
- }
- return l;
- }
- }
- oimo.collision.broadphase.bvh.BvhTree = class oimo_collision_broadphase_bvh_BvhTree {
- constructor() {
- this._root = null;
- this._numLeaves = 0;
- this._strategy = new oimo.collision.broadphase.bvh.BvhStrategy();
- this._nodePool = null;
- this.leafList = null;
- this.leafListLast = null;
- var this1 = new Array(1024);
- this.tmp = this1;
- }
- _print(root,indent) {
- if(indent == null) {
- indent = "";
- }
- if(root == null) {
- return;
- }
- if(root._height == 0) {
- console.log("src/oimo/collision/broadphase/bvh/BvhTree.hx:39:",indent + root._proxy._id);
- } else {
- this._print(root._children[0],indent + " ");
- var tmp;
- var size;
- var sizeX;
- var sizeY;
- var sizeZ;
- sizeX = root._aabbMaxX - root._aabbMinX;
- sizeY = root._aabbMaxY - root._aabbMinY;
- sizeZ = root._aabbMaxZ - root._aabbMinZ;
- var x = sizeX;
- var y = sizeY;
- var z = sizeZ;
- if(x * (y + z) + y * z > 0) {
- var size1;
- var sizeX1;
- var sizeY1;
- var sizeZ1;
- sizeX1 = root._aabbMaxX - root._aabbMinX;
- sizeY1 = root._aabbMaxY - root._aabbMinY;
- sizeZ1 = root._aabbMaxZ - root._aabbMinZ;
- var x1 = sizeX1;
- var y1 = sizeY1;
- var z1 = sizeZ1;
- tmp = ((x1 * (y1 + z1) + y1 * z1) * 1000 + 0.5 | 0) / 1000;
- } else {
- var size2;
- var sizeX2;
- var sizeY2;
- var sizeZ2;
- sizeX2 = root._aabbMaxX - root._aabbMinX;
- sizeY2 = root._aabbMaxY - root._aabbMinY;
- sizeZ2 = root._aabbMaxZ - root._aabbMinZ;
- var x2 = sizeX2;
- var y2 = sizeY2;
- var z2 = sizeZ2;
- tmp = ((x2 * (y2 + z2) + y2 * z2) * 1000 - 0.5 | 0) / 1000;
- }
- console.log("src/oimo/collision/broadphase/bvh/BvhTree.hx:42:",indent + "#" + root._height + ", " + tmp);
- this._print(root._children[1],indent + " ");
- }
- }
- _getBalance() {
- return this.getBalanceRecursive(this._root);
- }
- deleteRecursive(root) {
- if(root._height == 0) {
- var prev = root._prevLeaf;
- var next = root._nextLeaf;
- if(prev != null) {
- prev._nextLeaf = next;
- }
- if(next != null) {
- next._prevLeaf = prev;
- }
- if(root == this.leafList) {
- this.leafList = this.leafList._nextLeaf;
- }
- if(root == this.leafListLast) {
- this.leafListLast = this.leafListLast._prevLeaf;
- }
- root._nextLeaf = null;
- root._prevLeaf = null;
- root._proxy._leaf = null;
- root._next = null;
- root._childIndex = 0;
- root._children[0] = null;
- root._children[1] = null;
- root._childIndex = 0;
- root._parent = null;
- root._height = 0;
- root._proxy = null;
- root._next = this._nodePool;
- this._nodePool = root;
- return;
- }
- this.deleteRecursive(root._children[0]);
- this.deleteRecursive(root._children[1]);
- root._next = null;
- root._childIndex = 0;
- root._children[0] = null;
- root._children[1] = null;
- root._childIndex = 0;
- root._parent = null;
- root._height = 0;
- root._proxy = null;
- root._next = this._nodePool;
- this._nodePool = root;
- }
- decomposeRecursive(root) {
- if(root._height == 0) {
- root._childIndex = 0;
- root._parent = null;
- return;
- }
- this.decomposeRecursive(root._children[0]);
- this.decomposeRecursive(root._children[1]);
- root._next = null;
- root._childIndex = 0;
- root._children[0] = null;
- root._children[1] = null;
- root._childIndex = 0;
- root._parent = null;
- root._height = 0;
- root._proxy = null;
- root._next = this._nodePool;
- this._nodePool = root;
- }
- buildTopDownRecursive(leaves,from,until) {
- var num = until - from;
- if(num == 1) {
- var leaf = leaves[from];
- var proxy = leaf._proxy;
- leaf._aabbMinX = proxy._aabbMinX;
- leaf._aabbMinY = proxy._aabbMinY;
- leaf._aabbMinZ = proxy._aabbMinZ;
- leaf._aabbMaxX = proxy._aabbMaxX;
- leaf._aabbMaxY = proxy._aabbMaxY;
- leaf._aabbMaxZ = proxy._aabbMaxZ;
- return leaf;
- }
- var splitAt = this._strategy._splitLeaves(leaves,from,until);
- var child1 = this.buildTopDownRecursive(leaves,from,splitAt);
- var child2 = this.buildTopDownRecursive(leaves,splitAt,until);
- var first = this._nodePool;
- if(first != null) {
- this._nodePool = first._next;
- first._next = null;
- } else {
- first = new oimo.collision.broadphase.bvh.BvhNode();
- }
- var parent = first;
- parent._children[0] = child1;
- child1._parent = parent;
- child1._childIndex = 0;
- parent._children[1] = child2;
- child2._parent = parent;
- child2._childIndex = 1;
- var c1 = parent._children[0];
- var c2 = parent._children[1];
- parent._aabbMinX = c1._aabbMinX < c2._aabbMinX ? c1._aabbMinX : c2._aabbMinX;
- parent._aabbMinY = c1._aabbMinY < c2._aabbMinY ? c1._aabbMinY : c2._aabbMinY;
- parent._aabbMinZ = c1._aabbMinZ < c2._aabbMinZ ? c1._aabbMinZ : c2._aabbMinZ;
- parent._aabbMaxX = c1._aabbMaxX > c2._aabbMaxX ? c1._aabbMaxX : c2._aabbMaxX;
- parent._aabbMaxY = c1._aabbMaxY > c2._aabbMaxY ? c1._aabbMaxY : c2._aabbMaxY;
- parent._aabbMaxZ = c1._aabbMaxZ > c2._aabbMaxZ ? c1._aabbMaxZ : c2._aabbMaxZ;
- var h1 = parent._children[0]._height;
- var h2 = parent._children[1]._height;
- parent._height = (h1 > h2 ? h1 : h2) + 1;
- return parent;
- }
- getBalanceRecursive(root) {
- if(root == null || root._height == 0) {
- return 0;
- }
- var balance = root._children[0]._height - root._children[1]._height;
- if(balance < 0) {
- balance = -balance;
- }
- return balance + this.getBalanceRecursive(root._children[0]) + this.getBalanceRecursive(root._children[1]);
- }
- }
- oimo.collision.geometry.Aabb = class oimo_collision_geometry_Aabb {
- constructor() {
- this._minX = 0;
- this._minY = 0;
- this._minZ = 0;
- this._maxX = 0;
- this._maxY = 0;
- this._maxZ = 0;
- }
- init(min,max) {
- var v = min;
- this._minX = v.x;
- this._minY = v.y;
- this._minZ = v.z;
- var v1 = max;
- this._maxX = v1.x;
- this._maxY = v1.y;
- this._maxZ = v1.z;
- return this;
- }
- getMin() {
- var min = new oimo.common.Vec3();
- var v = min;
- v.x = this._minX;
- v.y = this._minY;
- v.z = this._minZ;
- return min;
- }
- getMinTo(min) {
- var v = min;
- v.x = this._minX;
- v.y = this._minY;
- v.z = this._minZ;
- }
- setMin(min) {
- var v = min;
- this._minX = v.x;
- this._minY = v.y;
- this._minZ = v.z;
- return this;
- }
- getMax() {
- var max = new oimo.common.Vec3();
- var v = max;
- v.x = this._maxX;
- v.y = this._maxY;
- v.z = this._maxZ;
- return max;
- }
- getMaxTo(max) {
- var v = max;
- v.x = this._maxX;
- v.y = this._maxY;
- v.z = this._maxZ;
- }
- setMax(max) {
- var v = max;
- this._maxX = v.x;
- this._maxY = v.y;
- this._maxZ = v.z;
- return this;
- }
- getCenter() {
- var v = new oimo.common.Vec3();
- var c;
- var cX;
- var cY;
- var cZ;
- cX = this._minX + this._maxX;
- cY = this._minY + this._maxY;
- cZ = this._minZ + this._maxZ;
- cX *= 0.5;
- cY *= 0.5;
- cZ *= 0.5;
- var v1 = v;
- v1.x = cX;
- v1.y = cY;
- v1.z = cZ;
- return v;
- }
- getCenterTo(center) {
- var c;
- var cX;
- var cY;
- var cZ;
- cX = this._minX + this._maxX;
- cY = this._minY + this._maxY;
- cZ = this._minZ + this._maxZ;
- cX *= 0.5;
- cY *= 0.5;
- cZ *= 0.5;
- var v = center;
- v.x = cX;
- v.y = cY;
- v.z = cZ;
- }
- getExtents() {
- var v = new oimo.common.Vec3();
- var c;
- var cX;
- var cY;
- var cZ;
- cX = this._maxX - this._minX;
- cY = this._maxY - this._minY;
- cZ = this._maxZ - this._minZ;
- cX *= 0.5;
- cY *= 0.5;
- cZ *= 0.5;
- var v1 = v;
- v1.x = cX;
- v1.y = cY;
- v1.z = cZ;
- return v;
- }
- getExtentsTo(halfExtents) {
- var c;
- var cX;
- var cY;
- var cZ;
- cX = this._maxX - this._minX;
- cY = this._maxY - this._minY;
- cZ = this._maxZ - this._minZ;
- cX *= 0.5;
- cY *= 0.5;
- cZ *= 0.5;
- var v = halfExtents;
- v.x = cX;
- v.y = cY;
- v.z = cZ;
- }
- combine(other) {
- this._minX = this._minX < other._minX ? this._minX : other._minX;
- this._minY = this._minY < other._minY ? this._minY : other._minY;
- this._minZ = this._minZ < other._minZ ? this._minZ : other._minZ;
- this._maxX = this._maxX > other._maxX ? this._maxX : other._maxX;
- this._maxY = this._maxY > other._maxY ? this._maxY : other._maxY;
- this._maxZ = this._maxZ > other._maxZ ? this._maxZ : other._maxZ;
- return this;
- }
- combined(other) {
- var aabb = new oimo.collision.geometry.Aabb();
- aabb._minX = this._minX < other._minX ? this._minX : other._minX;
- aabb._minY = this._minY < other._minY ? this._minY : other._minY;
- aabb._minZ = this._minZ < other._minZ ? this._minZ : other._minZ;
- aabb._maxX = this._maxX > other._maxX ? this._maxX : other._maxX;
- aabb._maxY = this._maxY > other._maxY ? this._maxY : other._maxY;
- aabb._maxZ = this._maxZ > other._maxZ ? this._maxZ : other._maxZ;
- return aabb;
- }
- overlap(other) {
- if(this._minX < other._maxX && this._maxX > other._minX && this._minY < other._maxY && this._maxY > other._minY && this._minZ < other._maxZ) {
- return this._maxZ > other._minZ;
- } else {
- return false;
- }
- }
- getIntersection(other) {
- var aabb = new oimo.collision.geometry.Aabb();
- aabb._minX = this._minX > other._minX ? this._minX : other._minX;
- aabb._minY = this._minY > other._minY ? this._minY : other._minY;
- aabb._minZ = this._minZ > other._minZ ? this._minZ : other._minZ;
- aabb._maxX = this._maxX < other._maxX ? this._maxX : other._maxX;
- aabb._maxY = this._maxY < other._maxY ? this._maxY : other._maxY;
- aabb._maxZ = this._maxZ < other._maxZ ? this._maxZ : other._maxZ;
- return aabb;
- }
- getIntersectionTo(other,intersection) {
- intersection._minX = this._minX > other._minX ? this._minX : other._minX;
- intersection._minY = this._minY > other._minY ? this._minY : other._minY;
- intersection._minZ = this._minZ > other._minZ ? this._minZ : other._minZ;
- intersection._maxX = this._maxX < other._maxX ? this._maxX : other._maxX;
- intersection._maxY = this._maxY < other._maxY ? this._maxY : other._maxY;
- intersection._maxZ = this._maxZ < other._maxZ ? this._maxZ : other._maxZ;
- }
- copyFrom(aabb) {
- this._minX = aabb._minX;
- this._minY = aabb._minY;
- this._minZ = aabb._minZ;
- this._maxX = aabb._maxX;
- this._maxY = aabb._maxY;
- this._maxZ = aabb._maxZ;
- return this;
- }
- clone() {
- var aabb = new oimo.collision.geometry.Aabb();
- aabb._minX = this._minX;
- aabb._minY = this._minY;
- aabb._minZ = this._minZ;
- aabb._maxX = this._maxX;
- aabb._maxY = this._maxY;
- aabb._maxZ = this._maxZ;
- return aabb;
- }
- }
- oimo.collision.geometry.BoxGeometry = class oimo_collision_geometry_BoxGeometry extends oimo.collision.geometry.ConvexGeometry {
- constructor(halfExtents) {
- super(1);
- var v = halfExtents;
- this._halfExtentsX = v.x;
- this._halfExtentsY = v.y;
- this._halfExtentsZ = v.z;
- this._halfAxisXX = halfExtents.x;
- this._halfAxisXY = 0;
- this._halfAxisXZ = 0;
- this._halfAxisYX = 0;
- this._halfAxisYY = halfExtents.y;
- this._halfAxisYZ = 0;
- this._halfAxisZX = 0;
- this._halfAxisZY = 0;
- this._halfAxisZZ = halfExtents.z;
- this._updateMass();
- var minHalfExtents = halfExtents.x < halfExtents.y ? halfExtents.z < halfExtents.x ? halfExtents.z : halfExtents.x : halfExtents.z < halfExtents.y ? halfExtents.z : halfExtents.y;
- if(this._gjkMargin > minHalfExtents * 0.2) {
- this._gjkMargin = minHalfExtents * 0.2;
- }
- }
- getHalfExtents() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._halfExtentsX;
- v1.y = this._halfExtentsY;
- v1.z = this._halfExtentsZ;
- return v;
- }
- getHalfExtentsTo(halfExtents) {
- var v = halfExtents;
- v.x = this._halfExtentsX;
- v.y = this._halfExtentsY;
- v.z = this._halfExtentsZ;
- }
- _updateMass() {
- this._volume = 8 * (this._halfExtentsX * this._halfExtentsY * this._halfExtentsZ);
- var sq;
- var sqX;
- var sqY;
- var sqZ;
- sqX = this._halfExtentsX * this._halfExtentsX;
- sqY = this._halfExtentsY * this._halfExtentsY;
- sqZ = this._halfExtentsZ * this._halfExtentsZ;
- this._inertiaCoeff00 = 0.333333333333333315 * (sqY + sqZ);
- this._inertiaCoeff01 = 0;
- this._inertiaCoeff02 = 0;
- this._inertiaCoeff10 = 0;
- this._inertiaCoeff11 = 0.333333333333333315 * (sqZ + sqX);
- this._inertiaCoeff12 = 0;
- this._inertiaCoeff20 = 0;
- this._inertiaCoeff21 = 0;
- this._inertiaCoeff22 = 0.333333333333333315 * (sqX + sqY);
- }
- _computeAabb(aabb,tf) {
- var tfx;
- var tfxX;
- var tfxY;
- var tfxZ;
- var tfy;
- var tfyX;
- var tfyY;
- var tfyZ;
- var tfz;
- var tfzX;
- var tfzY;
- var tfzZ;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = tf._rotation00 * this._halfAxisXX + tf._rotation01 * this._halfAxisXY + tf._rotation02 * this._halfAxisXZ;
- __tmp__Y = tf._rotation10 * this._halfAxisXX + tf._rotation11 * this._halfAxisXY + tf._rotation12 * this._halfAxisXZ;
- __tmp__Z = tf._rotation20 * this._halfAxisXX + tf._rotation21 * this._halfAxisXY + tf._rotation22 * this._halfAxisXZ;
- tfxX = __tmp__X;
- tfxY = __tmp__Y;
- tfxZ = __tmp__Z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = tf._rotation00 * this._halfAxisYX + tf._rotation01 * this._halfAxisYY + tf._rotation02 * this._halfAxisYZ;
- __tmp__Y1 = tf._rotation10 * this._halfAxisYX + tf._rotation11 * this._halfAxisYY + tf._rotation12 * this._halfAxisYZ;
- __tmp__Z1 = tf._rotation20 * this._halfAxisYX + tf._rotation21 * this._halfAxisYY + tf._rotation22 * this._halfAxisYZ;
- tfyX = __tmp__X1;
- tfyY = __tmp__Y1;
- tfyZ = __tmp__Z1;
- var __tmp__X2;
- var __tmp__Y2;
- var __tmp__Z2;
- __tmp__X2 = tf._rotation00 * this._halfAxisZX + tf._rotation01 * this._halfAxisZY + tf._rotation02 * this._halfAxisZZ;
- __tmp__Y2 = tf._rotation10 * this._halfAxisZX + tf._rotation11 * this._halfAxisZY + tf._rotation12 * this._halfAxisZZ;
- __tmp__Z2 = tf._rotation20 * this._halfAxisZX + tf._rotation21 * this._halfAxisZY + tf._rotation22 * this._halfAxisZZ;
- tfzX = __tmp__X2;
- tfzY = __tmp__Y2;
- tfzZ = __tmp__Z2;
- tfxX = tfxX < 0 ? -tfxX : tfxX;
- tfxY = tfxY < 0 ? -tfxY : tfxY;
- tfxZ = tfxZ < 0 ? -tfxZ : tfxZ;
- tfyX = tfyX < 0 ? -tfyX : tfyX;
- tfyY = tfyY < 0 ? -tfyY : tfyY;
- tfyZ = tfyZ < 0 ? -tfyZ : tfyZ;
- tfzX = tfzX < 0 ? -tfzX : tfzX;
- tfzY = tfzY < 0 ? -tfzY : tfzY;
- tfzZ = tfzZ < 0 ? -tfzZ : tfzZ;
- var tfs;
- var tfsX;
- var tfsY;
- var tfsZ;
- tfsX = tfxX + tfyX;
- tfsY = tfxY + tfyY;
- tfsZ = tfxZ + tfyZ;
- tfsX += tfzX;
- tfsY += tfzY;
- tfsZ += tfzZ;
- aabb._minX = tf._positionX - tfsX;
- aabb._minY = tf._positionY - tfsY;
- aabb._minZ = tf._positionZ - tfsZ;
- aabb._maxX = tf._positionX + tfsX;
- aabb._maxY = tf._positionY + tfsY;
- aabb._maxZ = tf._positionZ + tfsZ;
- }
- computeLocalSupportingVertex(dir,out) {
- var gjkMargins;
- var gjkMarginsX;
- var gjkMarginsY;
- var gjkMarginsZ;
- var coreExtents;
- var coreExtentsX;
- var coreExtentsY;
- var coreExtentsZ;
- gjkMarginsX = this._gjkMargin;
- gjkMarginsY = this._gjkMargin;
- gjkMarginsZ = this._gjkMargin;
- gjkMarginsX = gjkMarginsX < this._halfExtentsX ? gjkMarginsX : this._halfExtentsX;
- gjkMarginsY = gjkMarginsY < this._halfExtentsY ? gjkMarginsY : this._halfExtentsY;
- gjkMarginsZ = gjkMarginsZ < this._halfExtentsZ ? gjkMarginsZ : this._halfExtentsZ;
- coreExtentsX = this._halfExtentsX - gjkMarginsX;
- coreExtentsY = this._halfExtentsY - gjkMarginsY;
- coreExtentsZ = this._halfExtentsZ - gjkMarginsZ;
- out.x = dir.x > 0 ? coreExtentsX : -coreExtentsX;
- out.y = dir.y > 0 ? coreExtentsY : -coreExtentsY;
- out.z = dir.z > 0 ? coreExtentsZ : -coreExtentsZ;
- }
- _rayCastLocal(beginX,beginY,beginZ,endX,endY,endZ,hit) {
- var p1x = beginX;
- var p1y = beginY;
- var p1z = beginZ;
- var p2x = endX;
- var p2y = endY;
- var p2z = endZ;
- var halfW = this._halfExtentsX;
- var halfH = this._halfExtentsY;
- var halfD = this._halfExtentsZ;
- var dx = p2x - p1x;
- var dy = p2y - p1y;
- var dz = p2z - p1z;
- var tminx = 0;
- var tminy = 0;
- var tminz = 0;
- var tmaxx = 1;
- var tmaxy = 1;
- var tmaxz = 1;
- if(dx > -1e-6 && dx < 1e-6) {
- if(p1x <= -halfW || p1x >= halfW) {
- return false;
- }
- } else {
- var invDx = 1 / dx;
- var t1 = (-halfW - p1x) * invDx;
- var t2 = (halfW - p1x) * invDx;
- if(t1 > t2) {
- var tmp = t1;
- t1 = t2;
- t2 = tmp;
- }
- if(t1 > 0) {
- tminx = t1;
- }
- if(t2 < 1) {
- tmaxx = t2;
- }
- }
- if(dy > -1e-6 && dy < 1e-6) {
- if(p1y <= -halfH || p1y >= halfH) {
- return false;
- }
- } else {
- var invDy = 1 / dy;
- var t11 = (-halfH - p1y) * invDy;
- var t21 = (halfH - p1y) * invDy;
- if(t11 > t21) {
- var tmp1 = t11;
- t11 = t21;
- t21 = tmp1;
- }
- if(t11 > 0) {
- tminy = t11;
- }
- if(t21 < 1) {
- tmaxy = t21;
- }
- }
- if(dz > -1e-6 && dz < 1e-6) {
- if(p1z <= -halfD || p1z >= halfD) {
- return false;
- }
- } else {
- var invDz = 1 / dz;
- var t12 = (-halfD - p1z) * invDz;
- var t22 = (halfD - p1z) * invDz;
- if(t12 > t22) {
- var tmp2 = t12;
- t12 = t22;
- t22 = tmp2;
- }
- if(t12 > 0) {
- tminz = t12;
- }
- if(t22 < 1) {
- tmaxz = t22;
- }
- }
- if(tminx >= 1 || tminy >= 1 || tminz >= 1 || tmaxx <= 0 || tmaxy <= 0 || tmaxz <= 0) {
- return false;
- }
- var min = tminx;
- var max = tmaxx;
- var hitDirection = 0;
- if(tminy > min) {
- min = tminy;
- hitDirection = 1;
- }
- if(tminz > min) {
- min = tminz;
- hitDirection = 2;
- }
- if(tmaxy < max) {
- max = tmaxy;
- }
- if(tmaxz < max) {
- max = tmaxz;
- }
- if(min > max) {
- return false;
- }
- if(min == 0) {
- return false;
- }
- switch(hitDirection) {
- case 0:
- hit.normal.init(dx > 0 ? -1 : 1,0,0);
- break;
- case 1:
- hit.normal.init(0,dy > 0 ? -1 : 1,0);
- break;
- case 2:
- hit.normal.init(0,0,dz > 0 ? -1 : 1);
- break;
- }
- hit.position.init(p1x + min * dx,p1y + min * dy,p1z + min * dz);
- hit.fraction = min;
- return true;
- }
- }
- oimo.collision.geometry.CapsuleGeometry = class oimo_collision_geometry_CapsuleGeometry extends oimo.collision.geometry.ConvexGeometry {
- constructor(radius,halfHeight) {
- super(4);
- this._radius = radius;
- this._halfHeight = halfHeight;
- this._gjkMargin = this._radius;
- this._updateMass();
- }
- getRadius() {
- return this._radius;
- }
- getHalfHeight() {
- return this._halfHeight;
- }
- _updateMass() {
- var r2 = this._radius * this._radius;
- var hh2 = this._halfHeight * this._halfHeight;
- var cylinderVolume = 6.28318530717958 * r2 * this._halfHeight;
- var sphereVolume = 3.14159265358979 * r2 * this._radius * 4 / 3;
- this._volume = cylinderVolume + sphereVolume;
- var invVolume = this._volume == 0 ? 0 : 1 / this._volume;
- var inertiaY = invVolume * (cylinderVolume * r2 * 0.5 + sphereVolume * r2 * 0.4);
- var inertiaXZ = invVolume * (cylinderVolume * (r2 * 0.25 + hh2 / 3) + sphereVolume * (r2 * 0.4 + this._halfHeight * this._radius * 0.75 + hh2));
- this._inertiaCoeff00 = inertiaXZ;
- this._inertiaCoeff01 = 0;
- this._inertiaCoeff02 = 0;
- this._inertiaCoeff10 = 0;
- this._inertiaCoeff11 = inertiaY;
- this._inertiaCoeff12 = 0;
- this._inertiaCoeff20 = 0;
- this._inertiaCoeff21 = 0;
- this._inertiaCoeff22 = inertiaXZ;
- }
- _computeAabb(aabb,tf) {
- var radVec;
- var radVecX;
- var radVecY;
- var radVecZ;
- radVecX = this._radius;
- radVecY = this._radius;
- radVecZ = this._radius;
- var axis;
- var axisX;
- var axisY;
- var axisZ;
- axisX = tf._rotation01;
- axisY = tf._rotation11;
- axisZ = tf._rotation21;
- axisX = axisX < 0 ? -axisX : axisX;
- axisY = axisY < 0 ? -axisY : axisY;
- axisZ = axisZ < 0 ? -axisZ : axisZ;
- axisX *= this._halfHeight;
- axisY *= this._halfHeight;
- axisZ *= this._halfHeight;
- radVecX += axisX;
- radVecY += axisY;
- radVecZ += axisZ;
- aabb._minX = tf._positionX - radVecX;
- aabb._minY = tf._positionY - radVecY;
- aabb._minZ = tf._positionZ - radVecZ;
- aabb._maxX = tf._positionX + radVecX;
- aabb._maxY = tf._positionY + radVecY;
- aabb._maxZ = tf._positionZ + radVecZ;
- }
- computeLocalSupportingVertex(dir,out) {
- if(dir.y > 0) {
- out.init(0,this._halfHeight,0);
- } else {
- out.init(0,-this._halfHeight,0);
- }
- }
- _rayCastLocal(beginX,beginY,beginZ,endX,endY,endZ,hit) {
- var p1x = beginX;
- var p1y = beginY;
- var p1z = beginZ;
- var p2x = endX;
- var p2y = endY;
- var p2z = endZ;
- var halfH = this._halfHeight;
- var dx = p2x - p1x;
- var dy = p2y - p1y;
- var dz = p2z - p1z;
- var tminxz = 0;
- var tmaxxz = 1;
- var a = dx * dx + dz * dz;
- var b = p1x * dx + p1z * dz;
- var c = p1x * p1x + p1z * p1z - this._radius * this._radius;
- var D = b * b - a * c;
- if(D < 0) {
- return false;
- }
- var t;
- if(a > 0) {
- var sqrtD = Math.sqrt(D);
- tminxz = (-b - sqrtD) / a;
- tmaxxz = (-b + sqrtD) / a;
- if(tminxz >= 1 || tmaxxz <= 0) {
- return false;
- }
- } else {
- if(c >= 0) {
- return false;
- }
- tminxz = 0;
- tmaxxz = 1;
- }
- var crossY = p1y + dy * tminxz;
- var min;
- if(crossY > -halfH && crossY < halfH) {
- if(tminxz > 0) {
- min = tminxz;
- var _this = hit.normal.init(p1x + dx * min,0,p1z + dz * min);
- var invLen = Math.sqrt(_this.x * _this.x + _this.y * _this.y + _this.z * _this.z);
- if(invLen > 0) {
- invLen = 1 / invLen;
- }
- var tx = _this.x * invLen;
- var ty = _this.y * invLen;
- var tz = _this.z * invLen;
- _this.x = tx;
- _this.y = ty;
- _this.z = tz;
- hit.position.init(p1x + min * dx,crossY,p1z + min * dz);
- hit.fraction = min;
- return true;
- }
- return false;
- }
- var sphereY = crossY < 0 ? -halfH : halfH;
- var spherePos;
- var spherePosX;
- var spherePosY;
- var spherePosZ;
- var sphereToBegin;
- var sphereToBeginX;
- var sphereToBeginY;
- var sphereToBeginZ;
- spherePosX = 0;
- spherePosY = sphereY;
- spherePosZ = 0;
- sphereToBeginX = beginX - spherePosX;
- sphereToBeginY = beginY - spherePosY;
- sphereToBeginZ = beginZ - spherePosZ;
- var d;
- var dX;
- var dY;
- var dZ;
- dX = endX - beginX;
- dY = endY - beginY;
- dZ = endZ - beginZ;
- a = dX * dX + dY * dY + dZ * dZ;
- b = sphereToBeginX * dX + sphereToBeginY * dY + sphereToBeginZ * dZ;
- c = sphereToBeginX * sphereToBeginX + sphereToBeginY * sphereToBeginY + sphereToBeginZ * sphereToBeginZ - this._radius * this._radius;
- D = b * b - a * c;
- if(D < 0) {
- return false;
- }
- var t1 = (-b - Math.sqrt(D)) / a;
- if(t1 < 0 || t1 > 1) {
- return false;
- }
- var hitPos;
- var hitPosX;
- var hitPosY;
- var hitPosZ;
- var hitNormal;
- var hitNormalX;
- var hitNormalY;
- var hitNormalZ;
- hitPosX = sphereToBeginX + dX * t1;
- hitPosY = sphereToBeginY + dY * t1;
- hitPosZ = sphereToBeginZ + dZ * t1;
- var l = hitPosX * hitPosX + hitPosY * hitPosY + hitPosZ * hitPosZ;
- if(l > 0) {
- l = 1 / Math.sqrt(l);
- }
- hitNormalX = hitPosX * l;
- hitNormalY = hitPosY * l;
- hitNormalZ = hitPosZ * l;
- hitPosX += spherePosX;
- hitPosY += spherePosY;
- hitPosZ += spherePosZ;
- var v = hit.position;
- v.x = hitPosX;
- v.y = hitPosY;
- v.z = hitPosZ;
- var v1 = hit.normal;
- v1.x = hitNormalX;
- v1.y = hitNormalY;
- v1.z = hitNormalZ;
- hit.fraction = t1;
- return true;
- }
- }
- oimo.collision.geometry.ConeGeometry = class oimo_collision_geometry_ConeGeometry extends oimo.collision.geometry.ConvexGeometry {
- constructor(radius,halfHeight) {
- super(3);
- this._radius = radius;
- this._halfHeight = halfHeight;
- this.sinTheta = radius / Math.sqrt(radius * radius + 4 * halfHeight * halfHeight);
- this.cosTheta = 2 * halfHeight / Math.sqrt(radius * radius + 4 * halfHeight * halfHeight);
- this._updateMass();
- }
- getRadius() {
- return this._radius;
- }
- getHalfHeight() {
- return this._halfHeight;
- }
- _updateMass() {
- var r2 = this._radius * this._radius;
- var h2 = this._halfHeight * this._halfHeight * 4;
- this._volume = 3.14159265358979 * r2 * this._halfHeight * 2 / 3;
- this._inertiaCoeff00 = 0.05 * (3 * r2 + 2 * h2);
- this._inertiaCoeff01 = 0;
- this._inertiaCoeff02 = 0;
- this._inertiaCoeff10 = 0;
- this._inertiaCoeff11 = 0.3 * r2;
- this._inertiaCoeff12 = 0;
- this._inertiaCoeff20 = 0;
- this._inertiaCoeff21 = 0;
- this._inertiaCoeff22 = 0.05 * (3 * r2 + 2 * h2);
- }
- _computeAabb(aabb,tf) {
- var axis;
- var axisX;
- var axisY;
- var axisZ;
- var axis2;
- var axis2X;
- var axis2Y;
- var axis2Z;
- var eh;
- var ehX;
- var ehY;
- var ehZ;
- var er;
- var erX;
- var erY;
- var erZ;
- axisX = tf._rotation01;
- axisY = tf._rotation11;
- axisZ = tf._rotation21;
- axis2X = axisX * axisX;
- axis2Y = axisY * axisY;
- axis2Z = axisZ * axisZ;
- var axis2x = axis2X;
- var axis2y = axis2Y;
- var axis2z = axis2Z;
- erX = Math.sqrt(1 - axis2x);
- erY = Math.sqrt(1 - axis2y);
- erZ = Math.sqrt(1 - axis2z);
- erX *= this._radius;
- erY *= this._radius;
- erZ *= this._radius;
- ehX = axisX * this._halfHeight;
- ehY = axisY * this._halfHeight;
- ehZ = axisZ * this._halfHeight;
- var rmin;
- var rminX;
- var rminY;
- var rminZ;
- var rmax;
- var rmaxX;
- var rmaxY;
- var rmaxZ;
- rminX = -ehX;
- rminY = -ehY;
- rminZ = -ehZ;
- rminX -= erX;
- rminY -= erY;
- rminZ -= erZ;
- rmaxX = -ehX;
- rmaxY = -ehY;
- rmaxZ = -ehZ;
- rmaxX += erX;
- rmaxY += erY;
- rmaxZ += erZ;
- var max;
- var maxX;
- var maxY;
- var maxZ;
- var min;
- var minX;
- var minY;
- var minZ;
- maxX = rminX > rmaxX ? rminX : rmaxX;
- maxY = rminY > rmaxY ? rminY : rmaxY;
- maxZ = rminZ > rmaxZ ? rminZ : rmaxZ;
- maxX = maxX > ehX ? maxX : ehX;
- maxY = maxY > ehY ? maxY : ehY;
- maxZ = maxZ > ehZ ? maxZ : ehZ;
- minX = rminX < rmaxX ? rminX : rmaxX;
- minY = rminY < rmaxY ? rminY : rmaxY;
- minZ = rminZ < rmaxZ ? rminZ : rmaxZ;
- minX = minX < ehX ? minX : ehX;
- minY = minY < ehY ? minY : ehY;
- minZ = minZ < ehZ ? minZ : ehZ;
- aabb._minX = tf._positionX + minX;
- aabb._minY = tf._positionY + minY;
- aabb._minZ = tf._positionZ + minZ;
- aabb._maxX = tf._positionX + maxX;
- aabb._maxY = tf._positionY + maxY;
- aabb._maxZ = tf._positionZ + maxZ;
- }
- computeLocalSupportingVertex(dir,out) {
- var dx = dir.x;
- var dy = dir.y;
- var dz = dir.z;
- if(dy > 0 && dy * dy > this.sinTheta * this.sinTheta * (dx * dx + dy * dy + dz * dz)) {
- out.init(0,this._halfHeight - this._gjkMargin / this.sinTheta,0);
- if(out.y < 0) {
- out.y = 0;
- }
- return;
- }
- var rx = dir.x;
- var rz = dir.z;
- var len = rx * rx + rz * rz;
- var height = 2 * this._halfHeight;
- var coreRadius = (height - this._gjkMargin) / height * this._radius - this._gjkMargin / this.cosTheta;
- if(coreRadius < 0) {
- coreRadius = 0;
- }
- var invLen = len > 0 ? coreRadius / Math.sqrt(len) : 0;
- var coreHalfHeight = this._halfHeight - this._gjkMargin;
- if(coreHalfHeight < 0) {
- coreHalfHeight = 0;
- }
- out.x = rx * invLen;
- out.y = -coreHalfHeight;
- out.z = rz * invLen;
- }
- _rayCastLocal(beginX,beginY,beginZ,endX,endY,endZ,hit) {
- var p1x = beginX;
- var p1y = beginY;
- var p1z = beginZ;
- var p2x = endX;
- var p2y = endY;
- var p2z = endZ;
- var halfH = this._halfHeight;
- var dx = p2x - p1x;
- var dy = p2y - p1y;
- var dz = p2z - p1z;
- var tminy = 0;
- var tmaxy = 1;
- if(dy > -1e-6 && dy < 1e-6) {
- if(p1y <= -halfH || p1y >= halfH) {
- return false;
- }
- } else {
- var invDy = 1 / dy;
- var t1 = (-halfH - p1y) * invDy;
- var t2 = (halfH - p1y) * invDy;
- if(t1 > t2) {
- var tmp = t1;
- t1 = t2;
- t2 = tmp;
- }
- if(t1 > 0) {
- tminy = t1;
- }
- if(t2 < 1) {
- tmaxy = t2;
- }
- }
- if(tminy >= 1 || tmaxy <= 0) {
- return false;
- }
- var tminxz = 0;
- var tmaxxz = 0;
- p1y -= halfH;
- var cos2 = this.cosTheta * this.cosTheta;
- var a = cos2 * (dx * dx + dy * dy + dz * dz) - dy * dy;
- var b = cos2 * (p1x * dx + p1y * dy + p1z * dz) - p1y * dy;
- var c = cos2 * (p1x * p1x + p1y * p1y + p1z * p1z) - p1y * p1y;
- var D = b * b - a * c;
- if(a != 0) {
- if(D < 0) {
- return false;
- }
- var sqrtD = Math.sqrt(D);
- if(a < 0) {
- if(dy > 0) {
- tminxz = 0;
- tmaxxz = (-b + sqrtD) / a;
- if(tmaxxz <= 0) {
- return false;
- }
- } else {
- tminxz = (-b - sqrtD) / a;
- tmaxxz = 1;
- if(tminxz >= 1) {
- return false;
- }
- }
- } else {
- tminxz = (-b - sqrtD) / a;
- tmaxxz = (-b + sqrtD) / a;
- if(tminxz >= 1 || tmaxxz <= 0) {
- return false;
- }
- }
- } else {
- var t = -c / (2 * b);
- if(b > 0) {
- tminxz = 0;
- tmaxxz = t;
- if(t <= 0) {
- return false;
- }
- } else {
- tminxz = t;
- tmaxxz = 1;
- if(t >= 1) {
- return false;
- }
- }
- }
- p1y += halfH;
- var min;
- if(tmaxxz <= tminy || tmaxy <= tminxz) {
- return false;
- }
- if(tminxz < tminy) {
- min = tminy;
- if(min == 0) {
- return false;
- }
- hit.normal.init(0,dy > 0 ? -1 : 1,0);
- } else {
- min = tminxz;
- if(min == 0) {
- return false;
- }
- var _this = hit.normal.init(p1x + dx * min,0,p1z + dz * min);
- var invLen = Math.sqrt(_this.x * _this.x + _this.y * _this.y + _this.z * _this.z);
- if(invLen > 0) {
- invLen = 1 / invLen;
- }
- var tx = _this.x * invLen;
- var ty = _this.y * invLen;
- var tz = _this.z * invLen;
- _this.x = tx;
- _this.y = ty;
- _this.z = tz;
- var _this1 = _this;
- var s = this.cosTheta;
- var tx1 = _this1.x * s;
- var ty1 = _this1.y * s;
- var tz1 = _this1.z * s;
- _this1.x = tx1;
- _this1.y = ty1;
- _this1.z = tz1;
- hit.normal.y += this.sinTheta;
- }
- hit.position.init(p1x + min * dx,p1y + min * dy,p1z + min * dz);
- hit.fraction = min;
- return true;
- }
- }
- oimo.collision.geometry.ConvexHullGeometry = class oimo_collision_geometry_ConvexHullGeometry extends oimo.collision.geometry.ConvexGeometry {
- constructor(vertices) {
- super(5);
- this._numVertices = vertices.length;
- var this1 = new Array(this._numVertices);
- this._vertices = this1;
- var this2 = new Array(this._numVertices);
- this._tmpVertices = this2;
- var _g = 0;
- var _g1 = this._numVertices;
- while(_g < _g1) {
- var i = _g++;
- this._vertices[i] = vertices[i];
- this._tmpVertices[i] = new oimo.common.Vec3();
- }
- this._useGjkRayCast = true;
- this._updateMass();
- }
- getVertices() {
- return this._vertices;
- }
- _updateMass() {
- this._volume = 1;
- this._inertiaCoeff00 = 1;
- this._inertiaCoeff01 = 0;
- this._inertiaCoeff02 = 0;
- this._inertiaCoeff10 = 0;
- this._inertiaCoeff11 = 1;
- this._inertiaCoeff12 = 0;
- this._inertiaCoeff20 = 0;
- this._inertiaCoeff21 = 0;
- this._inertiaCoeff22 = 1;
- var minx = this._vertices[0].x;
- var miny = this._vertices[0].y;
- var minz = this._vertices[0].z;
- var maxx = this._vertices[0].x;
- var maxy = this._vertices[0].y;
- var maxz = this._vertices[0].z;
- var _g = 1;
- var _g1 = this._numVertices;
- while(_g < _g1) {
- var i = _g++;
- var vx = this._vertices[i].x;
- var vy = this._vertices[i].y;
- var vz = this._vertices[i].z;
- if(vx < minx) {
- minx = vx;
- } else if(vx > maxx) {
- maxx = vx;
- }
- if(vy < miny) {
- miny = vy;
- } else if(vy > maxy) {
- maxy = vy;
- }
- if(vz < minz) {
- minz = vz;
- } else if(vz > maxz) {
- maxz = vz;
- }
- }
- var sizex = maxx - minx;
- var sizey = maxy - miny;
- var sizez = maxz - minz;
- this._volume = sizex * sizey * sizez;
- var diffCog = ((minx + maxx) * (minx + maxx) + (miny + maxy) * (miny + maxy) + (minz + maxz) * (minz + maxz)) * 0.25;
- sizex = sizex * sizex * 0.25;
- sizey = sizey * sizey * 0.25;
- sizez = sizez * sizez * 0.25;
- this._inertiaCoeff00 = 0.333333333333333315 * (sizey + sizez) + diffCog;
- this._inertiaCoeff01 = 0;
- this._inertiaCoeff02 = 0;
- this._inertiaCoeff10 = 0;
- this._inertiaCoeff11 = 0.333333333333333315 * (sizez + sizex) + diffCog;
- this._inertiaCoeff12 = 0;
- this._inertiaCoeff20 = 0;
- this._inertiaCoeff21 = 0;
- this._inertiaCoeff22 = 0.333333333333333315 * (sizex + sizey) + diffCog;
- }
- _computeAabb(aabb,tf) {
- var min;
- var minX;
- var minY;
- var minZ;
- var max;
- var maxX;
- var maxY;
- var maxZ;
- var margin;
- var marginX;
- var marginY;
- var marginZ;
- marginX = this._gjkMargin;
- marginY = this._gjkMargin;
- marginZ = this._gjkMargin;
- var localV;
- var localVX;
- var localVY;
- var localVZ;
- var v = this._vertices[0];
- localVX = v.x;
- localVY = v.y;
- localVZ = v.z;
- var worldV;
- var worldVX;
- var worldVY;
- var worldVZ;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = tf._rotation00 * localVX + tf._rotation01 * localVY + tf._rotation02 * localVZ;
- __tmp__Y = tf._rotation10 * localVX + tf._rotation11 * localVY + tf._rotation12 * localVZ;
- __tmp__Z = tf._rotation20 * localVX + tf._rotation21 * localVY + tf._rotation22 * localVZ;
- worldVX = __tmp__X;
- worldVY = __tmp__Y;
- worldVZ = __tmp__Z;
- worldVX += tf._positionX;
- worldVY += tf._positionY;
- worldVZ += tf._positionZ;
- minX = worldVX;
- minY = worldVY;
- minZ = worldVZ;
- maxX = worldVX;
- maxY = worldVY;
- maxZ = worldVZ;
- var _g = 1;
- var _g1 = this._numVertices;
- while(_g < _g1) {
- var i = _g++;
- var v1 = this._vertices[i];
- localVX = v1.x;
- localVY = v1.y;
- localVZ = v1.z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = tf._rotation00 * localVX + tf._rotation01 * localVY + tf._rotation02 * localVZ;
- __tmp__Y1 = tf._rotation10 * localVX + tf._rotation11 * localVY + tf._rotation12 * localVZ;
- __tmp__Z1 = tf._rotation20 * localVX + tf._rotation21 * localVY + tf._rotation22 * localVZ;
- worldVX = __tmp__X1;
- worldVY = __tmp__Y1;
- worldVZ = __tmp__Z1;
- worldVX += tf._positionX;
- worldVY += tf._positionY;
- worldVZ += tf._positionZ;
- minX = minX < worldVX ? minX : worldVX;
- minY = minY < worldVY ? minY : worldVY;
- minZ = minZ < worldVZ ? minZ : worldVZ;
- maxX = maxX > worldVX ? maxX : worldVX;
- maxY = maxY > worldVY ? maxY : worldVY;
- maxZ = maxZ > worldVZ ? maxZ : worldVZ;
- }
- aabb._minX = minX - marginX;
- aabb._minY = minY - marginY;
- aabb._minZ = minZ - marginZ;
- aabb._maxX = maxX + marginX;
- aabb._maxY = maxY + marginY;
- aabb._maxZ = maxZ + marginZ;
- }
- computeLocalSupportingVertex(dir,out) {
- var _this = this._vertices[0];
- var maxDot = _this.x * dir.x + _this.y * dir.y + _this.z * dir.z;
- var maxIndex = 0;
- var _g = 1;
- var _g1 = this._numVertices;
- while(_g < _g1) {
- var i = _g++;
- var _this1 = this._vertices[i];
- var dot = _this1.x * dir.x + _this1.y * dir.y + _this1.z * dir.z;
- if(dot > maxDot) {
- maxDot = dot;
- maxIndex = i;
- }
- }
- var v = this._vertices[maxIndex];
- out.x = v.x;
- out.y = v.y;
- out.z = v.z;
- }
- }
- oimo.collision.geometry.CylinderGeometry = class oimo_collision_geometry_CylinderGeometry extends oimo.collision.geometry.ConvexGeometry {
- constructor(radius,halfHeight) {
- super(2);
- this._radius = radius;
- this._halfHeight = halfHeight;
- this._updateMass();
- }
- getRadius() {
- return this._radius;
- }
- getHalfHeight() {
- return this._halfHeight;
- }
- _updateMass() {
- var r2 = this._radius * this._radius;
- var h2 = this._halfHeight * this._halfHeight * 4;
- this._volume = 3.14159265358979 * r2 * this._halfHeight * 2;
- this._inertiaCoeff00 = 0.0833333333333333287 * (3 * r2 + h2);
- this._inertiaCoeff01 = 0;
- this._inertiaCoeff02 = 0;
- this._inertiaCoeff10 = 0;
- this._inertiaCoeff11 = 0.5 * r2;
- this._inertiaCoeff12 = 0;
- this._inertiaCoeff20 = 0;
- this._inertiaCoeff21 = 0;
- this._inertiaCoeff22 = 0.0833333333333333287 * (3 * r2 + h2);
- }
- _computeAabb(aabb,tf) {
- var axis;
- var axisX;
- var axisY;
- var axisZ;
- var axis2;
- var axis2X;
- var axis2Y;
- var axis2Z;
- var eh;
- var ehX;
- var ehY;
- var ehZ;
- var er;
- var erX;
- var erY;
- var erZ;
- axisX = tf._rotation01;
- axisY = tf._rotation11;
- axisZ = tf._rotation21;
- axisX = axisX < 0 ? -axisX : axisX;
- axisY = axisY < 0 ? -axisY : axisY;
- axisZ = axisZ < 0 ? -axisZ : axisZ;
- axis2X = axisX * axisX;
- axis2Y = axisY * axisY;
- axis2Z = axisZ * axisZ;
- var axis2x = axis2X;
- var axis2y = axis2Y;
- var axis2z = axis2Z;
- erX = Math.sqrt(1 - axis2x);
- erY = Math.sqrt(1 - axis2y);
- erZ = Math.sqrt(1 - axis2z);
- erX *= this._radius;
- erY *= this._radius;
- erZ *= this._radius;
- ehX = axisX * this._halfHeight;
- ehY = axisY * this._halfHeight;
- ehZ = axisZ * this._halfHeight;
- var max;
- var maxX;
- var maxY;
- var maxZ;
- maxX = erX + ehX;
- maxY = erY + ehY;
- maxZ = erZ + ehZ;
- aabb._minX = tf._positionX - maxX;
- aabb._minY = tf._positionY - maxY;
- aabb._minZ = tf._positionZ - maxZ;
- aabb._maxX = tf._positionX + maxX;
- aabb._maxY = tf._positionY + maxY;
- aabb._maxZ = tf._positionZ + maxZ;
- }
- computeLocalSupportingVertex(dir,out) {
- var rx = dir.x;
- var rz = dir.z;
- var len = rx * rx + rz * rz;
- var coreRadius = this._radius - this._gjkMargin;
- if(coreRadius < 0) {
- coreRadius = 0;
- }
- var invLen = len > 0 ? coreRadius / Math.sqrt(len) : 0;
- var coreHeight = this._halfHeight - this._gjkMargin;
- if(coreHeight < 0) {
- coreHeight = 0;
- }
- out.x = rx * invLen;
- out.y = dir.y > 0 ? coreHeight : -coreHeight;
- out.z = rz * invLen;
- }
- _rayCastLocal(beginX,beginY,beginZ,endX,endY,endZ,hit) {
- var p1x = beginX;
- var p1y = beginY;
- var p1z = beginZ;
- var p2x = endX;
- var p2y = endY;
- var p2z = endZ;
- var halfH = this._halfHeight;
- var dx = p2x - p1x;
- var dy = p2y - p1y;
- var dz = p2z - p1z;
- var tminy = 0;
- var tmaxy = 1;
- if(dy > -1e-6 && dy < 1e-6) {
- if(p1y <= -halfH || p1y >= halfH) {
- return false;
- }
- } else {
- var invDy = 1 / dy;
- var t1 = (-halfH - p1y) * invDy;
- var t2 = (halfH - p1y) * invDy;
- if(t1 > t2) {
- var tmp = t1;
- t1 = t2;
- t2 = tmp;
- }
- if(t1 > 0) {
- tminy = t1;
- }
- if(t2 < 1) {
- tmaxy = t2;
- }
- }
- if(tminy >= 1 || tmaxy <= 0) {
- return false;
- }
- var tminxz = 0;
- var tmaxxz = 1;
- var a = dx * dx + dz * dz;
- var b = p1x * dx + p1z * dz;
- var c = p1x * p1x + p1z * p1z - this._radius * this._radius;
- var D = b * b - a * c;
- if(D < 0) {
- return false;
- }
- var t;
- if(a > 0) {
- var sqrtD = Math.sqrt(D);
- tminxz = (-b - sqrtD) / a;
- tmaxxz = (-b + sqrtD) / a;
- if(tminxz >= 1 || tmaxxz <= 0) {
- return false;
- }
- } else {
- if(c >= 0) {
- return false;
- }
- tminxz = 0;
- tmaxxz = 1;
- }
- var min;
- if(tmaxxz <= tminy || tmaxy <= tminxz) {
- return false;
- }
- if(tminxz < tminy) {
- min = tminy;
- if(min == 0) {
- return false;
- }
- hit.normal.init(0,dy > 0 ? -1 : 1,0);
- } else {
- min = tminxz;
- if(min == 0) {
- return false;
- }
- var _this = hit.normal.init(p1x + dx * min,0,p1z + dz * min);
- var invLen = Math.sqrt(_this.x * _this.x + _this.y * _this.y + _this.z * _this.z);
- if(invLen > 0) {
- invLen = 1 / invLen;
- }
- var tx = _this.x * invLen;
- var ty = _this.y * invLen;
- var tz = _this.z * invLen;
- _this.x = tx;
- _this.y = ty;
- _this.z = tz;
- }
- hit.position.init(p1x + min * dx,p1y + min * dy,p1z + min * dz);
- hit.fraction = min;
- return true;
- }
- }
- oimo.collision.geometry.GeometryType = class oimo_collision_geometry_GeometryType {
- }
- oimo.collision.geometry.RayCastHit = class oimo_collision_geometry_RayCastHit {
- constructor() {
- this.position = new oimo.common.Vec3();
- this.normal = new oimo.common.Vec3();
- this.fraction = 0;
- }
- }
- oimo.collision.geometry.SphereGeometry = class oimo_collision_geometry_SphereGeometry extends oimo.collision.geometry.ConvexGeometry {
- constructor(radius) {
- super(0);
- this._radius = radius;
- this._gjkMargin = this._radius;
- this._updateMass();
- }
- getRadius() {
- return this._radius;
- }
- _updateMass() {
- this._volume = 4.18879020478638608 * this._radius * this._radius * this._radius;
- this._inertiaCoeff00 = 0.4 * this._radius * this._radius;
- this._inertiaCoeff01 = 0;
- this._inertiaCoeff02 = 0;
- this._inertiaCoeff10 = 0;
- this._inertiaCoeff11 = 0.4 * this._radius * this._radius;
- this._inertiaCoeff12 = 0;
- this._inertiaCoeff20 = 0;
- this._inertiaCoeff21 = 0;
- this._inertiaCoeff22 = 0.4 * this._radius * this._radius;
- }
- _computeAabb(aabb,tf) {
- var radVec;
- var radVecX;
- var radVecY;
- var radVecZ;
- radVecX = this._radius;
- radVecY = this._radius;
- radVecZ = this._radius;
- aabb._minX = tf._positionX - radVecX;
- aabb._minY = tf._positionY - radVecY;
- aabb._minZ = tf._positionZ - radVecZ;
- aabb._maxX = tf._positionX + radVecX;
- aabb._maxY = tf._positionY + radVecY;
- aabb._maxZ = tf._positionZ + radVecZ;
- }
- computeLocalSupportingVertex(dir,out) {
- out.zero();
- }
- _rayCastLocal(beginX,beginY,beginZ,endX,endY,endZ,hit) {
- var d;
- var dX;
- var dY;
- var dZ;
- dX = endX - beginX;
- dY = endY - beginY;
- dZ = endZ - beginZ;
- var a = dX * dX + dY * dY + dZ * dZ;
- var b = beginX * dX + beginY * dY + beginZ * dZ;
- var c = beginX * beginX + beginY * beginY + beginZ * beginZ - this._radius * this._radius;
- var D = b * b - a * c;
- if(D < 0) {
- return false;
- }
- var t = (-b - Math.sqrt(D)) / a;
- if(t < 0 || t > 1) {
- return false;
- }
- var hitPos;
- var hitPosX;
- var hitPosY;
- var hitPosZ;
- var hitNormal;
- var hitNormalX;
- var hitNormalY;
- var hitNormalZ;
- hitPosX = beginX + dX * t;
- hitPosY = beginY + dY * t;
- hitPosZ = beginZ + dZ * t;
- var l = hitPosX * hitPosX + hitPosY * hitPosY + hitPosZ * hitPosZ;
- if(l > 0) {
- l = 1 / Math.sqrt(l);
- }
- hitNormalX = hitPosX * l;
- hitNormalY = hitPosY * l;
- hitNormalZ = hitPosZ * l;
- var v = hit.position;
- v.x = hitPosX;
- v.y = hitPosY;
- v.z = hitPosZ;
- var v1 = hit.normal;
- v1.x = hitNormalX;
- v1.y = hitNormalY;
- v1.z = hitNormalZ;
- hit.fraction = t;
- return true;
- }
- }
- if(!oimo.collision.narrowphase) oimo.collision.narrowphase = {};
- oimo.collision.narrowphase.CollisionMatrix = class oimo_collision_narrowphase_CollisionMatrix {
- constructor() {
- var this1 = new Array(8);
- this.detectors = this1;
- var this2 = this.detectors;
- var this3 = new Array(8);
- this2[0] = this3;
- var this4 = this.detectors;
- var this5 = new Array(8);
- this4[1] = this5;
- var this6 = this.detectors;
- var this7 = new Array(8);
- this6[2] = this7;
- var this8 = this.detectors;
- var this9 = new Array(8);
- this8[3] = this9;
- var this10 = this.detectors;
- var this11 = new Array(8);
- this10[4] = this11;
- var this12 = this.detectors;
- var this13 = new Array(8);
- this12[5] = this13;
- var gjkEpaDetector = new oimo.collision.narrowphase.detector.GjkEpaDetector();
- var sp = 0;
- var bo = 1;
- var cy = 2;
- var co = 3;
- var ca = 4;
- var ch = 5;
- this.detectors[sp][sp] = new oimo.collision.narrowphase.detector.SphereSphereDetector();
- this.detectors[sp][bo] = new oimo.collision.narrowphase.detector.SphereBoxDetector(false);
- this.detectors[sp][cy] = gjkEpaDetector;
- this.detectors[sp][co] = gjkEpaDetector;
- this.detectors[sp][ca] = new oimo.collision.narrowphase.detector.SphereCapsuleDetector(false);
- this.detectors[sp][ch] = gjkEpaDetector;
- this.detectors[bo][sp] = new oimo.collision.narrowphase.detector.SphereBoxDetector(true);
- this.detectors[bo][bo] = new oimo.collision.narrowphase.detector.BoxBoxDetector();
- this.detectors[bo][cy] = gjkEpaDetector;
- this.detectors[bo][co] = gjkEpaDetector;
- this.detectors[bo][ca] = gjkEpaDetector;
- this.detectors[bo][ch] = gjkEpaDetector;
- this.detectors[cy][sp] = gjkEpaDetector;
- this.detectors[cy][bo] = gjkEpaDetector;
- this.detectors[cy][cy] = gjkEpaDetector;
- this.detectors[cy][co] = gjkEpaDetector;
- this.detectors[cy][ca] = gjkEpaDetector;
- this.detectors[cy][ch] = gjkEpaDetector;
- this.detectors[co][sp] = gjkEpaDetector;
- this.detectors[co][bo] = gjkEpaDetector;
- this.detectors[co][cy] = gjkEpaDetector;
- this.detectors[co][co] = gjkEpaDetector;
- this.detectors[co][ca] = gjkEpaDetector;
- this.detectors[co][ch] = gjkEpaDetector;
- this.detectors[ca][sp] = new oimo.collision.narrowphase.detector.SphereCapsuleDetector(true);
- this.detectors[ca][bo] = gjkEpaDetector;
- this.detectors[ca][cy] = gjkEpaDetector;
- this.detectors[ca][co] = gjkEpaDetector;
- this.detectors[ca][ca] = new oimo.collision.narrowphase.detector.CapsuleCapsuleDetector();
- this.detectors[ca][ch] = gjkEpaDetector;
- this.detectors[ch][sp] = gjkEpaDetector;
- this.detectors[ch][bo] = gjkEpaDetector;
- this.detectors[ch][cy] = gjkEpaDetector;
- this.detectors[ch][co] = gjkEpaDetector;
- this.detectors[ch][ca] = gjkEpaDetector;
- this.detectors[ch][ch] = gjkEpaDetector;
- }
- getDetector(geomType1,geomType2) {
- return this.detectors[geomType1][geomType2];
- }
- }
- oimo.collision.narrowphase.DetectorResult = class oimo_collision_narrowphase_DetectorResult {
- constructor() {
- this.numPoints = 0;
- this.normal = new oimo.common.Vec3();
- var this1 = new Array(oimo.common.Setting.maxManifoldPoints);
- this.points = this1;
- this.incremental = false;
- var _g = 0;
- var _g1 = oimo.common.Setting.maxManifoldPoints;
- while(_g < _g1) {
- var i = _g++;
- this.points[i] = new oimo.collision.narrowphase.DetectorResultPoint();
- }
- }
- getMaxDepth() {
- var max = 0;
- var _g = 0;
- var _g1 = this.numPoints;
- while(_g < _g1) {
- var i = _g++;
- if(this.points[i].depth > max) {
- max = this.points[i].depth;
- }
- }
- return max;
- }
- clear() {
- this.numPoints = 0;
- var _g = 0;
- var _g1 = this.points;
- while(_g < _g1.length) {
- var p = _g1[_g];
- ++_g;
- p.position1.zero();
- p.position2.zero();
- p.depth = 0;
- p.id = 0;
- }
- this.normal.zero();
- }
- }
- oimo.collision.narrowphase.DetectorResultPoint = class oimo_collision_narrowphase_DetectorResultPoint {
- constructor() {
- this.position1 = new oimo.common.Vec3();
- this.position2 = new oimo.common.Vec3();
- this.depth = 0;
- this.id = 0;
- }
- }
- if(!oimo.collision.narrowphase.detector) oimo.collision.narrowphase.detector = {};
- oimo.collision.narrowphase.detector.Detector = class oimo_collision_narrowphase_detector_Detector {
- constructor(swapped) {
- this.swapped = swapped;
- }
- setNormal(result,nX,nY,nZ) {
- var v = result.normal;
- v.x = nX;
- v.y = nY;
- v.z = nZ;
- if(this.swapped) {
- var _this = result.normal;
- var tx = -_this.x;
- var ty = -_this.y;
- var tz = -_this.z;
- _this.x = tx;
- _this.y = ty;
- _this.z = tz;
- }
- }
- addPoint(result,pos1X,pos1Y,pos1Z,pos2X,pos2Y,pos2Z,depth,id) {
- var p = result.points[result.numPoints++];
- p.depth = depth;
- p.id = id;
- if(this.swapped) {
- var v = p.position1;
- v.x = pos2X;
- v.y = pos2Y;
- v.z = pos2Z;
- var v1 = p.position2;
- v1.x = pos1X;
- v1.y = pos1Y;
- v1.z = pos1Z;
- } else {
- var v2 = p.position1;
- v2.x = pos1X;
- v2.y = pos1Y;
- v2.z = pos1Z;
- var v3 = p.position2;
- v3.x = pos2X;
- v3.y = pos2Y;
- v3.z = pos2Z;
- }
- }
- detectImpl(result,geom1,geom2,tf1,tf2,cachedData) {
- }
- detect(result,geom1,geom2,transform1,transform2,cachedData) {
- result.numPoints = 0;
- var _g = 0;
- var _g1 = result.points;
- while(_g < _g1.length) {
- var p = _g1[_g];
- ++_g;
- p.position1.zero();
- p.position2.zero();
- p.depth = 0;
- p.id = 0;
- }
- result.normal.zero();
- if(this.swapped) {
- this.detectImpl(result,geom2,geom1,transform2,transform1,cachedData);
- } else {
- this.detectImpl(result,geom1,geom2,transform1,transform2,cachedData);
- }
- }
- }
- oimo.collision.narrowphase.detector.BoxBoxDetector = class oimo_collision_narrowphase_detector_BoxBoxDetector extends oimo.collision.narrowphase.detector.Detector {
- constructor() {
- super(false);
- this.clipper = new oimo.collision.narrowphase.detector._BoxBoxDetector.FaceClipper();
- }
- detectImpl(result,geom1,geom2,tf1,tf2,cachedData) {
- var b1 = geom1;
- var b2 = geom2;
- result.incremental = false;
- var c1;
- var c1X;
- var c1Y;
- var c1Z;
- var c2;
- var c2X;
- var c2Y;
- var c2Z;
- var c12;
- var c12X;
- var c12Y;
- var c12Z;
- c1X = tf1._positionX;
- c1Y = tf1._positionY;
- c1Z = tf1._positionZ;
- c2X = tf2._positionX;
- c2Y = tf2._positionY;
- c2Z = tf2._positionZ;
- c12X = c2X - c1X;
- c12Y = c2Y - c1Y;
- c12Z = c2Z - c1Z;
- var x1;
- var x1X;
- var x1Y;
- var x1Z;
- var y1;
- var y1X;
- var y1Y;
- var y1Z;
- var z1;
- var z1X;
- var z1Y;
- var z1Z;
- var x2;
- var x2X;
- var x2Y;
- var x2Z;
- var y2;
- var y2X;
- var y2Y;
- var y2Z;
- var z2;
- var z2X;
- var z2Y;
- var z2Z;
- x1X = tf1._rotation00;
- x1Y = tf1._rotation10;
- x1Z = tf1._rotation20;
- y1X = tf1._rotation01;
- y1Y = tf1._rotation11;
- y1Z = tf1._rotation21;
- z1X = tf1._rotation02;
- z1Y = tf1._rotation12;
- z1Z = tf1._rotation22;
- x2X = tf2._rotation00;
- x2Y = tf2._rotation10;
- x2Z = tf2._rotation20;
- y2X = tf2._rotation01;
- y2Y = tf2._rotation11;
- y2Z = tf2._rotation21;
- z2X = tf2._rotation02;
- z2Y = tf2._rotation12;
- z2Z = tf2._rotation22;
- var w1 = b1._halfExtentsX;
- var h1 = b1._halfExtentsY;
- var d1 = b1._halfExtentsZ;
- var w2 = b2._halfExtentsX;
- var h2 = b2._halfExtentsY;
- var d2 = b2._halfExtentsZ;
- var sx1;
- var sx1X;
- var sx1Y;
- var sx1Z;
- var sy1;
- var sy1X;
- var sy1Y;
- var sy1Z;
- var sz1;
- var sz1X;
- var sz1Y;
- var sz1Z;
- var sx2;
- var sx2X;
- var sx2Y;
- var sx2Z;
- var sy2;
- var sy2X;
- var sy2Y;
- var sy2Z;
- var sz2;
- var sz2X;
- var sz2Y;
- var sz2Z;
- sx1X = x1X * w1;
- sx1Y = x1Y * w1;
- sx1Z = x1Z * w1;
- sy1X = y1X * h1;
- sy1Y = y1Y * h1;
- sy1Z = y1Z * h1;
- sz1X = z1X * d1;
- sz1Y = z1Y * d1;
- sz1Z = z1Z * d1;
- sx2X = x2X * w2;
- sx2Y = x2Y * w2;
- sx2Z = x2Z * w2;
- sy2X = y2X * h2;
- sy2Y = y2Y * h2;
- sy2Z = y2Z * h2;
- sz2X = z2X * d2;
- sz2Y = z2Y * d2;
- sz2Z = z2Z * d2;
- var projSum;
- var projC12Abs;
- var mDepth = 1e65536;
- var mId = -1;
- var mSign = 0;
- var mAxis;
- var mAxisX;
- var mAxisY;
- var mAxisZ;
- mAxisX = 0;
- mAxisY = 0;
- mAxisZ = 0;
- var proj1 = w1;
- var dx = x1X * sx2X + x1Y * sx2Y + x1Z * sx2Z;
- var dy = x1X * sy2X + x1Y * sy2Y + x1Z * sy2Z;
- var dz = x1X * sz2X + x1Y * sz2Y + x1Z * sz2Z;
- if(dx < 0) {
- dx = -dx;
- }
- if(dy < 0) {
- dy = -dy;
- }
- if(dz < 0) {
- dz = -dz;
- }
- var proj2 = dx + dy + dz;
- var projC12 = x1X * c12X + x1Y * c12Y + x1Z * c12Z;
- var sum = proj1 + proj2;
- var neg = projC12 < 0;
- var abs = neg ? -projC12 : projC12;
- if(abs < sum) {
- var depth = sum - abs;
- if(depth < mDepth) {
- mDepth = depth;
- mId = 0;
- mAxisX = x1X;
- mAxisY = x1Y;
- mAxisZ = x1Z;
- mSign = neg ? -1 : 1;
- }
- } else {
- return;
- }
- proj1 = h1;
- var dx1 = y1X * sx2X + y1Y * sx2Y + y1Z * sx2Z;
- var dy1 = y1X * sy2X + y1Y * sy2Y + y1Z * sy2Z;
- var dz1 = y1X * sz2X + y1Y * sz2Y + y1Z * sz2Z;
- if(dx1 < 0) {
- dx1 = -dx1;
- }
- if(dy1 < 0) {
- dy1 = -dy1;
- }
- if(dz1 < 0) {
- dz1 = -dz1;
- }
- proj2 = dx1 + dy1 + dz1;
- projC12 = y1X * c12X + y1Y * c12Y + y1Z * c12Z;
- var sum1 = proj1 + proj2;
- var neg1 = projC12 < 0;
- var abs1 = neg1 ? -projC12 : projC12;
- if(abs1 < sum1) {
- var depth1 = sum1 - abs1;
- if(depth1 < mDepth) {
- mDepth = depth1;
- mId = 1;
- mAxisX = y1X;
- mAxisY = y1Y;
- mAxisZ = y1Z;
- mSign = neg1 ? -1 : 1;
- }
- } else {
- return;
- }
- proj1 = d1;
- var dx2 = z1X * sx2X + z1Y * sx2Y + z1Z * sx2Z;
- var dy2 = z1X * sy2X + z1Y * sy2Y + z1Z * sy2Z;
- var dz2 = z1X * sz2X + z1Y * sz2Y + z1Z * sz2Z;
- if(dx2 < 0) {
- dx2 = -dx2;
- }
- if(dy2 < 0) {
- dy2 = -dy2;
- }
- if(dz2 < 0) {
- dz2 = -dz2;
- }
- proj2 = dx2 + dy2 + dz2;
- projC12 = z1X * c12X + z1Y * c12Y + z1Z * c12Z;
- var sum2 = proj1 + proj2;
- var neg2 = projC12 < 0;
- var abs2 = neg2 ? -projC12 : projC12;
- if(abs2 < sum2) {
- var depth2 = sum2 - abs2;
- if(depth2 < mDepth) {
- mDepth = depth2;
- mId = 2;
- mAxisX = z1X;
- mAxisY = z1Y;
- mAxisZ = z1Z;
- mSign = neg2 ? -1 : 1;
- }
- } else {
- return;
- }
- if(mDepth > oimo.common.Setting.linearSlop) {
- mDepth -= oimo.common.Setting.linearSlop;
- } else {
- mDepth = 0;
- }
- var dx3 = x2X * sx1X + x2Y * sx1Y + x2Z * sx1Z;
- var dy3 = x2X * sy1X + x2Y * sy1Y + x2Z * sy1Z;
- var dz3 = x2X * sz1X + x2Y * sz1Y + x2Z * sz1Z;
- if(dx3 < 0) {
- dx3 = -dx3;
- }
- if(dy3 < 0) {
- dy3 = -dy3;
- }
- if(dz3 < 0) {
- dz3 = -dz3;
- }
- proj1 = dx3 + dy3 + dz3;
- proj2 = w2;
- projC12 = x2X * c12X + x2Y * c12Y + x2Z * c12Z;
- var sum3 = proj1 + proj2;
- var neg3 = projC12 < 0;
- var abs3 = neg3 ? -projC12 : projC12;
- if(abs3 < sum3) {
- var depth3 = sum3 - abs3;
- if(depth3 < mDepth) {
- mDepth = depth3;
- mId = 3;
- mAxisX = x2X;
- mAxisY = x2Y;
- mAxisZ = x2Z;
- mSign = neg3 ? -1 : 1;
- }
- } else {
- return;
- }
- var dx4 = y2X * sx1X + y2Y * sx1Y + y2Z * sx1Z;
- var dy4 = y2X * sy1X + y2Y * sy1Y + y2Z * sy1Z;
- var dz4 = y2X * sz1X + y2Y * sz1Y + y2Z * sz1Z;
- if(dx4 < 0) {
- dx4 = -dx4;
- }
- if(dy4 < 0) {
- dy4 = -dy4;
- }
- if(dz4 < 0) {
- dz4 = -dz4;
- }
- proj1 = dx4 + dy4 + dz4;
- proj2 = h2;
- projC12 = y2X * c12X + y2Y * c12Y + y2Z * c12Z;
- var sum4 = proj1 + proj2;
- var neg4 = projC12 < 0;
- var abs4 = neg4 ? -projC12 : projC12;
- if(abs4 < sum4) {
- var depth4 = sum4 - abs4;
- if(depth4 < mDepth) {
- mDepth = depth4;
- mId = 4;
- mAxisX = y2X;
- mAxisY = y2Y;
- mAxisZ = y2Z;
- mSign = neg4 ? -1 : 1;
- }
- } else {
- return;
- }
- var dx5 = z2X * sx1X + z2Y * sx1Y + z2Z * sx1Z;
- var dy5 = z2X * sy1X + z2Y * sy1Y + z2Z * sy1Z;
- var dz5 = z2X * sz1X + z2Y * sz1Y + z2Z * sz1Z;
- if(dx5 < 0) {
- dx5 = -dx5;
- }
- if(dy5 < 0) {
- dy5 = -dy5;
- }
- if(dz5 < 0) {
- dz5 = -dz5;
- }
- proj1 = dx5 + dy5 + dz5;
- proj2 = d2;
- projC12 = z2X * c12X + z2Y * c12Y + z2Z * c12Z;
- var sum5 = proj1 + proj2;
- var neg5 = projC12 < 0;
- var abs5 = neg5 ? -projC12 : projC12;
- if(abs5 < sum5) {
- var depth5 = sum5 - abs5;
- if(depth5 < mDepth) {
- mDepth = depth5;
- mId = 5;
- mAxisX = z2X;
- mAxisY = z2Y;
- mAxisZ = z2Z;
- mSign = neg5 ? -1 : 1;
- }
- } else {
- return;
- }
- if(mDepth > oimo.common.Setting.linearSlop) {
- mDepth -= oimo.common.Setting.linearSlop;
- } else {
- mDepth = 0;
- }
- var edgeAxis;
- var edgeAxisX;
- var edgeAxisY;
- var edgeAxisZ;
- edgeAxisX = x1Y * x2Z - x1Z * x2Y;
- edgeAxisY = x1Z * x2X - x1X * x2Z;
- edgeAxisZ = x1X * x2Y - x1Y * x2X;
- if(!(edgeAxisX == 0 && edgeAxisY == 0 && edgeAxisZ == 0)) {
- var l = edgeAxisX * edgeAxisX + edgeAxisY * edgeAxisY + edgeAxisZ * edgeAxisZ;
- if(l > 0) {
- l = 1 / Math.sqrt(l);
- }
- edgeAxisX *= l;
- edgeAxisY *= l;
- edgeAxisZ *= l;
- var dx6 = edgeAxisX * sy1X + edgeAxisY * sy1Y + edgeAxisZ * sy1Z;
- var dy6 = edgeAxisX * sz1X + edgeAxisY * sz1Y + edgeAxisZ * sz1Z;
- if(dx6 < 0) {
- dx6 = -dx6;
- }
- if(dy6 < 0) {
- dy6 = -dy6;
- }
- proj1 = dx6 + dy6;
- var dx7 = edgeAxisX * sy2X + edgeAxisY * sy2Y + edgeAxisZ * sy2Z;
- var dy7 = edgeAxisX * sz2X + edgeAxisY * sz2Y + edgeAxisZ * sz2Z;
- if(dx7 < 0) {
- dx7 = -dx7;
- }
- if(dy7 < 0) {
- dy7 = -dy7;
- }
- proj2 = dx7 + dy7;
- projC12 = edgeAxisX * c12X + edgeAxisY * c12Y + edgeAxisZ * c12Z;
- var sum6 = proj1 + proj2;
- var neg6 = projC12 < 0;
- var abs6 = neg6 ? -projC12 : projC12;
- if(abs6 < sum6) {
- var depth6 = sum6 - abs6;
- if(depth6 < mDepth) {
- mDepth = depth6;
- mId = 6;
- mAxisX = edgeAxisX;
- mAxisY = edgeAxisY;
- mAxisZ = edgeAxisZ;
- mSign = neg6 ? -1 : 1;
- }
- } else {
- return;
- }
- }
- edgeAxisX = x1Y * y2Z - x1Z * y2Y;
- edgeAxisY = x1Z * y2X - x1X * y2Z;
- edgeAxisZ = x1X * y2Y - x1Y * y2X;
- if(!(edgeAxisX == 0 && edgeAxisY == 0 && edgeAxisZ == 0)) {
- var l1 = edgeAxisX * edgeAxisX + edgeAxisY * edgeAxisY + edgeAxisZ * edgeAxisZ;
- if(l1 > 0) {
- l1 = 1 / Math.sqrt(l1);
- }
- edgeAxisX *= l1;
- edgeAxisY *= l1;
- edgeAxisZ *= l1;
- var dx8 = edgeAxisX * sy1X + edgeAxisY * sy1Y + edgeAxisZ * sy1Z;
- var dy8 = edgeAxisX * sz1X + edgeAxisY * sz1Y + edgeAxisZ * sz1Z;
- if(dx8 < 0) {
- dx8 = -dx8;
- }
- if(dy8 < 0) {
- dy8 = -dy8;
- }
- proj1 = dx8 + dy8;
- var dx9 = edgeAxisX * sx2X + edgeAxisY * sx2Y + edgeAxisZ * sx2Z;
- var dy9 = edgeAxisX * sz2X + edgeAxisY * sz2Y + edgeAxisZ * sz2Z;
- if(dx9 < 0) {
- dx9 = -dx9;
- }
- if(dy9 < 0) {
- dy9 = -dy9;
- }
- proj2 = dx9 + dy9;
- projC12 = edgeAxisX * c12X + edgeAxisY * c12Y + edgeAxisZ * c12Z;
- var sum7 = proj1 + proj2;
- var neg7 = projC12 < 0;
- var abs7 = neg7 ? -projC12 : projC12;
- if(abs7 < sum7) {
- var depth7 = sum7 - abs7;
- if(depth7 < mDepth) {
- mDepth = depth7;
- mId = 7;
- mAxisX = edgeAxisX;
- mAxisY = edgeAxisY;
- mAxisZ = edgeAxisZ;
- mSign = neg7 ? -1 : 1;
- }
- } else {
- return;
- }
- }
- edgeAxisX = x1Y * z2Z - x1Z * z2Y;
- edgeAxisY = x1Z * z2X - x1X * z2Z;
- edgeAxisZ = x1X * z2Y - x1Y * z2X;
- if(!(edgeAxisX == 0 && edgeAxisY == 0 && edgeAxisZ == 0)) {
- var l2 = edgeAxisX * edgeAxisX + edgeAxisY * edgeAxisY + edgeAxisZ * edgeAxisZ;
- if(l2 > 0) {
- l2 = 1 / Math.sqrt(l2);
- }
- edgeAxisX *= l2;
- edgeAxisY *= l2;
- edgeAxisZ *= l2;
- var dx10 = edgeAxisX * sy1X + edgeAxisY * sy1Y + edgeAxisZ * sy1Z;
- var dy10 = edgeAxisX * sz1X + edgeAxisY * sz1Y + edgeAxisZ * sz1Z;
- if(dx10 < 0) {
- dx10 = -dx10;
- }
- if(dy10 < 0) {
- dy10 = -dy10;
- }
- proj1 = dx10 + dy10;
- var dx11 = edgeAxisX * sx2X + edgeAxisY * sx2Y + edgeAxisZ * sx2Z;
- var dy11 = edgeAxisX * sy2X + edgeAxisY * sy2Y + edgeAxisZ * sy2Z;
- if(dx11 < 0) {
- dx11 = -dx11;
- }
- if(dy11 < 0) {
- dy11 = -dy11;
- }
- proj2 = dx11 + dy11;
- projC12 = edgeAxisX * c12X + edgeAxisY * c12Y + edgeAxisZ * c12Z;
- var sum8 = proj1 + proj2;
- var neg8 = projC12 < 0;
- var abs8 = neg8 ? -projC12 : projC12;
- if(abs8 < sum8) {
- var depth8 = sum8 - abs8;
- if(depth8 < mDepth) {
- mDepth = depth8;
- mId = 8;
- mAxisX = edgeAxisX;
- mAxisY = edgeAxisY;
- mAxisZ = edgeAxisZ;
- mSign = neg8 ? -1 : 1;
- }
- } else {
- return;
- }
- }
- edgeAxisX = y1Y * x2Z - y1Z * x2Y;
- edgeAxisY = y1Z * x2X - y1X * x2Z;
- edgeAxisZ = y1X * x2Y - y1Y * x2X;
- if(!(edgeAxisX == 0 && edgeAxisY == 0 && edgeAxisZ == 0)) {
- var l3 = edgeAxisX * edgeAxisX + edgeAxisY * edgeAxisY + edgeAxisZ * edgeAxisZ;
- if(l3 > 0) {
- l3 = 1 / Math.sqrt(l3);
- }
- edgeAxisX *= l3;
- edgeAxisY *= l3;
- edgeAxisZ *= l3;
- var dx12 = edgeAxisX * sx1X + edgeAxisY * sx1Y + edgeAxisZ * sx1Z;
- var dy12 = edgeAxisX * sz1X + edgeAxisY * sz1Y + edgeAxisZ * sz1Z;
- if(dx12 < 0) {
- dx12 = -dx12;
- }
- if(dy12 < 0) {
- dy12 = -dy12;
- }
- proj1 = dx12 + dy12;
- var dx13 = edgeAxisX * sy2X + edgeAxisY * sy2Y + edgeAxisZ * sy2Z;
- var dy13 = edgeAxisX * sz2X + edgeAxisY * sz2Y + edgeAxisZ * sz2Z;
- if(dx13 < 0) {
- dx13 = -dx13;
- }
- if(dy13 < 0) {
- dy13 = -dy13;
- }
- proj2 = dx13 + dy13;
- projC12 = edgeAxisX * c12X + edgeAxisY * c12Y + edgeAxisZ * c12Z;
- var sum9 = proj1 + proj2;
- var neg9 = projC12 < 0;
- var abs9 = neg9 ? -projC12 : projC12;
- if(abs9 < sum9) {
- var depth9 = sum9 - abs9;
- if(depth9 < mDepth) {
- mDepth = depth9;
- mId = 9;
- mAxisX = edgeAxisX;
- mAxisY = edgeAxisY;
- mAxisZ = edgeAxisZ;
- mSign = neg9 ? -1 : 1;
- }
- } else {
- return;
- }
- }
- edgeAxisX = y1Y * y2Z - y1Z * y2Y;
- edgeAxisY = y1Z * y2X - y1X * y2Z;
- edgeAxisZ = y1X * y2Y - y1Y * y2X;
- if(!(edgeAxisX == 0 && edgeAxisY == 0 && edgeAxisZ == 0)) {
- var l4 = edgeAxisX * edgeAxisX + edgeAxisY * edgeAxisY + edgeAxisZ * edgeAxisZ;
- if(l4 > 0) {
- l4 = 1 / Math.sqrt(l4);
- }
- edgeAxisX *= l4;
- edgeAxisY *= l4;
- edgeAxisZ *= l4;
- var dx14 = edgeAxisX * sx1X + edgeAxisY * sx1Y + edgeAxisZ * sx1Z;
- var dy14 = edgeAxisX * sz1X + edgeAxisY * sz1Y + edgeAxisZ * sz1Z;
- if(dx14 < 0) {
- dx14 = -dx14;
- }
- if(dy14 < 0) {
- dy14 = -dy14;
- }
- proj1 = dx14 + dy14;
- var dx15 = edgeAxisX * sx2X + edgeAxisY * sx2Y + edgeAxisZ * sx2Z;
- var dy15 = edgeAxisX * sz2X + edgeAxisY * sz2Y + edgeAxisZ * sz2Z;
- if(dx15 < 0) {
- dx15 = -dx15;
- }
- if(dy15 < 0) {
- dy15 = -dy15;
- }
- proj2 = dx15 + dy15;
- projC12 = edgeAxisX * c12X + edgeAxisY * c12Y + edgeAxisZ * c12Z;
- var sum10 = proj1 + proj2;
- var neg10 = projC12 < 0;
- var abs10 = neg10 ? -projC12 : projC12;
- if(abs10 < sum10) {
- var depth10 = sum10 - abs10;
- if(depth10 < mDepth) {
- mDepth = depth10;
- mId = 10;
- mAxisX = edgeAxisX;
- mAxisY = edgeAxisY;
- mAxisZ = edgeAxisZ;
- mSign = neg10 ? -1 : 1;
- }
- } else {
- return;
- }
- }
- edgeAxisX = y1Y * z2Z - y1Z * z2Y;
- edgeAxisY = y1Z * z2X - y1X * z2Z;
- edgeAxisZ = y1X * z2Y - y1Y * z2X;
- if(!(edgeAxisX == 0 && edgeAxisY == 0 && edgeAxisZ == 0)) {
- var l5 = edgeAxisX * edgeAxisX + edgeAxisY * edgeAxisY + edgeAxisZ * edgeAxisZ;
- if(l5 > 0) {
- l5 = 1 / Math.sqrt(l5);
- }
- edgeAxisX *= l5;
- edgeAxisY *= l5;
- edgeAxisZ *= l5;
- var dx16 = edgeAxisX * sx1X + edgeAxisY * sx1Y + edgeAxisZ * sx1Z;
- var dy16 = edgeAxisX * sz1X + edgeAxisY * sz1Y + edgeAxisZ * sz1Z;
- if(dx16 < 0) {
- dx16 = -dx16;
- }
- if(dy16 < 0) {
- dy16 = -dy16;
- }
- proj1 = dx16 + dy16;
- var dx17 = edgeAxisX * sx2X + edgeAxisY * sx2Y + edgeAxisZ * sx2Z;
- var dy17 = edgeAxisX * sy2X + edgeAxisY * sy2Y + edgeAxisZ * sy2Z;
- if(dx17 < 0) {
- dx17 = -dx17;
- }
- if(dy17 < 0) {
- dy17 = -dy17;
- }
- proj2 = dx17 + dy17;
- projC12 = edgeAxisX * c12X + edgeAxisY * c12Y + edgeAxisZ * c12Z;
- var sum11 = proj1 + proj2;
- var neg11 = projC12 < 0;
- var abs11 = neg11 ? -projC12 : projC12;
- if(abs11 < sum11) {
- var depth11 = sum11 - abs11;
- if(depth11 < mDepth) {
- mDepth = depth11;
- mId = 11;
- mAxisX = edgeAxisX;
- mAxisY = edgeAxisY;
- mAxisZ = edgeAxisZ;
- mSign = neg11 ? -1 : 1;
- }
- } else {
- return;
- }
- }
- edgeAxisX = z1Y * x2Z - z1Z * x2Y;
- edgeAxisY = z1Z * x2X - z1X * x2Z;
- edgeAxisZ = z1X * x2Y - z1Y * x2X;
- if(!(edgeAxisX == 0 && edgeAxisY == 0 && edgeAxisZ == 0)) {
- var l6 = edgeAxisX * edgeAxisX + edgeAxisY * edgeAxisY + edgeAxisZ * edgeAxisZ;
- if(l6 > 0) {
- l6 = 1 / Math.sqrt(l6);
- }
- edgeAxisX *= l6;
- edgeAxisY *= l6;
- edgeAxisZ *= l6;
- var dx18 = edgeAxisX * sx1X + edgeAxisY * sx1Y + edgeAxisZ * sx1Z;
- var dy18 = edgeAxisX * sy1X + edgeAxisY * sy1Y + edgeAxisZ * sy1Z;
- if(dx18 < 0) {
- dx18 = -dx18;
- }
- if(dy18 < 0) {
- dy18 = -dy18;
- }
- proj1 = dx18 + dy18;
- var dx19 = edgeAxisX * sy2X + edgeAxisY * sy2Y + edgeAxisZ * sy2Z;
- var dy19 = edgeAxisX * sz2X + edgeAxisY * sz2Y + edgeAxisZ * sz2Z;
- if(dx19 < 0) {
- dx19 = -dx19;
- }
- if(dy19 < 0) {
- dy19 = -dy19;
- }
- proj2 = dx19 + dy19;
- projC12 = edgeAxisX * c12X + edgeAxisY * c12Y + edgeAxisZ * c12Z;
- var sum12 = proj1 + proj2;
- var neg12 = projC12 < 0;
- var abs12 = neg12 ? -projC12 : projC12;
- if(abs12 < sum12) {
- var depth12 = sum12 - abs12;
- if(depth12 < mDepth) {
- mDepth = depth12;
- mId = 12;
- mAxisX = edgeAxisX;
- mAxisY = edgeAxisY;
- mAxisZ = edgeAxisZ;
- mSign = neg12 ? -1 : 1;
- }
- } else {
- return;
- }
- }
- edgeAxisX = z1Y * y2Z - z1Z * y2Y;
- edgeAxisY = z1Z * y2X - z1X * y2Z;
- edgeAxisZ = z1X * y2Y - z1Y * y2X;
- if(!(edgeAxisX == 0 && edgeAxisY == 0 && edgeAxisZ == 0)) {
- var l7 = edgeAxisX * edgeAxisX + edgeAxisY * edgeAxisY + edgeAxisZ * edgeAxisZ;
- if(l7 > 0) {
- l7 = 1 / Math.sqrt(l7);
- }
- edgeAxisX *= l7;
- edgeAxisY *= l7;
- edgeAxisZ *= l7;
- var dx20 = edgeAxisX * sx1X + edgeAxisY * sx1Y + edgeAxisZ * sx1Z;
- var dy20 = edgeAxisX * sy1X + edgeAxisY * sy1Y + edgeAxisZ * sy1Z;
- if(dx20 < 0) {
- dx20 = -dx20;
- }
- if(dy20 < 0) {
- dy20 = -dy20;
- }
- proj1 = dx20 + dy20;
- var dx21 = edgeAxisX * sx2X + edgeAxisY * sx2Y + edgeAxisZ * sx2Z;
- var dy21 = edgeAxisX * sz2X + edgeAxisY * sz2Y + edgeAxisZ * sz2Z;
- if(dx21 < 0) {
- dx21 = -dx21;
- }
- if(dy21 < 0) {
- dy21 = -dy21;
- }
- proj2 = dx21 + dy21;
- projC12 = edgeAxisX * c12X + edgeAxisY * c12Y + edgeAxisZ * c12Z;
- var sum13 = proj1 + proj2;
- var neg13 = projC12 < 0;
- var abs13 = neg13 ? -projC12 : projC12;
- if(abs13 < sum13) {
- var depth13 = sum13 - abs13;
- if(depth13 < mDepth) {
- mDepth = depth13;
- mId = 13;
- mAxisX = edgeAxisX;
- mAxisY = edgeAxisY;
- mAxisZ = edgeAxisZ;
- mSign = neg13 ? -1 : 1;
- }
- } else {
- return;
- }
- }
- edgeAxisX = z1Y * z2Z - z1Z * z2Y;
- edgeAxisY = z1Z * z2X - z1X * z2Z;
- edgeAxisZ = z1X * z2Y - z1Y * z2X;
- if(!(edgeAxisX == 0 && edgeAxisY == 0 && edgeAxisZ == 0)) {
- var l8 = edgeAxisX * edgeAxisX + edgeAxisY * edgeAxisY + edgeAxisZ * edgeAxisZ;
- if(l8 > 0) {
- l8 = 1 / Math.sqrt(l8);
- }
- edgeAxisX *= l8;
- edgeAxisY *= l8;
- edgeAxisZ *= l8;
- var dx22 = edgeAxisX * sx1X + edgeAxisY * sx1Y + edgeAxisZ * sx1Z;
- var dy22 = edgeAxisX * sy1X + edgeAxisY * sy1Y + edgeAxisZ * sy1Z;
- if(dx22 < 0) {
- dx22 = -dx22;
- }
- if(dy22 < 0) {
- dy22 = -dy22;
- }
- proj1 = dx22 + dy22;
- var dx23 = edgeAxisX * sx2X + edgeAxisY * sx2Y + edgeAxisZ * sx2Z;
- var dy23 = edgeAxisX * sy2X + edgeAxisY * sy2Y + edgeAxisZ * sy2Z;
- if(dx23 < 0) {
- dx23 = -dx23;
- }
- if(dy23 < 0) {
- dy23 = -dy23;
- }
- proj2 = dx23 + dy23;
- projC12 = edgeAxisX * c12X + edgeAxisY * c12Y + edgeAxisZ * c12Z;
- var sum14 = proj1 + proj2;
- var neg14 = projC12 < 0;
- var abs14 = neg14 ? -projC12 : projC12;
- if(abs14 < sum14) {
- var depth14 = sum14 - abs14;
- if(depth14 < mDepth) {
- mDepth = depth14;
- mId = 14;
- mAxisX = edgeAxisX;
- mAxisY = edgeAxisY;
- mAxisZ = edgeAxisZ;
- mSign = neg14 ? -1 : 1;
- }
- } else {
- return;
- }
- }
- if(mId >= 6) {
- mAxisX *= mSign;
- mAxisY *= mSign;
- mAxisZ *= mSign;
- var id1 = (mId - 6) / 3 | 0;
- var id2 = mId - 6 - id1 * 3;
- var p1;
- var p1X;
- var p1Y;
- var p1Z;
- var p2;
- var p2X;
- var p2Y;
- var p2Z;
- var d11;
- var d1X;
- var d1Y;
- var d1Z;
- var d21;
- var d2X;
- var d2Y;
- var d2Z;
- switch(id1) {
- case 0:
- d1X = x1X;
- d1Y = x1Y;
- d1Z = x1Z;
- var signX = sy1X * mAxisX + sy1Y * mAxisY + sy1Z * mAxisZ > 0;
- var signY = sz1X * mAxisX + sz1Y * mAxisY + sz1Z * mAxisZ > 0;
- if(signX) {
- if(signY) {
- p1X = sy1X + sz1X;
- p1Y = sy1Y + sz1Y;
- p1Z = sy1Z + sz1Z;
- } else {
- p1X = sy1X - sz1X;
- p1Y = sy1Y - sz1Y;
- p1Z = sy1Z - sz1Z;
- }
- } else if(signY) {
- p1X = sz1X - sy1X;
- p1Y = sz1Y - sy1Y;
- p1Z = sz1Z - sy1Z;
- } else {
- p1X = sy1X + sz1X;
- p1Y = sy1Y + sz1Y;
- p1Z = sy1Z + sz1Z;
- p1X = -p1X;
- p1Y = -p1Y;
- p1Z = -p1Z;
- }
- break;
- case 1:
- d1X = y1X;
- d1Y = y1Y;
- d1Z = y1Z;
- var signX1 = sx1X * mAxisX + sx1Y * mAxisY + sx1Z * mAxisZ > 0;
- var signY1 = sz1X * mAxisX + sz1Y * mAxisY + sz1Z * mAxisZ > 0;
- if(signX1) {
- if(signY1) {
- p1X = sx1X + sz1X;
- p1Y = sx1Y + sz1Y;
- p1Z = sx1Z + sz1Z;
- } else {
- p1X = sx1X - sz1X;
- p1Y = sx1Y - sz1Y;
- p1Z = sx1Z - sz1Z;
- }
- } else if(signY1) {
- p1X = sz1X - sx1X;
- p1Y = sz1Y - sx1Y;
- p1Z = sz1Z - sx1Z;
- } else {
- p1X = sx1X + sz1X;
- p1Y = sx1Y + sz1Y;
- p1Z = sx1Z + sz1Z;
- p1X = -p1X;
- p1Y = -p1Y;
- p1Z = -p1Z;
- }
- break;
- default:
- d1X = z1X;
- d1Y = z1Y;
- d1Z = z1Z;
- var signX2 = sx1X * mAxisX + sx1Y * mAxisY + sx1Z * mAxisZ > 0;
- var signY2 = sy1X * mAxisX + sy1Y * mAxisY + sy1Z * mAxisZ > 0;
- if(signX2) {
- if(signY2) {
- p1X = sx1X + sy1X;
- p1Y = sx1Y + sy1Y;
- p1Z = sx1Z + sy1Z;
- } else {
- p1X = sx1X - sy1X;
- p1Y = sx1Y - sy1Y;
- p1Z = sx1Z - sy1Z;
- }
- } else if(signY2) {
- p1X = sy1X - sx1X;
- p1Y = sy1Y - sx1Y;
- p1Z = sy1Z - sx1Z;
- } else {
- p1X = sx1X + sy1X;
- p1Y = sx1Y + sy1Y;
- p1Z = sx1Z + sy1Z;
- p1X = -p1X;
- p1Y = -p1Y;
- p1Z = -p1Z;
- }
- }
- p1X = c1X + p1X;
- p1Y = c1Y + p1Y;
- p1Z = c1Z + p1Z;
- switch(id2) {
- case 0:
- d2X = x2X;
- d2Y = x2Y;
- d2Z = x2Z;
- var signX3 = sy2X * mAxisX + sy2Y * mAxisY + sy2Z * mAxisZ > 0;
- var signY3 = sz2X * mAxisX + sz2Y * mAxisY + sz2Z * mAxisZ > 0;
- if(signX3) {
- if(signY3) {
- p2X = sy2X + sz2X;
- p2Y = sy2Y + sz2Y;
- p2Z = sy2Z + sz2Z;
- } else {
- p2X = sy2X - sz2X;
- p2Y = sy2Y - sz2Y;
- p2Z = sy2Z - sz2Z;
- }
- } else if(signY3) {
- p2X = sz2X - sy2X;
- p2Y = sz2Y - sy2Y;
- p2Z = sz2Z - sy2Z;
- } else {
- p2X = sy2X + sz2X;
- p2Y = sy2Y + sz2Y;
- p2Z = sy2Z + sz2Z;
- p2X = -p2X;
- p2Y = -p2Y;
- p2Z = -p2Z;
- }
- break;
- case 1:
- d2X = y2X;
- d2Y = y2Y;
- d2Z = y2Z;
- var signX4 = sx2X * mAxisX + sx2Y * mAxisY + sx2Z * mAxisZ > 0;
- var signY4 = sz2X * mAxisX + sz2Y * mAxisY + sz2Z * mAxisZ > 0;
- if(signX4) {
- if(signY4) {
- p2X = sx2X + sz2X;
- p2Y = sx2Y + sz2Y;
- p2Z = sx2Z + sz2Z;
- } else {
- p2X = sx2X - sz2X;
- p2Y = sx2Y - sz2Y;
- p2Z = sx2Z - sz2Z;
- }
- } else if(signY4) {
- p2X = sz2X - sx2X;
- p2Y = sz2Y - sx2Y;
- p2Z = sz2Z - sx2Z;
- } else {
- p2X = sx2X + sz2X;
- p2Y = sx2Y + sz2Y;
- p2Z = sx2Z + sz2Z;
- p2X = -p2X;
- p2Y = -p2Y;
- p2Z = -p2Z;
- }
- break;
- default:
- d2X = z2X;
- d2Y = z2Y;
- d2Z = z2Z;
- var signX5 = sx2X * mAxisX + sx2Y * mAxisY + sx2Z * mAxisZ > 0;
- var signY5 = sy2X * mAxisX + sy2Y * mAxisY + sy2Z * mAxisZ > 0;
- if(signX5) {
- if(signY5) {
- p2X = sx2X + sy2X;
- p2Y = sx2Y + sy2Y;
- p2Z = sx2Z + sy2Z;
- } else {
- p2X = sx2X - sy2X;
- p2Y = sx2Y - sy2Y;
- p2Z = sx2Z - sy2Z;
- }
- } else if(signY5) {
- p2X = sy2X - sx2X;
- p2Y = sy2Y - sx2Y;
- p2Z = sy2Z - sx2Z;
- } else {
- p2X = sx2X + sy2X;
- p2Y = sx2Y + sy2Y;
- p2Z = sx2Z + sy2Z;
- p2X = -p2X;
- p2Y = -p2Y;
- p2Z = -p2Z;
- }
- }
- p2X = c2X - p2X;
- p2Y = c2Y - p2Y;
- p2Z = c2Z - p2Z;
- var r;
- var rX;
- var rY;
- var rZ;
- rX = p1X - p2X;
- rY = p1Y - p2Y;
- rZ = p1Z - p2Z;
- var dot12 = d1X * d2X + d1Y * d2Y + d1Z * d2Z;
- var dot1r = d1X * rX + d1Y * rY + d1Z * rZ;
- var dot2r = d2X * rX + d2Y * rY + d2Z * rZ;
- var invDet = 1 / (1 - dot12 * dot12);
- var t1 = (dot12 * dot2r - dot1r) * invDet;
- var t2 = (dot2r - dot12 * dot1r) * invDet;
- var cp1;
- var cp1X;
- var cp1Y;
- var cp1Z;
- var cp2;
- var cp2X;
- var cp2Y;
- var cp2Z;
- cp1X = p1X + d1X * t1;
- cp1Y = p1Y + d1Y * t1;
- cp1Z = p1Z + d1Z * t1;
- cp2X = p2X + d2X * t2;
- cp2Y = p2Y + d2Y * t2;
- cp2Z = p2Z + d2Z * t2;
- var normal;
- var normalX;
- var normalY;
- var normalZ;
- normalX = -mAxisX;
- normalY = -mAxisY;
- normalZ = -mAxisZ;
- this.setNormal(result,normalX,normalY,normalZ);
- this.addPoint(result,cp1X,cp1Y,cp1Z,cp2X,cp2Y,cp2Z,mDepth,4);
- return;
- }
- var tmp;
- var tmpX;
- var tmpY;
- var tmpZ;
- var swapped;
- if(mId >= 3) {
- mSign = -mSign;
- c12X = -c12X;
- c12Y = -c12Y;
- c12Z = -c12Z;
- var tmp1 = b1;
- b1 = b2;
- b2 = tmp1;
- var tmp2 = w1;
- w1 = w2;
- w2 = tmp2;
- var tmp3 = h1;
- h1 = h2;
- h2 = tmp3;
- var tmp4 = d1;
- d1 = d2;
- d2 = tmp4;
- tmpX = c1X;
- tmpY = c1Y;
- tmpZ = c1Z;
- c1X = c2X;
- c1Y = c2Y;
- c1Z = c2Z;
- c2X = tmpX;
- c2Y = tmpY;
- c2Z = tmpZ;
- tmpX = x1X;
- tmpY = x1Y;
- tmpZ = x1Z;
- x1X = x2X;
- x1Y = x2Y;
- x1Z = x2Z;
- x2X = tmpX;
- x2Y = tmpY;
- x2Z = tmpZ;
- tmpX = y1X;
- tmpY = y1Y;
- tmpZ = y1Z;
- y1X = y2X;
- y1Y = y2Y;
- y1Z = y2Z;
- y2X = tmpX;
- y2Y = tmpY;
- y2Z = tmpZ;
- tmpX = z1X;
- tmpY = z1Y;
- tmpZ = z1Z;
- z1X = z2X;
- z1Y = z2Y;
- z1Z = z2Z;
- z2X = tmpX;
- z2Y = tmpY;
- z2Z = tmpZ;
- tmpX = sx1X;
- tmpY = sx1Y;
- tmpZ = sx1Z;
- sx1X = sx2X;
- sx1Y = sx2Y;
- sx1Z = sx2Z;
- sx2X = tmpX;
- sx2Y = tmpY;
- sx2Z = tmpZ;
- tmpX = sy1X;
- tmpY = sy1Y;
- tmpZ = sy1Z;
- sy1X = sy2X;
- sy1Y = sy2Y;
- sy1Z = sy2Z;
- sy2X = tmpX;
- sy2Y = tmpY;
- sy2Z = tmpZ;
- tmpX = sz1X;
- tmpY = sz1Y;
- tmpZ = sz1Z;
- sz1X = sz2X;
- sz1Y = sz2Y;
- sz1Z = sz2Z;
- sz2X = tmpX;
- sz2Y = tmpY;
- sz2Z = tmpZ;
- mId -= 3;
- swapped = true;
- } else {
- swapped = false;
- }
- var refCenter;
- var refCenterX;
- var refCenterY;
- var refCenterZ;
- var refNormal;
- var refNormalX;
- var refNormalY;
- var refNormalZ;
- var refX;
- var refXX;
- var refXY;
- var refXZ;
- var refY;
- var refYX;
- var refYY;
- var refYZ;
- var refW;
- var refH;
- switch(mId) {
- case 0:
- refCenterX = sx1X;
- refCenterY = sx1Y;
- refCenterZ = sx1Z;
- refNormalX = x1X;
- refNormalY = x1Y;
- refNormalZ = x1Z;
- refXX = y1X;
- refXY = y1Y;
- refXZ = y1Z;
- refYX = z1X;
- refYY = z1Y;
- refYZ = z1Z;
- refW = h1;
- refH = d1;
- break;
- case 1:
- refCenterX = sy1X;
- refCenterY = sy1Y;
- refCenterZ = sy1Z;
- refNormalX = y1X;
- refNormalY = y1Y;
- refNormalZ = y1Z;
- refXX = z1X;
- refXY = z1Y;
- refXZ = z1Z;
- refYX = x1X;
- refYY = x1Y;
- refYZ = x1Z;
- refW = d1;
- refH = w1;
- break;
- default:
- refCenterX = sz1X;
- refCenterY = sz1Y;
- refCenterZ = sz1Z;
- refNormalX = z1X;
- refNormalY = z1Y;
- refNormalZ = z1Z;
- refXX = x1X;
- refXY = x1Y;
- refXZ = x1Z;
- refYX = y1X;
- refYY = y1Y;
- refYZ = y1Z;
- refW = w1;
- refH = h1;
- }
- if(mSign < 0) {
- refCenterX = -refCenterX;
- refCenterY = -refCenterY;
- refCenterZ = -refCenterZ;
- refNormalX = -refNormalX;
- refNormalY = -refNormalY;
- refNormalZ = -refNormalZ;
- tmpX = refXX;
- tmpY = refXY;
- tmpZ = refXZ;
- refXX = refYX;
- refXY = refYY;
- refXZ = refYZ;
- refYX = tmpX;
- refYY = tmpY;
- refYZ = tmpZ;
- var tmp5 = refW;
- refW = refH;
- refH = tmp5;
- }
- refCenterX += c1X;
- refCenterY += c1Y;
- refCenterZ += c1Z;
- var minIncDot = 1;
- var incId = 0;
- var incDot = refNormalX * x2X + refNormalY * x2Y + refNormalZ * x2Z;
- if(incDot < minIncDot) {
- minIncDot = incDot;
- incId = 0;
- }
- if(-incDot < minIncDot) {
- minIncDot = -incDot;
- incId = 1;
- }
- incDot = refNormalX * y2X + refNormalY * y2Y + refNormalZ * y2Z;
- if(incDot < minIncDot) {
- minIncDot = incDot;
- incId = 2;
- }
- if(-incDot < minIncDot) {
- minIncDot = -incDot;
- incId = 3;
- }
- incDot = refNormalX * z2X + refNormalY * z2Y + refNormalZ * z2Z;
- if(incDot < minIncDot) {
- minIncDot = incDot;
- incId = 4;
- }
- if(-incDot < minIncDot) {
- minIncDot = -incDot;
- incId = 5;
- }
- var incV1;
- var incV1X;
- var incV1Y;
- var incV1Z;
- var incV2;
- var incV2X;
- var incV2Y;
- var incV2Z;
- var incV3;
- var incV3X;
- var incV3Y;
- var incV3Z;
- var incV4;
- var incV4X;
- var incV4Y;
- var incV4Z;
- switch(incId) {
- case 0:
- incV1X = sx2X + sy2X;
- incV1Y = sx2Y + sy2Y;
- incV1Z = sx2Z + sy2Z;
- incV1X += sz2X;
- incV1Y += sz2Y;
- incV1Z += sz2Z;
- incV2X = sx2X - sy2X;
- incV2Y = sx2Y - sy2Y;
- incV2Z = sx2Z - sy2Z;
- incV2X += sz2X;
- incV2Y += sz2Y;
- incV2Z += sz2Z;
- incV3X = sx2X - sy2X;
- incV3Y = sx2Y - sy2Y;
- incV3Z = sx2Z - sy2Z;
- incV3X -= sz2X;
- incV3Y -= sz2Y;
- incV3Z -= sz2Z;
- incV4X = sx2X + sy2X;
- incV4Y = sx2Y + sy2Y;
- incV4Z = sx2Z + sy2Z;
- incV4X -= sz2X;
- incV4Y -= sz2Y;
- incV4Z -= sz2Z;
- break;
- case 1:
- incV1X = sy2X - sx2X;
- incV1Y = sy2Y - sx2Y;
- incV1Z = sy2Z - sx2Z;
- incV1X += sz2X;
- incV1Y += sz2Y;
- incV1Z += sz2Z;
- incV2X = sy2X - sx2X;
- incV2Y = sy2Y - sx2Y;
- incV2Z = sy2Z - sx2Z;
- incV2X -= sz2X;
- incV2Y -= sz2Y;
- incV2Z -= sz2Z;
- incV3X = sx2X + sy2X;
- incV3Y = sx2Y + sy2Y;
- incV3Z = sx2Z + sy2Z;
- incV3X = -incV3X;
- incV3Y = -incV3Y;
- incV3Z = -incV3Z;
- incV3X -= sz2X;
- incV3Y -= sz2Y;
- incV3Z -= sz2Z;
- incV4X = sx2X + sy2X;
- incV4Y = sx2Y + sy2Y;
- incV4Z = sx2Z + sy2Z;
- incV4X = -incV4X;
- incV4Y = -incV4Y;
- incV4Z = -incV4Z;
- incV4X += sz2X;
- incV4Y += sz2Y;
- incV4Z += sz2Z;
- break;
- case 2:
- incV1X = sx2X + sy2X;
- incV1Y = sx2Y + sy2Y;
- incV1Z = sx2Z + sy2Z;
- incV1X += sz2X;
- incV1Y += sz2Y;
- incV1Z += sz2Z;
- incV2X = sx2X + sy2X;
- incV2Y = sx2Y + sy2Y;
- incV2Z = sx2Z + sy2Z;
- incV2X -= sz2X;
- incV2Y -= sz2Y;
- incV2Z -= sz2Z;
- incV3X = sy2X - sx2X;
- incV3Y = sy2Y - sx2Y;
- incV3Z = sy2Z - sx2Z;
- incV3X -= sz2X;
- incV3Y -= sz2Y;
- incV3Z -= sz2Z;
- incV4X = sy2X - sx2X;
- incV4Y = sy2Y - sx2Y;
- incV4Z = sy2Z - sx2Z;
- incV4X += sz2X;
- incV4Y += sz2Y;
- incV4Z += sz2Z;
- break;
- case 3:
- incV1X = sx2X - sy2X;
- incV1Y = sx2Y - sy2Y;
- incV1Z = sx2Z - sy2Z;
- incV1X += sz2X;
- incV1Y += sz2Y;
- incV1Z += sz2Z;
- incV2X = sx2X + sy2X;
- incV2Y = sx2Y + sy2Y;
- incV2Z = sx2Z + sy2Z;
- incV2X = -incV2X;
- incV2Y = -incV2Y;
- incV2Z = -incV2Z;
- incV2X += sz2X;
- incV2Y += sz2Y;
- incV2Z += sz2Z;
- incV3X = sx2X + sy2X;
- incV3Y = sx2Y + sy2Y;
- incV3Z = sx2Z + sy2Z;
- incV3X = -incV3X;
- incV3Y = -incV3Y;
- incV3Z = -incV3Z;
- incV3X -= sz2X;
- incV3Y -= sz2Y;
- incV3Z -= sz2Z;
- incV4X = sx2X - sy2X;
- incV4Y = sx2Y - sy2Y;
- incV4Z = sx2Z - sy2Z;
- incV4X -= sz2X;
- incV4Y -= sz2Y;
- incV4Z -= sz2Z;
- break;
- case 4:
- incV1X = sx2X + sy2X;
- incV1Y = sx2Y + sy2Y;
- incV1Z = sx2Z + sy2Z;
- incV1X += sz2X;
- incV1Y += sz2Y;
- incV1Z += sz2Z;
- incV2X = sy2X - sx2X;
- incV2Y = sy2Y - sx2Y;
- incV2Z = sy2Z - sx2Z;
- incV2X += sz2X;
- incV2Y += sz2Y;
- incV2Z += sz2Z;
- incV3X = sx2X + sy2X;
- incV3Y = sx2Y + sy2Y;
- incV3Z = sx2Z + sy2Z;
- incV3X = -incV3X;
- incV3Y = -incV3Y;
- incV3Z = -incV3Z;
- incV3X += sz2X;
- incV3Y += sz2Y;
- incV3Z += sz2Z;
- incV4X = sx2X - sy2X;
- incV4Y = sx2Y - sy2Y;
- incV4Z = sx2Z - sy2Z;
- incV4X += sz2X;
- incV4Y += sz2Y;
- incV4Z += sz2Z;
- break;
- default:
- incV1X = sx2X + sy2X;
- incV1Y = sx2Y + sy2Y;
- incV1Z = sx2Z + sy2Z;
- incV1X -= sz2X;
- incV1Y -= sz2Y;
- incV1Z -= sz2Z;
- incV2X = sx2X - sy2X;
- incV2Y = sx2Y - sy2Y;
- incV2Z = sx2Z - sy2Z;
- incV2X -= sz2X;
- incV2Y -= sz2Y;
- incV2Z -= sz2Z;
- incV3X = sx2X + sy2X;
- incV3Y = sx2Y + sy2Y;
- incV3Z = sx2Z + sy2Z;
- incV3X = -incV3X;
- incV3Y = -incV3Y;
- incV3Z = -incV3Z;
- incV3X -= sz2X;
- incV3Y -= sz2Y;
- incV3Z -= sz2Z;
- incV4X = sy2X - sx2X;
- incV4Y = sy2Y - sx2Y;
- incV4Z = sy2Z - sx2Z;
- incV4X -= sz2X;
- incV4Y -= sz2Y;
- incV4Z -= sz2Z;
- }
- incV1X += c12X;
- incV1Y += c12Y;
- incV1Z += c12Z;
- incV2X += c12X;
- incV2Y += c12Y;
- incV2Z += c12Z;
- incV3X += c12X;
- incV3Y += c12Y;
- incV3Z += c12Z;
- incV4X += c12X;
- incV4Y += c12Y;
- incV4Z += c12Z;
- var _this = this.clipper;
- _this.w = refW;
- _this.h = refH;
- _this.numVertices = 0;
- _this.numTmpVertices = 0;
- var _this1 = this.clipper;
- var _this2 = _this1.vertices[_this1.numVertices++];
- _this2.x = incV1X * refXX + incV1Y * refXY + incV1Z * refXZ;
- _this2.y = incV1X * refYX + incV1Y * refYY + incV1Z * refYZ;
- _this2.wx = incV1X;
- _this2.wy = incV1Y;
- _this2.wz = incV1Z;
- var _this3 = this.clipper;
- var _this4 = _this3.vertices[_this3.numVertices++];
- _this4.x = incV2X * refXX + incV2Y * refXY + incV2Z * refXZ;
- _this4.y = incV2X * refYX + incV2Y * refYY + incV2Z * refYZ;
- _this4.wx = incV2X;
- _this4.wy = incV2Y;
- _this4.wz = incV2Z;
- var _this5 = this.clipper;
- var _this6 = _this5.vertices[_this5.numVertices++];
- _this6.x = incV3X * refXX + incV3Y * refXY + incV3Z * refXZ;
- _this6.y = incV3X * refYX + incV3Y * refYY + incV3Z * refYZ;
- _this6.wx = incV3X;
- _this6.wy = incV3Y;
- _this6.wz = incV3Z;
- var _this7 = this.clipper;
- var _this8 = _this7.vertices[_this7.numVertices++];
- _this8.x = incV4X * refXX + incV4Y * refXY + incV4Z * refXZ;
- _this8.y = incV4X * refYX + incV4Y * refYY + incV4Z * refYZ;
- _this8.wx = incV4X;
- _this8.wy = incV4Y;
- _this8.wz = incV4Z;
- this.clipper.clip();
- this.clipper.reduce();
- var normal1;
- var normalX1;
- var normalY1;
- var normalZ1;
- if(swapped) {
- normalX1 = refNormalX;
- normalY1 = refNormalY;
- normalZ1 = refNormalZ;
- } else {
- normalX1 = -refNormalX;
- normalY1 = -refNormalY;
- normalZ1 = -refNormalZ;
- }
- this.setNormal(result,normalX1,normalY1,normalZ1);
- var _g = 0;
- var _g1 = this.clipper.numVertices;
- while(_g < _g1) {
- var i = _g++;
- var v = this.clipper.vertices[i];
- var clippedVertex;
- var clippedVertexX;
- var clippedVertexY;
- var clippedVertexZ;
- clippedVertexX = v.wx;
- clippedVertexY = v.wy;
- clippedVertexZ = v.wz;
- clippedVertexX += c1X;
- clippedVertexY += c1Y;
- clippedVertexZ += c1Z;
- var clippedVertexToRefCenter;
- var clippedVertexToRefCenterX;
- var clippedVertexToRefCenterY;
- var clippedVertexToRefCenterZ;
- clippedVertexToRefCenterX = refCenterX - clippedVertexX;
- clippedVertexToRefCenterY = refCenterY - clippedVertexY;
- clippedVertexToRefCenterZ = refCenterZ - clippedVertexZ;
- var depth15 = clippedVertexToRefCenterX * refNormalX + clippedVertexToRefCenterY * refNormalY + clippedVertexToRefCenterZ * refNormalZ;
- var clippedVertexOnRefFace;
- var clippedVertexOnRefFaceX;
- var clippedVertexOnRefFaceY;
- var clippedVertexOnRefFaceZ;
- clippedVertexOnRefFaceX = clippedVertexX + refNormalX * depth15;
- clippedVertexOnRefFaceY = clippedVertexY + refNormalY * depth15;
- clippedVertexOnRefFaceZ = clippedVertexZ + refNormalZ * depth15;
- if(depth15 > -oimo.common.Setting.contactPersistenceThreshold) {
- if(swapped) {
- this.addPoint(result,clippedVertexX,clippedVertexY,clippedVertexZ,clippedVertexOnRefFaceX,clippedVertexOnRefFaceY,clippedVertexOnRefFaceZ,depth15,i);
- } else {
- this.addPoint(result,clippedVertexOnRefFaceX,clippedVertexOnRefFaceY,clippedVertexOnRefFaceZ,clippedVertexX,clippedVertexY,clippedVertexZ,depth15,i);
- }
- }
- }
- }
- }
- if(!oimo.collision.narrowphase.detector._BoxBoxDetector) oimo.collision.narrowphase.detector._BoxBoxDetector = {};
- oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex = class oimo_collision_narrowphase_detector__$BoxBoxDetector_IncidentVertex {
- constructor() {
- this.x = 0;
- this.y = 0;
- this.wx = 0;
- this.wy = 0;
- this.wz = 0;
- }
- }
- oimo.collision.narrowphase.detector._BoxBoxDetector.FaceClipper = class oimo_collision_narrowphase_detector__$BoxBoxDetector_FaceClipper {
- constructor() {
- this.w = 0;
- this.h = 0;
- this.numVertices = 0;
- this.numTmpVertices = 0;
- var this1 = new Array(8);
- this.vertices = this1;
- var this2 = new Array(8);
- this.tmpVertices = this2;
- this.vertices[0] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
- this.tmpVertices[0] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
- this.vertices[1] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
- this.tmpVertices[1] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
- this.vertices[2] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
- this.tmpVertices[2] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
- this.vertices[3] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
- this.tmpVertices[3] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
- this.vertices[4] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
- this.tmpVertices[4] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
- this.vertices[5] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
- this.tmpVertices[5] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
- this.vertices[6] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
- this.tmpVertices[6] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
- this.vertices[7] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
- this.tmpVertices[7] = new oimo.collision.narrowphase.detector._BoxBoxDetector.IncidentVertex();
- }
- clip() {
- var _g = 0;
- var _g1 = this.numVertices;
- while(_g < _g1) {
- var i = _g++;
- var v1 = this.vertices[i];
- var v2 = this.vertices[(i + 1) % this.numVertices];
- var s1 = this.w + v1.x;
- var s2 = this.w + v2.x;
- if(s1 > 0 && s2 > 0) {
- var _this = this.tmpVertices[this.numTmpVertices++];
- _this.x = v1.x;
- _this.y = v1.y;
- _this.wx = v1.wx;
- _this.wy = v1.wy;
- _this.wz = v1.wz;
- } else if(s1 > 0 && s2 <= 0) {
- var _this1 = this.tmpVertices[this.numTmpVertices++];
- _this1.x = v1.x;
- _this1.y = v1.y;
- _this1.wx = v1.wx;
- _this1.wy = v1.wy;
- _this1.wz = v1.wz;
- var t = s1 / (s1 - s2);
- var _this2 = this.tmpVertices[this.numTmpVertices++];
- _this2.x = v1.x + (v2.x - v1.x) * t;
- _this2.y = v1.y + (v2.y - v1.y) * t;
- _this2.wx = v1.wx + (v2.wx - v1.wx) * t;
- _this2.wy = v1.wy + (v2.wy - v1.wy) * t;
- _this2.wz = v1.wz + (v2.wz - v1.wz) * t;
- } else if(s1 <= 0 && s2 > 0) {
- var t1 = s1 / (s1 - s2);
- var _this3 = this.tmpVertices[this.numTmpVertices++];
- _this3.x = v1.x + (v2.x - v1.x) * t1;
- _this3.y = v1.y + (v2.y - v1.y) * t1;
- _this3.wx = v1.wx + (v2.wx - v1.wx) * t1;
- _this3.wy = v1.wy + (v2.wy - v1.wy) * t1;
- _this3.wz = v1.wz + (v2.wz - v1.wz) * t1;
- }
- }
- var tmp = this.vertices;
- this.vertices = this.tmpVertices;
- this.tmpVertices = tmp;
- this.numVertices = this.numTmpVertices;
- this.numTmpVertices = 0;
- var _g2 = 0;
- var _g11 = this.numVertices;
- while(_g2 < _g11) {
- var i1 = _g2++;
- var v11 = this.vertices[i1];
- var v21 = this.vertices[(i1 + 1) % this.numVertices];
- var s11 = this.w - v11.x;
- var s21 = this.w - v21.x;
- if(s11 > 0 && s21 > 0) {
- var _this4 = this.tmpVertices[this.numTmpVertices++];
- _this4.x = v11.x;
- _this4.y = v11.y;
- _this4.wx = v11.wx;
- _this4.wy = v11.wy;
- _this4.wz = v11.wz;
- } else if(s11 > 0 && s21 <= 0) {
- var _this5 = this.tmpVertices[this.numTmpVertices++];
- _this5.x = v11.x;
- _this5.y = v11.y;
- _this5.wx = v11.wx;
- _this5.wy = v11.wy;
- _this5.wz = v11.wz;
- var t2 = s11 / (s11 - s21);
- var _this6 = this.tmpVertices[this.numTmpVertices++];
- _this6.x = v11.x + (v21.x - v11.x) * t2;
- _this6.y = v11.y + (v21.y - v11.y) * t2;
- _this6.wx = v11.wx + (v21.wx - v11.wx) * t2;
- _this6.wy = v11.wy + (v21.wy - v11.wy) * t2;
- _this6.wz = v11.wz + (v21.wz - v11.wz) * t2;
- } else if(s11 <= 0 && s21 > 0) {
- var t3 = s11 / (s11 - s21);
- var _this7 = this.tmpVertices[this.numTmpVertices++];
- _this7.x = v11.x + (v21.x - v11.x) * t3;
- _this7.y = v11.y + (v21.y - v11.y) * t3;
- _this7.wx = v11.wx + (v21.wx - v11.wx) * t3;
- _this7.wy = v11.wy + (v21.wy - v11.wy) * t3;
- _this7.wz = v11.wz + (v21.wz - v11.wz) * t3;
- }
- }
- var tmp1 = this.vertices;
- this.vertices = this.tmpVertices;
- this.tmpVertices = tmp1;
- this.numVertices = this.numTmpVertices;
- this.numTmpVertices = 0;
- var _g3 = 0;
- var _g12 = this.numVertices;
- while(_g3 < _g12) {
- var i2 = _g3++;
- var v12 = this.vertices[i2];
- var v22 = this.vertices[(i2 + 1) % this.numVertices];
- var s12 = this.h + v12.y;
- var s22 = this.h + v22.y;
- if(s12 > 0 && s22 > 0) {
- var _this8 = this.tmpVertices[this.numTmpVertices++];
- _this8.x = v12.x;
- _this8.y = v12.y;
- _this8.wx = v12.wx;
- _this8.wy = v12.wy;
- _this8.wz = v12.wz;
- } else if(s12 > 0 && s22 <= 0) {
- var _this9 = this.tmpVertices[this.numTmpVertices++];
- _this9.x = v12.x;
- _this9.y = v12.y;
- _this9.wx = v12.wx;
- _this9.wy = v12.wy;
- _this9.wz = v12.wz;
- var t4 = s12 / (s12 - s22);
- var _this10 = this.tmpVertices[this.numTmpVertices++];
- _this10.x = v12.x + (v22.x - v12.x) * t4;
- _this10.y = v12.y + (v22.y - v12.y) * t4;
- _this10.wx = v12.wx + (v22.wx - v12.wx) * t4;
- _this10.wy = v12.wy + (v22.wy - v12.wy) * t4;
- _this10.wz = v12.wz + (v22.wz - v12.wz) * t4;
- } else if(s12 <= 0 && s22 > 0) {
- var t5 = s12 / (s12 - s22);
- var _this11 = this.tmpVertices[this.numTmpVertices++];
- _this11.x = v12.x + (v22.x - v12.x) * t5;
- _this11.y = v12.y + (v22.y - v12.y) * t5;
- _this11.wx = v12.wx + (v22.wx - v12.wx) * t5;
- _this11.wy = v12.wy + (v22.wy - v12.wy) * t5;
- _this11.wz = v12.wz + (v22.wz - v12.wz) * t5;
- }
- }
- var tmp2 = this.vertices;
- this.vertices = this.tmpVertices;
- this.tmpVertices = tmp2;
- this.numVertices = this.numTmpVertices;
- this.numTmpVertices = 0;
- var _g4 = 0;
- var _g13 = this.numVertices;
- while(_g4 < _g13) {
- var i3 = _g4++;
- var v13 = this.vertices[i3];
- var v23 = this.vertices[(i3 + 1) % this.numVertices];
- var s13 = this.h - v13.y;
- var s23 = this.h - v23.y;
- if(s13 > 0 && s23 > 0) {
- var _this12 = this.tmpVertices[this.numTmpVertices++];
- _this12.x = v13.x;
- _this12.y = v13.y;
- _this12.wx = v13.wx;
- _this12.wy = v13.wy;
- _this12.wz = v13.wz;
- } else if(s13 > 0 && s23 <= 0) {
- var _this13 = this.tmpVertices[this.numTmpVertices++];
- _this13.x = v13.x;
- _this13.y = v13.y;
- _this13.wx = v13.wx;
- _this13.wy = v13.wy;
- _this13.wz = v13.wz;
- var t6 = s13 / (s13 - s23);
- var _this14 = this.tmpVertices[this.numTmpVertices++];
- _this14.x = v13.x + (v23.x - v13.x) * t6;
- _this14.y = v13.y + (v23.y - v13.y) * t6;
- _this14.wx = v13.wx + (v23.wx - v13.wx) * t6;
- _this14.wy = v13.wy + (v23.wy - v13.wy) * t6;
- _this14.wz = v13.wz + (v23.wz - v13.wz) * t6;
- } else if(s13 <= 0 && s23 > 0) {
- var t7 = s13 / (s13 - s23);
- var _this15 = this.tmpVertices[this.numTmpVertices++];
- _this15.x = v13.x + (v23.x - v13.x) * t7;
- _this15.y = v13.y + (v23.y - v13.y) * t7;
- _this15.wx = v13.wx + (v23.wx - v13.wx) * t7;
- _this15.wy = v13.wy + (v23.wy - v13.wy) * t7;
- _this15.wz = v13.wz + (v23.wz - v13.wz) * t7;
- }
- }
- var tmp3 = this.vertices;
- this.vertices = this.tmpVertices;
- this.tmpVertices = tmp3;
- this.numVertices = this.numTmpVertices;
- this.numTmpVertices = 0;
- }
- reduce() {
- if(this.numVertices < 4) {
- return;
- }
- var max1 = -1e65536;
- var min1 = 1e65536;
- var max2 = -1e65536;
- var min2 = 1e65536;
- var max1V = null;
- var min1V = null;
- var max2V = null;
- var min2V = null;
- var e1x = 1;
- var e1y = 1;
- var e2x = -1;
- var e2y = 1;
- var _g = 0;
- var _g1 = this.numVertices;
- while(_g < _g1) {
- var i = _g++;
- var v = this.vertices[i];
- var dot1 = v.x * e1x + v.y * e1y;
- var dot2 = v.x * e2x + v.y * e2y;
- if(dot1 > max1) {
- max1 = dot1;
- max1V = v;
- }
- if(dot1 < min1) {
- min1 = dot1;
- min1V = v;
- }
- if(dot2 > max2) {
- max2 = dot2;
- max2V = v;
- }
- if(dot2 < min2) {
- min2 = dot2;
- min2V = v;
- }
- }
- var _this = this.tmpVertices[this.numTmpVertices++];
- _this.x = max1V.x;
- _this.y = max1V.y;
- _this.wx = max1V.wx;
- _this.wy = max1V.wy;
- _this.wz = max1V.wz;
- var _this1 = this.tmpVertices[this.numTmpVertices++];
- _this1.x = max2V.x;
- _this1.y = max2V.y;
- _this1.wx = max2V.wx;
- _this1.wy = max2V.wy;
- _this1.wz = max2V.wz;
- var _this2 = this.tmpVertices[this.numTmpVertices++];
- _this2.x = min1V.x;
- _this2.y = min1V.y;
- _this2.wx = min1V.wx;
- _this2.wy = min1V.wy;
- _this2.wz = min1V.wz;
- var _this3 = this.tmpVertices[this.numTmpVertices++];
- _this3.x = min2V.x;
- _this3.y = min2V.y;
- _this3.wx = min2V.wx;
- _this3.wy = min2V.wy;
- _this3.wz = min2V.wz;
- var tmp = this.vertices;
- this.vertices = this.tmpVertices;
- this.tmpVertices = tmp;
- this.numVertices = this.numTmpVertices;
- this.numTmpVertices = 0;
- }
- }
- oimo.collision.narrowphase.detector.BoxBoxDetectorMacro = class oimo_collision_narrowphase_detector_BoxBoxDetectorMacro {
- }
- oimo.collision.narrowphase.detector.CachedDetectorData = class oimo_collision_narrowphase_detector_CachedDetectorData {
- constructor() {
- }
- _clear() {
- if(this._gjkCache != null) {
- this._gjkCache.clear();
- }
- }
- }
- oimo.collision.narrowphase.detector.CapsuleCapsuleDetector = class oimo_collision_narrowphase_detector_CapsuleCapsuleDetector extends oimo.collision.narrowphase.detector.Detector {
- constructor() {
- super(false);
- }
- detectImpl(result,geom1,geom2,tf1,tf2,cachedData) {
- var c1 = geom1;
- var c2 = geom2;
- result.incremental = false;
- var axis1;
- var axis1X;
- var axis1Y;
- var axis1Z;
- var axis2;
- var axis2X;
- var axis2Y;
- var axis2Z;
- axis1X = tf1._rotation01;
- axis1Y = tf1._rotation11;
- axis1Z = tf1._rotation21;
- axis2X = tf2._rotation01;
- axis2Y = tf2._rotation11;
- axis2Z = tf2._rotation21;
- var hh1 = c1._halfHeight;
- var hh2 = c2._halfHeight;
- var r1 = c1._radius;
- var r2 = c2._radius;
- var p1;
- var p1X;
- var p1Y;
- var p1Z;
- var q1;
- var q1X;
- var q1Y;
- var q1Z;
- var p2;
- var p2X;
- var p2Y;
- var p2Z;
- var q2;
- var q2X;
- var q2Y;
- var q2Z;
- p1X = tf1._positionX + axis1X * -hh1;
- p1Y = tf1._positionY + axis1Y * -hh1;
- p1Z = tf1._positionZ + axis1Z * -hh1;
- q1X = tf1._positionX + axis1X * hh1;
- q1Y = tf1._positionY + axis1Y * hh1;
- q1Z = tf1._positionZ + axis1Z * hh1;
- p2X = tf2._positionX + axis2X * -hh2;
- p2Y = tf2._positionY + axis2Y * -hh2;
- p2Z = tf2._positionZ + axis2Z * -hh2;
- q2X = tf2._positionX + axis2X * hh2;
- q2Y = tf2._positionY + axis2Y * hh2;
- q2Z = tf2._positionZ + axis2Z * hh2;
- var p12;
- var p12X;
- var p12Y;
- var p12Z;
- p12X = p1X - p2X;
- p12Y = p1Y - p2Y;
- p12Z = p1Z - p2Z;
- var d1;
- var d1X;
- var d1Y;
- var d1Z;
- var d2;
- var d2X;
- var d2Y;
- var d2Z;
- d1X = q1X - p1X;
- d1Y = q1Y - p1Y;
- d1Z = q1Z - p1Z;
- d2X = q2X - p2X;
- d2Y = q2Y - p2Y;
- d2Z = q2Z - p2Z;
- var p21d1 = -(p12X * d1X + p12Y * d1Y + p12Z * d1Z);
- var p12d2 = p12X * d2X + p12Y * d2Y + p12Z * d2Z;
- var d11 = hh1 * hh1 * 4;
- var d12 = d1X * d2X + d1Y * d2Y + d1Z * d2Z;
- var d22 = hh2 * hh2 * 4;
- var t1;
- var t2;
- if(d11 == 0 && d22 == 0) {
- t1 = 0;
- t2 = 0;
- } else if(d11 == 0) {
- t1 = 0;
- t2 = p12d2;
- if(t2 < 0) {
- t2 = 0;
- } else if(t2 > d22) {
- t2 = 1;
- } else {
- t2 /= d22;
- }
- } else if(d22 == 0) {
- t2 = 0;
- t1 = p21d1;
- if(t1 < 0) {
- t1 = 0;
- } else if(t1 > d11) {
- t1 = 1;
- } else {
- t1 /= d11;
- }
- } else {
- var det = d11 * d22 - d12 * d12;
- if(det == 0) {
- t1 = 0;
- } else {
- t1 = d12 * p12d2 + d22 * p21d1;
- if(t1 < 0) {
- t1 = 0;
- } else if(t1 > det) {
- t1 = 1;
- } else {
- t1 /= det;
- }
- }
- t2 = t1 * d12 + p12d2;
- if(t2 < 0) {
- t2 = 0;
- t1 = p21d1;
- if(t1 < 0) {
- t1 = 0;
- } else if(t1 > d11) {
- t1 = 1;
- } else {
- t1 /= d11;
- }
- } else if(t2 > d22) {
- t2 = 1;
- t1 = d12 + p21d1;
- if(t1 < 0) {
- t1 = 0;
- } else if(t1 > d11) {
- t1 = 1;
- } else {
- t1 /= d11;
- }
- } else {
- t2 /= d22;
- }
- }
- var cp1;
- var cp1X;
- var cp1Y;
- var cp1Z;
- var cp2;
- var cp2X;
- var cp2Y;
- var cp2Z;
- cp1X = p1X + d1X * t1;
- cp1Y = p1Y + d1Y * t1;
- cp1Z = p1Z + d1Z * t1;
- cp2X = p2X + d2X * t2;
- cp2Y = p2Y + d2Y * t2;
- cp2Z = p2Z + d2Z * t2;
- var d;
- var dX;
- var dY;
- var dZ;
- dX = cp1X - cp2X;
- dY = cp1Y - cp2Y;
- dZ = cp1Z - cp2Z;
- var len2 = dX * dX + dY * dY + dZ * dZ;
- if(len2 >= (r1 + r2) * (r1 + r2)) {
- return;
- }
- var len = Math.sqrt(len2);
- var n;
- var nX;
- var nY;
- var nZ;
- if(len > 0) {
- nX = dX * (1 / len);
- nY = dY * (1 / len);
- nZ = dZ * (1 / len);
- } else {
- nX = 1;
- nY = 0;
- nZ = 0;
- }
- this.setNormal(result,nX,nY,nZ);
- var pos1;
- var pos1X;
- var pos1Y;
- var pos1Z;
- var pos2;
- var pos2X;
- var pos2Y;
- var pos2Z;
- pos1X = cp1X + nX * -r1;
- pos1Y = cp1Y + nY * -r1;
- pos1Z = cp1Z + nZ * -r1;
- pos2X = cp2X + nX * r2;
- pos2Y = cp2Y + nY * r2;
- pos2Z = cp2Z + nZ * r2;
- this.addPoint(result,pos1X,pos1Y,pos1Z,pos2X,pos2Y,pos2Z,r1 + r2 - len,0);
- }
- }
- oimo.collision.narrowphase.detector.GjkEpaDetector = class oimo_collision_narrowphase_detector_GjkEpaDetector extends oimo.collision.narrowphase.detector.Detector {
- constructor() {
- super(false);
- }
- detectImpl(result,geom1,geom2,tf1,tf2,cachedData) {
- var gjkEpa = oimo.collision.narrowphase.detector.gjkepa.GjkEpa.instance;
- var g1 = geom1;
- var g2 = geom2;
- var status = gjkEpa.computeClosestPointsImpl(g1,g2,tf1,tf2,oimo.common.Setting.enableGJKCaching ? cachedData : null,true);
- result.incremental = true;
- if(status != oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.SUCCEEDED) {
- console.log("src/oimo/collision/narrowphase/detector/GjkEpaDetector.hx:28:","GJK/EPA failed: status=" + status);
- return;
- }
- var margin1 = g1._gjkMargin;
- var margin2 = g2._gjkMargin;
- if(gjkEpa.distance > margin1 + margin2) {
- return;
- }
- var pos1;
- var pos1X;
- var pos1Y;
- var pos1Z;
- var pos2;
- var pos2X;
- var pos2Y;
- var pos2Z;
- var v = gjkEpa.closestPoint1;
- pos1X = v.x;
- pos1Y = v.y;
- pos1Z = v.z;
- var v1 = gjkEpa.closestPoint2;
- pos2X = v1.x;
- pos2Y = v1.y;
- pos2Z = v1.z;
- var normal;
- var normalX;
- var normalY;
- var normalZ;
- normalX = pos1X - pos2X;
- normalY = pos1Y - pos2Y;
- normalZ = pos1Z - pos2Z;
- if(normalX * normalX + normalY * normalY + normalZ * normalZ == 0) {
- return;
- }
- if(gjkEpa.distance < 0) {
- normalX = -normalX;
- normalY = -normalY;
- normalZ = -normalZ;
- }
- var l = normalX * normalX + normalY * normalY + normalZ * normalZ;
- if(l > 0) {
- l = 1 / Math.sqrt(l);
- }
- normalX *= l;
- normalY *= l;
- normalZ *= l;
- this.setNormal(result,normalX,normalY,normalZ);
- pos1X += normalX * -g1._gjkMargin;
- pos1Y += normalY * -g1._gjkMargin;
- pos1Z += normalZ * -g1._gjkMargin;
- pos2X += normalX * g2._gjkMargin;
- pos2Y += normalY * g2._gjkMargin;
- pos2Z += normalZ * g2._gjkMargin;
- this.addPoint(result,pos1X,pos1Y,pos1Z,pos2X,pos2Y,pos2Z,g1._gjkMargin + g2._gjkMargin - gjkEpa.distance,0);
- }
- }
- oimo.collision.narrowphase.detector.SphereBoxDetector = class oimo_collision_narrowphase_detector_SphereBoxDetector extends oimo.collision.narrowphase.detector.Detector {
- constructor(swapped) {
- super(swapped);
- }
- detectImpl(result,geom1,geom2,tf1,tf2,cachedData) {
- var s = geom1;
- var b = geom2;
- result.incremental = false;
- var halfExt;
- var halfExtX;
- var halfExtY;
- var halfExtZ;
- var negHalfExt;
- var negHalfExtX;
- var negHalfExtY;
- var negHalfExtZ;
- halfExtX = b._halfExtentsX;
- halfExtY = b._halfExtentsY;
- halfExtZ = b._halfExtentsZ;
- negHalfExtX = -halfExtX;
- negHalfExtY = -halfExtY;
- negHalfExtZ = -halfExtZ;
- var r = s._radius;
- var boxToSphere;
- var boxToSphereX;
- var boxToSphereY;
- var boxToSphereZ;
- boxToSphereX = tf1._positionX - tf2._positionX;
- boxToSphereY = tf1._positionY - tf2._positionY;
- boxToSphereZ = tf1._positionZ - tf2._positionZ;
- var boxToSphereInBox;
- var boxToSphereInBoxX;
- var boxToSphereInBoxY;
- var boxToSphereInBoxZ;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = tf2._rotation00 * boxToSphereX + tf2._rotation10 * boxToSphereY + tf2._rotation20 * boxToSphereZ;
- __tmp__Y = tf2._rotation01 * boxToSphereX + tf2._rotation11 * boxToSphereY + tf2._rotation21 * boxToSphereZ;
- __tmp__Z = tf2._rotation02 * boxToSphereX + tf2._rotation12 * boxToSphereY + tf2._rotation22 * boxToSphereZ;
- boxToSphereInBoxX = __tmp__X;
- boxToSphereInBoxY = __tmp__Y;
- boxToSphereInBoxZ = __tmp__Z;
- var insideBox = negHalfExtX < boxToSphereInBoxX && halfExtX > boxToSphereInBoxX && negHalfExtY < boxToSphereInBoxY && halfExtY > boxToSphereInBoxY && negHalfExtZ < boxToSphereInBoxZ && halfExtZ > boxToSphereInBoxZ;
- if(insideBox) {
- var sphereToBoxSurface;
- var sphereToBoxSurfaceX;
- var sphereToBoxSurfaceY;
- var sphereToBoxSurfaceZ;
- sphereToBoxSurfaceX = boxToSphereInBoxX < 0 ? -boxToSphereInBoxX : boxToSphereInBoxX;
- sphereToBoxSurfaceY = boxToSphereInBoxY < 0 ? -boxToSphereInBoxY : boxToSphereInBoxY;
- sphereToBoxSurfaceZ = boxToSphereInBoxZ < 0 ? -boxToSphereInBoxZ : boxToSphereInBoxZ;
- sphereToBoxSurfaceX = halfExtX - sphereToBoxSurfaceX;
- sphereToBoxSurfaceY = halfExtY - sphereToBoxSurfaceY;
- sphereToBoxSurfaceZ = halfExtZ - sphereToBoxSurfaceZ;
- var normalInBox;
- var normalInBoxX;
- var normalInBoxY;
- var normalInBoxZ;
- var distX = sphereToBoxSurfaceX;
- var distY = sphereToBoxSurfaceY;
- var distZ = sphereToBoxSurfaceZ;
- var depth;
- var projectionMask;
- var projectionMaskX;
- var projectionMaskY;
- var projectionMaskZ;
- if(distX < distY) {
- if(distX < distZ) {
- if(boxToSphereInBoxX > 0) {
- normalInBoxX = 1;
- normalInBoxY = 0;
- normalInBoxZ = 0;
- } else {
- normalInBoxX = -1;
- normalInBoxY = 0;
- normalInBoxZ = 0;
- }
- projectionMaskX = 0;
- projectionMaskY = 1;
- projectionMaskZ = 1;
- depth = distX;
- } else {
- if(boxToSphereInBoxZ > 0) {
- normalInBoxX = 0;
- normalInBoxY = 0;
- normalInBoxZ = 1;
- } else {
- normalInBoxX = 0;
- normalInBoxY = 0;
- normalInBoxZ = -1;
- }
- projectionMaskX = 1;
- projectionMaskY = 1;
- projectionMaskZ = 0;
- depth = distZ;
- }
- } else if(distY < distZ) {
- if(boxToSphereInBoxY > 0) {
- normalInBoxX = 0;
- normalInBoxY = 1;
- normalInBoxZ = 0;
- } else {
- normalInBoxX = 0;
- normalInBoxY = -1;
- normalInBoxZ = 0;
- }
- projectionMaskX = 1;
- projectionMaskY = 0;
- projectionMaskZ = 1;
- depth = distY;
- } else {
- if(boxToSphereInBoxZ > 0) {
- normalInBoxX = 0;
- normalInBoxY = 0;
- normalInBoxZ = 1;
- } else {
- normalInBoxX = 0;
- normalInBoxY = 0;
- normalInBoxZ = -1;
- }
- projectionMaskX = 1;
- projectionMaskY = 1;
- projectionMaskZ = 0;
- depth = distZ;
- }
- var base;
- var baseX;
- var baseY;
- var baseZ;
- baseX = projectionMaskX * boxToSphereInBoxX;
- baseY = projectionMaskY * boxToSphereInBoxY;
- baseZ = projectionMaskZ * boxToSphereInBoxZ;
- var boxToClosestPointInBox;
- var boxToClosestPointInBoxX;
- var boxToClosestPointInBoxY;
- var boxToClosestPointInBoxZ;
- boxToClosestPointInBoxX = normalInBoxX * halfExtX;
- boxToClosestPointInBoxY = normalInBoxY * halfExtY;
- boxToClosestPointInBoxZ = normalInBoxZ * halfExtZ;
- boxToClosestPointInBoxX += baseX;
- boxToClosestPointInBoxY += baseY;
- boxToClosestPointInBoxZ += baseZ;
- var boxToClosestPoint;
- var boxToClosestPointX;
- var boxToClosestPointY;
- var boxToClosestPointZ;
- var normal;
- var normalX;
- var normalY;
- var normalZ;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = tf2._rotation00 * boxToClosestPointInBoxX + tf2._rotation01 * boxToClosestPointInBoxY + tf2._rotation02 * boxToClosestPointInBoxZ;
- __tmp__Y1 = tf2._rotation10 * boxToClosestPointInBoxX + tf2._rotation11 * boxToClosestPointInBoxY + tf2._rotation12 * boxToClosestPointInBoxZ;
- __tmp__Z1 = tf2._rotation20 * boxToClosestPointInBoxX + tf2._rotation21 * boxToClosestPointInBoxY + tf2._rotation22 * boxToClosestPointInBoxZ;
- boxToClosestPointX = __tmp__X1;
- boxToClosestPointY = __tmp__Y1;
- boxToClosestPointZ = __tmp__Z1;
- var __tmp__X2;
- var __tmp__Y2;
- var __tmp__Z2;
- __tmp__X2 = tf2._rotation00 * normalInBoxX + tf2._rotation01 * normalInBoxY + tf2._rotation02 * normalInBoxZ;
- __tmp__Y2 = tf2._rotation10 * normalInBoxX + tf2._rotation11 * normalInBoxY + tf2._rotation12 * normalInBoxZ;
- __tmp__Z2 = tf2._rotation20 * normalInBoxX + tf2._rotation21 * normalInBoxY + tf2._rotation22 * normalInBoxZ;
- normalX = __tmp__X2;
- normalY = __tmp__Y2;
- normalZ = __tmp__Z2;
- this.setNormal(result,normalX,normalY,normalZ);
- var pos1;
- var pos1X;
- var pos1Y;
- var pos1Z;
- var pos2;
- var pos2X;
- var pos2Y;
- var pos2Z;
- pos1X = tf1._positionX + normalX * -r;
- pos1Y = tf1._positionY + normalY * -r;
- pos1Z = tf1._positionZ + normalZ * -r;
- pos2X = tf2._positionX + boxToClosestPointX;
- pos2Y = tf2._positionY + boxToClosestPointY;
- pos2Z = tf2._positionZ + boxToClosestPointZ;
- this.addPoint(result,pos1X,pos1Y,pos1Z,pos2X,pos2Y,pos2Z,depth,0);
- return;
- }
- var boxToClosestPointInBox1;
- var boxToClosestPointInBoxX1;
- var boxToClosestPointInBoxY1;
- var boxToClosestPointInBoxZ1;
- var eps = 1e-9;
- var epsVec;
- var epsVecX;
- var epsVecY;
- var epsVecZ;
- epsVecX = eps;
- epsVecY = eps;
- epsVecZ = eps;
- halfExtX -= epsVecX;
- halfExtY -= epsVecY;
- halfExtZ -= epsVecZ;
- negHalfExtX += epsVecX;
- negHalfExtY += epsVecY;
- negHalfExtZ += epsVecZ;
- boxToClosestPointInBoxX1 = boxToSphereInBoxX < halfExtX ? boxToSphereInBoxX : halfExtX;
- boxToClosestPointInBoxY1 = boxToSphereInBoxY < halfExtY ? boxToSphereInBoxY : halfExtY;
- boxToClosestPointInBoxZ1 = boxToSphereInBoxZ < halfExtZ ? boxToSphereInBoxZ : halfExtZ;
- boxToClosestPointInBoxX1 = boxToClosestPointInBoxX1 > negHalfExtX ? boxToClosestPointInBoxX1 : negHalfExtX;
- boxToClosestPointInBoxY1 = boxToClosestPointInBoxY1 > negHalfExtY ? boxToClosestPointInBoxY1 : negHalfExtY;
- boxToClosestPointInBoxZ1 = boxToClosestPointInBoxZ1 > negHalfExtZ ? boxToClosestPointInBoxZ1 : negHalfExtZ;
- var closestPointToSphereInBox;
- var closestPointToSphereInBoxX;
- var closestPointToSphereInBoxY;
- var closestPointToSphereInBoxZ;
- closestPointToSphereInBoxX = boxToSphereInBoxX - boxToClosestPointInBoxX1;
- closestPointToSphereInBoxY = boxToSphereInBoxY - boxToClosestPointInBoxY1;
- closestPointToSphereInBoxZ = boxToSphereInBoxZ - boxToClosestPointInBoxZ1;
- var dist = closestPointToSphereInBoxX * closestPointToSphereInBoxX + closestPointToSphereInBoxY * closestPointToSphereInBoxY + closestPointToSphereInBoxZ * closestPointToSphereInBoxZ;
- if(dist >= r * r) {
- return;
- }
- dist = Math.sqrt(dist);
- var boxToClosestPoint1;
- var boxToClosestPointX1;
- var boxToClosestPointY1;
- var boxToClosestPointZ1;
- var closestPointToSphere;
- var closestPointToSphereX;
- var closestPointToSphereY;
- var closestPointToSphereZ;
- var __tmp__X3;
- var __tmp__Y3;
- var __tmp__Z3;
- __tmp__X3 = tf2._rotation00 * boxToClosestPointInBoxX1 + tf2._rotation01 * boxToClosestPointInBoxY1 + tf2._rotation02 * boxToClosestPointInBoxZ1;
- __tmp__Y3 = tf2._rotation10 * boxToClosestPointInBoxX1 + tf2._rotation11 * boxToClosestPointInBoxY1 + tf2._rotation12 * boxToClosestPointInBoxZ1;
- __tmp__Z3 = tf2._rotation20 * boxToClosestPointInBoxX1 + tf2._rotation21 * boxToClosestPointInBoxY1 + tf2._rotation22 * boxToClosestPointInBoxZ1;
- boxToClosestPointX1 = __tmp__X3;
- boxToClosestPointY1 = __tmp__Y3;
- boxToClosestPointZ1 = __tmp__Z3;
- var __tmp__X4;
- var __tmp__Y4;
- var __tmp__Z4;
- __tmp__X4 = tf2._rotation00 * closestPointToSphereInBoxX + tf2._rotation01 * closestPointToSphereInBoxY + tf2._rotation02 * closestPointToSphereInBoxZ;
- __tmp__Y4 = tf2._rotation10 * closestPointToSphereInBoxX + tf2._rotation11 * closestPointToSphereInBoxY + tf2._rotation12 * closestPointToSphereInBoxZ;
- __tmp__Z4 = tf2._rotation20 * closestPointToSphereInBoxX + tf2._rotation21 * closestPointToSphereInBoxY + tf2._rotation22 * closestPointToSphereInBoxZ;
- closestPointToSphereX = __tmp__X4;
- closestPointToSphereY = __tmp__Y4;
- closestPointToSphereZ = __tmp__Z4;
- var normal1;
- var normalX1;
- var normalY1;
- var normalZ1;
- var l = closestPointToSphereX * closestPointToSphereX + closestPointToSphereY * closestPointToSphereY + closestPointToSphereZ * closestPointToSphereZ;
- if(l > 0) {
- l = 1 / Math.sqrt(l);
- }
- normalX1 = closestPointToSphereX * l;
- normalY1 = closestPointToSphereY * l;
- normalZ1 = closestPointToSphereZ * l;
- this.setNormal(result,normalX1,normalY1,normalZ1);
- var pos11;
- var pos1X1;
- var pos1Y1;
- var pos1Z1;
- var pos21;
- var pos2X1;
- var pos2Y1;
- var pos2Z1;
- pos1X1 = tf1._positionX + normalX1 * -r;
- pos1Y1 = tf1._positionY + normalY1 * -r;
- pos1Z1 = tf1._positionZ + normalZ1 * -r;
- pos2X1 = tf2._positionX + boxToClosestPointX1;
- pos2Y1 = tf2._positionY + boxToClosestPointY1;
- pos2Z1 = tf2._positionZ + boxToClosestPointZ1;
- this.addPoint(result,pos1X1,pos1Y1,pos1Z1,pos2X1,pos2Y1,pos2Z1,r - dist,0);
- }
- }
- oimo.collision.narrowphase.detector.SphereCapsuleDetector = class oimo_collision_narrowphase_detector_SphereCapsuleDetector extends oimo.collision.narrowphase.detector.Detector {
- constructor(swapped) {
- super(swapped);
- }
- detectImpl(result,geom1,geom2,tf1,tf2,cachedData) {
- var s1 = geom1;
- var c2 = geom2;
- result.incremental = false;
- var hh2 = c2._halfHeight;
- var r1 = s1._radius;
- var r2 = c2._radius;
- var axis2;
- var axis2X;
- var axis2Y;
- var axis2Z;
- axis2X = tf2._rotation01;
- axis2Y = tf2._rotation11;
- axis2Z = tf2._rotation21;
- var cp1;
- var cp1X;
- var cp1Y;
- var cp1Z;
- cp1X = tf1._positionX;
- cp1Y = tf1._positionY;
- cp1Z = tf1._positionZ;
- var p2;
- var p2X;
- var p2Y;
- var p2Z;
- var q2;
- var q2X;
- var q2Y;
- var q2Z;
- p2X = tf2._positionX + axis2X * -hh2;
- p2Y = tf2._positionY + axis2Y * -hh2;
- p2Z = tf2._positionZ + axis2Z * -hh2;
- q2X = tf2._positionX + axis2X * hh2;
- q2Y = tf2._positionY + axis2Y * hh2;
- q2Z = tf2._positionZ + axis2Z * hh2;
- var p12;
- var p12X;
- var p12Y;
- var p12Z;
- p12X = cp1X - p2X;
- p12Y = cp1Y - p2Y;
- p12Z = cp1Z - p2Z;
- var d2;
- var d2X;
- var d2Y;
- var d2Z;
- d2X = q2X - p2X;
- d2Y = q2Y - p2Y;
- d2Z = q2Z - p2Z;
- var d22 = hh2 * hh2 * 4;
- var t = p12X * d2X + p12Y * d2Y + p12Z * d2Z;
- if(t < 0) {
- t = 0;
- } else if(t > d22) {
- t = 1;
- } else {
- t /= d22;
- }
- var cp2;
- var cp2X;
- var cp2Y;
- var cp2Z;
- cp2X = p2X + d2X * t;
- cp2Y = p2Y + d2Y * t;
- cp2Z = p2Z + d2Z * t;
- var d;
- var dX;
- var dY;
- var dZ;
- dX = cp1X - cp2X;
- dY = cp1Y - cp2Y;
- dZ = cp1Z - cp2Z;
- var len2 = dX * dX + dY * dY + dZ * dZ;
- if(len2 >= (r1 + r2) * (r1 + r2)) {
- return;
- }
- var len = Math.sqrt(len2);
- var n;
- var nX;
- var nY;
- var nZ;
- if(len > 0) {
- nX = dX * (1 / len);
- nY = dY * (1 / len);
- nZ = dZ * (1 / len);
- } else {
- nX = 1;
- nY = 0;
- nZ = 0;
- }
- this.setNormal(result,nX,nY,nZ);
- var pos1;
- var pos1X;
- var pos1Y;
- var pos1Z;
- var pos2;
- var pos2X;
- var pos2Y;
- var pos2Z;
- pos1X = cp1X + nX * -r1;
- pos1Y = cp1Y + nY * -r1;
- pos1Z = cp1Z + nZ * -r1;
- pos2X = cp2X + nX * r2;
- pos2Y = cp2Y + nY * r2;
- pos2Z = cp2Z + nZ * r2;
- this.addPoint(result,pos1X,pos1Y,pos1Z,pos2X,pos2Y,pos2Z,r1 + r2 - len,0);
- }
- }
- oimo.collision.narrowphase.detector.SphereSphereDetector = class oimo_collision_narrowphase_detector_SphereSphereDetector extends oimo.collision.narrowphase.detector.Detector {
- constructor() {
- super(false);
- }
- detectImpl(result,geom1,geom2,tf1,tf2,cachedData) {
- var s1 = geom1;
- var s2 = geom2;
- result.incremental = false;
- var d;
- var dX;
- var dY;
- var dZ;
- dX = tf1._positionX - tf2._positionX;
- dY = tf1._positionY - tf2._positionY;
- dZ = tf1._positionZ - tf2._positionZ;
- var r1 = s1._radius;
- var r2 = s2._radius;
- var len2 = dX * dX + dY * dY + dZ * dZ;
- if(len2 >= (r1 + r2) * (r1 + r2)) {
- return;
- }
- var len = Math.sqrt(len2);
- var n;
- var nX;
- var nY;
- var nZ;
- if(len > 0) {
- nX = dX * (1 / len);
- nY = dY * (1 / len);
- nZ = dZ * (1 / len);
- } else {
- nX = 1;
- nY = 0;
- nZ = 0;
- }
- this.setNormal(result,nX,nY,nZ);
- var pos1;
- var pos1X;
- var pos1Y;
- var pos1Z;
- var pos2;
- var pos2X;
- var pos2Y;
- var pos2Z;
- pos1X = tf1._positionX + nX * -r1;
- pos1Y = tf1._positionY + nY * -r1;
- pos1Z = tf1._positionZ + nZ * -r1;
- pos2X = tf2._positionX + nX * r2;
- pos2Y = tf2._positionY + nY * r2;
- pos2Z = tf2._positionZ + nZ * r2;
- this.addPoint(result,pos1X,pos1Y,pos1Z,pos2X,pos2Y,pos2Z,r1 + r2 - len,0);
- }
- }
- if(!oimo.collision.narrowphase.detector.gjkepa) oimo.collision.narrowphase.detector.gjkepa = {};
- oimo.collision.narrowphase.detector.gjkepa.EpaPolyhedron = class oimo_collision_narrowphase_detector_gjkepa_EpaPolyhedron {
- constructor() {
- var this1 = new Array(oimo.common.Setting.maxEPAVertices);
- this._vertices = this1;
- this._center = new oimo.common.Vec3();
- this._numVertices = 0;
- this._triangleList = null;
- this._triangleListLast = null;
- this._numTriangles = 0;
- this._trianglePool = null;
- this._vertexPool = null;
- }
- dumpHoleEdge(first) {
- }
- validate() {
- var t = this._triangleList;
- while(t != null) {
- var n = t._next;
- t._vertices[0]._tmpEdgeLoopOuterTriangle = null;
- t._vertices[0]._tmpEdgeLoopNext = null;
- if(t._adjacentPairIndex[0] == -1) {
- this._status = 2;
- return false;
- }
- if(t._adjacentTriangles[0] == null) {
- this._status = 3;
- return false;
- }
- t._vertices[1]._tmpEdgeLoopOuterTriangle = null;
- t._vertices[1]._tmpEdgeLoopNext = null;
- if(t._adjacentPairIndex[1] == -1) {
- this._status = 2;
- return false;
- }
- if(t._adjacentTriangles[1] == null) {
- this._status = 3;
- return false;
- }
- t._vertices[2]._tmpEdgeLoopOuterTriangle = null;
- t._vertices[2]._tmpEdgeLoopNext = null;
- if(t._adjacentPairIndex[2] == -1) {
- this._status = 2;
- return false;
- }
- if(t._adjacentTriangles[2] == null) {
- this._status = 3;
- return false;
- }
- t = n;
- }
- return true;
- }
- findEdgeLoop(id,base,from) {
- if(base._tmpDfsId == id) {
- return;
- }
- base._tmpDfsId = id;
- var _this = base.tmp;
- _this.x = from.x;
- _this.y = from.y;
- _this.z = from.z;
- var _this1 = _this;
- var v = base._vertices[0].v;
- var tx = _this1.x - v.x;
- var ty = _this1.y - v.y;
- var tz = _this1.z - v.z;
- _this1.x = tx;
- _this1.y = ty;
- _this1.z = tz;
- var _this2 = base.tmp;
- var v1 = base._normal;
- base._tmpDfsVisible = _this2.x * v1.x + _this2.y * v1.y + _this2.z * v1.z > 0;
- if(!base._tmpDfsVisible) {
- this._status = 6;
- return;
- }
- var _g = 0;
- while(_g < 3) {
- var i = _g++;
- var t = base._adjacentTriangles[i];
- if(t == null) {
- continue;
- }
- var _this3 = t.tmp;
- _this3.x = from.x;
- _this3.y = from.y;
- _this3.z = from.z;
- var _this4 = _this3;
- var v2 = t._vertices[0].v;
- var tx1 = _this4.x - v2.x;
- var ty1 = _this4.y - v2.y;
- var tz1 = _this4.z - v2.z;
- _this4.x = tx1;
- _this4.y = ty1;
- _this4.z = tz1;
- var _this5 = t.tmp;
- var v3 = t._normal;
- t._tmpDfsVisible = _this5.x * v3.x + _this5.y * v3.y + _this5.z * v3.z > 0;
- if(t._tmpDfsVisible) {
- this.findEdgeLoop(id,t,from);
- } else {
- var i2 = base._nextIndex[i];
- var v11 = base._vertices[i];
- var v21 = base._vertices[i2];
- v11._tmpEdgeLoopNext = v21;
- v11._tmpEdgeLoopOuterTriangle = t;
- }
- }
- var triangle = base._adjacentTriangles[0];
- if(triangle != null) {
- var pairIndex = base._adjacentPairIndex[0];
- triangle._adjacentTriangles[pairIndex] = null;
- triangle._adjacentPairIndex[pairIndex] = -1;
- base._adjacentTriangles[0] = null;
- base._adjacentPairIndex[0] = -1;
- }
- var triangle1 = base._adjacentTriangles[1];
- if(triangle1 != null) {
- var pairIndex1 = base._adjacentPairIndex[1];
- triangle1._adjacentTriangles[pairIndex1] = null;
- triangle1._adjacentPairIndex[pairIndex1] = -1;
- base._adjacentTriangles[1] = null;
- base._adjacentPairIndex[1] = -1;
- }
- var triangle2 = base._adjacentTriangles[2];
- if(triangle2 != null) {
- var pairIndex2 = base._adjacentPairIndex[2];
- triangle2._adjacentTriangles[pairIndex2] = null;
- triangle2._adjacentPairIndex[pairIndex2] = -1;
- base._adjacentTriangles[2] = null;
- base._adjacentPairIndex[2] = -1;
- }
- this._numTriangles--;
- var prev = base._prev;
- var next = base._next;
- if(prev != null) {
- prev._next = next;
- }
- if(next != null) {
- next._prev = prev;
- }
- if(base == this._triangleList) {
- this._triangleList = this._triangleList._next;
- }
- if(base == this._triangleListLast) {
- this._triangleListLast = this._triangleListLast._prev;
- }
- base._next = null;
- base._prev = null;
- base.removeReferences();
- base._next = this._trianglePool;
- this._trianglePool = base;
- }
- _init(v1,v2,v3,v4) {
- this._status = 0;
- this._numVertices = 4;
- this._vertices[0] = v1;
- this._vertices[1] = v2;
- this._vertices[2] = v3;
- this._vertices[3] = v4;
- var _this = this._center;
- var v = v1.v;
- _this.x = v.x;
- _this.y = v.y;
- _this.z = v.z;
- var _this1 = _this;
- var v5 = v2.v;
- var tx = _this1.x + v5.x;
- var ty = _this1.y + v5.y;
- var tz = _this1.z + v5.z;
- _this1.x = tx;
- _this1.y = ty;
- _this1.z = tz;
- var _this2 = _this1;
- var v6 = v3.v;
- var tx1 = _this2.x + v6.x;
- var ty1 = _this2.y + v6.y;
- var tz1 = _this2.z + v6.z;
- _this2.x = tx1;
- _this2.y = ty1;
- _this2.z = tz1;
- var _this3 = _this2;
- var v7 = v4.v;
- var tx2 = _this3.x + v7.x;
- var ty2 = _this3.y + v7.y;
- var tz2 = _this3.z + v7.z;
- _this3.x = tx2;
- _this3.y = ty2;
- _this3.z = tz2;
- var _this4 = _this3;
- var tx3 = _this4.x * 0.25;
- var ty3 = _this4.y * 0.25;
- var tz3 = _this4.z * 0.25;
- _this4.x = tx3;
- _this4.y = ty3;
- _this4.z = tz3;
- var first = this._trianglePool;
- if(first != null) {
- this._trianglePool = first._next;
- first._next = null;
- } else {
- first = new oimo.collision.narrowphase.detector.gjkepa.EpaTriangle();
- }
- var t1 = first;
- var first1 = this._trianglePool;
- if(first1 != null) {
- this._trianglePool = first1._next;
- first1._next = null;
- } else {
- first1 = new oimo.collision.narrowphase.detector.gjkepa.EpaTriangle();
- }
- var t2 = first1;
- var first2 = this._trianglePool;
- if(first2 != null) {
- this._trianglePool = first2._next;
- first2._next = null;
- } else {
- first2 = new oimo.collision.narrowphase.detector.gjkepa.EpaTriangle();
- }
- var t3 = first2;
- var first3 = this._trianglePool;
- if(first3 != null) {
- this._trianglePool = first3._next;
- first3._next = null;
- } else {
- first3 = new oimo.collision.narrowphase.detector.gjkepa.EpaTriangle();
- }
- var t4 = first3;
- var autoCheck = true;
- if(autoCheck == null) {
- autoCheck = false;
- }
- if(!t1.init(v1,v2,v3,this._center,autoCheck)) {
- this._status = 1;
- }
- var autoCheck1 = true;
- if(autoCheck1 == null) {
- autoCheck1 = false;
- }
- if(!t2.init(v1,v2,v4,this._center,autoCheck1)) {
- this._status = 1;
- }
- var autoCheck2 = true;
- if(autoCheck2 == null) {
- autoCheck2 = false;
- }
- if(!t3.init(v1,v3,v4,this._center,autoCheck2)) {
- this._status = 1;
- }
- var autoCheck3 = true;
- if(autoCheck3 == null) {
- autoCheck3 = false;
- }
- if(!t4.init(v2,v3,v4,this._center,autoCheck3)) {
- this._status = 1;
- }
- if(!t1.setAdjacentTriangle(t2)) {
- this._status = 1;
- }
- if(!t1.setAdjacentTriangle(t3)) {
- this._status = 1;
- }
- if(!t1.setAdjacentTriangle(t4)) {
- this._status = 1;
- }
- if(!t2.setAdjacentTriangle(t3)) {
- this._status = 1;
- }
- if(!t2.setAdjacentTriangle(t4)) {
- this._status = 1;
- }
- if(!t3.setAdjacentTriangle(t4)) {
- this._status = 1;
- }
- this._numTriangles++;
- if(this._triangleList == null) {
- this._triangleList = t1;
- this._triangleListLast = t1;
- } else {
- this._triangleListLast._next = t1;
- t1._prev = this._triangleListLast;
- this._triangleListLast = t1;
- }
- this._numTriangles++;
- if(this._triangleList == null) {
- this._triangleList = t2;
- this._triangleListLast = t2;
- } else {
- this._triangleListLast._next = t2;
- t2._prev = this._triangleListLast;
- this._triangleListLast = t2;
- }
- this._numTriangles++;
- if(this._triangleList == null) {
- this._triangleList = t3;
- this._triangleListLast = t3;
- } else {
- this._triangleListLast._next = t3;
- t3._prev = this._triangleListLast;
- this._triangleListLast = t3;
- }
- this._numTriangles++;
- if(this._triangleList == null) {
- this._triangleList = t4;
- this._triangleListLast = t4;
- } else {
- this._triangleListLast._next = t4;
- t4._prev = this._triangleListLast;
- this._triangleListLast = t4;
- }
- return this._status == 0;
- }
- _addVertex(vertex,base) {
- this._vertices[this._numVertices++] = vertex;
- var v1 = base._vertices[0];
- this.findEdgeLoop(this._numVertices,base,vertex.v);
- if(this._status != 0) {
- return false;
- }
- var v = v1;
- var firstV = v1;
- var prevT = null;
- var firstT = null;
- while(true) {
- if(v._tmpEdgeLoopNext == null) {
- this._dumpAsObjModel();
- this._status = 4;
- return false;
- }
- if(v._tmpEdgeLoopOuterTriangle == null) {
- this._status = 5;
- return false;
- }
- var first = this._trianglePool;
- if(first != null) {
- this._trianglePool = first._next;
- first._next = null;
- } else {
- first = new oimo.collision.narrowphase.detector.gjkepa.EpaTriangle();
- }
- var t = first;
- if(firstT == null) {
- firstT = t;
- }
- if(!t.init(v,v._tmpEdgeLoopNext,vertex,this._center,false)) {
- this._status = 1;
- }
- if(this._status != 0) {
- return false;
- }
- this._numTriangles++;
- if(this._triangleList == null) {
- this._triangleList = t;
- this._triangleListLast = t;
- } else {
- this._triangleListLast._next = t;
- t._prev = this._triangleListLast;
- this._triangleListLast = t;
- }
- if(!t.setAdjacentTriangle(v._tmpEdgeLoopOuterTriangle)) {
- this._status = 1;
- }
- if(prevT != null) {
- if(!t.setAdjacentTriangle(prevT)) {
- this._status = 1;
- }
- }
- prevT = t;
- v = v._tmpEdgeLoopNext;
- if(!(v != firstV)) {
- break;
- }
- }
- if(!prevT.setAdjacentTriangle(firstT)) {
- this._status = 1;
- }
- if(this._status == 0) {
- return this.validate();
- } else {
- return false;
- }
- }
- _dumpAsObjModel() {
- }
- }
- oimo.collision.narrowphase.detector.gjkepa.EpaPolyhedronState = class oimo_collision_narrowphase_detector_gjkepa_EpaPolyhedronState {
- }
- oimo.collision.narrowphase.detector.gjkepa.EpaTriangle = class oimo_collision_narrowphase_detector_gjkepa_EpaTriangle {
- constructor() {
- this.id = ++oimo.collision.narrowphase.detector.gjkepa.EpaTriangle.count;
- this._next = null;
- this._prev = null;
- this._normal = new oimo.common.Vec3();
- this._distanceSq = 0;
- this._tmpDfsId = 0;
- this._tmpDfsVisible = false;
- var this1 = new Array(3);
- this._vertices = this1;
- var this2 = new Array(3);
- this._adjacentTriangles = this2;
- var this3 = new Array(3);
- this._adjacentPairIndex = this3;
- this.tmp = new oimo.common.Vec3();
- var this4 = new Array(3);
- this._nextIndex = this4;
- this._nextIndex[0] = 1;
- this._nextIndex[1] = 2;
- this._nextIndex[2] = 0;
- }
- init(vertex1,vertex2,vertex3,center,autoCheck) {
- if(autoCheck == null) {
- autoCheck = false;
- }
- var v1;
- var v1X;
- var v1Y;
- var v1Z;
- var v2;
- var v2X;
- var v2Y;
- var v2Z;
- var v3;
- var v3X;
- var v3Y;
- var v3Z;
- var vc;
- var vcX;
- var vcY;
- var vcZ;
- var v = vertex1.v;
- v1X = v.x;
- v1Y = v.y;
- v1Z = v.z;
- var v4 = vertex2.v;
- v2X = v4.x;
- v2Y = v4.y;
- v2Z = v4.z;
- var v5 = vertex3.v;
- v3X = v5.x;
- v3Y = v5.y;
- v3Z = v5.z;
- var v6 = center;
- vcX = v6.x;
- vcY = v6.y;
- vcZ = v6.z;
- var v12;
- var v12X;
- var v12Y;
- var v12Z;
- var v13;
- var v13X;
- var v13Y;
- var v13Z;
- var vc1;
- var vc1X;
- var vc1Y;
- var vc1Z;
- v12X = v2X - v1X;
- v12Y = v2Y - v1Y;
- v12Z = v2Z - v1Z;
- v13X = v3X - v1X;
- v13Y = v3Y - v1Y;
- v13Z = v3Z - v1Z;
- vc1X = v1X - vcX;
- vc1Y = v1Y - vcY;
- vc1Z = v1Z - vcZ;
- var inor;
- var inorX;
- var inorY;
- var inorZ;
- inorX = v12Y * v13Z - v12Z * v13Y;
- inorY = v12Z * v13X - v12X * v13Z;
- inorZ = v12X * v13Y - v12Y * v13X;
- var inverted = false;
- var d = vc1X * inorX + vc1Y * inorY + vc1Z * inorZ;
- if(d < 0) {
- if(autoCheck) {
- var tmp = vertex2;
- vertex2 = vertex3;
- vertex3 = tmp;
- inorX *= -1;
- inorY *= -1;
- inorZ *= -1;
- } else {
- inverted = true;
- }
- }
- this._vertices[0] = vertex1;
- this._vertices[1] = vertex2;
- this._vertices[2] = vertex3;
- var v7 = this._normal;
- v7.x = inorX;
- v7.y = inorY;
- v7.z = inorZ;
- var vec1 = vertex1.v;
- var vec2 = vertex2.v;
- var vec3 = vertex3.v;
- var out = this.tmp;
- var v11;
- var v1X1;
- var v1Y1;
- var v1Z1;
- var v21;
- var v2X1;
- var v2Y1;
- var v2Z1;
- var v31;
- var v3X1;
- var v3Y1;
- var v3Z1;
- var v121;
- var v12X1;
- var v12Y1;
- var v12Z1;
- var v23;
- var v23X;
- var v23Y;
- var v23Z;
- var v311;
- var v31X;
- var v31Y;
- var v31Z;
- var v8 = vec1;
- v1X1 = v8.x;
- v1Y1 = v8.y;
- v1Z1 = v8.z;
- var v9 = vec2;
- v2X1 = v9.x;
- v2Y1 = v9.y;
- v2Z1 = v9.z;
- var v10 = vec3;
- v3X1 = v10.x;
- v3Y1 = v10.y;
- v3Z1 = v10.z;
- v12X1 = v2X1 - v1X1;
- v12Y1 = v2Y1 - v1Y1;
- v12Z1 = v2Z1 - v1Z1;
- v23X = v3X1 - v2X1;
- v23Y = v3Y1 - v2Y1;
- v23Z = v3Z1 - v2Z1;
- v31X = v1X1 - v3X1;
- v31Y = v1Y1 - v3Y1;
- v31Z = v1Z1 - v3Z1;
- var n;
- var nX;
- var nY;
- var nZ;
- nX = v12Y1 * v23Z - v12Z1 * v23Y;
- nY = v12Z1 * v23X - v12X1 * v23Z;
- nZ = v12X1 * v23Y - v12Y1 * v23X;
- var n12;
- var n12X;
- var n12Y;
- var n12Z;
- var n23;
- var n23X;
- var n23Y;
- var n23Z;
- var n31;
- var n31X;
- var n31Y;
- var n31Z;
- n12X = v12Y1 * nZ - v12Z1 * nY;
- n12Y = v12Z1 * nX - v12X1 * nZ;
- n12Z = v12X1 * nY - v12Y1 * nX;
- n23X = v23Y * nZ - v23Z * nY;
- n23Y = v23Z * nX - v23X * nZ;
- n23Z = v23X * nY - v23Y * nX;
- n31X = v31Y * nZ - v31Z * nY;
- n31Y = v31Z * nX - v31X * nZ;
- n31Z = v31X * nY - v31Y * nX;
- var d12 = v1X1 * n12X + v1Y1 * n12Y + v1Z1 * n12Z;
- var d23 = v2X1 * n23X + v2Y1 * n23Y + v2Z1 * n23Z;
- var d31 = v3X1 * n31X + v3Y1 * n31Y + v3Z1 * n31Z;
- var mind = -1;
- var minv;
- var minvX;
- var minvY;
- var minvZ;
- var mini = 0;
- minvX = 0;
- minvY = 0;
- minvZ = 0;
- if(d12 < 0) {
- var v14;
- var v1X2;
- var v1Y2;
- var v1Z2;
- var v22;
- var v2X2;
- var v2Y2;
- var v2Z2;
- var v15 = vec1;
- v1X2 = v15.x;
- v1Y2 = v15.y;
- v1Z2 = v15.z;
- var v16 = vec2;
- v2X2 = v16.x;
- v2Y2 = v16.y;
- v2Z2 = v16.z;
- var v122;
- var v12X2;
- var v12Y2;
- var v12Z2;
- v12X2 = v2X2 - v1X2;
- v12Y2 = v2Y2 - v1Y2;
- v12Z2 = v2Z2 - v1Z2;
- var d1 = v12X2 * v12X2 + v12Y2 * v12Y2 + v12Z2 * v12Z2;
- var t = v12X2 * v1X2 + v12Y2 * v1Y2 + v12Z2 * v1Z2;
- t = -t / d1;
- var b;
- if(t < 0) {
- var v17 = out;
- v17.x = v1X2;
- v17.y = v1Y2;
- v17.z = v1Z2;
- b = 1;
- } else if(t > 1) {
- var v18 = out;
- v18.x = v2X2;
- v18.y = v2Y2;
- v18.z = v2Z2;
- b = 2;
- } else {
- var p;
- var pX;
- var pY;
- var pZ;
- pX = v1X2 + v12X2 * t;
- pY = v1Y2 + v12Y2 * t;
- pZ = v1Z2 + v12Z2 * t;
- var v19 = out;
- v19.x = pX;
- v19.y = pY;
- v19.z = pZ;
- b = 3;
- }
- var d2 = out.x * out.x + out.y * out.y + out.z * out.z;
- mini = b;
- mind = d2;
- var v20 = out;
- minvX = v20.x;
- minvY = v20.y;
- minvZ = v20.z;
- }
- if(d23 < 0) {
- var v110;
- var v1X3;
- var v1Y3;
- var v1Z3;
- var v24;
- var v2X3;
- var v2Y3;
- var v2Z3;
- var v25 = vec2;
- v1X3 = v25.x;
- v1Y3 = v25.y;
- v1Z3 = v25.z;
- var v26 = vec3;
- v2X3 = v26.x;
- v2Y3 = v26.y;
- v2Z3 = v26.z;
- var v123;
- var v12X3;
- var v12Y3;
- var v12Z3;
- v12X3 = v2X3 - v1X3;
- v12Y3 = v2Y3 - v1Y3;
- v12Z3 = v2Z3 - v1Z3;
- var d3 = v12X3 * v12X3 + v12Y3 * v12Y3 + v12Z3 * v12Z3;
- var t1 = v12X3 * v1X3 + v12Y3 * v1Y3 + v12Z3 * v1Z3;
- t1 = -t1 / d3;
- var b1;
- if(t1 < 0) {
- var v27 = out;
- v27.x = v1X3;
- v27.y = v1Y3;
- v27.z = v1Z3;
- b1 = 1;
- } else if(t1 > 1) {
- var v28 = out;
- v28.x = v2X3;
- v28.y = v2Y3;
- v28.z = v2Z3;
- b1 = 2;
- } else {
- var p1;
- var pX1;
- var pY1;
- var pZ1;
- pX1 = v1X3 + v12X3 * t1;
- pY1 = v1Y3 + v12Y3 * t1;
- pZ1 = v1Z3 + v12Z3 * t1;
- var v29 = out;
- v29.x = pX1;
- v29.y = pY1;
- v29.z = pZ1;
- b1 = 3;
- }
- var d4 = out.x * out.x + out.y * out.y + out.z * out.z;
- if(mind < 0 || d4 < mind) {
- mini = b1 << 1;
- mind = d4;
- var v30 = out;
- minvX = v30.x;
- minvY = v30.y;
- minvZ = v30.z;
- }
- }
- if(d31 < 0) {
- var v111;
- var v1X4;
- var v1Y4;
- var v1Z4;
- var v210;
- var v2X4;
- var v2Y4;
- var v2Z4;
- var v32 = vec1;
- v1X4 = v32.x;
- v1Y4 = v32.y;
- v1Z4 = v32.z;
- var v33 = vec3;
- v2X4 = v33.x;
- v2Y4 = v33.y;
- v2Z4 = v33.z;
- var v124;
- var v12X4;
- var v12Y4;
- var v12Z4;
- v12X4 = v2X4 - v1X4;
- v12Y4 = v2Y4 - v1Y4;
- v12Z4 = v2Z4 - v1Z4;
- var d5 = v12X4 * v12X4 + v12Y4 * v12Y4 + v12Z4 * v12Z4;
- var t2 = v12X4 * v1X4 + v12Y4 * v1Y4 + v12Z4 * v1Z4;
- t2 = -t2 / d5;
- var b2;
- if(t2 < 0) {
- var v34 = out;
- v34.x = v1X4;
- v34.y = v1Y4;
- v34.z = v1Z4;
- b2 = 1;
- } else if(t2 > 1) {
- var v35 = out;
- v35.x = v2X4;
- v35.y = v2Y4;
- v35.z = v2Z4;
- b2 = 2;
- } else {
- var p2;
- var pX2;
- var pY2;
- var pZ2;
- pX2 = v1X4 + v12X4 * t2;
- pY2 = v1Y4 + v12Y4 * t2;
- pZ2 = v1Z4 + v12Z4 * t2;
- var v36 = out;
- v36.x = pX2;
- v36.y = pY2;
- v36.z = pZ2;
- b2 = 3;
- }
- var d6 = out.x * out.x + out.y * out.y + out.z * out.z;
- if(mind < 0 || d6 < mind) {
- mini = b2 & 1 | (b2 & 2) << 1;
- mind = d6;
- var v37 = out;
- minvX = v37.x;
- minvY = v37.y;
- minvZ = v37.z;
- }
- }
- if(mind > 0) {
- var v38 = out;
- v38.x = minvX;
- v38.y = minvY;
- v38.z = minvZ;
- } else {
- var l = nX * nX + nY * nY + nZ * nZ;
- if(l > 0) {
- l = 1 / Math.sqrt(l);
- }
- nX *= l;
- nY *= l;
- nZ *= l;
- var dn = v1X1 * nX + v1Y1 * nY + v1Z1 * nZ;
- var l2 = nX * nX + nY * nY + nZ * nZ;
- l2 = dn / l2;
- minvX = nX * l2;
- minvY = nY * l2;
- minvZ = nZ * l2;
- var v39 = out;
- v39.x = minvX;
- v39.y = minvY;
- v39.z = minvZ;
- }
- var _this = this.tmp;
- this._distanceSq = _this.x * _this.x + _this.y * _this.y + _this.z * _this.z;
- this._adjacentTriangles[0] = null;
- this._adjacentTriangles[1] = null;
- this._adjacentTriangles[2] = null;
- this._adjacentPairIndex[0] = -1;
- this._adjacentPairIndex[1] = -1;
- this._adjacentPairIndex[2] = -1;
- return !inverted;
- }
- setAdjacentTriangle(triangle) {
- var count = 0;
- var i2 = this._nextIndex[0];
- var j2 = this._nextIndex[0];
- if(this._vertices[0] == triangle._vertices[j2] && this._vertices[i2] == triangle._vertices[0]) {
- this._adjacentTriangles[0] = triangle;
- this._adjacentPairIndex[0] = 0;
- triangle._adjacentTriangles[0] = this;
- triangle._adjacentPairIndex[0] = 0;
- ++count;
- }
- var i21 = this._nextIndex[0];
- var j21 = this._nextIndex[1];
- if(this._vertices[0] == triangle._vertices[j21] && this._vertices[i21] == triangle._vertices[1]) {
- this._adjacentTriangles[0] = triangle;
- this._adjacentPairIndex[0] = 1;
- triangle._adjacentTriangles[1] = this;
- triangle._adjacentPairIndex[1] = 0;
- ++count;
- }
- var i22 = this._nextIndex[0];
- var j22 = this._nextIndex[2];
- if(this._vertices[0] == triangle._vertices[j22] && this._vertices[i22] == triangle._vertices[2]) {
- this._adjacentTriangles[0] = triangle;
- this._adjacentPairIndex[0] = 2;
- triangle._adjacentTriangles[2] = this;
- triangle._adjacentPairIndex[2] = 0;
- ++count;
- }
- var i23 = this._nextIndex[1];
- var j23 = this._nextIndex[0];
- if(this._vertices[1] == triangle._vertices[j23] && this._vertices[i23] == triangle._vertices[0]) {
- this._adjacentTriangles[1] = triangle;
- this._adjacentPairIndex[1] = 0;
- triangle._adjacentTriangles[0] = this;
- triangle._adjacentPairIndex[0] = 1;
- ++count;
- }
- var i24 = this._nextIndex[1];
- var j24 = this._nextIndex[1];
- if(this._vertices[1] == triangle._vertices[j24] && this._vertices[i24] == triangle._vertices[1]) {
- this._adjacentTriangles[1] = triangle;
- this._adjacentPairIndex[1] = 1;
- triangle._adjacentTriangles[1] = this;
- triangle._adjacentPairIndex[1] = 1;
- ++count;
- }
- var i25 = this._nextIndex[1];
- var j25 = this._nextIndex[2];
- if(this._vertices[1] == triangle._vertices[j25] && this._vertices[i25] == triangle._vertices[2]) {
- this._adjacentTriangles[1] = triangle;
- this._adjacentPairIndex[1] = 2;
- triangle._adjacentTriangles[2] = this;
- triangle._adjacentPairIndex[2] = 1;
- ++count;
- }
- var i26 = this._nextIndex[2];
- var j26 = this._nextIndex[0];
- if(this._vertices[2] == triangle._vertices[j26] && this._vertices[i26] == triangle._vertices[0]) {
- this._adjacentTriangles[2] = triangle;
- this._adjacentPairIndex[2] = 0;
- triangle._adjacentTriangles[0] = this;
- triangle._adjacentPairIndex[0] = 2;
- ++count;
- }
- var i27 = this._nextIndex[2];
- var j27 = this._nextIndex[1];
- if(this._vertices[2] == triangle._vertices[j27] && this._vertices[i27] == triangle._vertices[1]) {
- this._adjacentTriangles[2] = triangle;
- this._adjacentPairIndex[2] = 1;
- triangle._adjacentTriangles[1] = this;
- triangle._adjacentPairIndex[1] = 2;
- ++count;
- }
- var i28 = this._nextIndex[2];
- var j28 = this._nextIndex[2];
- if(this._vertices[2] == triangle._vertices[j28] && this._vertices[i28] == triangle._vertices[2]) {
- this._adjacentTriangles[2] = triangle;
- this._adjacentPairIndex[2] = 2;
- triangle._adjacentTriangles[2] = this;
- triangle._adjacentPairIndex[2] = 2;
- ++count;
- }
- if(count != 1) {
- return false;
- }
- return true;
- }
- removeAdjacentTriangles() {
- var triangle = this._adjacentTriangles[0];
- if(triangle != null) {
- var pairIndex = this._adjacentPairIndex[0];
- triangle._adjacentTriangles[pairIndex] = null;
- triangle._adjacentPairIndex[pairIndex] = -1;
- this._adjacentTriangles[0] = null;
- this._adjacentPairIndex[0] = -1;
- }
- var triangle1 = this._adjacentTriangles[1];
- if(triangle1 != null) {
- var pairIndex1 = this._adjacentPairIndex[1];
- triangle1._adjacentTriangles[pairIndex1] = null;
- triangle1._adjacentPairIndex[pairIndex1] = -1;
- this._adjacentTriangles[1] = null;
- this._adjacentPairIndex[1] = -1;
- }
- var triangle2 = this._adjacentTriangles[2];
- if(triangle2 != null) {
- var pairIndex2 = this._adjacentPairIndex[2];
- triangle2._adjacentTriangles[pairIndex2] = null;
- triangle2._adjacentPairIndex[pairIndex2] = -1;
- this._adjacentTriangles[2] = null;
- this._adjacentPairIndex[2] = -1;
- }
- }
- removeReferences() {
- this._next = null;
- this._prev = null;
- this._tmpDfsId = 0;
- this._tmpDfsVisible = false;
- this._distanceSq = 0;
- this._vertices[0] = null;
- this._vertices[1] = null;
- this._vertices[2] = null;
- this._adjacentTriangles[0] = null;
- this._adjacentTriangles[1] = null;
- this._adjacentTriangles[2] = null;
- this._adjacentPairIndex[0] = 0;
- this._adjacentPairIndex[1] = 0;
- this._adjacentPairIndex[2] = 0;
- }
- dump() {
- }
- }
- oimo.collision.narrowphase.detector.gjkepa.EpaVertex = class oimo_collision_narrowphase_detector_gjkepa_EpaVertex {
- constructor() {
- this.randId = Math.random() * 100000 | 0;
- this.v = new oimo.common.Vec3();
- this.w1 = new oimo.common.Vec3();
- this.w2 = new oimo.common.Vec3();
- }
- init(v,w1,w2) {
- var _this = this.v;
- _this.x = v.x;
- _this.y = v.y;
- _this.z = v.z;
- var _this1 = this.w1;
- _this1.x = w1.x;
- _this1.y = w1.y;
- _this1.z = w1.z;
- var _this2 = this.w2;
- _this2.x = w2.x;
- _this2.y = w2.y;
- _this2.z = w2.z;
- this._next = null;
- this._tmpEdgeLoopNext = null;
- this._tmpEdgeLoopOuterTriangle = null;
- return this;
- }
- removeReferences() {
- this._next = null;
- this._tmpEdgeLoopNext = null;
- this._tmpEdgeLoopOuterTriangle = null;
- }
- }
- oimo.collision.narrowphase.detector.gjkepa.GjkCache = class oimo_collision_narrowphase_detector_gjkepa_GjkCache {
- constructor() {
- this.prevClosestDir = new oimo.common.Vec3();
- }
- clear() {
- this.prevClosestDir.zero();
- }
- }
- if(!oimo.common) oimo.common = {};
- oimo.common.Vec3 = class oimo_common_Vec3 {
- constructor(x,y,z) {
- if(z == null) {
- z = 0;
- }
- if(y == null) {
- y = 0;
- }
- if(x == null) {
- x = 0;
- }
- this.x = x;
- this.y = y;
- this.z = z;
- oimo.common.Vec3.numCreations++;
- }
- init(x,y,z) {
- this.x = x;
- this.y = y;
- this.z = z;
- return this;
- }
- zero() {
- var tx = 0;
- var ty = 0;
- var tz = 0;
- this.x = tx;
- this.y = ty;
- this.z = tz;
- return this;
- }
- add(v) {
- return new oimo.common.Vec3(this.x + v.x,this.y + v.y,this.z + v.z);
- }
- add3(vx,vy,vz) {
- return new oimo.common.Vec3(this.x + vx,this.y + vy,this.z + vz);
- }
- addScaled(v,s) {
- return new oimo.common.Vec3(this.x + v.x * s,this.y + v.y * s,this.z + v.z * s);
- }
- sub(v) {
- return new oimo.common.Vec3(this.x - v.x,this.y - v.y,this.z - v.z);
- }
- sub3(vx,vy,vz) {
- return new oimo.common.Vec3(this.x - vx,this.y - vy,this.z - vz);
- }
- scale(s) {
- return new oimo.common.Vec3(this.x * s,this.y * s,this.z * s);
- }
- scale3(sx,sy,sz) {
- return new oimo.common.Vec3(this.x * sx,this.y * sy,this.z * sz);
- }
- dot(v) {
- return this.x * v.x + this.y * v.y + this.z * v.z;
- }
- cross(v) {
- return new oimo.common.Vec3(this.y * v.z - this.z * v.y,this.z * v.x - this.x * v.z,this.x * v.y - this.y * v.x);
- }
- addEq(v) {
- var tx = this.x + v.x;
- var ty = this.y + v.y;
- var tz = this.z + v.z;
- this.x = tx;
- this.y = ty;
- this.z = tz;
- return this;
- }
- add3Eq(vx,vy,vz) {
- var tx = this.x + vx;
- var ty = this.y + vy;
- var tz = this.z + vz;
- this.x = tx;
- this.y = ty;
- this.z = tz;
- return this;
- }
- addScaledEq(v,s) {
- var tx = this.x + v.x * s;
- var ty = this.y + v.y * s;
- var tz = this.z + v.z * s;
- this.x = tx;
- this.y = ty;
- this.z = tz;
- return this;
- }
- subEq(v) {
- var tx = this.x - v.x;
- var ty = this.y - v.y;
- var tz = this.z - v.z;
- this.x = tx;
- this.y = ty;
- this.z = tz;
- return this;
- }
- sub3Eq(vx,vy,vz) {
- var tx = this.x - vx;
- var ty = this.y - vy;
- var tz = this.z - vz;
- this.x = tx;
- this.y = ty;
- this.z = tz;
- return this;
- }
- scaleEq(s) {
- var tx = this.x * s;
- var ty = this.y * s;
- var tz = this.z * s;
- this.x = tx;
- this.y = ty;
- this.z = tz;
- return this;
- }
- scale3Eq(sx,sy,sz) {
- var tx = this.x * sx;
- var ty = this.y * sy;
- var tz = this.z * sz;
- this.x = tx;
- this.y = ty;
- this.z = tz;
- return this;
- }
- crossEq(v) {
- var tx = this.y * v.z - this.z * v.y;
- var ty = this.z * v.x - this.x * v.z;
- var tz = this.x * v.y - this.y * v.x;
- this.x = tx;
- this.y = ty;
- this.z = tz;
- return this;
- }
- mulMat3(m) {
- return new oimo.common.Vec3(this.x * m.e00 + this.y * m.e01 + this.z * m.e02,this.x * m.e10 + this.y * m.e11 + this.z * m.e12,this.x * m.e20 + this.y * m.e21 + this.z * m.e22);
- }
- mulMat4(m) {
- return new oimo.common.Vec3(this.x * m.e00 + this.y * m.e01 + this.z * m.e02 + m.e03,this.x * m.e10 + this.y * m.e11 + this.z * m.e12 + m.e13,this.x * m.e20 + this.y * m.e21 + this.z * m.e22 + m.e23);
- }
- mulTransform(tf) {
- var v;
- var vX;
- var vY;
- var vZ;
- var v1 = this;
- vX = v1.x;
- vY = v1.y;
- vZ = v1.z;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = tf._rotation00 * vX + tf._rotation01 * vY + tf._rotation02 * vZ;
- __tmp__Y = tf._rotation10 * vX + tf._rotation11 * vY + tf._rotation12 * vZ;
- __tmp__Z = tf._rotation20 * vX + tf._rotation21 * vY + tf._rotation22 * vZ;
- vX = __tmp__X;
- vY = __tmp__Y;
- vZ = __tmp__Z;
- vX += tf._positionX;
- vY += tf._positionY;
- vZ += tf._positionZ;
- var res = new oimo.common.Vec3();
- var v2 = res;
- v2.x = vX;
- v2.y = vY;
- v2.z = vZ;
- return res;
- }
- mulMat3Eq(m) {
- var tx = this.x * m.e00 + this.y * m.e01 + this.z * m.e02;
- var ty = this.x * m.e10 + this.y * m.e11 + this.z * m.e12;
- var tz = this.x * m.e20 + this.y * m.e21 + this.z * m.e22;
- this.x = tx;
- this.y = ty;
- this.z = tz;
- return this;
- }
- mulMat4Eq(m) {
- var tx = this.x * m.e00 + this.y * m.e01 + this.z * m.e02 + m.e03;
- var ty = this.x * m.e10 + this.y * m.e11 + this.z * m.e12 + m.e13;
- var tz = this.x * m.e20 + this.y * m.e21 + this.z * m.e22 + m.e23;
- this.x = tx;
- this.y = ty;
- this.z = tz;
- return this;
- }
- mulTransformEq(tf) {
- var v;
- var vX;
- var vY;
- var vZ;
- var v1 = this;
- vX = v1.x;
- vY = v1.y;
- vZ = v1.z;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = tf._rotation00 * vX + tf._rotation01 * vY + tf._rotation02 * vZ;
- __tmp__Y = tf._rotation10 * vX + tf._rotation11 * vY + tf._rotation12 * vZ;
- __tmp__Z = tf._rotation20 * vX + tf._rotation21 * vY + tf._rotation22 * vZ;
- vX = __tmp__X;
- vY = __tmp__Y;
- vZ = __tmp__Z;
- vX += tf._positionX;
- vY += tf._positionY;
- vZ += tf._positionZ;
- var v2 = this;
- v2.x = vX;
- v2.y = vY;
- v2.z = vZ;
- return this;
- }
- length() {
- return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
- }
- lengthSq() {
- return this.x * this.x + this.y * this.y + this.z * this.z;
- }
- normalized() {
- var invLen = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
- if(invLen > 0) {
- invLen = 1 / invLen;
- }
- return new oimo.common.Vec3(this.x * invLen,this.y * invLen,this.z * invLen);
- }
- normalize() {
- var invLen = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
- if(invLen > 0) {
- invLen = 1 / invLen;
- }
- var tx = this.x * invLen;
- var ty = this.y * invLen;
- var tz = this.z * invLen;
- this.x = tx;
- this.y = ty;
- this.z = tz;
- return this;
- }
- negate() {
- return new oimo.common.Vec3(-this.x,-this.y,-this.z);
- }
- negateEq() {
- var tx = -this.x;
- var ty = -this.y;
- var tz = -this.z;
- this.x = tx;
- this.y = ty;
- this.z = tz;
- return this;
- }
- copyFrom(v) {
- this.x = v.x;
- this.y = v.y;
- this.z = v.z;
- return this;
- }
- clone() {
- return new oimo.common.Vec3(this.x,this.y,this.z);
- }
- toString() {
- return "Vec3[" + (this.x > 0 ? (this.x * 10000000 + 0.5 | 0) / 10000000 : (this.x * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.y > 0 ? (this.y * 10000000 + 0.5 | 0) / 10000000 : (this.y * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.z > 0 ? (this.z * 10000000 + 0.5 | 0) / 10000000 : (this.z * 10000000 - 0.5 | 0) / 10000000) + "]";
- }
- }
- oimo.common.Transform = class oimo_common_Transform {
- constructor() {
- this._positionX = 0;
- this._positionY = 0;
- this._positionZ = 0;
- this._rotation00 = 1;
- this._rotation01 = 0;
- this._rotation02 = 0;
- this._rotation10 = 0;
- this._rotation11 = 1;
- this._rotation12 = 0;
- this._rotation20 = 0;
- this._rotation21 = 0;
- this._rotation22 = 1;
- }
- identity() {
- this._positionX = 0;
- this._positionY = 0;
- this._positionZ = 0;
- this._rotation00 = 1;
- this._rotation01 = 0;
- this._rotation02 = 0;
- this._rotation10 = 0;
- this._rotation11 = 1;
- this._rotation12 = 0;
- this._rotation20 = 0;
- this._rotation21 = 0;
- this._rotation22 = 1;
- return this;
- }
- getPosition() {
- var position = new oimo.common.Vec3();
- var v = position;
- v.x = this._positionX;
- v.y = this._positionY;
- v.z = this._positionZ;
- return position;
- }
- getPositionTo(position) {
- var v = position;
- v.x = this._positionX;
- v.y = this._positionY;
- v.z = this._positionZ;
- }
- setPosition(position) {
- var v = position;
- this._positionX = v.x;
- this._positionY = v.y;
- this._positionZ = v.z;
- return this;
- }
- translate(translation) {
- var diff;
- var diffX;
- var diffY;
- var diffZ;
- var v = translation;
- diffX = v.x;
- diffY = v.y;
- diffZ = v.z;
- this._positionX += diffX;
- this._positionY += diffY;
- this._positionZ += diffZ;
- }
- getRotation() {
- var rotation = new oimo.common.Mat3();
- var m = rotation;
- m.e00 = this._rotation00;
- m.e01 = this._rotation01;
- m.e02 = this._rotation02;
- m.e10 = this._rotation10;
- m.e11 = this._rotation11;
- m.e12 = this._rotation12;
- m.e20 = this._rotation20;
- m.e21 = this._rotation21;
- m.e22 = this._rotation22;
- return rotation;
- }
- getRotationTo(out) {
- var m = out;
- m.e00 = this._rotation00;
- m.e01 = this._rotation01;
- m.e02 = this._rotation02;
- m.e10 = this._rotation10;
- m.e11 = this._rotation11;
- m.e12 = this._rotation12;
- m.e20 = this._rotation20;
- m.e21 = this._rotation21;
- m.e22 = this._rotation22;
- }
- setRotation(rotation) {
- var m = rotation;
- this._rotation00 = m.e00;
- this._rotation01 = m.e01;
- this._rotation02 = m.e02;
- this._rotation10 = m.e10;
- this._rotation11 = m.e11;
- this._rotation12 = m.e12;
- this._rotation20 = m.e20;
- this._rotation21 = m.e21;
- this._rotation22 = m.e22;
- return this;
- }
- setRotationXyz(eulerAngles) {
- var xyz;
- var xyzX;
- var xyzY;
- var xyzZ;
- var v = eulerAngles;
- xyzX = v.x;
- xyzY = v.y;
- xyzZ = v.z;
- var sx = Math.sin(xyzX);
- var sy = Math.sin(xyzY);
- var sz = Math.sin(xyzZ);
- var cx = Math.cos(xyzX);
- var cy = Math.cos(xyzY);
- var cz = Math.cos(xyzZ);
- this._rotation00 = cy * cz;
- this._rotation01 = -cy * sz;
- this._rotation02 = sy;
- this._rotation10 = cx * sz + cz * sx * sy;
- this._rotation11 = cx * cz - sx * sy * sz;
- this._rotation12 = -cy * sx;
- this._rotation20 = sx * sz - cx * cz * sy;
- this._rotation21 = cz * sx + cx * sy * sz;
- this._rotation22 = cx * cy;
- }
- rotate(rotation) {
- var rot;
- var rot00;
- var rot01;
- var rot02;
- var rot10;
- var rot11;
- var rot12;
- var rot20;
- var rot21;
- var rot22;
- var m = rotation;
- rot00 = m.e00;
- rot01 = m.e01;
- rot02 = m.e02;
- rot10 = m.e10;
- rot11 = m.e11;
- rot12 = m.e12;
- rot20 = m.e20;
- rot21 = m.e21;
- rot22 = m.e22;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = rot00 * this._rotation00 + rot01 * this._rotation10 + rot02 * this._rotation20;
- __tmp__01 = rot00 * this._rotation01 + rot01 * this._rotation11 + rot02 * this._rotation21;
- __tmp__02 = rot00 * this._rotation02 + rot01 * this._rotation12 + rot02 * this._rotation22;
- __tmp__10 = rot10 * this._rotation00 + rot11 * this._rotation10 + rot12 * this._rotation20;
- __tmp__11 = rot10 * this._rotation01 + rot11 * this._rotation11 + rot12 * this._rotation21;
- __tmp__12 = rot10 * this._rotation02 + rot11 * this._rotation12 + rot12 * this._rotation22;
- __tmp__20 = rot20 * this._rotation00 + rot21 * this._rotation10 + rot22 * this._rotation20;
- __tmp__21 = rot20 * this._rotation01 + rot21 * this._rotation11 + rot22 * this._rotation21;
- __tmp__22 = rot20 * this._rotation02 + rot21 * this._rotation12 + rot22 * this._rotation22;
- this._rotation00 = __tmp__00;
- this._rotation01 = __tmp__01;
- this._rotation02 = __tmp__02;
- this._rotation10 = __tmp__10;
- this._rotation11 = __tmp__11;
- this._rotation12 = __tmp__12;
- this._rotation20 = __tmp__20;
- this._rotation21 = __tmp__21;
- this._rotation22 = __tmp__22;
- }
- rotateXyz(eulerAngles) {
- var xyz;
- var xyzX;
- var xyzY;
- var xyzZ;
- var rot;
- var rot00;
- var rot01;
- var rot02;
- var rot10;
- var rot11;
- var rot12;
- var rot20;
- var rot21;
- var rot22;
- var v = eulerAngles;
- xyzX = v.x;
- xyzY = v.y;
- xyzZ = v.z;
- var sx = Math.sin(xyzX);
- var sy = Math.sin(xyzY);
- var sz = Math.sin(xyzZ);
- var cx = Math.cos(xyzX);
- var cy = Math.cos(xyzY);
- var cz = Math.cos(xyzZ);
- rot00 = cy * cz;
- rot01 = -cy * sz;
- rot02 = sy;
- rot10 = cx * sz + cz * sx * sy;
- rot11 = cx * cz - sx * sy * sz;
- rot12 = -cy * sx;
- rot20 = sx * sz - cx * cz * sy;
- rot21 = cz * sx + cx * sy * sz;
- rot22 = cx * cy;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = rot00 * this._rotation00 + rot01 * this._rotation10 + rot02 * this._rotation20;
- __tmp__01 = rot00 * this._rotation01 + rot01 * this._rotation11 + rot02 * this._rotation21;
- __tmp__02 = rot00 * this._rotation02 + rot01 * this._rotation12 + rot02 * this._rotation22;
- __tmp__10 = rot10 * this._rotation00 + rot11 * this._rotation10 + rot12 * this._rotation20;
- __tmp__11 = rot10 * this._rotation01 + rot11 * this._rotation11 + rot12 * this._rotation21;
- __tmp__12 = rot10 * this._rotation02 + rot11 * this._rotation12 + rot12 * this._rotation22;
- __tmp__20 = rot20 * this._rotation00 + rot21 * this._rotation10 + rot22 * this._rotation20;
- __tmp__21 = rot20 * this._rotation01 + rot21 * this._rotation11 + rot22 * this._rotation21;
- __tmp__22 = rot20 * this._rotation02 + rot21 * this._rotation12 + rot22 * this._rotation22;
- this._rotation00 = __tmp__00;
- this._rotation01 = __tmp__01;
- this._rotation02 = __tmp__02;
- this._rotation10 = __tmp__10;
- this._rotation11 = __tmp__11;
- this._rotation12 = __tmp__12;
- this._rotation20 = __tmp__20;
- this._rotation21 = __tmp__21;
- this._rotation22 = __tmp__22;
- }
- getOrientation() {
- var q = new oimo.common.Quat();
- var iq;
- var iqX;
- var iqY;
- var iqZ;
- var iqW;
- var e00 = this._rotation00;
- var e11 = this._rotation11;
- var e22 = this._rotation22;
- var t = e00 + e11 + e22;
- var s;
- if(t > 0) {
- s = Math.sqrt(t + 1);
- iqW = 0.5 * s;
- s = 0.5 / s;
- iqX = (this._rotation21 - this._rotation12) * s;
- iqY = (this._rotation02 - this._rotation20) * s;
- iqZ = (this._rotation10 - this._rotation01) * s;
- } else if(e00 > e11) {
- if(e00 > e22) {
- s = Math.sqrt(e00 - e11 - e22 + 1);
- iqX = 0.5 * s;
- s = 0.5 / s;
- iqY = (this._rotation01 + this._rotation10) * s;
- iqZ = (this._rotation02 + this._rotation20) * s;
- iqW = (this._rotation21 - this._rotation12) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- iqZ = 0.5 * s;
- s = 0.5 / s;
- iqX = (this._rotation02 + this._rotation20) * s;
- iqY = (this._rotation12 + this._rotation21) * s;
- iqW = (this._rotation10 - this._rotation01) * s;
- }
- } else if(e11 > e22) {
- s = Math.sqrt(e11 - e22 - e00 + 1);
- iqY = 0.5 * s;
- s = 0.5 / s;
- iqX = (this._rotation01 + this._rotation10) * s;
- iqZ = (this._rotation12 + this._rotation21) * s;
- iqW = (this._rotation02 - this._rotation20) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- iqZ = 0.5 * s;
- s = 0.5 / s;
- iqX = (this._rotation02 + this._rotation20) * s;
- iqY = (this._rotation12 + this._rotation21) * s;
- iqW = (this._rotation10 - this._rotation01) * s;
- }
- var q1 = q;
- q1.x = iqX;
- q1.y = iqY;
- q1.z = iqZ;
- q1.w = iqW;
- return q;
- }
- getOrientationTo(orientation) {
- var iq;
- var iqX;
- var iqY;
- var iqZ;
- var iqW;
- var e00 = this._rotation00;
- var e11 = this._rotation11;
- var e22 = this._rotation22;
- var t = e00 + e11 + e22;
- var s;
- if(t > 0) {
- s = Math.sqrt(t + 1);
- iqW = 0.5 * s;
- s = 0.5 / s;
- iqX = (this._rotation21 - this._rotation12) * s;
- iqY = (this._rotation02 - this._rotation20) * s;
- iqZ = (this._rotation10 - this._rotation01) * s;
- } else if(e00 > e11) {
- if(e00 > e22) {
- s = Math.sqrt(e00 - e11 - e22 + 1);
- iqX = 0.5 * s;
- s = 0.5 / s;
- iqY = (this._rotation01 + this._rotation10) * s;
- iqZ = (this._rotation02 + this._rotation20) * s;
- iqW = (this._rotation21 - this._rotation12) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- iqZ = 0.5 * s;
- s = 0.5 / s;
- iqX = (this._rotation02 + this._rotation20) * s;
- iqY = (this._rotation12 + this._rotation21) * s;
- iqW = (this._rotation10 - this._rotation01) * s;
- }
- } else if(e11 > e22) {
- s = Math.sqrt(e11 - e22 - e00 + 1);
- iqY = 0.5 * s;
- s = 0.5 / s;
- iqX = (this._rotation01 + this._rotation10) * s;
- iqZ = (this._rotation12 + this._rotation21) * s;
- iqW = (this._rotation02 - this._rotation20) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- iqZ = 0.5 * s;
- s = 0.5 / s;
- iqX = (this._rotation02 + this._rotation20) * s;
- iqY = (this._rotation12 + this._rotation21) * s;
- iqW = (this._rotation10 - this._rotation01) * s;
- }
- var q = orientation;
- q.x = iqX;
- q.y = iqY;
- q.z = iqZ;
- q.w = iqW;
- }
- setOrientation(quaternion) {
- var q;
- var qX;
- var qY;
- var qZ;
- var qW;
- var q1 = quaternion;
- qX = q1.x;
- qY = q1.y;
- qZ = q1.z;
- qW = q1.w;
- var x = qX;
- var y = qY;
- var z = qZ;
- var w = qW;
- var x2 = 2 * x;
- var y2 = 2 * y;
- var z2 = 2 * z;
- var xx = x * x2;
- var yy = y * y2;
- var zz = z * z2;
- var xy = x * y2;
- var yz = y * z2;
- var xz = x * z2;
- var wx = w * x2;
- var wy = w * y2;
- var wz = w * z2;
- this._rotation00 = 1 - yy - zz;
- this._rotation01 = xy - wz;
- this._rotation02 = xz + wy;
- this._rotation10 = xy + wz;
- this._rotation11 = 1 - xx - zz;
- this._rotation12 = yz - wx;
- this._rotation20 = xz - wy;
- this._rotation21 = yz + wx;
- this._rotation22 = 1 - xx - yy;
- return this;
- }
- clone() {
- var tf = new oimo.common.Transform();
- tf._positionX = this._positionX;
- tf._positionY = this._positionY;
- tf._positionZ = this._positionZ;
- tf._rotation00 = this._rotation00;
- tf._rotation01 = this._rotation01;
- tf._rotation02 = this._rotation02;
- tf._rotation10 = this._rotation10;
- tf._rotation11 = this._rotation11;
- tf._rotation12 = this._rotation12;
- tf._rotation20 = this._rotation20;
- tf._rotation21 = this._rotation21;
- tf._rotation22 = this._rotation22;
- return tf;
- }
- copyFrom(transform) {
- this._positionX = transform._positionX;
- this._positionY = transform._positionY;
- this._positionZ = transform._positionZ;
- this._rotation00 = transform._rotation00;
- this._rotation01 = transform._rotation01;
- this._rotation02 = transform._rotation02;
- this._rotation10 = transform._rotation10;
- this._rotation11 = transform._rotation11;
- this._rotation12 = transform._rotation12;
- this._rotation20 = transform._rotation20;
- this._rotation21 = transform._rotation21;
- this._rotation22 = transform._rotation22;
- return this;
- }
- }
- oimo.common.Setting = class oimo_common_Setting {
- }
- oimo.collision.narrowphase.detector.gjkepa.GjkEpa = class oimo_collision_narrowphase_detector_gjkepa_GjkEpa {
- constructor() {
- var this1 = new Array(4);
- this.s = this1;
- var this2 = new Array(4);
- this.w1 = this2;
- var this3 = new Array(4);
- this.w2 = this3;
- var this4 = new Array(3);
- this.baseDirs = this4;
- this.baseDirs[0] = new oimo.common.Vec3(1,0,0);
- this.baseDirs[1] = new oimo.common.Vec3(0,1,0);
- this.baseDirs[2] = new oimo.common.Vec3(0,0,1);
- this.tl1 = new oimo.common.Vec3();
- this.tl2 = new oimo.common.Vec3();
- this.rayX = new oimo.common.Vec3();
- this.rayR = new oimo.common.Vec3();
- this.tempTransform = new oimo.common.Transform();
- this.s[0] = new oimo.common.Vec3();
- this.w1[0] = new oimo.common.Vec3();
- this.w2[0] = new oimo.common.Vec3();
- this.s[1] = new oimo.common.Vec3();
- this.w1[1] = new oimo.common.Vec3();
- this.w2[1] = new oimo.common.Vec3();
- this.s[2] = new oimo.common.Vec3();
- this.w1[2] = new oimo.common.Vec3();
- this.w2[2] = new oimo.common.Vec3();
- this.s[3] = new oimo.common.Vec3();
- this.w1[3] = new oimo.common.Vec3();
- this.w2[3] = new oimo.common.Vec3();
- this.dir = new oimo.common.Vec3();
- this.closest = new oimo.common.Vec3();
- this.closestPoint1 = new oimo.common.Vec3();
- this.closestPoint2 = new oimo.common.Vec3();
- this.polyhedron = new oimo.collision.narrowphase.detector.gjkepa.EpaPolyhedron();
- }
- computeClosestPointsImpl(c1,c2,tf1,tf2,cache,useEpa) {
- this.c1 = c1;
- this.c2 = c2;
- this.tf1 = tf1;
- this.tf2 = tf2;
- var s = this.s;
- var w1 = this.w1;
- var w2 = this.w2;
- var closest = this.closest;
- var dir = this.dir;
- if(cache != null) {
- if(cache._gjkCache == null) {
- cache._gjkCache = new oimo.collision.narrowphase.detector.gjkepa.GjkCache();
- }
- this.loadCache(cache._gjkCache);
- } else {
- dir.zero();
- }
- if(dir.x * dir.x + dir.y * dir.y + dir.z * dir.z == 0) {
- var firstDir;
- var firstDirX;
- var firstDirY;
- var firstDirZ;
- firstDirX = tf2._positionX - tf1._positionX;
- firstDirY = tf2._positionY - tf1._positionY;
- firstDirZ = tf2._positionZ - tf1._positionZ;
- var v = dir;
- v.x = firstDirX;
- v.y = firstDirY;
- v.z = firstDirZ;
- if(dir.x * dir.x + dir.y * dir.y + dir.z * dir.z < 1e-6) {
- dir.init(1,0,0);
- }
- }
- this.simplexSize = 0;
- this.computeWitnessPoint1(false);
- this.computeWitnessPoint2(false);
- var _this = this.s[this.simplexSize];
- var v1 = this.w1[this.simplexSize];
- _this.x = v1.x;
- _this.y = v1.y;
- _this.z = v1.z;
- var _this1 = _this;
- var v2 = this.w2[this.simplexSize];
- var tx = _this1.x - v2.x;
- var ty = _this1.y - v2.y;
- var tz = _this1.z - v2.z;
- _this1.x = tx;
- _this1.y = ty;
- _this1.z = tz;
- this.simplexSize = 1;
- var count = 0;
- var max = 40;
- var eps = 1e-4;
- var eps2 = eps * eps;
- while(count < max) {
- var v3 = 0;
- switch(this.simplexSize) {
- case 1:
- var v4 = s[0];
- closest.x = v4.x;
- closest.y = v4.y;
- closest.z = v4.z;
- v3 = 1;
- break;
- case 2:
- var v11;
- var v1X;
- var v1Y;
- var v1Z;
- var v21;
- var v2X;
- var v2Y;
- var v2Z;
- var v5 = s[0];
- v1X = v5.x;
- v1Y = v5.y;
- v1Z = v5.z;
- var v6 = s[1];
- v2X = v6.x;
- v2Y = v6.y;
- v2Z = v6.z;
- var v12;
- var v12X;
- var v12Y;
- var v12Z;
- v12X = v2X - v1X;
- v12Y = v2Y - v1Y;
- v12Z = v2Z - v1Z;
- var d = v12X * v12X + v12Y * v12Y + v12Z * v12Z;
- var t = v12X * v1X + v12Y * v1Y + v12Z * v1Z;
- t = -t / d;
- if(t < 0) {
- var v7 = closest;
- v7.x = v1X;
- v7.y = v1Y;
- v7.z = v1Z;
- v3 = 1;
- } else if(t > 1) {
- var v8 = closest;
- v8.x = v2X;
- v8.y = v2Y;
- v8.z = v2Z;
- v3 = 2;
- } else {
- var p;
- var pX;
- var pY;
- var pZ;
- pX = v1X + v12X * t;
- pY = v1Y + v12Y * t;
- pZ = v1Z + v12Z * t;
- var v9 = closest;
- v9.x = pX;
- v9.y = pY;
- v9.z = pZ;
- v3 = 3;
- }
- break;
- case 3:
- var vec1 = s[0];
- var vec2 = s[1];
- var vec3 = s[2];
- var v13;
- var v1X1;
- var v1Y1;
- var v1Z1;
- var v22;
- var v2X1;
- var v2Y1;
- var v2Z1;
- var v31;
- var v3X;
- var v3Y;
- var v3Z;
- var v121;
- var v12X1;
- var v12Y1;
- var v12Z1;
- var v23;
- var v23X;
- var v23Y;
- var v23Z;
- var v311;
- var v31X;
- var v31Y;
- var v31Z;
- var v10 = vec1;
- v1X1 = v10.x;
- v1Y1 = v10.y;
- v1Z1 = v10.z;
- var v14 = vec2;
- v2X1 = v14.x;
- v2Y1 = v14.y;
- v2Z1 = v14.z;
- var v15 = vec3;
- v3X = v15.x;
- v3Y = v15.y;
- v3Z = v15.z;
- v12X1 = v2X1 - v1X1;
- v12Y1 = v2Y1 - v1Y1;
- v12Z1 = v2Z1 - v1Z1;
- v23X = v3X - v2X1;
- v23Y = v3Y - v2Y1;
- v23Z = v3Z - v2Z1;
- v31X = v1X1 - v3X;
- v31Y = v1Y1 - v3Y;
- v31Z = v1Z1 - v3Z;
- var n;
- var nX;
- var nY;
- var nZ;
- nX = v12Y1 * v23Z - v12Z1 * v23Y;
- nY = v12Z1 * v23X - v12X1 * v23Z;
- nZ = v12X1 * v23Y - v12Y1 * v23X;
- var n12;
- var n12X;
- var n12Y;
- var n12Z;
- var n23;
- var n23X;
- var n23Y;
- var n23Z;
- var n31;
- var n31X;
- var n31Y;
- var n31Z;
- n12X = v12Y1 * nZ - v12Z1 * nY;
- n12Y = v12Z1 * nX - v12X1 * nZ;
- n12Z = v12X1 * nY - v12Y1 * nX;
- n23X = v23Y * nZ - v23Z * nY;
- n23Y = v23Z * nX - v23X * nZ;
- n23Z = v23X * nY - v23Y * nX;
- n31X = v31Y * nZ - v31Z * nY;
- n31Y = v31Z * nX - v31X * nZ;
- n31Z = v31X * nY - v31Y * nX;
- var d12 = v1X1 * n12X + v1Y1 * n12Y + v1Z1 * n12Z;
- var d23 = v2X1 * n23X + v2Y1 * n23Y + v2Z1 * n23Z;
- var d31 = v3X * n31X + v3Y * n31Y + v3Z * n31Z;
- var mind = -1;
- var minv;
- var minvX;
- var minvY;
- var minvZ;
- var mini = 0;
- minvX = 0;
- minvY = 0;
- minvZ = 0;
- if(d12 < 0) {
- var v16;
- var v1X2;
- var v1Y2;
- var v1Z2;
- var v24;
- var v2X2;
- var v2Y2;
- var v2Z2;
- var v17 = vec1;
- v1X2 = v17.x;
- v1Y2 = v17.y;
- v1Z2 = v17.z;
- var v18 = vec2;
- v2X2 = v18.x;
- v2Y2 = v18.y;
- v2Z2 = v18.z;
- var v122;
- var v12X2;
- var v12Y2;
- var v12Z2;
- v12X2 = v2X2 - v1X2;
- v12Y2 = v2Y2 - v1Y2;
- v12Z2 = v2Z2 - v1Z2;
- var d1 = v12X2 * v12X2 + v12Y2 * v12Y2 + v12Z2 * v12Z2;
- var t1 = v12X2 * v1X2 + v12Y2 * v1Y2 + v12Z2 * v1Z2;
- t1 = -t1 / d1;
- var b;
- if(t1 < 0) {
- var v19 = closest;
- v19.x = v1X2;
- v19.y = v1Y2;
- v19.z = v1Z2;
- b = 1;
- } else if(t1 > 1) {
- var v20 = closest;
- v20.x = v2X2;
- v20.y = v2Y2;
- v20.z = v2Z2;
- b = 2;
- } else {
- var p1;
- var pX1;
- var pY1;
- var pZ1;
- pX1 = v1X2 + v12X2 * t1;
- pY1 = v1Y2 + v12Y2 * t1;
- pZ1 = v1Z2 + v12Z2 * t1;
- var v25 = closest;
- v25.x = pX1;
- v25.y = pY1;
- v25.z = pZ1;
- b = 3;
- }
- var d2 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- mini = b;
- mind = d2;
- var v26 = closest;
- minvX = v26.x;
- minvY = v26.y;
- minvZ = v26.z;
- }
- if(d23 < 0) {
- var v110;
- var v1X3;
- var v1Y3;
- var v1Z3;
- var v27;
- var v2X3;
- var v2Y3;
- var v2Z3;
- var v28 = vec2;
- v1X3 = v28.x;
- v1Y3 = v28.y;
- v1Z3 = v28.z;
- var v29 = vec3;
- v2X3 = v29.x;
- v2Y3 = v29.y;
- v2Z3 = v29.z;
- var v123;
- var v12X3;
- var v12Y3;
- var v12Z3;
- v12X3 = v2X3 - v1X3;
- v12Y3 = v2Y3 - v1Y3;
- v12Z3 = v2Z3 - v1Z3;
- var d3 = v12X3 * v12X3 + v12Y3 * v12Y3 + v12Z3 * v12Z3;
- var t2 = v12X3 * v1X3 + v12Y3 * v1Y3 + v12Z3 * v1Z3;
- t2 = -t2 / d3;
- var b1;
- if(t2 < 0) {
- var v30 = closest;
- v30.x = v1X3;
- v30.y = v1Y3;
- v30.z = v1Z3;
- b1 = 1;
- } else if(t2 > 1) {
- var v32 = closest;
- v32.x = v2X3;
- v32.y = v2Y3;
- v32.z = v2Z3;
- b1 = 2;
- } else {
- var p2;
- var pX2;
- var pY2;
- var pZ2;
- pX2 = v1X3 + v12X3 * t2;
- pY2 = v1Y3 + v12Y3 * t2;
- pZ2 = v1Z3 + v12Z3 * t2;
- var v33 = closest;
- v33.x = pX2;
- v33.y = pY2;
- v33.z = pZ2;
- b1 = 3;
- }
- var d4 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind < 0 || d4 < mind) {
- mini = b1 << 1;
- mind = d4;
- var v34 = closest;
- minvX = v34.x;
- minvY = v34.y;
- minvZ = v34.z;
- }
- }
- if(d31 < 0) {
- var v111;
- var v1X4;
- var v1Y4;
- var v1Z4;
- var v210;
- var v2X4;
- var v2Y4;
- var v2Z4;
- var v35 = vec1;
- v1X4 = v35.x;
- v1Y4 = v35.y;
- v1Z4 = v35.z;
- var v36 = vec3;
- v2X4 = v36.x;
- v2Y4 = v36.y;
- v2Z4 = v36.z;
- var v124;
- var v12X4;
- var v12Y4;
- var v12Z4;
- v12X4 = v2X4 - v1X4;
- v12Y4 = v2Y4 - v1Y4;
- v12Z4 = v2Z4 - v1Z4;
- var d5 = v12X4 * v12X4 + v12Y4 * v12Y4 + v12Z4 * v12Z4;
- var t3 = v12X4 * v1X4 + v12Y4 * v1Y4 + v12Z4 * v1Z4;
- t3 = -t3 / d5;
- var b2;
- if(t3 < 0) {
- var v37 = closest;
- v37.x = v1X4;
- v37.y = v1Y4;
- v37.z = v1Z4;
- b2 = 1;
- } else if(t3 > 1) {
- var v38 = closest;
- v38.x = v2X4;
- v38.y = v2Y4;
- v38.z = v2Z4;
- b2 = 2;
- } else {
- var p3;
- var pX3;
- var pY3;
- var pZ3;
- pX3 = v1X4 + v12X4 * t3;
- pY3 = v1Y4 + v12Y4 * t3;
- pZ3 = v1Z4 + v12Z4 * t3;
- var v39 = closest;
- v39.x = pX3;
- v39.y = pY3;
- v39.z = pZ3;
- b2 = 3;
- }
- var d6 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind < 0 || d6 < mind) {
- mini = b2 & 1 | (b2 & 2) << 1;
- mind = d6;
- var v40 = closest;
- minvX = v40.x;
- minvY = v40.y;
- minvZ = v40.z;
- }
- }
- if(mind > 0) {
- var v41 = closest;
- v41.x = minvX;
- v41.y = minvY;
- v41.z = minvZ;
- v3 = mini;
- } else {
- var l = nX * nX + nY * nY + nZ * nZ;
- if(l > 0) {
- l = 1 / Math.sqrt(l);
- }
- nX *= l;
- nY *= l;
- nZ *= l;
- var dn = v1X1 * nX + v1Y1 * nY + v1Z1 * nZ;
- var l2 = nX * nX + nY * nY + nZ * nZ;
- l2 = dn / l2;
- minvX = nX * l2;
- minvY = nY * l2;
- minvZ = nZ * l2;
- var v42 = closest;
- v42.x = minvX;
- v42.y = minvY;
- v42.z = minvZ;
- v3 = 7;
- }
- break;
- case 4:
- var vec11 = s[0];
- var vec21 = s[1];
- var vec31 = s[2];
- var vec4 = s[3];
- var v112;
- var v1X5;
- var v1Y5;
- var v1Z5;
- var v211;
- var v2X5;
- var v2Y5;
- var v2Z5;
- var v310;
- var v3X1;
- var v3Y1;
- var v3Z1;
- var v43;
- var v4X;
- var v4Y;
- var v4Z;
- var v125;
- var v12X5;
- var v12Y5;
- var v12Z5;
- var v131;
- var v13X;
- var v13Y;
- var v13Z;
- var v141;
- var v14X;
- var v14Y;
- var v14Z;
- var v231;
- var v23X1;
- var v23Y1;
- var v23Z1;
- var v241;
- var v24X;
- var v24Y;
- var v24Z;
- var v341;
- var v34X;
- var v34Y;
- var v34Z;
- var v44 = vec11;
- v1X5 = v44.x;
- v1Y5 = v44.y;
- v1Z5 = v44.z;
- var v45 = vec21;
- v2X5 = v45.x;
- v2Y5 = v45.y;
- v2Z5 = v45.z;
- var v46 = vec31;
- v3X1 = v46.x;
- v3Y1 = v46.y;
- v3Z1 = v46.z;
- var v47 = vec4;
- v4X = v47.x;
- v4Y = v47.y;
- v4Z = v47.z;
- v12X5 = v2X5 - v1X5;
- v12Y5 = v2Y5 - v1Y5;
- v12Z5 = v2Z5 - v1Z5;
- v13X = v3X1 - v1X5;
- v13Y = v3Y1 - v1Y5;
- v13Z = v3Z1 - v1Z5;
- v14X = v4X - v1X5;
- v14Y = v4Y - v1Y5;
- v14Z = v4Z - v1Z5;
- v23X1 = v3X1 - v2X5;
- v23Y1 = v3Y1 - v2Y5;
- v23Z1 = v3Z1 - v2Z5;
- v24X = v4X - v2X5;
- v24Y = v4Y - v2Y5;
- v24Z = v4Z - v2Z5;
- v34X = v4X - v3X1;
- v34Y = v4Y - v3Y1;
- v34Z = v4Z - v3Z1;
- var rev;
- var n123;
- var n123X;
- var n123Y;
- var n123Z;
- var n134;
- var n134X;
- var n134Y;
- var n134Z;
- var n142;
- var n142X;
- var n142Y;
- var n142Z;
- var n243;
- var n243X;
- var n243Y;
- var n243Z;
- var n1;
- var nX1;
- var nY1;
- var nZ1;
- n123X = v12Y5 * v13Z - v12Z5 * v13Y;
- n123Y = v12Z5 * v13X - v12X5 * v13Z;
- n123Z = v12X5 * v13Y - v12Y5 * v13X;
- n134X = v13Y * v14Z - v13Z * v14Y;
- n134Y = v13Z * v14X - v13X * v14Z;
- n134Z = v13X * v14Y - v13Y * v14X;
- n142X = v14Y * v12Z5 - v14Z * v12Y5;
- n142Y = v14Z * v12X5 - v14X * v12Z5;
- n142Z = v14X * v12Y5 - v14Y * v12X5;
- n243X = v24Y * v23Z1 - v24Z * v23Y1;
- n243Y = v24Z * v23X1 - v24X * v23Z1;
- n243Z = v24X * v23Y1 - v24Y * v23X1;
- var sign = v12X5 * n243X + v12Y5 * n243Y + v12Z5 * n243Z > 0 ? 1 : -1;
- var d123 = v1X5 * n123X + v1Y5 * n123Y + v1Z5 * n123Z;
- var d134 = v1X5 * n134X + v1Y5 * n134Y + v1Z5 * n134Z;
- var d142 = v1X5 * n142X + v1Y5 * n142Y + v1Z5 * n142Z;
- var d243 = v2X5 * n243X + v2Y5 * n243Y + v2Z5 * n243Z;
- var mind1 = -1;
- var minv1;
- var minvX1;
- var minvY1;
- var minvZ1;
- var mini1 = 0;
- minvX1 = 0;
- minvY1 = 0;
- minvZ1 = 0;
- if(d123 * sign < 0) {
- var v113;
- var v1X6;
- var v1Y6;
- var v1Z6;
- var v212;
- var v2X6;
- var v2Y6;
- var v2Z6;
- var v312;
- var v3X2;
- var v3Y2;
- var v3Z2;
- var v126;
- var v12X6;
- var v12Y6;
- var v12Z6;
- var v232;
- var v23X2;
- var v23Y2;
- var v23Z2;
- var v313;
- var v31X1;
- var v31Y1;
- var v31Z1;
- var v48 = vec11;
- v1X6 = v48.x;
- v1Y6 = v48.y;
- v1Z6 = v48.z;
- var v49 = vec21;
- v2X6 = v49.x;
- v2Y6 = v49.y;
- v2Z6 = v49.z;
- var v50 = vec31;
- v3X2 = v50.x;
- v3Y2 = v50.y;
- v3Z2 = v50.z;
- v12X6 = v2X6 - v1X6;
- v12Y6 = v2Y6 - v1Y6;
- v12Z6 = v2Z6 - v1Z6;
- v23X2 = v3X2 - v2X6;
- v23Y2 = v3Y2 - v2Y6;
- v23Z2 = v3Z2 - v2Z6;
- v31X1 = v1X6 - v3X2;
- v31Y1 = v1Y6 - v3Y2;
- v31Z1 = v1Z6 - v3Z2;
- var n2;
- var nX2;
- var nY2;
- var nZ2;
- nX2 = v12Y6 * v23Z2 - v12Z6 * v23Y2;
- nY2 = v12Z6 * v23X2 - v12X6 * v23Z2;
- nZ2 = v12X6 * v23Y2 - v12Y6 * v23X2;
- var n121;
- var n12X1;
- var n12Y1;
- var n12Z1;
- var n231;
- var n23X1;
- var n23Y1;
- var n23Z1;
- var n311;
- var n31X1;
- var n31Y1;
- var n31Z1;
- n12X1 = v12Y6 * nZ2 - v12Z6 * nY2;
- n12Y1 = v12Z6 * nX2 - v12X6 * nZ2;
- n12Z1 = v12X6 * nY2 - v12Y6 * nX2;
- n23X1 = v23Y2 * nZ2 - v23Z2 * nY2;
- n23Y1 = v23Z2 * nX2 - v23X2 * nZ2;
- n23Z1 = v23X2 * nY2 - v23Y2 * nX2;
- n31X1 = v31Y1 * nZ2 - v31Z1 * nY2;
- n31Y1 = v31Z1 * nX2 - v31X1 * nZ2;
- n31Z1 = v31X1 * nY2 - v31Y1 * nX2;
- var d121 = v1X6 * n12X1 + v1Y6 * n12Y1 + v1Z6 * n12Z1;
- var d231 = v2X6 * n23X1 + v2Y6 * n23Y1 + v2Z6 * n23Z1;
- var d311 = v3X2 * n31X1 + v3Y2 * n31Y1 + v3Z2 * n31Z1;
- var mind2 = -1;
- var minv2;
- var minvX2;
- var minvY2;
- var minvZ2;
- var mini2 = 0;
- minvX2 = 0;
- minvY2 = 0;
- minvZ2 = 0;
- if(d121 < 0) {
- var v114;
- var v1X7;
- var v1Y7;
- var v1Z7;
- var v213;
- var v2X7;
- var v2Y7;
- var v2Z7;
- var v51 = vec11;
- v1X7 = v51.x;
- v1Y7 = v51.y;
- v1Z7 = v51.z;
- var v52 = vec21;
- v2X7 = v52.x;
- v2Y7 = v52.y;
- v2Z7 = v52.z;
- var v127;
- var v12X7;
- var v12Y7;
- var v12Z7;
- v12X7 = v2X7 - v1X7;
- v12Y7 = v2Y7 - v1Y7;
- v12Z7 = v2Z7 - v1Z7;
- var d7 = v12X7 * v12X7 + v12Y7 * v12Y7 + v12Z7 * v12Z7;
- var t4 = v12X7 * v1X7 + v12Y7 * v1Y7 + v12Z7 * v1Z7;
- t4 = -t4 / d7;
- var b3;
- if(t4 < 0) {
- var v53 = closest;
- v53.x = v1X7;
- v53.y = v1Y7;
- v53.z = v1Z7;
- b3 = 1;
- } else if(t4 > 1) {
- var v54 = closest;
- v54.x = v2X7;
- v54.y = v2Y7;
- v54.z = v2Z7;
- b3 = 2;
- } else {
- var p4;
- var pX4;
- var pY4;
- var pZ4;
- pX4 = v1X7 + v12X7 * t4;
- pY4 = v1Y7 + v12Y7 * t4;
- pZ4 = v1Z7 + v12Z7 * t4;
- var v55 = closest;
- v55.x = pX4;
- v55.y = pY4;
- v55.z = pZ4;
- b3 = 3;
- }
- var d8 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- mini2 = b3;
- mind2 = d8;
- var v56 = closest;
- minvX2 = v56.x;
- minvY2 = v56.y;
- minvZ2 = v56.z;
- }
- if(d231 < 0) {
- var v115;
- var v1X8;
- var v1Y8;
- var v1Z8;
- var v214;
- var v2X8;
- var v2Y8;
- var v2Z8;
- var v57 = vec21;
- v1X8 = v57.x;
- v1Y8 = v57.y;
- v1Z8 = v57.z;
- var v58 = vec31;
- v2X8 = v58.x;
- v2Y8 = v58.y;
- v2Z8 = v58.z;
- var v128;
- var v12X8;
- var v12Y8;
- var v12Z8;
- v12X8 = v2X8 - v1X8;
- v12Y8 = v2Y8 - v1Y8;
- v12Z8 = v2Z8 - v1Z8;
- var d9 = v12X8 * v12X8 + v12Y8 * v12Y8 + v12Z8 * v12Z8;
- var t5 = v12X8 * v1X8 + v12Y8 * v1Y8 + v12Z8 * v1Z8;
- t5 = -t5 / d9;
- var b4;
- if(t5 < 0) {
- var v59 = closest;
- v59.x = v1X8;
- v59.y = v1Y8;
- v59.z = v1Z8;
- b4 = 1;
- } else if(t5 > 1) {
- var v60 = closest;
- v60.x = v2X8;
- v60.y = v2Y8;
- v60.z = v2Z8;
- b4 = 2;
- } else {
- var p5;
- var pX5;
- var pY5;
- var pZ5;
- pX5 = v1X8 + v12X8 * t5;
- pY5 = v1Y8 + v12Y8 * t5;
- pZ5 = v1Z8 + v12Z8 * t5;
- var v61 = closest;
- v61.x = pX5;
- v61.y = pY5;
- v61.z = pZ5;
- b4 = 3;
- }
- var d10 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind2 < 0 || d10 < mind2) {
- mini2 = b4 << 1;
- mind2 = d10;
- var v62 = closest;
- minvX2 = v62.x;
- minvY2 = v62.y;
- minvZ2 = v62.z;
- }
- }
- if(d311 < 0) {
- var v116;
- var v1X9;
- var v1Y9;
- var v1Z9;
- var v215;
- var v2X9;
- var v2Y9;
- var v2Z9;
- var v63 = vec11;
- v1X9 = v63.x;
- v1Y9 = v63.y;
- v1Z9 = v63.z;
- var v64 = vec31;
- v2X9 = v64.x;
- v2Y9 = v64.y;
- v2Z9 = v64.z;
- var v129;
- var v12X9;
- var v12Y9;
- var v12Z9;
- v12X9 = v2X9 - v1X9;
- v12Y9 = v2Y9 - v1Y9;
- v12Z9 = v2Z9 - v1Z9;
- var d11 = v12X9 * v12X9 + v12Y9 * v12Y9 + v12Z9 * v12Z9;
- var t6 = v12X9 * v1X9 + v12Y9 * v1Y9 + v12Z9 * v1Z9;
- t6 = -t6 / d11;
- var b5;
- if(t6 < 0) {
- var v65 = closest;
- v65.x = v1X9;
- v65.y = v1Y9;
- v65.z = v1Z9;
- b5 = 1;
- } else if(t6 > 1) {
- var v66 = closest;
- v66.x = v2X9;
- v66.y = v2Y9;
- v66.z = v2Z9;
- b5 = 2;
- } else {
- var p6;
- var pX6;
- var pY6;
- var pZ6;
- pX6 = v1X9 + v12X9 * t6;
- pY6 = v1Y9 + v12Y9 * t6;
- pZ6 = v1Z9 + v12Z9 * t6;
- var v67 = closest;
- v67.x = pX6;
- v67.y = pY6;
- v67.z = pZ6;
- b5 = 3;
- }
- var d13 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind2 < 0 || d13 < mind2) {
- mini2 = b5 & 1 | (b5 & 2) << 1;
- mind2 = d13;
- var v68 = closest;
- minvX2 = v68.x;
- minvY2 = v68.y;
- minvZ2 = v68.z;
- }
- }
- var b6;
- if(mind2 > 0) {
- var v69 = closest;
- v69.x = minvX2;
- v69.y = minvY2;
- v69.z = minvZ2;
- b6 = mini2;
- } else {
- var l1 = nX2 * nX2 + nY2 * nY2 + nZ2 * nZ2;
- if(l1 > 0) {
- l1 = 1 / Math.sqrt(l1);
- }
- nX2 *= l1;
- nY2 *= l1;
- nZ2 *= l1;
- var dn1 = v1X6 * nX2 + v1Y6 * nY2 + v1Z6 * nZ2;
- var l21 = nX2 * nX2 + nY2 * nY2 + nZ2 * nZ2;
- l21 = dn1 / l21;
- minvX2 = nX2 * l21;
- minvY2 = nY2 * l21;
- minvZ2 = nZ2 * l21;
- var v70 = closest;
- v70.x = minvX2;
- v70.y = minvY2;
- v70.z = minvZ2;
- b6 = 7;
- }
- var d14 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- mini1 = b6;
- mind1 = d14;
- var v71 = closest;
- minvX1 = v71.x;
- minvY1 = v71.y;
- minvZ1 = v71.z;
- }
- if(d134 * sign < 0) {
- var v117;
- var v1X10;
- var v1Y10;
- var v1Z10;
- var v216;
- var v2X10;
- var v2Y10;
- var v2Z10;
- var v314;
- var v3X3;
- var v3Y3;
- var v3Z3;
- var v1210;
- var v12X10;
- var v12Y10;
- var v12Z10;
- var v233;
- var v23X3;
- var v23Y3;
- var v23Z3;
- var v315;
- var v31X2;
- var v31Y2;
- var v31Z2;
- var v72 = vec11;
- v1X10 = v72.x;
- v1Y10 = v72.y;
- v1Z10 = v72.z;
- var v73 = vec31;
- v2X10 = v73.x;
- v2Y10 = v73.y;
- v2Z10 = v73.z;
- var v74 = vec4;
- v3X3 = v74.x;
- v3Y3 = v74.y;
- v3Z3 = v74.z;
- v12X10 = v2X10 - v1X10;
- v12Y10 = v2Y10 - v1Y10;
- v12Z10 = v2Z10 - v1Z10;
- v23X3 = v3X3 - v2X10;
- v23Y3 = v3Y3 - v2Y10;
- v23Z3 = v3Z3 - v2Z10;
- v31X2 = v1X10 - v3X3;
- v31Y2 = v1Y10 - v3Y3;
- v31Z2 = v1Z10 - v3Z3;
- var n3;
- var nX3;
- var nY3;
- var nZ3;
- nX3 = v12Y10 * v23Z3 - v12Z10 * v23Y3;
- nY3 = v12Z10 * v23X3 - v12X10 * v23Z3;
- nZ3 = v12X10 * v23Y3 - v12Y10 * v23X3;
- var n122;
- var n12X2;
- var n12Y2;
- var n12Z2;
- var n232;
- var n23X2;
- var n23Y2;
- var n23Z2;
- var n312;
- var n31X2;
- var n31Y2;
- var n31Z2;
- n12X2 = v12Y10 * nZ3 - v12Z10 * nY3;
- n12Y2 = v12Z10 * nX3 - v12X10 * nZ3;
- n12Z2 = v12X10 * nY3 - v12Y10 * nX3;
- n23X2 = v23Y3 * nZ3 - v23Z3 * nY3;
- n23Y2 = v23Z3 * nX3 - v23X3 * nZ3;
- n23Z2 = v23X3 * nY3 - v23Y3 * nX3;
- n31X2 = v31Y2 * nZ3 - v31Z2 * nY3;
- n31Y2 = v31Z2 * nX3 - v31X2 * nZ3;
- n31Z2 = v31X2 * nY3 - v31Y2 * nX3;
- var d122 = v1X10 * n12X2 + v1Y10 * n12Y2 + v1Z10 * n12Z2;
- var d232 = v2X10 * n23X2 + v2Y10 * n23Y2 + v2Z10 * n23Z2;
- var d312 = v3X3 * n31X2 + v3Y3 * n31Y2 + v3Z3 * n31Z2;
- var mind3 = -1;
- var minv3;
- var minvX3;
- var minvY3;
- var minvZ3;
- var mini3 = 0;
- minvX3 = 0;
- minvY3 = 0;
- minvZ3 = 0;
- if(d122 < 0) {
- var v118;
- var v1X11;
- var v1Y11;
- var v1Z11;
- var v217;
- var v2X11;
- var v2Y11;
- var v2Z11;
- var v75 = vec11;
- v1X11 = v75.x;
- v1Y11 = v75.y;
- v1Z11 = v75.z;
- var v76 = vec31;
- v2X11 = v76.x;
- v2Y11 = v76.y;
- v2Z11 = v76.z;
- var v1211;
- var v12X11;
- var v12Y11;
- var v12Z11;
- v12X11 = v2X11 - v1X11;
- v12Y11 = v2Y11 - v1Y11;
- v12Z11 = v2Z11 - v1Z11;
- var d15 = v12X11 * v12X11 + v12Y11 * v12Y11 + v12Z11 * v12Z11;
- var t7 = v12X11 * v1X11 + v12Y11 * v1Y11 + v12Z11 * v1Z11;
- t7 = -t7 / d15;
- var b7;
- if(t7 < 0) {
- var v77 = closest;
- v77.x = v1X11;
- v77.y = v1Y11;
- v77.z = v1Z11;
- b7 = 1;
- } else if(t7 > 1) {
- var v78 = closest;
- v78.x = v2X11;
- v78.y = v2Y11;
- v78.z = v2Z11;
- b7 = 2;
- } else {
- var p7;
- var pX7;
- var pY7;
- var pZ7;
- pX7 = v1X11 + v12X11 * t7;
- pY7 = v1Y11 + v12Y11 * t7;
- pZ7 = v1Z11 + v12Z11 * t7;
- var v79 = closest;
- v79.x = pX7;
- v79.y = pY7;
- v79.z = pZ7;
- b7 = 3;
- }
- var d16 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- mini3 = b7;
- mind3 = d16;
- var v80 = closest;
- minvX3 = v80.x;
- minvY3 = v80.y;
- minvZ3 = v80.z;
- }
- if(d232 < 0) {
- var v119;
- var v1X12;
- var v1Y12;
- var v1Z12;
- var v218;
- var v2X12;
- var v2Y12;
- var v2Z12;
- var v81 = vec31;
- v1X12 = v81.x;
- v1Y12 = v81.y;
- v1Z12 = v81.z;
- var v82 = vec4;
- v2X12 = v82.x;
- v2Y12 = v82.y;
- v2Z12 = v82.z;
- var v1212;
- var v12X12;
- var v12Y12;
- var v12Z12;
- v12X12 = v2X12 - v1X12;
- v12Y12 = v2Y12 - v1Y12;
- v12Z12 = v2Z12 - v1Z12;
- var d17 = v12X12 * v12X12 + v12Y12 * v12Y12 + v12Z12 * v12Z12;
- var t8 = v12X12 * v1X12 + v12Y12 * v1Y12 + v12Z12 * v1Z12;
- t8 = -t8 / d17;
- var b8;
- if(t8 < 0) {
- var v83 = closest;
- v83.x = v1X12;
- v83.y = v1Y12;
- v83.z = v1Z12;
- b8 = 1;
- } else if(t8 > 1) {
- var v84 = closest;
- v84.x = v2X12;
- v84.y = v2Y12;
- v84.z = v2Z12;
- b8 = 2;
- } else {
- var p8;
- var pX8;
- var pY8;
- var pZ8;
- pX8 = v1X12 + v12X12 * t8;
- pY8 = v1Y12 + v12Y12 * t8;
- pZ8 = v1Z12 + v12Z12 * t8;
- var v85 = closest;
- v85.x = pX8;
- v85.y = pY8;
- v85.z = pZ8;
- b8 = 3;
- }
- var d18 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind3 < 0 || d18 < mind3) {
- mini3 = b8 << 1;
- mind3 = d18;
- var v86 = closest;
- minvX3 = v86.x;
- minvY3 = v86.y;
- minvZ3 = v86.z;
- }
- }
- if(d312 < 0) {
- var v120;
- var v1X13;
- var v1Y13;
- var v1Z13;
- var v219;
- var v2X13;
- var v2Y13;
- var v2Z13;
- var v87 = vec11;
- v1X13 = v87.x;
- v1Y13 = v87.y;
- v1Z13 = v87.z;
- var v88 = vec4;
- v2X13 = v88.x;
- v2Y13 = v88.y;
- v2Z13 = v88.z;
- var v1213;
- var v12X13;
- var v12Y13;
- var v12Z13;
- v12X13 = v2X13 - v1X13;
- v12Y13 = v2Y13 - v1Y13;
- v12Z13 = v2Z13 - v1Z13;
- var d19 = v12X13 * v12X13 + v12Y13 * v12Y13 + v12Z13 * v12Z13;
- var t9 = v12X13 * v1X13 + v12Y13 * v1Y13 + v12Z13 * v1Z13;
- t9 = -t9 / d19;
- var b9;
- if(t9 < 0) {
- var v89 = closest;
- v89.x = v1X13;
- v89.y = v1Y13;
- v89.z = v1Z13;
- b9 = 1;
- } else if(t9 > 1) {
- var v90 = closest;
- v90.x = v2X13;
- v90.y = v2Y13;
- v90.z = v2Z13;
- b9 = 2;
- } else {
- var p9;
- var pX9;
- var pY9;
- var pZ9;
- pX9 = v1X13 + v12X13 * t9;
- pY9 = v1Y13 + v12Y13 * t9;
- pZ9 = v1Z13 + v12Z13 * t9;
- var v91 = closest;
- v91.x = pX9;
- v91.y = pY9;
- v91.z = pZ9;
- b9 = 3;
- }
- var d20 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind3 < 0 || d20 < mind3) {
- mini3 = b9 & 1 | (b9 & 2) << 1;
- mind3 = d20;
- var v92 = closest;
- minvX3 = v92.x;
- minvY3 = v92.y;
- minvZ3 = v92.z;
- }
- }
- var b10;
- if(mind3 > 0) {
- var v93 = closest;
- v93.x = minvX3;
- v93.y = minvY3;
- v93.z = minvZ3;
- b10 = mini3;
- } else {
- var l3 = nX3 * nX3 + nY3 * nY3 + nZ3 * nZ3;
- if(l3 > 0) {
- l3 = 1 / Math.sqrt(l3);
- }
- nX3 *= l3;
- nY3 *= l3;
- nZ3 *= l3;
- var dn2 = v1X10 * nX3 + v1Y10 * nY3 + v1Z10 * nZ3;
- var l22 = nX3 * nX3 + nY3 * nY3 + nZ3 * nZ3;
- l22 = dn2 / l22;
- minvX3 = nX3 * l22;
- minvY3 = nY3 * l22;
- minvZ3 = nZ3 * l22;
- var v94 = closest;
- v94.x = minvX3;
- v94.y = minvY3;
- v94.z = minvZ3;
- b10 = 7;
- }
- var d21 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind1 < 0 || d21 < mind1) {
- mini1 = b10 & 1 | (b10 & 6) << 1;
- mind1 = d21;
- var v95 = closest;
- minvX1 = v95.x;
- minvY1 = v95.y;
- minvZ1 = v95.z;
- }
- }
- if(d142 * sign < 0) {
- var v130;
- var v1X14;
- var v1Y14;
- var v1Z14;
- var v220;
- var v2X14;
- var v2Y14;
- var v2Z14;
- var v316;
- var v3X4;
- var v3Y4;
- var v3Z4;
- var v1214;
- var v12X14;
- var v12Y14;
- var v12Z14;
- var v234;
- var v23X4;
- var v23Y4;
- var v23Z4;
- var v317;
- var v31X3;
- var v31Y3;
- var v31Z3;
- var v96 = vec11;
- v1X14 = v96.x;
- v1Y14 = v96.y;
- v1Z14 = v96.z;
- var v97 = vec21;
- v2X14 = v97.x;
- v2Y14 = v97.y;
- v2Z14 = v97.z;
- var v98 = vec4;
- v3X4 = v98.x;
- v3Y4 = v98.y;
- v3Z4 = v98.z;
- v12X14 = v2X14 - v1X14;
- v12Y14 = v2Y14 - v1Y14;
- v12Z14 = v2Z14 - v1Z14;
- v23X4 = v3X4 - v2X14;
- v23Y4 = v3Y4 - v2Y14;
- v23Z4 = v3Z4 - v2Z14;
- v31X3 = v1X14 - v3X4;
- v31Y3 = v1Y14 - v3Y4;
- v31Z3 = v1Z14 - v3Z4;
- var n4;
- var nX4;
- var nY4;
- var nZ4;
- nX4 = v12Y14 * v23Z4 - v12Z14 * v23Y4;
- nY4 = v12Z14 * v23X4 - v12X14 * v23Z4;
- nZ4 = v12X14 * v23Y4 - v12Y14 * v23X4;
- var n124;
- var n12X3;
- var n12Y3;
- var n12Z3;
- var n233;
- var n23X3;
- var n23Y3;
- var n23Z3;
- var n313;
- var n31X3;
- var n31Y3;
- var n31Z3;
- n12X3 = v12Y14 * nZ4 - v12Z14 * nY4;
- n12Y3 = v12Z14 * nX4 - v12X14 * nZ4;
- n12Z3 = v12X14 * nY4 - v12Y14 * nX4;
- n23X3 = v23Y4 * nZ4 - v23Z4 * nY4;
- n23Y3 = v23Z4 * nX4 - v23X4 * nZ4;
- n23Z3 = v23X4 * nY4 - v23Y4 * nX4;
- n31X3 = v31Y3 * nZ4 - v31Z3 * nY4;
- n31Y3 = v31Z3 * nX4 - v31X3 * nZ4;
- n31Z3 = v31X3 * nY4 - v31Y3 * nX4;
- var d124 = v1X14 * n12X3 + v1Y14 * n12Y3 + v1Z14 * n12Z3;
- var d233 = v2X14 * n23X3 + v2Y14 * n23Y3 + v2Z14 * n23Z3;
- var d313 = v3X4 * n31X3 + v3Y4 * n31Y3 + v3Z4 * n31Z3;
- var mind4 = -1;
- var minv4;
- var minvX4;
- var minvY4;
- var minvZ4;
- var mini4 = 0;
- minvX4 = 0;
- minvY4 = 0;
- minvZ4 = 0;
- if(d124 < 0) {
- var v132;
- var v1X15;
- var v1Y15;
- var v1Z15;
- var v221;
- var v2X15;
- var v2Y15;
- var v2Z15;
- var v99 = vec11;
- v1X15 = v99.x;
- v1Y15 = v99.y;
- v1Z15 = v99.z;
- var v100 = vec21;
- v2X15 = v100.x;
- v2Y15 = v100.y;
- v2Z15 = v100.z;
- var v1215;
- var v12X15;
- var v12Y15;
- var v12Z15;
- v12X15 = v2X15 - v1X15;
- v12Y15 = v2Y15 - v1Y15;
- v12Z15 = v2Z15 - v1Z15;
- var d22 = v12X15 * v12X15 + v12Y15 * v12Y15 + v12Z15 * v12Z15;
- var t10 = v12X15 * v1X15 + v12Y15 * v1Y15 + v12Z15 * v1Z15;
- t10 = -t10 / d22;
- var b11;
- if(t10 < 0) {
- var v101 = closest;
- v101.x = v1X15;
- v101.y = v1Y15;
- v101.z = v1Z15;
- b11 = 1;
- } else if(t10 > 1) {
- var v102 = closest;
- v102.x = v2X15;
- v102.y = v2Y15;
- v102.z = v2Z15;
- b11 = 2;
- } else {
- var p10;
- var pX10;
- var pY10;
- var pZ10;
- pX10 = v1X15 + v12X15 * t10;
- pY10 = v1Y15 + v12Y15 * t10;
- pZ10 = v1Z15 + v12Z15 * t10;
- var v103 = closest;
- v103.x = pX10;
- v103.y = pY10;
- v103.z = pZ10;
- b11 = 3;
- }
- var d24 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- mini4 = b11;
- mind4 = d24;
- var v104 = closest;
- minvX4 = v104.x;
- minvY4 = v104.y;
- minvZ4 = v104.z;
- }
- if(d233 < 0) {
- var v133;
- var v1X16;
- var v1Y16;
- var v1Z16;
- var v222;
- var v2X16;
- var v2Y16;
- var v2Z16;
- var v105 = vec21;
- v1X16 = v105.x;
- v1Y16 = v105.y;
- v1Z16 = v105.z;
- var v106 = vec4;
- v2X16 = v106.x;
- v2Y16 = v106.y;
- v2Z16 = v106.z;
- var v1216;
- var v12X16;
- var v12Y16;
- var v12Z16;
- v12X16 = v2X16 - v1X16;
- v12Y16 = v2Y16 - v1Y16;
- v12Z16 = v2Z16 - v1Z16;
- var d25 = v12X16 * v12X16 + v12Y16 * v12Y16 + v12Z16 * v12Z16;
- var t11 = v12X16 * v1X16 + v12Y16 * v1Y16 + v12Z16 * v1Z16;
- t11 = -t11 / d25;
- var b12;
- if(t11 < 0) {
- var v107 = closest;
- v107.x = v1X16;
- v107.y = v1Y16;
- v107.z = v1Z16;
- b12 = 1;
- } else if(t11 > 1) {
- var v108 = closest;
- v108.x = v2X16;
- v108.y = v2Y16;
- v108.z = v2Z16;
- b12 = 2;
- } else {
- var p11;
- var pX11;
- var pY11;
- var pZ11;
- pX11 = v1X16 + v12X16 * t11;
- pY11 = v1Y16 + v12Y16 * t11;
- pZ11 = v1Z16 + v12Z16 * t11;
- var v109 = closest;
- v109.x = pX11;
- v109.y = pY11;
- v109.z = pZ11;
- b12 = 3;
- }
- var d26 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind4 < 0 || d26 < mind4) {
- mini4 = b12 << 1;
- mind4 = d26;
- var v134 = closest;
- minvX4 = v134.x;
- minvY4 = v134.y;
- minvZ4 = v134.z;
- }
- }
- if(d313 < 0) {
- var v135;
- var v1X17;
- var v1Y17;
- var v1Z17;
- var v223;
- var v2X17;
- var v2Y17;
- var v2Z17;
- var v136 = vec11;
- v1X17 = v136.x;
- v1Y17 = v136.y;
- v1Z17 = v136.z;
- var v137 = vec4;
- v2X17 = v137.x;
- v2Y17 = v137.y;
- v2Z17 = v137.z;
- var v1217;
- var v12X17;
- var v12Y17;
- var v12Z17;
- v12X17 = v2X17 - v1X17;
- v12Y17 = v2Y17 - v1Y17;
- v12Z17 = v2Z17 - v1Z17;
- var d27 = v12X17 * v12X17 + v12Y17 * v12Y17 + v12Z17 * v12Z17;
- var t12 = v12X17 * v1X17 + v12Y17 * v1Y17 + v12Z17 * v1Z17;
- t12 = -t12 / d27;
- var b13;
- if(t12 < 0) {
- var v138 = closest;
- v138.x = v1X17;
- v138.y = v1Y17;
- v138.z = v1Z17;
- b13 = 1;
- } else if(t12 > 1) {
- var v139 = closest;
- v139.x = v2X17;
- v139.y = v2Y17;
- v139.z = v2Z17;
- b13 = 2;
- } else {
- var p12;
- var pX12;
- var pY12;
- var pZ12;
- pX12 = v1X17 + v12X17 * t12;
- pY12 = v1Y17 + v12Y17 * t12;
- pZ12 = v1Z17 + v12Z17 * t12;
- var v140 = closest;
- v140.x = pX12;
- v140.y = pY12;
- v140.z = pZ12;
- b13 = 3;
- }
- var d28 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind4 < 0 || d28 < mind4) {
- mini4 = b13 & 1 | (b13 & 2) << 1;
- mind4 = d28;
- var v142 = closest;
- minvX4 = v142.x;
- minvY4 = v142.y;
- minvZ4 = v142.z;
- }
- }
- var b14;
- if(mind4 > 0) {
- var v143 = closest;
- v143.x = minvX4;
- v143.y = minvY4;
- v143.z = minvZ4;
- b14 = mini4;
- } else {
- var l4 = nX4 * nX4 + nY4 * nY4 + nZ4 * nZ4;
- if(l4 > 0) {
- l4 = 1 / Math.sqrt(l4);
- }
- nX4 *= l4;
- nY4 *= l4;
- nZ4 *= l4;
- var dn3 = v1X14 * nX4 + v1Y14 * nY4 + v1Z14 * nZ4;
- var l23 = nX4 * nX4 + nY4 * nY4 + nZ4 * nZ4;
- l23 = dn3 / l23;
- minvX4 = nX4 * l23;
- minvY4 = nY4 * l23;
- minvZ4 = nZ4 * l23;
- var v144 = closest;
- v144.x = minvX4;
- v144.y = minvY4;
- v144.z = minvZ4;
- b14 = 7;
- }
- var d29 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind1 < 0 || d29 < mind1) {
- mini1 = b14 & 3 | (b14 & 4) << 1;
- mind1 = d29;
- var v145 = closest;
- minvX1 = v145.x;
- minvY1 = v145.y;
- minvZ1 = v145.z;
- }
- }
- if(d243 * sign < 0) {
- var v146;
- var v1X18;
- var v1Y18;
- var v1Z18;
- var v224;
- var v2X18;
- var v2Y18;
- var v2Z18;
- var v318;
- var v3X5;
- var v3Y5;
- var v3Z5;
- var v1218;
- var v12X18;
- var v12Y18;
- var v12Z18;
- var v235;
- var v23X5;
- var v23Y5;
- var v23Z5;
- var v319;
- var v31X4;
- var v31Y4;
- var v31Z4;
- var v147 = vec21;
- v1X18 = v147.x;
- v1Y18 = v147.y;
- v1Z18 = v147.z;
- var v148 = vec31;
- v2X18 = v148.x;
- v2Y18 = v148.y;
- v2Z18 = v148.z;
- var v149 = vec4;
- v3X5 = v149.x;
- v3Y5 = v149.y;
- v3Z5 = v149.z;
- v12X18 = v2X18 - v1X18;
- v12Y18 = v2Y18 - v1Y18;
- v12Z18 = v2Z18 - v1Z18;
- v23X5 = v3X5 - v2X18;
- v23Y5 = v3Y5 - v2Y18;
- v23Z5 = v3Z5 - v2Z18;
- v31X4 = v1X18 - v3X5;
- v31Y4 = v1Y18 - v3Y5;
- v31Z4 = v1Z18 - v3Z5;
- var n5;
- var nX5;
- var nY5;
- var nZ5;
- nX5 = v12Y18 * v23Z5 - v12Z18 * v23Y5;
- nY5 = v12Z18 * v23X5 - v12X18 * v23Z5;
- nZ5 = v12X18 * v23Y5 - v12Y18 * v23X5;
- var n125;
- var n12X4;
- var n12Y4;
- var n12Z4;
- var n234;
- var n23X4;
- var n23Y4;
- var n23Z4;
- var n314;
- var n31X4;
- var n31Y4;
- var n31Z4;
- n12X4 = v12Y18 * nZ5 - v12Z18 * nY5;
- n12Y4 = v12Z18 * nX5 - v12X18 * nZ5;
- n12Z4 = v12X18 * nY5 - v12Y18 * nX5;
- n23X4 = v23Y5 * nZ5 - v23Z5 * nY5;
- n23Y4 = v23Z5 * nX5 - v23X5 * nZ5;
- n23Z4 = v23X5 * nY5 - v23Y5 * nX5;
- n31X4 = v31Y4 * nZ5 - v31Z4 * nY5;
- n31Y4 = v31Z4 * nX5 - v31X4 * nZ5;
- n31Z4 = v31X4 * nY5 - v31Y4 * nX5;
- var d125 = v1X18 * n12X4 + v1Y18 * n12Y4 + v1Z18 * n12Z4;
- var d234 = v2X18 * n23X4 + v2Y18 * n23Y4 + v2Z18 * n23Z4;
- var d314 = v3X5 * n31X4 + v3Y5 * n31Y4 + v3Z5 * n31Z4;
- var mind5 = -1;
- var minv5;
- var minvX5;
- var minvY5;
- var minvZ5;
- var mini5 = 0;
- minvX5 = 0;
- minvY5 = 0;
- minvZ5 = 0;
- if(d125 < 0) {
- var v150;
- var v1X19;
- var v1Y19;
- var v1Z19;
- var v225;
- var v2X19;
- var v2Y19;
- var v2Z19;
- var v151 = vec21;
- v1X19 = v151.x;
- v1Y19 = v151.y;
- v1Z19 = v151.z;
- var v152 = vec31;
- v2X19 = v152.x;
- v2Y19 = v152.y;
- v2Z19 = v152.z;
- var v1219;
- var v12X19;
- var v12Y19;
- var v12Z19;
- v12X19 = v2X19 - v1X19;
- v12Y19 = v2Y19 - v1Y19;
- v12Z19 = v2Z19 - v1Z19;
- var d30 = v12X19 * v12X19 + v12Y19 * v12Y19 + v12Z19 * v12Z19;
- var t13 = v12X19 * v1X19 + v12Y19 * v1Y19 + v12Z19 * v1Z19;
- t13 = -t13 / d30;
- var b15;
- if(t13 < 0) {
- var v153 = closest;
- v153.x = v1X19;
- v153.y = v1Y19;
- v153.z = v1Z19;
- b15 = 1;
- } else if(t13 > 1) {
- var v154 = closest;
- v154.x = v2X19;
- v154.y = v2Y19;
- v154.z = v2Z19;
- b15 = 2;
- } else {
- var p13;
- var pX13;
- var pY13;
- var pZ13;
- pX13 = v1X19 + v12X19 * t13;
- pY13 = v1Y19 + v12Y19 * t13;
- pZ13 = v1Z19 + v12Z19 * t13;
- var v155 = closest;
- v155.x = pX13;
- v155.y = pY13;
- v155.z = pZ13;
- b15 = 3;
- }
- var d32 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- mini5 = b15;
- mind5 = d32;
- var v156 = closest;
- minvX5 = v156.x;
- minvY5 = v156.y;
- minvZ5 = v156.z;
- }
- if(d234 < 0) {
- var v157;
- var v1X20;
- var v1Y20;
- var v1Z20;
- var v226;
- var v2X20;
- var v2Y20;
- var v2Z20;
- var v158 = vec31;
- v1X20 = v158.x;
- v1Y20 = v158.y;
- v1Z20 = v158.z;
- var v159 = vec4;
- v2X20 = v159.x;
- v2Y20 = v159.y;
- v2Z20 = v159.z;
- var v1220;
- var v12X20;
- var v12Y20;
- var v12Z20;
- v12X20 = v2X20 - v1X20;
- v12Y20 = v2Y20 - v1Y20;
- v12Z20 = v2Z20 - v1Z20;
- var d33 = v12X20 * v12X20 + v12Y20 * v12Y20 + v12Z20 * v12Z20;
- var t14 = v12X20 * v1X20 + v12Y20 * v1Y20 + v12Z20 * v1Z20;
- t14 = -t14 / d33;
- var b16;
- if(t14 < 0) {
- var v160 = closest;
- v160.x = v1X20;
- v160.y = v1Y20;
- v160.z = v1Z20;
- b16 = 1;
- } else if(t14 > 1) {
- var v161 = closest;
- v161.x = v2X20;
- v161.y = v2Y20;
- v161.z = v2Z20;
- b16 = 2;
- } else {
- var p14;
- var pX14;
- var pY14;
- var pZ14;
- pX14 = v1X20 + v12X20 * t14;
- pY14 = v1Y20 + v12Y20 * t14;
- pZ14 = v1Z20 + v12Z20 * t14;
- var v162 = closest;
- v162.x = pX14;
- v162.y = pY14;
- v162.z = pZ14;
- b16 = 3;
- }
- var d34 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind5 < 0 || d34 < mind5) {
- mini5 = b16 << 1;
- mind5 = d34;
- var v163 = closest;
- minvX5 = v163.x;
- minvY5 = v163.y;
- minvZ5 = v163.z;
- }
- }
- if(d314 < 0) {
- var v164;
- var v1X21;
- var v1Y21;
- var v1Z21;
- var v227;
- var v2X21;
- var v2Y21;
- var v2Z21;
- var v165 = vec21;
- v1X21 = v165.x;
- v1Y21 = v165.y;
- v1Z21 = v165.z;
- var v166 = vec4;
- v2X21 = v166.x;
- v2Y21 = v166.y;
- v2Z21 = v166.z;
- var v1221;
- var v12X21;
- var v12Y21;
- var v12Z21;
- v12X21 = v2X21 - v1X21;
- v12Y21 = v2Y21 - v1Y21;
- v12Z21 = v2Z21 - v1Z21;
- var d35 = v12X21 * v12X21 + v12Y21 * v12Y21 + v12Z21 * v12Z21;
- var t15 = v12X21 * v1X21 + v12Y21 * v1Y21 + v12Z21 * v1Z21;
- t15 = -t15 / d35;
- var b17;
- if(t15 < 0) {
- var v167 = closest;
- v167.x = v1X21;
- v167.y = v1Y21;
- v167.z = v1Z21;
- b17 = 1;
- } else if(t15 > 1) {
- var v168 = closest;
- v168.x = v2X21;
- v168.y = v2Y21;
- v168.z = v2Z21;
- b17 = 2;
- } else {
- var p15;
- var pX15;
- var pY15;
- var pZ15;
- pX15 = v1X21 + v12X21 * t15;
- pY15 = v1Y21 + v12Y21 * t15;
- pZ15 = v1Z21 + v12Z21 * t15;
- var v169 = closest;
- v169.x = pX15;
- v169.y = pY15;
- v169.z = pZ15;
- b17 = 3;
- }
- var d36 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind5 < 0 || d36 < mind5) {
- mini5 = b17 & 1 | (b17 & 2) << 1;
- mind5 = d36;
- var v170 = closest;
- minvX5 = v170.x;
- minvY5 = v170.y;
- minvZ5 = v170.z;
- }
- }
- var b18;
- if(mind5 > 0) {
- var v171 = closest;
- v171.x = minvX5;
- v171.y = minvY5;
- v171.z = minvZ5;
- b18 = mini5;
- } else {
- var l5 = nX5 * nX5 + nY5 * nY5 + nZ5 * nZ5;
- if(l5 > 0) {
- l5 = 1 / Math.sqrt(l5);
- }
- nX5 *= l5;
- nY5 *= l5;
- nZ5 *= l5;
- var dn4 = v1X18 * nX5 + v1Y18 * nY5 + v1Z18 * nZ5;
- var l24 = nX5 * nX5 + nY5 * nY5 + nZ5 * nZ5;
- l24 = dn4 / l24;
- minvX5 = nX5 * l24;
- minvY5 = nY5 * l24;
- minvZ5 = nZ5 * l24;
- var v172 = closest;
- v172.x = minvX5;
- v172.y = minvY5;
- v172.z = minvZ5;
- b18 = 7;
- }
- var d37 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind1 < 0 || d37 < mind1) {
- mini1 = b18 << 1;
- mind1 = d37;
- var v173 = closest;
- minvX1 = v173.x;
- minvY1 = v173.y;
- minvZ1 = v173.z;
- }
- }
- if(mind1 > 0) {
- var v174 = closest;
- v174.x = minvX1;
- v174.y = minvY1;
- v174.z = minvZ1;
- v3 = mini1;
- } else {
- closest.zero();
- v3 = 15;
- }
- break;
- }
- if(closest.x * closest.x + closest.y * closest.y + closest.z * closest.z < eps2) {
- if(!useEpa) {
- this.distance = 0;
- return 0;
- }
- switch(this.simplexSize) {
- case 1:
- this.pointToTetrahedron();
- break;
- case 2:
- this.lineToTetrahedron();
- break;
- case 3:
- this.triangleToTetrahedron();
- break;
- }
- if(this.simplexSize == 4) {
- var epaState = this.computeDepth(c1,c2,tf1,tf2,s,w1,w2);
- if(epaState != 0) {
- this.distance = 0;
- return epaState;
- }
- this.distance = -this.depth;
- return 0;
- }
- this.distance = 0;
- return 1;
- }
- this.shrinkSimplex(v3);
- dir.x = closest.x;
- dir.y = closest.y;
- dir.z = closest.z;
- var _this2 = dir;
- var tx1 = -_this2.x;
- var ty1 = -_this2.y;
- var tz1 = -_this2.z;
- _this2.x = tx1;
- _this2.y = ty1;
- _this2.z = tz1;
- this.computeWitnessPoint1(false);
- this.computeWitnessPoint2(false);
- var _this3 = this.s[this.simplexSize];
- var v175 = this.w1[this.simplexSize];
- _this3.x = v175.x;
- _this3.y = v175.y;
- _this3.z = v175.z;
- var _this4 = _this3;
- var v176 = this.w2[this.simplexSize];
- var tx2 = _this4.x - v176.x;
- var ty2 = _this4.y - v176.y;
- var tz2 = _this4.z - v176.z;
- _this4.x = tx2;
- _this4.y = ty2;
- _this4.z = tz2;
- if(dir.x * dir.x + dir.y * dir.y + dir.z * dir.z < eps2) {
- throw new Error("!?");
- }
- var d110 = closest.x * dir.x + closest.y * dir.y + closest.z * dir.z;
- var _this5 = s[this.simplexSize];
- var d210 = _this5.x * dir.x + _this5.y * dir.y + _this5.z * dir.z;
- if(d210 - d110 < eps2) {
- this.interpolateClosestPoints();
- this.distance = Math.sqrt(closest.x * closest.x + closest.y * closest.y + closest.z * closest.z);
- if(cache != null && cache._gjkCache != null) {
- this.saveCache(cache._gjkCache);
- }
- return 0;
- }
- this.simplexSize++;
- ++count;
- }
- return 2;
- }
- convexCastImpl(c1,c2,tf1,tf2,tl1,tl2,hit) {
- this.c1 = c1;
- this.c2 = c2;
- this.tf1 = tf1;
- this.tf2 = tf2;
- var s = this.s;
- var w1 = this.w1;
- var w2 = this.w2;
- var closest = this.closest;
- var dir = this.dir;
- var firstDir;
- var firstDirX;
- var firstDirY;
- var firstDirZ;
- firstDirX = tf2._positionX - tf1._positionX;
- firstDirY = tf2._positionY - tf1._positionY;
- firstDirZ = tf2._positionZ - tf1._positionZ;
- var v = dir;
- v.x = firstDirX;
- v.y = firstDirY;
- v.z = firstDirZ;
- if(dir.x * dir.x + dir.y * dir.y + dir.z * dir.z < 1e-6) {
- dir.init(1,0,0);
- }
- this.simplexSize = 0;
- if(this.c1 != null) {
- this.computeWitnessPoint1(true);
- } else {
- var v1 = this.w1[this.simplexSize];
- v1.x = this.tf1._positionX;
- v1.y = this.tf1._positionY;
- v1.z = this.tf1._positionZ;
- }
- this.computeWitnessPoint2(true);
- var _this = this.s[this.simplexSize];
- var v2 = this.w1[this.simplexSize];
- _this.x = v2.x;
- _this.y = v2.y;
- _this.z = v2.z;
- var _this1 = _this;
- var v3 = this.w2[this.simplexSize];
- var tx = _this1.x - v3.x;
- var ty = _this1.y - v3.y;
- var tz = _this1.z - v3.z;
- _this1.x = tx;
- _this1.y = ty;
- _this1.z = tz;
- this.simplexSize = 1;
- var count = 0;
- var max = 40;
- var lambda = 0.0;
- var rayX = this.rayX;
- var rayR = this.rayR;
- rayX.zero();
- rayR.x = tl2.x;
- rayR.y = tl2.y;
- rayR.z = tl2.z;
- var _this2 = rayR;
- var tx1 = _this2.x - tl1.x;
- var ty1 = _this2.y - tl1.y;
- var tz1 = _this2.z - tl1.z;
- _this2.x = tx1;
- _this2.y = ty1;
- _this2.z = tz1;
- var eps = 1e-4;
- var eps2 = eps * eps;
- while(count < max) {
- var v4 = 0;
- switch(this.simplexSize) {
- case 1:
- var v5 = s[0];
- closest.x = v5.x;
- closest.y = v5.y;
- closest.z = v5.z;
- v4 = 1;
- break;
- case 2:
- var v11;
- var v1X;
- var v1Y;
- var v1Z;
- var v21;
- var v2X;
- var v2Y;
- var v2Z;
- var v6 = s[0];
- v1X = v6.x;
- v1Y = v6.y;
- v1Z = v6.z;
- var v7 = s[1];
- v2X = v7.x;
- v2Y = v7.y;
- v2Z = v7.z;
- var v12;
- var v12X;
- var v12Y;
- var v12Z;
- v12X = v2X - v1X;
- v12Y = v2Y - v1Y;
- v12Z = v2Z - v1Z;
- var d = v12X * v12X + v12Y * v12Y + v12Z * v12Z;
- var t = v12X * v1X + v12Y * v1Y + v12Z * v1Z;
- t = -t / d;
- if(t < 0) {
- var v8 = closest;
- v8.x = v1X;
- v8.y = v1Y;
- v8.z = v1Z;
- v4 = 1;
- } else if(t > 1) {
- var v9 = closest;
- v9.x = v2X;
- v9.y = v2Y;
- v9.z = v2Z;
- v4 = 2;
- } else {
- var p;
- var pX;
- var pY;
- var pZ;
- pX = v1X + v12X * t;
- pY = v1Y + v12Y * t;
- pZ = v1Z + v12Z * t;
- var v10 = closest;
- v10.x = pX;
- v10.y = pY;
- v10.z = pZ;
- v4 = 3;
- }
- break;
- case 3:
- var vec1 = s[0];
- var vec2 = s[1];
- var vec3 = s[2];
- var v13;
- var v1X1;
- var v1Y1;
- var v1Z1;
- var v22;
- var v2X1;
- var v2Y1;
- var v2Z1;
- var v31;
- var v3X;
- var v3Y;
- var v3Z;
- var v121;
- var v12X1;
- var v12Y1;
- var v12Z1;
- var v23;
- var v23X;
- var v23Y;
- var v23Z;
- var v311;
- var v31X;
- var v31Y;
- var v31Z;
- var v14 = vec1;
- v1X1 = v14.x;
- v1Y1 = v14.y;
- v1Z1 = v14.z;
- var v15 = vec2;
- v2X1 = v15.x;
- v2Y1 = v15.y;
- v2Z1 = v15.z;
- var v16 = vec3;
- v3X = v16.x;
- v3Y = v16.y;
- v3Z = v16.z;
- v12X1 = v2X1 - v1X1;
- v12Y1 = v2Y1 - v1Y1;
- v12Z1 = v2Z1 - v1Z1;
- v23X = v3X - v2X1;
- v23Y = v3Y - v2Y1;
- v23Z = v3Z - v2Z1;
- v31X = v1X1 - v3X;
- v31Y = v1Y1 - v3Y;
- v31Z = v1Z1 - v3Z;
- var n;
- var nX;
- var nY;
- var nZ;
- nX = v12Y1 * v23Z - v12Z1 * v23Y;
- nY = v12Z1 * v23X - v12X1 * v23Z;
- nZ = v12X1 * v23Y - v12Y1 * v23X;
- var n12;
- var n12X;
- var n12Y;
- var n12Z;
- var n23;
- var n23X;
- var n23Y;
- var n23Z;
- var n31;
- var n31X;
- var n31Y;
- var n31Z;
- n12X = v12Y1 * nZ - v12Z1 * nY;
- n12Y = v12Z1 * nX - v12X1 * nZ;
- n12Z = v12X1 * nY - v12Y1 * nX;
- n23X = v23Y * nZ - v23Z * nY;
- n23Y = v23Z * nX - v23X * nZ;
- n23Z = v23X * nY - v23Y * nX;
- n31X = v31Y * nZ - v31Z * nY;
- n31Y = v31Z * nX - v31X * nZ;
- n31Z = v31X * nY - v31Y * nX;
- var d12 = v1X1 * n12X + v1Y1 * n12Y + v1Z1 * n12Z;
- var d23 = v2X1 * n23X + v2Y1 * n23Y + v2Z1 * n23Z;
- var d31 = v3X * n31X + v3Y * n31Y + v3Z * n31Z;
- var mind = -1;
- var minv;
- var minvX;
- var minvY;
- var minvZ;
- var mini = 0;
- minvX = 0;
- minvY = 0;
- minvZ = 0;
- if(d12 < 0) {
- var v17;
- var v1X2;
- var v1Y2;
- var v1Z2;
- var v24;
- var v2X2;
- var v2Y2;
- var v2Z2;
- var v18 = vec1;
- v1X2 = v18.x;
- v1Y2 = v18.y;
- v1Z2 = v18.z;
- var v19 = vec2;
- v2X2 = v19.x;
- v2Y2 = v19.y;
- v2Z2 = v19.z;
- var v122;
- var v12X2;
- var v12Y2;
- var v12Z2;
- v12X2 = v2X2 - v1X2;
- v12Y2 = v2Y2 - v1Y2;
- v12Z2 = v2Z2 - v1Z2;
- var d1 = v12X2 * v12X2 + v12Y2 * v12Y2 + v12Z2 * v12Z2;
- var t1 = v12X2 * v1X2 + v12Y2 * v1Y2 + v12Z2 * v1Z2;
- t1 = -t1 / d1;
- var b;
- if(t1 < 0) {
- var v20 = closest;
- v20.x = v1X2;
- v20.y = v1Y2;
- v20.z = v1Z2;
- b = 1;
- } else if(t1 > 1) {
- var v25 = closest;
- v25.x = v2X2;
- v25.y = v2Y2;
- v25.z = v2Z2;
- b = 2;
- } else {
- var p1;
- var pX1;
- var pY1;
- var pZ1;
- pX1 = v1X2 + v12X2 * t1;
- pY1 = v1Y2 + v12Y2 * t1;
- pZ1 = v1Z2 + v12Z2 * t1;
- var v26 = closest;
- v26.x = pX1;
- v26.y = pY1;
- v26.z = pZ1;
- b = 3;
- }
- var d2 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- mini = b;
- mind = d2;
- var v27 = closest;
- minvX = v27.x;
- minvY = v27.y;
- minvZ = v27.z;
- }
- if(d23 < 0) {
- var v110;
- var v1X3;
- var v1Y3;
- var v1Z3;
- var v28;
- var v2X3;
- var v2Y3;
- var v2Z3;
- var v29 = vec2;
- v1X3 = v29.x;
- v1Y3 = v29.y;
- v1Z3 = v29.z;
- var v30 = vec3;
- v2X3 = v30.x;
- v2Y3 = v30.y;
- v2Z3 = v30.z;
- var v123;
- var v12X3;
- var v12Y3;
- var v12Z3;
- v12X3 = v2X3 - v1X3;
- v12Y3 = v2Y3 - v1Y3;
- v12Z3 = v2Z3 - v1Z3;
- var d3 = v12X3 * v12X3 + v12Y3 * v12Y3 + v12Z3 * v12Z3;
- var t2 = v12X3 * v1X3 + v12Y3 * v1Y3 + v12Z3 * v1Z3;
- t2 = -t2 / d3;
- var b1;
- if(t2 < 0) {
- var v32 = closest;
- v32.x = v1X3;
- v32.y = v1Y3;
- v32.z = v1Z3;
- b1 = 1;
- } else if(t2 > 1) {
- var v33 = closest;
- v33.x = v2X3;
- v33.y = v2Y3;
- v33.z = v2Z3;
- b1 = 2;
- } else {
- var p2;
- var pX2;
- var pY2;
- var pZ2;
- pX2 = v1X3 + v12X3 * t2;
- pY2 = v1Y3 + v12Y3 * t2;
- pZ2 = v1Z3 + v12Z3 * t2;
- var v34 = closest;
- v34.x = pX2;
- v34.y = pY2;
- v34.z = pZ2;
- b1 = 3;
- }
- var d4 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind < 0 || d4 < mind) {
- mini = b1 << 1;
- mind = d4;
- var v35 = closest;
- minvX = v35.x;
- minvY = v35.y;
- minvZ = v35.z;
- }
- }
- if(d31 < 0) {
- var v111;
- var v1X4;
- var v1Y4;
- var v1Z4;
- var v210;
- var v2X4;
- var v2Y4;
- var v2Z4;
- var v36 = vec1;
- v1X4 = v36.x;
- v1Y4 = v36.y;
- v1Z4 = v36.z;
- var v37 = vec3;
- v2X4 = v37.x;
- v2Y4 = v37.y;
- v2Z4 = v37.z;
- var v124;
- var v12X4;
- var v12Y4;
- var v12Z4;
- v12X4 = v2X4 - v1X4;
- v12Y4 = v2Y4 - v1Y4;
- v12Z4 = v2Z4 - v1Z4;
- var d5 = v12X4 * v12X4 + v12Y4 * v12Y4 + v12Z4 * v12Z4;
- var t3 = v12X4 * v1X4 + v12Y4 * v1Y4 + v12Z4 * v1Z4;
- t3 = -t3 / d5;
- var b2;
- if(t3 < 0) {
- var v38 = closest;
- v38.x = v1X4;
- v38.y = v1Y4;
- v38.z = v1Z4;
- b2 = 1;
- } else if(t3 > 1) {
- var v39 = closest;
- v39.x = v2X4;
- v39.y = v2Y4;
- v39.z = v2Z4;
- b2 = 2;
- } else {
- var p3;
- var pX3;
- var pY3;
- var pZ3;
- pX3 = v1X4 + v12X4 * t3;
- pY3 = v1Y4 + v12Y4 * t3;
- pZ3 = v1Z4 + v12Z4 * t3;
- var v40 = closest;
- v40.x = pX3;
- v40.y = pY3;
- v40.z = pZ3;
- b2 = 3;
- }
- var d6 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind < 0 || d6 < mind) {
- mini = b2 & 1 | (b2 & 2) << 1;
- mind = d6;
- var v41 = closest;
- minvX = v41.x;
- minvY = v41.y;
- minvZ = v41.z;
- }
- }
- if(mind > 0) {
- var v42 = closest;
- v42.x = minvX;
- v42.y = minvY;
- v42.z = minvZ;
- v4 = mini;
- } else {
- var l = nX * nX + nY * nY + nZ * nZ;
- if(l > 0) {
- l = 1 / Math.sqrt(l);
- }
- nX *= l;
- nY *= l;
- nZ *= l;
- var dn = v1X1 * nX + v1Y1 * nY + v1Z1 * nZ;
- var l2 = nX * nX + nY * nY + nZ * nZ;
- l2 = dn / l2;
- minvX = nX * l2;
- minvY = nY * l2;
- minvZ = nZ * l2;
- var v43 = closest;
- v43.x = minvX;
- v43.y = minvY;
- v43.z = minvZ;
- v4 = 7;
- }
- break;
- case 4:
- var vec11 = s[0];
- var vec21 = s[1];
- var vec31 = s[2];
- var vec4 = s[3];
- var v112;
- var v1X5;
- var v1Y5;
- var v1Z5;
- var v211;
- var v2X5;
- var v2Y5;
- var v2Z5;
- var v310;
- var v3X1;
- var v3Y1;
- var v3Z1;
- var v44;
- var v4X;
- var v4Y;
- var v4Z;
- var v125;
- var v12X5;
- var v12Y5;
- var v12Z5;
- var v131;
- var v13X;
- var v13Y;
- var v13Z;
- var v141;
- var v14X;
- var v14Y;
- var v14Z;
- var v231;
- var v23X1;
- var v23Y1;
- var v23Z1;
- var v241;
- var v24X;
- var v24Y;
- var v24Z;
- var v341;
- var v34X;
- var v34Y;
- var v34Z;
- var v45 = vec11;
- v1X5 = v45.x;
- v1Y5 = v45.y;
- v1Z5 = v45.z;
- var v46 = vec21;
- v2X5 = v46.x;
- v2Y5 = v46.y;
- v2Z5 = v46.z;
- var v47 = vec31;
- v3X1 = v47.x;
- v3Y1 = v47.y;
- v3Z1 = v47.z;
- var v48 = vec4;
- v4X = v48.x;
- v4Y = v48.y;
- v4Z = v48.z;
- v12X5 = v2X5 - v1X5;
- v12Y5 = v2Y5 - v1Y5;
- v12Z5 = v2Z5 - v1Z5;
- v13X = v3X1 - v1X5;
- v13Y = v3Y1 - v1Y5;
- v13Z = v3Z1 - v1Z5;
- v14X = v4X - v1X5;
- v14Y = v4Y - v1Y5;
- v14Z = v4Z - v1Z5;
- v23X1 = v3X1 - v2X5;
- v23Y1 = v3Y1 - v2Y5;
- v23Z1 = v3Z1 - v2Z5;
- v24X = v4X - v2X5;
- v24Y = v4Y - v2Y5;
- v24Z = v4Z - v2Z5;
- v34X = v4X - v3X1;
- v34Y = v4Y - v3Y1;
- v34Z = v4Z - v3Z1;
- var rev;
- var n123;
- var n123X;
- var n123Y;
- var n123Z;
- var n134;
- var n134X;
- var n134Y;
- var n134Z;
- var n142;
- var n142X;
- var n142Y;
- var n142Z;
- var n243;
- var n243X;
- var n243Y;
- var n243Z;
- var n1;
- var nX1;
- var nY1;
- var nZ1;
- n123X = v12Y5 * v13Z - v12Z5 * v13Y;
- n123Y = v12Z5 * v13X - v12X5 * v13Z;
- n123Z = v12X5 * v13Y - v12Y5 * v13X;
- n134X = v13Y * v14Z - v13Z * v14Y;
- n134Y = v13Z * v14X - v13X * v14Z;
- n134Z = v13X * v14Y - v13Y * v14X;
- n142X = v14Y * v12Z5 - v14Z * v12Y5;
- n142Y = v14Z * v12X5 - v14X * v12Z5;
- n142Z = v14X * v12Y5 - v14Y * v12X5;
- n243X = v24Y * v23Z1 - v24Z * v23Y1;
- n243Y = v24Z * v23X1 - v24X * v23Z1;
- n243Z = v24X * v23Y1 - v24Y * v23X1;
- var sign = v12X5 * n243X + v12Y5 * n243Y + v12Z5 * n243Z > 0 ? 1 : -1;
- var d123 = v1X5 * n123X + v1Y5 * n123Y + v1Z5 * n123Z;
- var d134 = v1X5 * n134X + v1Y5 * n134Y + v1Z5 * n134Z;
- var d142 = v1X5 * n142X + v1Y5 * n142Y + v1Z5 * n142Z;
- var d243 = v2X5 * n243X + v2Y5 * n243Y + v2Z5 * n243Z;
- var mind1 = -1;
- var minv1;
- var minvX1;
- var minvY1;
- var minvZ1;
- var mini1 = 0;
- minvX1 = 0;
- minvY1 = 0;
- minvZ1 = 0;
- if(d123 * sign < 0) {
- var v113;
- var v1X6;
- var v1Y6;
- var v1Z6;
- var v212;
- var v2X6;
- var v2Y6;
- var v2Z6;
- var v312;
- var v3X2;
- var v3Y2;
- var v3Z2;
- var v126;
- var v12X6;
- var v12Y6;
- var v12Z6;
- var v232;
- var v23X2;
- var v23Y2;
- var v23Z2;
- var v313;
- var v31X1;
- var v31Y1;
- var v31Z1;
- var v49 = vec11;
- v1X6 = v49.x;
- v1Y6 = v49.y;
- v1Z6 = v49.z;
- var v50 = vec21;
- v2X6 = v50.x;
- v2Y6 = v50.y;
- v2Z6 = v50.z;
- var v51 = vec31;
- v3X2 = v51.x;
- v3Y2 = v51.y;
- v3Z2 = v51.z;
- v12X6 = v2X6 - v1X6;
- v12Y6 = v2Y6 - v1Y6;
- v12Z6 = v2Z6 - v1Z6;
- v23X2 = v3X2 - v2X6;
- v23Y2 = v3Y2 - v2Y6;
- v23Z2 = v3Z2 - v2Z6;
- v31X1 = v1X6 - v3X2;
- v31Y1 = v1Y6 - v3Y2;
- v31Z1 = v1Z6 - v3Z2;
- var n2;
- var nX2;
- var nY2;
- var nZ2;
- nX2 = v12Y6 * v23Z2 - v12Z6 * v23Y2;
- nY2 = v12Z6 * v23X2 - v12X6 * v23Z2;
- nZ2 = v12X6 * v23Y2 - v12Y6 * v23X2;
- var n121;
- var n12X1;
- var n12Y1;
- var n12Z1;
- var n231;
- var n23X1;
- var n23Y1;
- var n23Z1;
- var n311;
- var n31X1;
- var n31Y1;
- var n31Z1;
- n12X1 = v12Y6 * nZ2 - v12Z6 * nY2;
- n12Y1 = v12Z6 * nX2 - v12X6 * nZ2;
- n12Z1 = v12X6 * nY2 - v12Y6 * nX2;
- n23X1 = v23Y2 * nZ2 - v23Z2 * nY2;
- n23Y1 = v23Z2 * nX2 - v23X2 * nZ2;
- n23Z1 = v23X2 * nY2 - v23Y2 * nX2;
- n31X1 = v31Y1 * nZ2 - v31Z1 * nY2;
- n31Y1 = v31Z1 * nX2 - v31X1 * nZ2;
- n31Z1 = v31X1 * nY2 - v31Y1 * nX2;
- var d121 = v1X6 * n12X1 + v1Y6 * n12Y1 + v1Z6 * n12Z1;
- var d231 = v2X6 * n23X1 + v2Y6 * n23Y1 + v2Z6 * n23Z1;
- var d311 = v3X2 * n31X1 + v3Y2 * n31Y1 + v3Z2 * n31Z1;
- var mind2 = -1;
- var minv2;
- var minvX2;
- var minvY2;
- var minvZ2;
- var mini2 = 0;
- minvX2 = 0;
- minvY2 = 0;
- minvZ2 = 0;
- if(d121 < 0) {
- var v114;
- var v1X7;
- var v1Y7;
- var v1Z7;
- var v213;
- var v2X7;
- var v2Y7;
- var v2Z7;
- var v52 = vec11;
- v1X7 = v52.x;
- v1Y7 = v52.y;
- v1Z7 = v52.z;
- var v53 = vec21;
- v2X7 = v53.x;
- v2Y7 = v53.y;
- v2Z7 = v53.z;
- var v127;
- var v12X7;
- var v12Y7;
- var v12Z7;
- v12X7 = v2X7 - v1X7;
- v12Y7 = v2Y7 - v1Y7;
- v12Z7 = v2Z7 - v1Z7;
- var d7 = v12X7 * v12X7 + v12Y7 * v12Y7 + v12Z7 * v12Z7;
- var t4 = v12X7 * v1X7 + v12Y7 * v1Y7 + v12Z7 * v1Z7;
- t4 = -t4 / d7;
- var b3;
- if(t4 < 0) {
- var v54 = closest;
- v54.x = v1X7;
- v54.y = v1Y7;
- v54.z = v1Z7;
- b3 = 1;
- } else if(t4 > 1) {
- var v55 = closest;
- v55.x = v2X7;
- v55.y = v2Y7;
- v55.z = v2Z7;
- b3 = 2;
- } else {
- var p4;
- var pX4;
- var pY4;
- var pZ4;
- pX4 = v1X7 + v12X7 * t4;
- pY4 = v1Y7 + v12Y7 * t4;
- pZ4 = v1Z7 + v12Z7 * t4;
- var v56 = closest;
- v56.x = pX4;
- v56.y = pY4;
- v56.z = pZ4;
- b3 = 3;
- }
- var d8 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- mini2 = b3;
- mind2 = d8;
- var v57 = closest;
- minvX2 = v57.x;
- minvY2 = v57.y;
- minvZ2 = v57.z;
- }
- if(d231 < 0) {
- var v115;
- var v1X8;
- var v1Y8;
- var v1Z8;
- var v214;
- var v2X8;
- var v2Y8;
- var v2Z8;
- var v58 = vec21;
- v1X8 = v58.x;
- v1Y8 = v58.y;
- v1Z8 = v58.z;
- var v59 = vec31;
- v2X8 = v59.x;
- v2Y8 = v59.y;
- v2Z8 = v59.z;
- var v128;
- var v12X8;
- var v12Y8;
- var v12Z8;
- v12X8 = v2X8 - v1X8;
- v12Y8 = v2Y8 - v1Y8;
- v12Z8 = v2Z8 - v1Z8;
- var d9 = v12X8 * v12X8 + v12Y8 * v12Y8 + v12Z8 * v12Z8;
- var t5 = v12X8 * v1X8 + v12Y8 * v1Y8 + v12Z8 * v1Z8;
- t5 = -t5 / d9;
- var b4;
- if(t5 < 0) {
- var v60 = closest;
- v60.x = v1X8;
- v60.y = v1Y8;
- v60.z = v1Z8;
- b4 = 1;
- } else if(t5 > 1) {
- var v61 = closest;
- v61.x = v2X8;
- v61.y = v2Y8;
- v61.z = v2Z8;
- b4 = 2;
- } else {
- var p5;
- var pX5;
- var pY5;
- var pZ5;
- pX5 = v1X8 + v12X8 * t5;
- pY5 = v1Y8 + v12Y8 * t5;
- pZ5 = v1Z8 + v12Z8 * t5;
- var v62 = closest;
- v62.x = pX5;
- v62.y = pY5;
- v62.z = pZ5;
- b4 = 3;
- }
- var d10 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind2 < 0 || d10 < mind2) {
- mini2 = b4 << 1;
- mind2 = d10;
- var v63 = closest;
- minvX2 = v63.x;
- minvY2 = v63.y;
- minvZ2 = v63.z;
- }
- }
- if(d311 < 0) {
- var v116;
- var v1X9;
- var v1Y9;
- var v1Z9;
- var v215;
- var v2X9;
- var v2Y9;
- var v2Z9;
- var v64 = vec11;
- v1X9 = v64.x;
- v1Y9 = v64.y;
- v1Z9 = v64.z;
- var v65 = vec31;
- v2X9 = v65.x;
- v2Y9 = v65.y;
- v2Z9 = v65.z;
- var v129;
- var v12X9;
- var v12Y9;
- var v12Z9;
- v12X9 = v2X9 - v1X9;
- v12Y9 = v2Y9 - v1Y9;
- v12Z9 = v2Z9 - v1Z9;
- var d11 = v12X9 * v12X9 + v12Y9 * v12Y9 + v12Z9 * v12Z9;
- var t6 = v12X9 * v1X9 + v12Y9 * v1Y9 + v12Z9 * v1Z9;
- t6 = -t6 / d11;
- var b5;
- if(t6 < 0) {
- var v66 = closest;
- v66.x = v1X9;
- v66.y = v1Y9;
- v66.z = v1Z9;
- b5 = 1;
- } else if(t6 > 1) {
- var v67 = closest;
- v67.x = v2X9;
- v67.y = v2Y9;
- v67.z = v2Z9;
- b5 = 2;
- } else {
- var p6;
- var pX6;
- var pY6;
- var pZ6;
- pX6 = v1X9 + v12X9 * t6;
- pY6 = v1Y9 + v12Y9 * t6;
- pZ6 = v1Z9 + v12Z9 * t6;
- var v68 = closest;
- v68.x = pX6;
- v68.y = pY6;
- v68.z = pZ6;
- b5 = 3;
- }
- var d13 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind2 < 0 || d13 < mind2) {
- mini2 = b5 & 1 | (b5 & 2) << 1;
- mind2 = d13;
- var v69 = closest;
- minvX2 = v69.x;
- minvY2 = v69.y;
- minvZ2 = v69.z;
- }
- }
- var b6;
- if(mind2 > 0) {
- var v70 = closest;
- v70.x = minvX2;
- v70.y = minvY2;
- v70.z = minvZ2;
- b6 = mini2;
- } else {
- var l1 = nX2 * nX2 + nY2 * nY2 + nZ2 * nZ2;
- if(l1 > 0) {
- l1 = 1 / Math.sqrt(l1);
- }
- nX2 *= l1;
- nY2 *= l1;
- nZ2 *= l1;
- var dn1 = v1X6 * nX2 + v1Y6 * nY2 + v1Z6 * nZ2;
- var l21 = nX2 * nX2 + nY2 * nY2 + nZ2 * nZ2;
- l21 = dn1 / l21;
- minvX2 = nX2 * l21;
- minvY2 = nY2 * l21;
- minvZ2 = nZ2 * l21;
- var v71 = closest;
- v71.x = minvX2;
- v71.y = minvY2;
- v71.z = minvZ2;
- b6 = 7;
- }
- var d14 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- mini1 = b6;
- mind1 = d14;
- var v72 = closest;
- minvX1 = v72.x;
- minvY1 = v72.y;
- minvZ1 = v72.z;
- }
- if(d134 * sign < 0) {
- var v117;
- var v1X10;
- var v1Y10;
- var v1Z10;
- var v216;
- var v2X10;
- var v2Y10;
- var v2Z10;
- var v314;
- var v3X3;
- var v3Y3;
- var v3Z3;
- var v1210;
- var v12X10;
- var v12Y10;
- var v12Z10;
- var v233;
- var v23X3;
- var v23Y3;
- var v23Z3;
- var v315;
- var v31X2;
- var v31Y2;
- var v31Z2;
- var v73 = vec11;
- v1X10 = v73.x;
- v1Y10 = v73.y;
- v1Z10 = v73.z;
- var v74 = vec31;
- v2X10 = v74.x;
- v2Y10 = v74.y;
- v2Z10 = v74.z;
- var v75 = vec4;
- v3X3 = v75.x;
- v3Y3 = v75.y;
- v3Z3 = v75.z;
- v12X10 = v2X10 - v1X10;
- v12Y10 = v2Y10 - v1Y10;
- v12Z10 = v2Z10 - v1Z10;
- v23X3 = v3X3 - v2X10;
- v23Y3 = v3Y3 - v2Y10;
- v23Z3 = v3Z3 - v2Z10;
- v31X2 = v1X10 - v3X3;
- v31Y2 = v1Y10 - v3Y3;
- v31Z2 = v1Z10 - v3Z3;
- var n3;
- var nX3;
- var nY3;
- var nZ3;
- nX3 = v12Y10 * v23Z3 - v12Z10 * v23Y3;
- nY3 = v12Z10 * v23X3 - v12X10 * v23Z3;
- nZ3 = v12X10 * v23Y3 - v12Y10 * v23X3;
- var n122;
- var n12X2;
- var n12Y2;
- var n12Z2;
- var n232;
- var n23X2;
- var n23Y2;
- var n23Z2;
- var n312;
- var n31X2;
- var n31Y2;
- var n31Z2;
- n12X2 = v12Y10 * nZ3 - v12Z10 * nY3;
- n12Y2 = v12Z10 * nX3 - v12X10 * nZ3;
- n12Z2 = v12X10 * nY3 - v12Y10 * nX3;
- n23X2 = v23Y3 * nZ3 - v23Z3 * nY3;
- n23Y2 = v23Z3 * nX3 - v23X3 * nZ3;
- n23Z2 = v23X3 * nY3 - v23Y3 * nX3;
- n31X2 = v31Y2 * nZ3 - v31Z2 * nY3;
- n31Y2 = v31Z2 * nX3 - v31X2 * nZ3;
- n31Z2 = v31X2 * nY3 - v31Y2 * nX3;
- var d122 = v1X10 * n12X2 + v1Y10 * n12Y2 + v1Z10 * n12Z2;
- var d232 = v2X10 * n23X2 + v2Y10 * n23Y2 + v2Z10 * n23Z2;
- var d312 = v3X3 * n31X2 + v3Y3 * n31Y2 + v3Z3 * n31Z2;
- var mind3 = -1;
- var minv3;
- var minvX3;
- var minvY3;
- var minvZ3;
- var mini3 = 0;
- minvX3 = 0;
- minvY3 = 0;
- minvZ3 = 0;
- if(d122 < 0) {
- var v118;
- var v1X11;
- var v1Y11;
- var v1Z11;
- var v217;
- var v2X11;
- var v2Y11;
- var v2Z11;
- var v76 = vec11;
- v1X11 = v76.x;
- v1Y11 = v76.y;
- v1Z11 = v76.z;
- var v77 = vec31;
- v2X11 = v77.x;
- v2Y11 = v77.y;
- v2Z11 = v77.z;
- var v1211;
- var v12X11;
- var v12Y11;
- var v12Z11;
- v12X11 = v2X11 - v1X11;
- v12Y11 = v2Y11 - v1Y11;
- v12Z11 = v2Z11 - v1Z11;
- var d15 = v12X11 * v12X11 + v12Y11 * v12Y11 + v12Z11 * v12Z11;
- var t7 = v12X11 * v1X11 + v12Y11 * v1Y11 + v12Z11 * v1Z11;
- t7 = -t7 / d15;
- var b7;
- if(t7 < 0) {
- var v78 = closest;
- v78.x = v1X11;
- v78.y = v1Y11;
- v78.z = v1Z11;
- b7 = 1;
- } else if(t7 > 1) {
- var v79 = closest;
- v79.x = v2X11;
- v79.y = v2Y11;
- v79.z = v2Z11;
- b7 = 2;
- } else {
- var p7;
- var pX7;
- var pY7;
- var pZ7;
- pX7 = v1X11 + v12X11 * t7;
- pY7 = v1Y11 + v12Y11 * t7;
- pZ7 = v1Z11 + v12Z11 * t7;
- var v80 = closest;
- v80.x = pX7;
- v80.y = pY7;
- v80.z = pZ7;
- b7 = 3;
- }
- var d16 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- mini3 = b7;
- mind3 = d16;
- var v81 = closest;
- minvX3 = v81.x;
- minvY3 = v81.y;
- minvZ3 = v81.z;
- }
- if(d232 < 0) {
- var v119;
- var v1X12;
- var v1Y12;
- var v1Z12;
- var v218;
- var v2X12;
- var v2Y12;
- var v2Z12;
- var v82 = vec31;
- v1X12 = v82.x;
- v1Y12 = v82.y;
- v1Z12 = v82.z;
- var v83 = vec4;
- v2X12 = v83.x;
- v2Y12 = v83.y;
- v2Z12 = v83.z;
- var v1212;
- var v12X12;
- var v12Y12;
- var v12Z12;
- v12X12 = v2X12 - v1X12;
- v12Y12 = v2Y12 - v1Y12;
- v12Z12 = v2Z12 - v1Z12;
- var d17 = v12X12 * v12X12 + v12Y12 * v12Y12 + v12Z12 * v12Z12;
- var t8 = v12X12 * v1X12 + v12Y12 * v1Y12 + v12Z12 * v1Z12;
- t8 = -t8 / d17;
- var b8;
- if(t8 < 0) {
- var v84 = closest;
- v84.x = v1X12;
- v84.y = v1Y12;
- v84.z = v1Z12;
- b8 = 1;
- } else if(t8 > 1) {
- var v85 = closest;
- v85.x = v2X12;
- v85.y = v2Y12;
- v85.z = v2Z12;
- b8 = 2;
- } else {
- var p8;
- var pX8;
- var pY8;
- var pZ8;
- pX8 = v1X12 + v12X12 * t8;
- pY8 = v1Y12 + v12Y12 * t8;
- pZ8 = v1Z12 + v12Z12 * t8;
- var v86 = closest;
- v86.x = pX8;
- v86.y = pY8;
- v86.z = pZ8;
- b8 = 3;
- }
- var d18 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind3 < 0 || d18 < mind3) {
- mini3 = b8 << 1;
- mind3 = d18;
- var v87 = closest;
- minvX3 = v87.x;
- minvY3 = v87.y;
- minvZ3 = v87.z;
- }
- }
- if(d312 < 0) {
- var v120;
- var v1X13;
- var v1Y13;
- var v1Z13;
- var v219;
- var v2X13;
- var v2Y13;
- var v2Z13;
- var v88 = vec11;
- v1X13 = v88.x;
- v1Y13 = v88.y;
- v1Z13 = v88.z;
- var v89 = vec4;
- v2X13 = v89.x;
- v2Y13 = v89.y;
- v2Z13 = v89.z;
- var v1213;
- var v12X13;
- var v12Y13;
- var v12Z13;
- v12X13 = v2X13 - v1X13;
- v12Y13 = v2Y13 - v1Y13;
- v12Z13 = v2Z13 - v1Z13;
- var d19 = v12X13 * v12X13 + v12Y13 * v12Y13 + v12Z13 * v12Z13;
- var t9 = v12X13 * v1X13 + v12Y13 * v1Y13 + v12Z13 * v1Z13;
- t9 = -t9 / d19;
- var b9;
- if(t9 < 0) {
- var v90 = closest;
- v90.x = v1X13;
- v90.y = v1Y13;
- v90.z = v1Z13;
- b9 = 1;
- } else if(t9 > 1) {
- var v91 = closest;
- v91.x = v2X13;
- v91.y = v2Y13;
- v91.z = v2Z13;
- b9 = 2;
- } else {
- var p9;
- var pX9;
- var pY9;
- var pZ9;
- pX9 = v1X13 + v12X13 * t9;
- pY9 = v1Y13 + v12Y13 * t9;
- pZ9 = v1Z13 + v12Z13 * t9;
- var v92 = closest;
- v92.x = pX9;
- v92.y = pY9;
- v92.z = pZ9;
- b9 = 3;
- }
- var d20 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind3 < 0 || d20 < mind3) {
- mini3 = b9 & 1 | (b9 & 2) << 1;
- mind3 = d20;
- var v93 = closest;
- minvX3 = v93.x;
- minvY3 = v93.y;
- minvZ3 = v93.z;
- }
- }
- var b10;
- if(mind3 > 0) {
- var v94 = closest;
- v94.x = minvX3;
- v94.y = minvY3;
- v94.z = minvZ3;
- b10 = mini3;
- } else {
- var l3 = nX3 * nX3 + nY3 * nY3 + nZ3 * nZ3;
- if(l3 > 0) {
- l3 = 1 / Math.sqrt(l3);
- }
- nX3 *= l3;
- nY3 *= l3;
- nZ3 *= l3;
- var dn2 = v1X10 * nX3 + v1Y10 * nY3 + v1Z10 * nZ3;
- var l22 = nX3 * nX3 + nY3 * nY3 + nZ3 * nZ3;
- l22 = dn2 / l22;
- minvX3 = nX3 * l22;
- minvY3 = nY3 * l22;
- minvZ3 = nZ3 * l22;
- var v95 = closest;
- v95.x = minvX3;
- v95.y = minvY3;
- v95.z = minvZ3;
- b10 = 7;
- }
- var d21 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind1 < 0 || d21 < mind1) {
- mini1 = b10 & 1 | (b10 & 6) << 1;
- mind1 = d21;
- var v96 = closest;
- minvX1 = v96.x;
- minvY1 = v96.y;
- minvZ1 = v96.z;
- }
- }
- if(d142 * sign < 0) {
- var v130;
- var v1X14;
- var v1Y14;
- var v1Z14;
- var v220;
- var v2X14;
- var v2Y14;
- var v2Z14;
- var v316;
- var v3X4;
- var v3Y4;
- var v3Z4;
- var v1214;
- var v12X14;
- var v12Y14;
- var v12Z14;
- var v234;
- var v23X4;
- var v23Y4;
- var v23Z4;
- var v317;
- var v31X3;
- var v31Y3;
- var v31Z3;
- var v97 = vec11;
- v1X14 = v97.x;
- v1Y14 = v97.y;
- v1Z14 = v97.z;
- var v98 = vec21;
- v2X14 = v98.x;
- v2Y14 = v98.y;
- v2Z14 = v98.z;
- var v99 = vec4;
- v3X4 = v99.x;
- v3Y4 = v99.y;
- v3Z4 = v99.z;
- v12X14 = v2X14 - v1X14;
- v12Y14 = v2Y14 - v1Y14;
- v12Z14 = v2Z14 - v1Z14;
- v23X4 = v3X4 - v2X14;
- v23Y4 = v3Y4 - v2Y14;
- v23Z4 = v3Z4 - v2Z14;
- v31X3 = v1X14 - v3X4;
- v31Y3 = v1Y14 - v3Y4;
- v31Z3 = v1Z14 - v3Z4;
- var n4;
- var nX4;
- var nY4;
- var nZ4;
- nX4 = v12Y14 * v23Z4 - v12Z14 * v23Y4;
- nY4 = v12Z14 * v23X4 - v12X14 * v23Z4;
- nZ4 = v12X14 * v23Y4 - v12Y14 * v23X4;
- var n124;
- var n12X3;
- var n12Y3;
- var n12Z3;
- var n233;
- var n23X3;
- var n23Y3;
- var n23Z3;
- var n313;
- var n31X3;
- var n31Y3;
- var n31Z3;
- n12X3 = v12Y14 * nZ4 - v12Z14 * nY4;
- n12Y3 = v12Z14 * nX4 - v12X14 * nZ4;
- n12Z3 = v12X14 * nY4 - v12Y14 * nX4;
- n23X3 = v23Y4 * nZ4 - v23Z4 * nY4;
- n23Y3 = v23Z4 * nX4 - v23X4 * nZ4;
- n23Z3 = v23X4 * nY4 - v23Y4 * nX4;
- n31X3 = v31Y3 * nZ4 - v31Z3 * nY4;
- n31Y3 = v31Z3 * nX4 - v31X3 * nZ4;
- n31Z3 = v31X3 * nY4 - v31Y3 * nX4;
- var d124 = v1X14 * n12X3 + v1Y14 * n12Y3 + v1Z14 * n12Z3;
- var d233 = v2X14 * n23X3 + v2Y14 * n23Y3 + v2Z14 * n23Z3;
- var d313 = v3X4 * n31X3 + v3Y4 * n31Y3 + v3Z4 * n31Z3;
- var mind4 = -1;
- var minv4;
- var minvX4;
- var minvY4;
- var minvZ4;
- var mini4 = 0;
- minvX4 = 0;
- minvY4 = 0;
- minvZ4 = 0;
- if(d124 < 0) {
- var v132;
- var v1X15;
- var v1Y15;
- var v1Z15;
- var v221;
- var v2X15;
- var v2Y15;
- var v2Z15;
- var v100 = vec11;
- v1X15 = v100.x;
- v1Y15 = v100.y;
- v1Z15 = v100.z;
- var v101 = vec21;
- v2X15 = v101.x;
- v2Y15 = v101.y;
- v2Z15 = v101.z;
- var v1215;
- var v12X15;
- var v12Y15;
- var v12Z15;
- v12X15 = v2X15 - v1X15;
- v12Y15 = v2Y15 - v1Y15;
- v12Z15 = v2Z15 - v1Z15;
- var d22 = v12X15 * v12X15 + v12Y15 * v12Y15 + v12Z15 * v12Z15;
- var t10 = v12X15 * v1X15 + v12Y15 * v1Y15 + v12Z15 * v1Z15;
- t10 = -t10 / d22;
- var b11;
- if(t10 < 0) {
- var v102 = closest;
- v102.x = v1X15;
- v102.y = v1Y15;
- v102.z = v1Z15;
- b11 = 1;
- } else if(t10 > 1) {
- var v103 = closest;
- v103.x = v2X15;
- v103.y = v2Y15;
- v103.z = v2Z15;
- b11 = 2;
- } else {
- var p10;
- var pX10;
- var pY10;
- var pZ10;
- pX10 = v1X15 + v12X15 * t10;
- pY10 = v1Y15 + v12Y15 * t10;
- pZ10 = v1Z15 + v12Z15 * t10;
- var v104 = closest;
- v104.x = pX10;
- v104.y = pY10;
- v104.z = pZ10;
- b11 = 3;
- }
- var d24 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- mini4 = b11;
- mind4 = d24;
- var v105 = closest;
- minvX4 = v105.x;
- minvY4 = v105.y;
- minvZ4 = v105.z;
- }
- if(d233 < 0) {
- var v133;
- var v1X16;
- var v1Y16;
- var v1Z16;
- var v222;
- var v2X16;
- var v2Y16;
- var v2Z16;
- var v106 = vec21;
- v1X16 = v106.x;
- v1Y16 = v106.y;
- v1Z16 = v106.z;
- var v107 = vec4;
- v2X16 = v107.x;
- v2Y16 = v107.y;
- v2Z16 = v107.z;
- var v1216;
- var v12X16;
- var v12Y16;
- var v12Z16;
- v12X16 = v2X16 - v1X16;
- v12Y16 = v2Y16 - v1Y16;
- v12Z16 = v2Z16 - v1Z16;
- var d25 = v12X16 * v12X16 + v12Y16 * v12Y16 + v12Z16 * v12Z16;
- var t11 = v12X16 * v1X16 + v12Y16 * v1Y16 + v12Z16 * v1Z16;
- t11 = -t11 / d25;
- var b12;
- if(t11 < 0) {
- var v108 = closest;
- v108.x = v1X16;
- v108.y = v1Y16;
- v108.z = v1Z16;
- b12 = 1;
- } else if(t11 > 1) {
- var v109 = closest;
- v109.x = v2X16;
- v109.y = v2Y16;
- v109.z = v2Z16;
- b12 = 2;
- } else {
- var p11;
- var pX11;
- var pY11;
- var pZ11;
- pX11 = v1X16 + v12X16 * t11;
- pY11 = v1Y16 + v12Y16 * t11;
- pZ11 = v1Z16 + v12Z16 * t11;
- var v134 = closest;
- v134.x = pX11;
- v134.y = pY11;
- v134.z = pZ11;
- b12 = 3;
- }
- var d26 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind4 < 0 || d26 < mind4) {
- mini4 = b12 << 1;
- mind4 = d26;
- var v135 = closest;
- minvX4 = v135.x;
- minvY4 = v135.y;
- minvZ4 = v135.z;
- }
- }
- if(d313 < 0) {
- var v136;
- var v1X17;
- var v1Y17;
- var v1Z17;
- var v223;
- var v2X17;
- var v2Y17;
- var v2Z17;
- var v137 = vec11;
- v1X17 = v137.x;
- v1Y17 = v137.y;
- v1Z17 = v137.z;
- var v138 = vec4;
- v2X17 = v138.x;
- v2Y17 = v138.y;
- v2Z17 = v138.z;
- var v1217;
- var v12X17;
- var v12Y17;
- var v12Z17;
- v12X17 = v2X17 - v1X17;
- v12Y17 = v2Y17 - v1Y17;
- v12Z17 = v2Z17 - v1Z17;
- var d27 = v12X17 * v12X17 + v12Y17 * v12Y17 + v12Z17 * v12Z17;
- var t12 = v12X17 * v1X17 + v12Y17 * v1Y17 + v12Z17 * v1Z17;
- t12 = -t12 / d27;
- var b13;
- if(t12 < 0) {
- var v139 = closest;
- v139.x = v1X17;
- v139.y = v1Y17;
- v139.z = v1Z17;
- b13 = 1;
- } else if(t12 > 1) {
- var v140 = closest;
- v140.x = v2X17;
- v140.y = v2Y17;
- v140.z = v2Z17;
- b13 = 2;
- } else {
- var p12;
- var pX12;
- var pY12;
- var pZ12;
- pX12 = v1X17 + v12X17 * t12;
- pY12 = v1Y17 + v12Y17 * t12;
- pZ12 = v1Z17 + v12Z17 * t12;
- var v142 = closest;
- v142.x = pX12;
- v142.y = pY12;
- v142.z = pZ12;
- b13 = 3;
- }
- var d28 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind4 < 0 || d28 < mind4) {
- mini4 = b13 & 1 | (b13 & 2) << 1;
- mind4 = d28;
- var v143 = closest;
- minvX4 = v143.x;
- minvY4 = v143.y;
- minvZ4 = v143.z;
- }
- }
- var b14;
- if(mind4 > 0) {
- var v144 = closest;
- v144.x = minvX4;
- v144.y = minvY4;
- v144.z = minvZ4;
- b14 = mini4;
- } else {
- var l4 = nX4 * nX4 + nY4 * nY4 + nZ4 * nZ4;
- if(l4 > 0) {
- l4 = 1 / Math.sqrt(l4);
- }
- nX4 *= l4;
- nY4 *= l4;
- nZ4 *= l4;
- var dn3 = v1X14 * nX4 + v1Y14 * nY4 + v1Z14 * nZ4;
- var l23 = nX4 * nX4 + nY4 * nY4 + nZ4 * nZ4;
- l23 = dn3 / l23;
- minvX4 = nX4 * l23;
- minvY4 = nY4 * l23;
- minvZ4 = nZ4 * l23;
- var v145 = closest;
- v145.x = minvX4;
- v145.y = minvY4;
- v145.z = minvZ4;
- b14 = 7;
- }
- var d29 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind1 < 0 || d29 < mind1) {
- mini1 = b14 & 3 | (b14 & 4) << 1;
- mind1 = d29;
- var v146 = closest;
- minvX1 = v146.x;
- minvY1 = v146.y;
- minvZ1 = v146.z;
- }
- }
- if(d243 * sign < 0) {
- var v147;
- var v1X18;
- var v1Y18;
- var v1Z18;
- var v224;
- var v2X18;
- var v2Y18;
- var v2Z18;
- var v318;
- var v3X5;
- var v3Y5;
- var v3Z5;
- var v1218;
- var v12X18;
- var v12Y18;
- var v12Z18;
- var v235;
- var v23X5;
- var v23Y5;
- var v23Z5;
- var v319;
- var v31X4;
- var v31Y4;
- var v31Z4;
- var v148 = vec21;
- v1X18 = v148.x;
- v1Y18 = v148.y;
- v1Z18 = v148.z;
- var v149 = vec31;
- v2X18 = v149.x;
- v2Y18 = v149.y;
- v2Z18 = v149.z;
- var v150 = vec4;
- v3X5 = v150.x;
- v3Y5 = v150.y;
- v3Z5 = v150.z;
- v12X18 = v2X18 - v1X18;
- v12Y18 = v2Y18 - v1Y18;
- v12Z18 = v2Z18 - v1Z18;
- v23X5 = v3X5 - v2X18;
- v23Y5 = v3Y5 - v2Y18;
- v23Z5 = v3Z5 - v2Z18;
- v31X4 = v1X18 - v3X5;
- v31Y4 = v1Y18 - v3Y5;
- v31Z4 = v1Z18 - v3Z5;
- var n5;
- var nX5;
- var nY5;
- var nZ5;
- nX5 = v12Y18 * v23Z5 - v12Z18 * v23Y5;
- nY5 = v12Z18 * v23X5 - v12X18 * v23Z5;
- nZ5 = v12X18 * v23Y5 - v12Y18 * v23X5;
- var n125;
- var n12X4;
- var n12Y4;
- var n12Z4;
- var n234;
- var n23X4;
- var n23Y4;
- var n23Z4;
- var n314;
- var n31X4;
- var n31Y4;
- var n31Z4;
- n12X4 = v12Y18 * nZ5 - v12Z18 * nY5;
- n12Y4 = v12Z18 * nX5 - v12X18 * nZ5;
- n12Z4 = v12X18 * nY5 - v12Y18 * nX5;
- n23X4 = v23Y5 * nZ5 - v23Z5 * nY5;
- n23Y4 = v23Z5 * nX5 - v23X5 * nZ5;
- n23Z4 = v23X5 * nY5 - v23Y5 * nX5;
- n31X4 = v31Y4 * nZ5 - v31Z4 * nY5;
- n31Y4 = v31Z4 * nX5 - v31X4 * nZ5;
- n31Z4 = v31X4 * nY5 - v31Y4 * nX5;
- var d125 = v1X18 * n12X4 + v1Y18 * n12Y4 + v1Z18 * n12Z4;
- var d234 = v2X18 * n23X4 + v2Y18 * n23Y4 + v2Z18 * n23Z4;
- var d314 = v3X5 * n31X4 + v3Y5 * n31Y4 + v3Z5 * n31Z4;
- var mind5 = -1;
- var minv5;
- var minvX5;
- var minvY5;
- var minvZ5;
- var mini5 = 0;
- minvX5 = 0;
- minvY5 = 0;
- minvZ5 = 0;
- if(d125 < 0) {
- var v151;
- var v1X19;
- var v1Y19;
- var v1Z19;
- var v225;
- var v2X19;
- var v2Y19;
- var v2Z19;
- var v152 = vec21;
- v1X19 = v152.x;
- v1Y19 = v152.y;
- v1Z19 = v152.z;
- var v153 = vec31;
- v2X19 = v153.x;
- v2Y19 = v153.y;
- v2Z19 = v153.z;
- var v1219;
- var v12X19;
- var v12Y19;
- var v12Z19;
- v12X19 = v2X19 - v1X19;
- v12Y19 = v2Y19 - v1Y19;
- v12Z19 = v2Z19 - v1Z19;
- var d30 = v12X19 * v12X19 + v12Y19 * v12Y19 + v12Z19 * v12Z19;
- var t13 = v12X19 * v1X19 + v12Y19 * v1Y19 + v12Z19 * v1Z19;
- t13 = -t13 / d30;
- var b15;
- if(t13 < 0) {
- var v154 = closest;
- v154.x = v1X19;
- v154.y = v1Y19;
- v154.z = v1Z19;
- b15 = 1;
- } else if(t13 > 1) {
- var v155 = closest;
- v155.x = v2X19;
- v155.y = v2Y19;
- v155.z = v2Z19;
- b15 = 2;
- } else {
- var p13;
- var pX13;
- var pY13;
- var pZ13;
- pX13 = v1X19 + v12X19 * t13;
- pY13 = v1Y19 + v12Y19 * t13;
- pZ13 = v1Z19 + v12Z19 * t13;
- var v156 = closest;
- v156.x = pX13;
- v156.y = pY13;
- v156.z = pZ13;
- b15 = 3;
- }
- var d32 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- mini5 = b15;
- mind5 = d32;
- var v157 = closest;
- minvX5 = v157.x;
- minvY5 = v157.y;
- minvZ5 = v157.z;
- }
- if(d234 < 0) {
- var v158;
- var v1X20;
- var v1Y20;
- var v1Z20;
- var v226;
- var v2X20;
- var v2Y20;
- var v2Z20;
- var v159 = vec31;
- v1X20 = v159.x;
- v1Y20 = v159.y;
- v1Z20 = v159.z;
- var v160 = vec4;
- v2X20 = v160.x;
- v2Y20 = v160.y;
- v2Z20 = v160.z;
- var v1220;
- var v12X20;
- var v12Y20;
- var v12Z20;
- v12X20 = v2X20 - v1X20;
- v12Y20 = v2Y20 - v1Y20;
- v12Z20 = v2Z20 - v1Z20;
- var d33 = v12X20 * v12X20 + v12Y20 * v12Y20 + v12Z20 * v12Z20;
- var t14 = v12X20 * v1X20 + v12Y20 * v1Y20 + v12Z20 * v1Z20;
- t14 = -t14 / d33;
- var b16;
- if(t14 < 0) {
- var v161 = closest;
- v161.x = v1X20;
- v161.y = v1Y20;
- v161.z = v1Z20;
- b16 = 1;
- } else if(t14 > 1) {
- var v162 = closest;
- v162.x = v2X20;
- v162.y = v2Y20;
- v162.z = v2Z20;
- b16 = 2;
- } else {
- var p14;
- var pX14;
- var pY14;
- var pZ14;
- pX14 = v1X20 + v12X20 * t14;
- pY14 = v1Y20 + v12Y20 * t14;
- pZ14 = v1Z20 + v12Z20 * t14;
- var v163 = closest;
- v163.x = pX14;
- v163.y = pY14;
- v163.z = pZ14;
- b16 = 3;
- }
- var d34 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind5 < 0 || d34 < mind5) {
- mini5 = b16 << 1;
- mind5 = d34;
- var v164 = closest;
- minvX5 = v164.x;
- minvY5 = v164.y;
- minvZ5 = v164.z;
- }
- }
- if(d314 < 0) {
- var v165;
- var v1X21;
- var v1Y21;
- var v1Z21;
- var v227;
- var v2X21;
- var v2Y21;
- var v2Z21;
- var v166 = vec21;
- v1X21 = v166.x;
- v1Y21 = v166.y;
- v1Z21 = v166.z;
- var v167 = vec4;
- v2X21 = v167.x;
- v2Y21 = v167.y;
- v2Z21 = v167.z;
- var v1221;
- var v12X21;
- var v12Y21;
- var v12Z21;
- v12X21 = v2X21 - v1X21;
- v12Y21 = v2Y21 - v1Y21;
- v12Z21 = v2Z21 - v1Z21;
- var d35 = v12X21 * v12X21 + v12Y21 * v12Y21 + v12Z21 * v12Z21;
- var t15 = v12X21 * v1X21 + v12Y21 * v1Y21 + v12Z21 * v1Z21;
- t15 = -t15 / d35;
- var b17;
- if(t15 < 0) {
- var v168 = closest;
- v168.x = v1X21;
- v168.y = v1Y21;
- v168.z = v1Z21;
- b17 = 1;
- } else if(t15 > 1) {
- var v169 = closest;
- v169.x = v2X21;
- v169.y = v2Y21;
- v169.z = v2Z21;
- b17 = 2;
- } else {
- var p15;
- var pX15;
- var pY15;
- var pZ15;
- pX15 = v1X21 + v12X21 * t15;
- pY15 = v1Y21 + v12Y21 * t15;
- pZ15 = v1Z21 + v12Z21 * t15;
- var v170 = closest;
- v170.x = pX15;
- v170.y = pY15;
- v170.z = pZ15;
- b17 = 3;
- }
- var d36 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind5 < 0 || d36 < mind5) {
- mini5 = b17 & 1 | (b17 & 2) << 1;
- mind5 = d36;
- var v171 = closest;
- minvX5 = v171.x;
- minvY5 = v171.y;
- minvZ5 = v171.z;
- }
- }
- var b18;
- if(mind5 > 0) {
- var v172 = closest;
- v172.x = minvX5;
- v172.y = minvY5;
- v172.z = minvZ5;
- b18 = mini5;
- } else {
- var l5 = nX5 * nX5 + nY5 * nY5 + nZ5 * nZ5;
- if(l5 > 0) {
- l5 = 1 / Math.sqrt(l5);
- }
- nX5 *= l5;
- nY5 *= l5;
- nZ5 *= l5;
- var dn4 = v1X18 * nX5 + v1Y18 * nY5 + v1Z18 * nZ5;
- var l24 = nX5 * nX5 + nY5 * nY5 + nZ5 * nZ5;
- l24 = dn4 / l24;
- minvX5 = nX5 * l24;
- minvY5 = nY5 * l24;
- minvZ5 = nZ5 * l24;
- var v173 = closest;
- v173.x = minvX5;
- v173.y = minvY5;
- v173.z = minvZ5;
- b18 = 7;
- }
- var d37 = closest.x * closest.x + closest.y * closest.y + closest.z * closest.z;
- if(mind1 < 0 || d37 < mind1) {
- mini1 = b18 << 1;
- mind1 = d37;
- var v174 = closest;
- minvX1 = v174.x;
- minvY1 = v174.y;
- minvZ1 = v174.z;
- }
- }
- if(mind1 > 0) {
- var v175 = closest;
- v175.x = minvX1;
- v175.y = minvY1;
- v175.z = minvZ1;
- v4 = mini1;
- } else {
- closest.zero();
- v4 = 15;
- }
- break;
- }
- this.shrinkSimplex(v4);
- if(closest.x * closest.x + closest.y * closest.y + closest.z * closest.z < eps2) {
- if(lambda == 0 || this.simplexSize == 4) {
- hit.fraction = lambda;
- return false;
- }
- this.interpolateClosestPoints();
- hit.fraction = lambda;
- var _this3 = hit.normal;
- _this3.x = dir.x;
- _this3.y = dir.y;
- _this3.z = dir.z;
- var _this4 = _this3;
- var invLen = Math.sqrt(_this4.x * _this4.x + _this4.y * _this4.y + _this4.z * _this4.z);
- if(invLen > 0) {
- invLen = 1 / invLen;
- }
- var tx2 = _this4.x * invLen;
- var ty2 = _this4.y * invLen;
- var tz2 = _this4.z * invLen;
- _this4.x = tx2;
- _this4.y = ty2;
- _this4.z = tz2;
- var _this5 = hit.position;
- var v176 = this.closestPoint1;
- _this5.x = v176.x;
- _this5.y = v176.y;
- _this5.z = v176.z;
- var _this6 = _this5;
- var tx3 = _this6.x + tl1.x * lambda;
- var ty3 = _this6.y + tl1.y * lambda;
- var tz3 = _this6.z + tl1.z * lambda;
- _this6.x = tx3;
- _this6.y = ty3;
- _this6.z = tz3;
- return true;
- }
- dir.x = closest.x;
- dir.y = closest.y;
- dir.z = closest.z;
- var _this7 = dir;
- var tx4 = -_this7.x;
- var ty4 = -_this7.y;
- var tz4 = -_this7.z;
- _this7.x = tx4;
- _this7.y = ty4;
- _this7.z = tz4;
- if(this.c1 != null) {
- this.computeWitnessPoint1(true);
- } else {
- var v177 = this.w1[this.simplexSize];
- v177.x = this.tf1._positionX;
- v177.y = this.tf1._positionY;
- v177.z = this.tf1._positionZ;
- }
- this.computeWitnessPoint2(true);
- var _this8 = this.s[this.simplexSize];
- var v178 = this.w1[this.simplexSize];
- _this8.x = v178.x;
- _this8.y = v178.y;
- _this8.z = v178.z;
- var _this9 = _this8;
- var v179 = this.w2[this.simplexSize];
- var tx5 = _this9.x - v179.x;
- var ty5 = _this9.y - v179.y;
- var tz5 = _this9.z - v179.z;
- _this9.x = tx5;
- _this9.y = ty5;
- _this9.z = tz5;
- var _this10 = s[this.simplexSize];
- var tx6 = _this10.x - rayX.x;
- var ty6 = _this10.y - rayX.y;
- var tz6 = _this10.z - rayX.z;
- _this10.x = tx6;
- _this10.y = ty6;
- _this10.z = tz6;
- if(dir.x * dir.x + dir.y * dir.y + dir.z * dir.z < eps2) {
- throw new Error("!?");
- }
- var p16 = s[this.simplexSize];
- var n6 = dir;
- var pn = p16.x * n6.x + p16.y * n6.y + p16.z * n6.z;
- if(pn < 0) {
- if(rayR.x * n6.x + rayR.y * n6.y + rayR.z * n6.z >= 0) {
- return false;
- }
- var dLambda = pn / (rayR.x * n6.x + rayR.y * n6.y + rayR.z * n6.z);
- lambda += dLambda;
- if(lambda >= 1) {
- return false;
- }
- var tx7 = rayX.x + rayR.x * dLambda;
- var ty7 = rayX.y + rayR.y * dLambda;
- var tz7 = rayX.z + rayR.z * dLambda;
- rayX.x = tx7;
- rayX.y = ty7;
- rayX.z = tz7;
- var _g1 = 0;
- var _g2 = this.simplexSize + 1;
- while(_g1 < _g2) {
- var i = _g1++;
- var _this11 = s[i];
- var s1 = -dLambda;
- var tx8 = _this11.x + rayR.x * s1;
- var ty8 = _this11.y + rayR.y * s1;
- var tz8 = _this11.z + rayR.z * s1;
- _this11.x = tx8;
- _this11.y = ty8;
- _this11.z = tz8;
- }
- }
- var duplicate = false;
- var _g11 = 0;
- var _g21 = this.simplexSize;
- while(_g11 < _g21) {
- var i1 = _g11++;
- var dx = s[i1].x - s[this.simplexSize].x;
- var dy = s[i1].y - s[this.simplexSize].y;
- var dz = s[i1].z - s[this.simplexSize].z;
- if(dx * dx + dy * dy + dz * dz < eps2) {
- duplicate = true;
- break;
- }
- }
- if(!duplicate) {
- this.simplexSize++;
- }
- ++count;
- }
- return false;
- }
- interpolateClosestPoints() {
- switch(this.simplexSize) {
- case 1:
- var _this = this.closestPoint1;
- var v = this.w1[0];
- _this.x = v.x;
- _this.y = v.y;
- _this.z = v.z;
- var _this1 = this.closestPoint2;
- var v1 = this.w2[0];
- _this1.x = v1.x;
- _this1.y = v1.y;
- _this1.z = v1.z;
- break;
- case 2:
- var c;
- var cX;
- var cY;
- var cZ;
- var v2 = this.closest;
- cX = v2.x;
- cY = v2.y;
- cZ = v2.z;
- var s0;
- var s0X;
- var s0Y;
- var s0Z;
- var w10;
- var w10X;
- var w10Y;
- var w10Z;
- var w20;
- var w20X;
- var w20Y;
- var w20Z;
- var s1;
- var s1X;
- var s1Y;
- var s1Z;
- var w11;
- var w11X;
- var w11Y;
- var w11Z;
- var w21;
- var w21X;
- var w21Y;
- var w21Z;
- var s2;
- var s2X;
- var s2Y;
- var s2Z;
- var w12;
- var w12X;
- var w12Y;
- var w12Z;
- var w22;
- var w22X;
- var w22Y;
- var w22Z;
- var v3 = this.s[0];
- s0X = v3.x;
- s0Y = v3.y;
- s0Z = v3.z;
- var v4 = this.w1[0];
- w10X = v4.x;
- w10Y = v4.y;
- w10Z = v4.z;
- var v5 = this.w2[0];
- w20X = v5.x;
- w20Y = v5.y;
- w20Z = v5.z;
- var v6 = this.s[1];
- s1X = v6.x;
- s1Y = v6.y;
- s1Z = v6.z;
- var v7 = this.w1[1];
- w11X = v7.x;
- w11Y = v7.y;
- w11Z = v7.z;
- var v8 = this.w2[1];
- w21X = v8.x;
- w21Y = v8.y;
- w21Z = v8.z;
- var v9 = this.s[2];
- s2X = v9.x;
- s2Y = v9.y;
- s2Z = v9.z;
- var v10 = this.w1[2];
- w12X = v10.x;
- w12Y = v10.y;
- w12Z = v10.z;
- var v11 = this.w2[2];
- w22X = v11.x;
- w22Y = v11.y;
- w22Z = v11.z;
- var s01;
- var s01X;
- var s01Y;
- var s01Z;
- s01X = s1X - s0X;
- s01Y = s1Y - s0Y;
- s01Z = s1Z - s0Z;
- var invDet = s01X * s01X + s01Y * s01Y + s01Z * s01Z;
- if(invDet != 0) {
- invDet = 1 / invDet;
- }
- var s0c;
- var s0cX;
- var s0cY;
- var s0cZ;
- s0cX = cX - s0X;
- s0cY = cY - s0Y;
- s0cZ = cZ - s0Z;
- var t = (s0cX * s01X + s0cY * s01Y + s0cZ * s01Z) * invDet;
- var diff;
- var diffX;
- var diffY;
- var diffZ;
- var cp1;
- var cp1X;
- var cp1Y;
- var cp1Z;
- var cp2;
- var cp2X;
- var cp2Y;
- var cp2Z;
- diffX = w11X - w10X;
- diffY = w11Y - w10Y;
- diffZ = w11Z - w10Z;
- cp1X = w10X + diffX * t;
- cp1Y = w10Y + diffY * t;
- cp1Z = w10Z + diffZ * t;
- diffX = w21X - w20X;
- diffY = w21Y - w20Y;
- diffZ = w21Z - w20Z;
- cp2X = w20X + diffX * t;
- cp2Y = w20Y + diffY * t;
- cp2Z = w20Z + diffZ * t;
- var v12 = this.closestPoint1;
- v12.x = cp1X;
- v12.y = cp1Y;
- v12.z = cp1Z;
- var v13 = this.closestPoint2;
- v13.x = cp2X;
- v13.y = cp2Y;
- v13.z = cp2Z;
- break;
- case 3:
- var c1;
- var cX1;
- var cY1;
- var cZ1;
- var v14 = this.closest;
- cX1 = v14.x;
- cY1 = v14.y;
- cZ1 = v14.z;
- var s02;
- var s0X1;
- var s0Y1;
- var s0Z1;
- var w101;
- var w10X1;
- var w10Y1;
- var w10Z1;
- var w201;
- var w20X1;
- var w20Y1;
- var w20Z1;
- var s11;
- var s1X1;
- var s1Y1;
- var s1Z1;
- var w111;
- var w11X1;
- var w11Y1;
- var w11Z1;
- var w211;
- var w21X1;
- var w21Y1;
- var w21Z1;
- var s21;
- var s2X1;
- var s2Y1;
- var s2Z1;
- var w121;
- var w12X1;
- var w12Y1;
- var w12Z1;
- var w221;
- var w22X1;
- var w22Y1;
- var w22Z1;
- var v15 = this.s[0];
- s0X1 = v15.x;
- s0Y1 = v15.y;
- s0Z1 = v15.z;
- var v16 = this.w1[0];
- w10X1 = v16.x;
- w10Y1 = v16.y;
- w10Z1 = v16.z;
- var v17 = this.w2[0];
- w20X1 = v17.x;
- w20Y1 = v17.y;
- w20Z1 = v17.z;
- var v18 = this.s[1];
- s1X1 = v18.x;
- s1Y1 = v18.y;
- s1Z1 = v18.z;
- var v19 = this.w1[1];
- w11X1 = v19.x;
- w11Y1 = v19.y;
- w11Z1 = v19.z;
- var v20 = this.w2[1];
- w21X1 = v20.x;
- w21Y1 = v20.y;
- w21Z1 = v20.z;
- var v21 = this.s[2];
- s2X1 = v21.x;
- s2Y1 = v21.y;
- s2Z1 = v21.z;
- var v22 = this.w1[2];
- w12X1 = v22.x;
- w12Y1 = v22.y;
- w12Z1 = v22.z;
- var v23 = this.w2[2];
- w22X1 = v23.x;
- w22Y1 = v23.y;
- w22Z1 = v23.z;
- var s011;
- var s01X1;
- var s01Y1;
- var s01Z1;
- var s021;
- var s02X;
- var s02Y;
- var s02Z;
- var s0c1;
- var s0cX1;
- var s0cY1;
- var s0cZ1;
- s01X1 = s1X1 - s0X1;
- s01Y1 = s1Y1 - s0Y1;
- s01Z1 = s1Z1 - s0Z1;
- s02X = s2X1 - s0X1;
- s02Y = s2Y1 - s0Y1;
- s02Z = s2Z1 - s0Z1;
- s0cX1 = cX1 - s0X1;
- s0cY1 = cY1 - s0Y1;
- s0cZ1 = cZ1 - s0Z1;
- var d11 = s01X1 * s01X1 + s01Y1 * s01Y1 + s01Z1 * s01Z1;
- var d12 = s01X1 * s02X + s01Y1 * s02Y + s01Z1 * s02Z;
- var d22 = s02X * s02X + s02Y * s02Y + s02Z * s02Z;
- var d1c = s01X1 * s0cX1 + s01Y1 * s0cY1 + s01Z1 * s0cZ1;
- var d2c = s02X * s0cX1 + s02Y * s0cY1 + s02Z * s0cZ1;
- var invDet1 = d11 * d22 - d12 * d12;
- if(invDet1 != 0) {
- invDet1 = 1 / invDet1;
- }
- var s = (d1c * d22 - d2c * d12) * invDet1;
- var t1 = (-d1c * d12 + d2c * d11) * invDet1;
- var diff1;
- var diffX1;
- var diffY1;
- var diffZ1;
- var cp11;
- var cp1X1;
- var cp1Y1;
- var cp1Z1;
- var cp21;
- var cp2X1;
- var cp2Y1;
- var cp2Z1;
- diffX1 = w11X1 - w10X1;
- diffY1 = w11Y1 - w10Y1;
- diffZ1 = w11Z1 - w10Z1;
- cp1X1 = w10X1 + diffX1 * s;
- cp1Y1 = w10Y1 + diffY1 * s;
- cp1Z1 = w10Z1 + diffZ1 * s;
- diffX1 = w12X1 - w10X1;
- diffY1 = w12Y1 - w10Y1;
- diffZ1 = w12Z1 - w10Z1;
- cp1X1 += diffX1 * t1;
- cp1Y1 += diffY1 * t1;
- cp1Z1 += diffZ1 * t1;
- diffX1 = w21X1 - w20X1;
- diffY1 = w21Y1 - w20Y1;
- diffZ1 = w21Z1 - w20Z1;
- cp2X1 = w20X1 + diffX1 * s;
- cp2Y1 = w20Y1 + diffY1 * s;
- cp2Z1 = w20Z1 + diffZ1 * s;
- diffX1 = w22X1 - w20X1;
- diffY1 = w22Y1 - w20Y1;
- diffZ1 = w22Z1 - w20Z1;
- cp2X1 += diffX1 * t1;
- cp2Y1 += diffY1 * t1;
- cp2Z1 += diffZ1 * t1;
- var v24 = this.closestPoint1;
- v24.x = cp1X1;
- v24.y = cp1Y1;
- v24.z = cp1Z1;
- var v25 = this.closestPoint2;
- v25.x = cp2X1;
- v25.y = cp2Y1;
- v25.z = cp2Z1;
- break;
- default:
- throw new Error("!?");
- }
- }
- loadCache(gjkCache) {
- var _this = this.dir;
- var v = gjkCache.prevClosestDir;
- _this.x = v.x;
- _this.y = v.y;
- _this.z = v.z;
- }
- saveCache(gjkCache) {
- var _this = gjkCache.prevClosestDir;
- var v = this.closest;
- _this.x = v.x;
- _this.y = v.y;
- _this.z = v.z;
- var _this1 = _this;
- var tx = -_this1.x;
- var ty = -_this1.y;
- var tz = -_this1.z;
- _this1.x = tx;
- _this1.y = ty;
- _this1.z = tz;
- }
- shrinkSimplex(vertexBits) {
- this.simplexSize = vertexBits;
- this.simplexSize = (this.simplexSize & 5) + (this.simplexSize >> 1 & 5);
- this.simplexSize = (this.simplexSize & 3) + (this.simplexSize >> 2 & 3);
- switch(vertexBits) {
- case 2:
- var _this = this.s[0];
- var v = this.s[1];
- _this.x = v.x;
- _this.y = v.y;
- _this.z = v.z;
- var _this1 = this.w1[0];
- var v1 = this.w1[1];
- _this1.x = v1.x;
- _this1.y = v1.y;
- _this1.z = v1.z;
- var _this2 = this.w2[0];
- var v2 = this.w2[1];
- _this2.x = v2.x;
- _this2.y = v2.y;
- _this2.z = v2.z;
- break;
- case 4:
- var _this3 = this.s[0];
- var v3 = this.s[2];
- _this3.x = v3.x;
- _this3.y = v3.y;
- _this3.z = v3.z;
- var _this4 = this.w1[0];
- var v4 = this.w1[2];
- _this4.x = v4.x;
- _this4.y = v4.y;
- _this4.z = v4.z;
- var _this5 = this.w2[0];
- var v5 = this.w2[2];
- _this5.x = v5.x;
- _this5.y = v5.y;
- _this5.z = v5.z;
- break;
- case 5:
- var _this6 = this.s[1];
- var v6 = this.s[2];
- _this6.x = v6.x;
- _this6.y = v6.y;
- _this6.z = v6.z;
- var _this7 = this.w1[1];
- var v7 = this.w1[2];
- _this7.x = v7.x;
- _this7.y = v7.y;
- _this7.z = v7.z;
- var _this8 = this.w2[1];
- var v8 = this.w2[2];
- _this8.x = v8.x;
- _this8.y = v8.y;
- _this8.z = v8.z;
- break;
- case 6:
- var _this9 = this.s[0];
- var v9 = this.s[2];
- _this9.x = v9.x;
- _this9.y = v9.y;
- _this9.z = v9.z;
- var _this10 = this.w1[0];
- var v10 = this.w1[2];
- _this10.x = v10.x;
- _this10.y = v10.y;
- _this10.z = v10.z;
- var _this11 = this.w2[0];
- var v11 = this.w2[2];
- _this11.x = v11.x;
- _this11.y = v11.y;
- _this11.z = v11.z;
- break;
- case 8:
- var _this12 = this.s[0];
- var v12 = this.s[3];
- _this12.x = v12.x;
- _this12.y = v12.y;
- _this12.z = v12.z;
- var _this13 = this.w1[0];
- var v13 = this.w1[3];
- _this13.x = v13.x;
- _this13.y = v13.y;
- _this13.z = v13.z;
- var _this14 = this.w2[0];
- var v14 = this.w2[3];
- _this14.x = v14.x;
- _this14.y = v14.y;
- _this14.z = v14.z;
- break;
- case 9:
- var _this15 = this.s[1];
- var v15 = this.s[3];
- _this15.x = v15.x;
- _this15.y = v15.y;
- _this15.z = v15.z;
- var _this16 = this.w1[1];
- var v16 = this.w1[3];
- _this16.x = v16.x;
- _this16.y = v16.y;
- _this16.z = v16.z;
- var _this17 = this.w2[1];
- var v17 = this.w2[3];
- _this17.x = v17.x;
- _this17.y = v17.y;
- _this17.z = v17.z;
- break;
- case 10:
- var _this18 = this.s[0];
- var v18 = this.s[3];
- _this18.x = v18.x;
- _this18.y = v18.y;
- _this18.z = v18.z;
- var _this19 = this.w1[0];
- var v19 = this.w1[3];
- _this19.x = v19.x;
- _this19.y = v19.y;
- _this19.z = v19.z;
- var _this20 = this.w2[0];
- var v20 = this.w2[3];
- _this20.x = v20.x;
- _this20.y = v20.y;
- _this20.z = v20.z;
- break;
- case 11:
- var _this21 = this.s[2];
- var v21 = this.s[3];
- _this21.x = v21.x;
- _this21.y = v21.y;
- _this21.z = v21.z;
- var _this22 = this.w1[2];
- var v22 = this.w1[3];
- _this22.x = v22.x;
- _this22.y = v22.y;
- _this22.z = v22.z;
- var _this23 = this.w2[2];
- var v23 = this.w2[3];
- _this23.x = v23.x;
- _this23.y = v23.y;
- _this23.z = v23.z;
- break;
- case 12:
- var _this24 = this.s[0];
- var v24 = this.s[2];
- _this24.x = v24.x;
- _this24.y = v24.y;
- _this24.z = v24.z;
- var _this25 = this.w1[0];
- var v25 = this.w1[2];
- _this25.x = v25.x;
- _this25.y = v25.y;
- _this25.z = v25.z;
- var _this26 = this.w2[0];
- var v26 = this.w2[2];
- _this26.x = v26.x;
- _this26.y = v26.y;
- _this26.z = v26.z;
- var _this27 = this.s[1];
- var v27 = this.s[3];
- _this27.x = v27.x;
- _this27.y = v27.y;
- _this27.z = v27.z;
- var _this28 = this.w1[1];
- var v28 = this.w1[3];
- _this28.x = v28.x;
- _this28.y = v28.y;
- _this28.z = v28.z;
- var _this29 = this.w2[1];
- var v29 = this.w2[3];
- _this29.x = v29.x;
- _this29.y = v29.y;
- _this29.z = v29.z;
- break;
- case 13:
- var _this30 = this.s[1];
- var v30 = this.s[3];
- _this30.x = v30.x;
- _this30.y = v30.y;
- _this30.z = v30.z;
- var _this31 = this.w1[1];
- var v31 = this.w1[3];
- _this31.x = v31.x;
- _this31.y = v31.y;
- _this31.z = v31.z;
- var _this32 = this.w2[1];
- var v32 = this.w2[3];
- _this32.x = v32.x;
- _this32.y = v32.y;
- _this32.z = v32.z;
- break;
- case 14:
- var _this33 = this.s[0];
- var v33 = this.s[3];
- _this33.x = v33.x;
- _this33.y = v33.y;
- _this33.z = v33.z;
- var _this34 = this.w1[0];
- var v34 = this.w1[3];
- _this34.x = v34.x;
- _this34.y = v34.y;
- _this34.z = v34.z;
- var _this35 = this.w2[0];
- var v35 = this.w2[3];
- _this35.x = v35.x;
- _this35.y = v35.y;
- _this35.z = v35.z;
- break;
- }
- }
- computeWitnessPoint1(addMargin) {
- var tmp;
- var tmpX;
- var tmpY;
- var tmpZ;
- var idir;
- var idirX;
- var idirY;
- var idirZ;
- var v = this.dir;
- idirX = v.x;
- idirY = v.y;
- idirZ = v.z;
- var ldir1;
- var ldir1X;
- var ldir1Y;
- var ldir1Z;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = this.tf1._rotation00 * idirX + this.tf1._rotation10 * idirY + this.tf1._rotation20 * idirZ;
- __tmp__Y = this.tf1._rotation01 * idirX + this.tf1._rotation11 * idirY + this.tf1._rotation21 * idirZ;
- __tmp__Z = this.tf1._rotation02 * idirX + this.tf1._rotation12 * idirY + this.tf1._rotation22 * idirZ;
- ldir1X = __tmp__X;
- ldir1Y = __tmp__Y;
- ldir1Z = __tmp__Z;
- var iw1;
- var iw1X;
- var iw1Y;
- var iw1Z;
- var v1 = this.dir;
- v1.x = ldir1X;
- v1.y = ldir1Y;
- v1.z = ldir1Z;
- this.c1.computeLocalSupportingVertex(this.dir,this.w1[this.simplexSize]);
- if(addMargin) {
- var _this = this.dir;
- var invLen = Math.sqrt(_this.x * _this.x + _this.y * _this.y + _this.z * _this.z);
- if(invLen > 0) {
- invLen = 1 / invLen;
- }
- var tx = _this.x * invLen;
- var ty = _this.y * invLen;
- var tz = _this.z * invLen;
- _this.x = tx;
- _this.y = ty;
- _this.z = tz;
- var _this1 = this.w1[this.simplexSize];
- var v2 = this.dir;
- var s = this.c1._gjkMargin;
- var tx1 = _this1.x + v2.x * s;
- var ty1 = _this1.y + v2.y * s;
- var tz1 = _this1.z + v2.z * s;
- _this1.x = tx1;
- _this1.y = ty1;
- _this1.z = tz1;
- }
- var v3 = this.w1[this.simplexSize];
- tmpX = v3.x;
- tmpY = v3.y;
- tmpZ = v3.z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = this.tf1._rotation00 * tmpX + this.tf1._rotation01 * tmpY + this.tf1._rotation02 * tmpZ;
- __tmp__Y1 = this.tf1._rotation10 * tmpX + this.tf1._rotation11 * tmpY + this.tf1._rotation12 * tmpZ;
- __tmp__Z1 = this.tf1._rotation20 * tmpX + this.tf1._rotation21 * tmpY + this.tf1._rotation22 * tmpZ;
- iw1X = __tmp__X1;
- iw1Y = __tmp__Y1;
- iw1Z = __tmp__Z1;
- iw1X += this.tf1._positionX;
- iw1Y += this.tf1._positionY;
- iw1Z += this.tf1._positionZ;
- var v4 = this.w1[this.simplexSize];
- v4.x = iw1X;
- v4.y = iw1Y;
- v4.z = iw1Z;
- var v5 = this.dir;
- v5.x = idirX;
- v5.y = idirY;
- v5.z = idirZ;
- }
- computeWitnessPoint2(addMargin) {
- var tmp;
- var tmpX;
- var tmpY;
- var tmpZ;
- var idir;
- var idirX;
- var idirY;
- var idirZ;
- var v = this.dir;
- idirX = v.x;
- idirY = v.y;
- idirZ = v.z;
- var ldir2;
- var ldir2X;
- var ldir2Y;
- var ldir2Z;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = this.tf2._rotation00 * idirX + this.tf2._rotation10 * idirY + this.tf2._rotation20 * idirZ;
- __tmp__Y = this.tf2._rotation01 * idirX + this.tf2._rotation11 * idirY + this.tf2._rotation21 * idirZ;
- __tmp__Z = this.tf2._rotation02 * idirX + this.tf2._rotation12 * idirY + this.tf2._rotation22 * idirZ;
- ldir2X = __tmp__X;
- ldir2Y = __tmp__Y;
- ldir2Z = __tmp__Z;
- ldir2X = -ldir2X;
- ldir2Y = -ldir2Y;
- ldir2Z = -ldir2Z;
- var iw2;
- var iw2X;
- var iw2Y;
- var iw2Z;
- var v1 = this.dir;
- v1.x = ldir2X;
- v1.y = ldir2Y;
- v1.z = ldir2Z;
- this.c2.computeLocalSupportingVertex(this.dir,this.w2[this.simplexSize]);
- if(addMargin) {
- var _this = this.dir;
- var invLen = Math.sqrt(_this.x * _this.x + _this.y * _this.y + _this.z * _this.z);
- if(invLen > 0) {
- invLen = 1 / invLen;
- }
- var tx = _this.x * invLen;
- var ty = _this.y * invLen;
- var tz = _this.z * invLen;
- _this.x = tx;
- _this.y = ty;
- _this.z = tz;
- var _this1 = this.w2[this.simplexSize];
- var v2 = this.dir;
- var s = this.c2._gjkMargin;
- var tx1 = _this1.x + v2.x * s;
- var ty1 = _this1.y + v2.y * s;
- var tz1 = _this1.z + v2.z * s;
- _this1.x = tx1;
- _this1.y = ty1;
- _this1.z = tz1;
- }
- var v3 = this.w2[this.simplexSize];
- tmpX = v3.x;
- tmpY = v3.y;
- tmpZ = v3.z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = this.tf2._rotation00 * tmpX + this.tf2._rotation01 * tmpY + this.tf2._rotation02 * tmpZ;
- __tmp__Y1 = this.tf2._rotation10 * tmpX + this.tf2._rotation11 * tmpY + this.tf2._rotation12 * tmpZ;
- __tmp__Z1 = this.tf2._rotation20 * tmpX + this.tf2._rotation21 * tmpY + this.tf2._rotation22 * tmpZ;
- iw2X = __tmp__X1;
- iw2Y = __tmp__Y1;
- iw2Z = __tmp__Z1;
- iw2X += this.tf2._positionX;
- iw2Y += this.tf2._positionY;
- iw2Z += this.tf2._positionZ;
- var v4 = this.w2[this.simplexSize];
- v4.x = iw2X;
- v4.y = iw2Y;
- v4.z = iw2Z;
- var v5 = this.dir;
- v5.x = idirX;
- v5.y = idirY;
- v5.z = idirZ;
- }
- pointToTetrahedron() {
- var _g = 0;
- while(_g < 3) {
- var i = _g++;
- var _this = this.dir;
- var v = this.baseDirs[i];
- _this.x = v.x;
- _this.y = v.y;
- _this.z = v.z;
- this.computeWitnessPoint1(false);
- this.computeWitnessPoint2(false);
- var _this1 = this.s[this.simplexSize];
- var v1 = this.w1[this.simplexSize];
- _this1.x = v1.x;
- _this1.y = v1.y;
- _this1.z = v1.z;
- var _this2 = _this1;
- var v2 = this.w2[this.simplexSize];
- var tx = _this2.x - v2.x;
- var ty = _this2.y - v2.y;
- var tz = _this2.z - v2.z;
- _this2.x = tx;
- _this2.y = ty;
- _this2.z = tz;
- this.simplexSize++;
- this.lineToTetrahedron();
- if(this.simplexSize == 4) {
- break;
- }
- this.simplexSize--;
- var _this3 = this.dir;
- var tx1 = -_this3.x;
- var ty1 = -_this3.y;
- var tz1 = -_this3.z;
- _this3.x = tx1;
- _this3.y = ty1;
- _this3.z = tz1;
- this.computeWitnessPoint1(false);
- this.computeWitnessPoint2(false);
- var _this4 = this.s[this.simplexSize];
- var v3 = this.w1[this.simplexSize];
- _this4.x = v3.x;
- _this4.y = v3.y;
- _this4.z = v3.z;
- var _this5 = _this4;
- var v4 = this.w2[this.simplexSize];
- var tx2 = _this5.x - v4.x;
- var ty2 = _this5.y - v4.y;
- var tz2 = _this5.z - v4.z;
- _this5.x = tx2;
- _this5.y = ty2;
- _this5.z = tz2;
- this.simplexSize++;
- this.lineToTetrahedron();
- if(this.simplexSize == 4) {
- break;
- }
- this.simplexSize--;
- }
- }
- lineToTetrahedron() {
- var oldDir;
- var oldDirX;
- var oldDirY;
- var oldDirZ;
- var v = this.dir;
- oldDirX = v.x;
- oldDirY = v.y;
- oldDirZ = v.z;
- var s0;
- var s0X;
- var s0Y;
- var s0Z;
- var s1;
- var s1X;
- var s1Y;
- var s1Z;
- var lineDir;
- var lineDirX;
- var lineDirY;
- var lineDirZ;
- var v1 = this.s[0];
- s0X = v1.x;
- s0Y = v1.y;
- s0Z = v1.z;
- var v2 = this.s[1];
- s1X = v2.x;
- s1Y = v2.y;
- s1Z = v2.z;
- lineDirX = s0X - s1X;
- lineDirY = s0Y - s1Y;
- lineDirZ = s0Z - s1Z;
- var _g = 0;
- while(_g < 3) {
- var i = _g++;
- var baseDir;
- var baseDirX;
- var baseDirY;
- var baseDirZ;
- var v3 = this.baseDirs[i];
- baseDirX = v3.x;
- baseDirY = v3.y;
- baseDirZ = v3.z;
- var newDir;
- var newDirX;
- var newDirY;
- var newDirZ;
- newDirX = lineDirY * baseDirZ - lineDirZ * baseDirY;
- newDirY = lineDirZ * baseDirX - lineDirX * baseDirZ;
- newDirZ = lineDirX * baseDirY - lineDirY * baseDirX;
- var v4 = this.dir;
- v4.x = newDirX;
- v4.y = newDirY;
- v4.z = newDirZ;
- this.computeWitnessPoint1(false);
- this.computeWitnessPoint2(false);
- var _this = this.s[this.simplexSize];
- var v5 = this.w1[this.simplexSize];
- _this.x = v5.x;
- _this.y = v5.y;
- _this.z = v5.z;
- var _this1 = _this;
- var v6 = this.w2[this.simplexSize];
- var tx = _this1.x - v6.x;
- var ty = _this1.y - v6.y;
- var tz = _this1.z - v6.z;
- _this1.x = tx;
- _this1.y = ty;
- _this1.z = tz;
- this.simplexSize++;
- this.triangleToTetrahedron();
- if(this.simplexSize == 4) {
- break;
- }
- this.simplexSize--;
- var _this2 = this.dir;
- var tx1 = -_this2.x;
- var ty1 = -_this2.y;
- var tz1 = -_this2.z;
- _this2.x = tx1;
- _this2.y = ty1;
- _this2.z = tz1;
- this.computeWitnessPoint1(false);
- this.computeWitnessPoint2(false);
- var _this3 = this.s[this.simplexSize];
- var v7 = this.w1[this.simplexSize];
- _this3.x = v7.x;
- _this3.y = v7.y;
- _this3.z = v7.z;
- var _this4 = _this3;
- var v8 = this.w2[this.simplexSize];
- var tx2 = _this4.x - v8.x;
- var ty2 = _this4.y - v8.y;
- var tz2 = _this4.z - v8.z;
- _this4.x = tx2;
- _this4.y = ty2;
- _this4.z = tz2;
- this.simplexSize++;
- this.triangleToTetrahedron();
- if(this.simplexSize == 4) {
- break;
- }
- this.simplexSize--;
- }
- var v9 = this.dir;
- v9.x = oldDirX;
- v9.y = oldDirY;
- v9.z = oldDirZ;
- }
- triangleToTetrahedron() {
- var oldDir;
- var oldDirX;
- var oldDirY;
- var oldDirZ;
- var v = this.dir;
- oldDirX = v.x;
- oldDirY = v.y;
- oldDirZ = v.z;
- while(true) {
- var s0;
- var s0X;
- var s0Y;
- var s0Z;
- var s1;
- var s1X;
- var s1Y;
- var s1Z;
- var s2;
- var s2X;
- var s2Y;
- var s2Z;
- var s01;
- var s01X;
- var s01Y;
- var s01Z;
- var s02;
- var s02X;
- var s02Y;
- var s02Z;
- var v1 = this.s[0];
- s0X = v1.x;
- s0Y = v1.y;
- s0Z = v1.z;
- var v2 = this.s[1];
- s1X = v2.x;
- s1Y = v2.y;
- s1Z = v2.z;
- var v3 = this.s[2];
- s2X = v3.x;
- s2Y = v3.y;
- s2Z = v3.z;
- s01X = s1X - s0X;
- s01Y = s1Y - s0Y;
- s01Z = s1Z - s0Z;
- s02X = s2X - s0X;
- s02Y = s2Y - s0Y;
- s02Z = s2Z - s0Z;
- var n;
- var nX;
- var nY;
- var nZ;
- nX = s01Y * s02Z - s01Z * s02Y;
- nY = s01Z * s02X - s01X * s02Z;
- nZ = s01X * s02Y - s01Y * s02X;
- var v4 = this.dir;
- v4.x = nX;
- v4.y = nY;
- v4.z = nZ;
- this.computeWitnessPoint1(false);
- this.computeWitnessPoint2(false);
- var _this = this.s[this.simplexSize];
- var v5 = this.w1[this.simplexSize];
- _this.x = v5.x;
- _this.y = v5.y;
- _this.z = v5.z;
- var _this1 = _this;
- var v6 = this.w2[this.simplexSize];
- var tx = _this1.x - v6.x;
- var ty = _this1.y - v6.y;
- var tz = _this1.z - v6.z;
- _this1.x = tx;
- _this1.y = ty;
- _this1.z = tz;
- this.simplexSize++;
- if(this.isValidTetrahedron()) {
- break;
- }
- this.simplexSize--;
- var _this2 = this.dir;
- var tx1 = -_this2.x;
- var ty1 = -_this2.y;
- var tz1 = -_this2.z;
- _this2.x = tx1;
- _this2.y = ty1;
- _this2.z = tz1;
- this.computeWitnessPoint1(false);
- this.computeWitnessPoint2(false);
- var _this3 = this.s[this.simplexSize];
- var v7 = this.w1[this.simplexSize];
- _this3.x = v7.x;
- _this3.y = v7.y;
- _this3.z = v7.z;
- var _this4 = _this3;
- var v8 = this.w2[this.simplexSize];
- var tx2 = _this4.x - v8.x;
- var ty2 = _this4.y - v8.y;
- var tz2 = _this4.z - v8.z;
- _this4.x = tx2;
- _this4.y = ty2;
- _this4.z = tz2;
- this.simplexSize++;
- if(this.isValidTetrahedron()) {
- break;
- }
- this.simplexSize--;
- if(!false) {
- break;
- }
- }
- var v9 = this.dir;
- v9.x = oldDirX;
- v9.y = oldDirY;
- v9.z = oldDirZ;
- }
- isValidTetrahedron() {
- var e00 = this.s[1].x - this.s[0].x;
- var e01 = this.s[1].y - this.s[0].y;
- var e02 = this.s[1].z - this.s[0].z;
- var e10 = this.s[2].x - this.s[0].x;
- var e11 = this.s[2].y - this.s[0].y;
- var e12 = this.s[2].z - this.s[0].z;
- var e20 = this.s[3].x - this.s[0].x;
- var e21 = this.s[3].y - this.s[0].y;
- var e22 = this.s[3].z - this.s[0].z;
- var det = e00 * (e11 * e22 - e12 * e21) - e01 * (e10 * e22 - e12 * e20) + e02 * (e10 * e21 - e11 * e20);
- if(!(det > 1e-12)) {
- return det < -1e-12;
- } else {
- return true;
- }
- }
- computeDepth(convex1,convex2,tf1,tf2,initialPolyhedron,initialPolyhedron1,initialPolyhedron2) {
- var _this = this.polyhedron;
- while(_this._numTriangles > 0) {
- var t = _this._triangleList;
- _this._numTriangles--;
- var prev = t._prev;
- var next = t._next;
- if(prev != null) {
- prev._next = next;
- }
- if(next != null) {
- next._prev = prev;
- }
- if(t == _this._triangleList) {
- _this._triangleList = _this._triangleList._next;
- }
- if(t == _this._triangleListLast) {
- _this._triangleListLast = _this._triangleListLast._prev;
- }
- t._next = null;
- t._prev = null;
- t.removeReferences();
- t._next = _this._trianglePool;
- _this._trianglePool = t;
- }
- while(_this._numVertices > 0) {
- var v = _this._vertices[--_this._numVertices];
- v.removeReferences();
- v._next = _this._vertexPool;
- _this._vertexPool = v;
- }
- var tmp = this.polyhedron;
- var _this1 = this.polyhedron;
- var first = _this1._vertexPool;
- if(first != null) {
- _this1._vertexPool = first._next;
- first._next = null;
- } else {
- first = new oimo.collision.narrowphase.detector.gjkepa.EpaVertex();
- }
- var tmp1 = first.init(initialPolyhedron[0],initialPolyhedron1[0],initialPolyhedron2[0]);
- var _this2 = this.polyhedron;
- var first1 = _this2._vertexPool;
- if(first1 != null) {
- _this2._vertexPool = first1._next;
- first1._next = null;
- } else {
- first1 = new oimo.collision.narrowphase.detector.gjkepa.EpaVertex();
- }
- var tmp2 = first1.init(initialPolyhedron[1],initialPolyhedron1[1],initialPolyhedron2[1]);
- var _this3 = this.polyhedron;
- var first2 = _this3._vertexPool;
- if(first2 != null) {
- _this3._vertexPool = first2._next;
- first2._next = null;
- } else {
- first2 = new oimo.collision.narrowphase.detector.gjkepa.EpaVertex();
- }
- var tmp3 = first2.init(initialPolyhedron[2],initialPolyhedron1[2],initialPolyhedron2[2]);
- var _this4 = this.polyhedron;
- var first3 = _this4._vertexPool;
- if(first3 != null) {
- _this4._vertexPool = first3._next;
- first3._next = null;
- } else {
- first3 = new oimo.collision.narrowphase.detector.gjkepa.EpaVertex();
- }
- if(!tmp._init(tmp1,tmp2,tmp3,first3.init(initialPolyhedron[3],initialPolyhedron1[3],initialPolyhedron2[3]))) {
- return oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.EPA_FAILED_TO_INIT;
- }
- this.simplexSize = 0;
- var supportingVertex = this.s[0];
- var witness1 = this.w1[0];
- var witness2 = this.w2[0];
- var count = 0;
- var maxIterations = 40;
- while(count < maxIterations) {
- var f = this.polyhedron._triangleList;
- var mind = 1e65536;
- var minf = null;
- while(f != null) {
- var n = f._next;
- if(f._distanceSq < mind) {
- mind = f._distanceSq;
- minf = f;
- }
- f = n;
- }
- var face = minf;
- var _this5 = this.dir;
- var v1 = face._normal;
- _this5.x = v1.x;
- _this5.y = v1.y;
- _this5.z = v1.z;
- var _this6 = _this5;
- var invLen = Math.sqrt(_this6.x * _this6.x + _this6.y * _this6.y + _this6.z * _this6.z);
- if(invLen > 0) {
- invLen = 1 / invLen;
- }
- var tx = _this6.x * invLen;
- var ty = _this6.y * invLen;
- var tz = _this6.z * invLen;
- _this6.x = tx;
- _this6.y = ty;
- _this6.z = tz;
- this.computeWitnessPoint1(false);
- this.computeWitnessPoint2(false);
- var _this7 = this.s[this.simplexSize];
- var v2 = this.w1[this.simplexSize];
- _this7.x = v2.x;
- _this7.y = v2.y;
- _this7.z = v2.z;
- var _this8 = _this7;
- var v3 = this.w2[this.simplexSize];
- var tx1 = _this8.x - v3.x;
- var ty1 = _this8.y - v3.y;
- var tz1 = _this8.z - v3.z;
- _this8.x = tx1;
- _this8.y = ty1;
- _this8.z = tz1;
- var v0 = face._vertices[0];
- var v11 = face._vertices[1];
- var v21 = face._vertices[2];
- var _this9 = v0.v;
- var v4 = this.dir;
- var dot1 = _this9.x * v4.x + _this9.y * v4.y + _this9.z * v4.z;
- var v5 = this.dir;
- var dot2 = supportingVertex.x * v5.x + supportingVertex.y * v5.y + supportingVertex.z * v5.z;
- if(dot2 - dot1 < 1e-6 || count == maxIterations - 1) {
- var _this10 = this.closest;
- var v6 = this.dir;
- _this10.x = v6.x;
- _this10.y = v6.y;
- _this10.z = v6.z;
- var _this11 = _this10;
- var _this12 = this.dir;
- var v7 = v0.v;
- var _this13 = this.dir;
- var s = (_this12.x * v7.x + _this12.y * v7.y + _this12.z * v7.z) / (_this13.x * _this13.x + _this13.y * _this13.y + _this13.z * _this13.z);
- var tx2 = _this11.x * s;
- var ty2 = _this11.y * s;
- var tz2 = _this11.z * s;
- _this11.x = tx2;
- _this11.y = ty2;
- _this11.z = tz2;
- var c;
- var cX;
- var cY;
- var cZ;
- var v8 = this.closest;
- cX = v8.x;
- cY = v8.y;
- cZ = v8.z;
- var s0;
- var s0X;
- var s0Y;
- var s0Z;
- var w10;
- var w10X;
- var w10Y;
- var w10Z;
- var w20;
- var w20X;
- var w20Y;
- var w20Z;
- var s1;
- var s1X;
- var s1Y;
- var s1Z;
- var w11;
- var w11X;
- var w11Y;
- var w11Z;
- var w21;
- var w21X;
- var w21Y;
- var w21Z;
- var s2;
- var s2X;
- var s2Y;
- var s2Z;
- var w12;
- var w12X;
- var w12Y;
- var w12Z;
- var w22;
- var w22X;
- var w22Y;
- var w22Z;
- var v9 = v0.v;
- s0X = v9.x;
- s0Y = v9.y;
- s0Z = v9.z;
- var v10 = v0.w1;
- w10X = v10.x;
- w10Y = v10.y;
- w10Z = v10.z;
- var v12 = v0.w2;
- w20X = v12.x;
- w20Y = v12.y;
- w20Z = v12.z;
- var v13 = v11.v;
- s1X = v13.x;
- s1Y = v13.y;
- s1Z = v13.z;
- var v14 = v11.w1;
- w11X = v14.x;
- w11Y = v14.y;
- w11Z = v14.z;
- var v15 = v11.w2;
- w21X = v15.x;
- w21Y = v15.y;
- w21Z = v15.z;
- var v16 = v21.v;
- s2X = v16.x;
- s2Y = v16.y;
- s2Z = v16.z;
- var v17 = v21.w1;
- w12X = v17.x;
- w12Y = v17.y;
- w12Z = v17.z;
- var v18 = v21.w2;
- w22X = v18.x;
- w22Y = v18.y;
- w22Z = v18.z;
- var s01;
- var s01X;
- var s01Y;
- var s01Z;
- var s02;
- var s02X;
- var s02Y;
- var s02Z;
- var s0c;
- var s0cX;
- var s0cY;
- var s0cZ;
- s01X = s1X - s0X;
- s01Y = s1Y - s0Y;
- s01Z = s1Z - s0Z;
- s02X = s2X - s0X;
- s02Y = s2Y - s0Y;
- s02Z = s2Z - s0Z;
- s0cX = cX - s0X;
- s0cY = cY - s0Y;
- s0cZ = cZ - s0Z;
- var d11 = s01X * s01X + s01Y * s01Y + s01Z * s01Z;
- var d12 = s01X * s02X + s01Y * s02Y + s01Z * s02Z;
- var d22 = s02X * s02X + s02Y * s02Y + s02Z * s02Z;
- var d1c = s01X * s0cX + s01Y * s0cY + s01Z * s0cZ;
- var d2c = s02X * s0cX + s02Y * s0cY + s02Z * s0cZ;
- var invDet = d11 * d22 - d12 * d12;
- if(invDet != 0) {
- invDet = 1 / invDet;
- }
- var s3 = (d1c * d22 - d2c * d12) * invDet;
- var t1 = (-d1c * d12 + d2c * d11) * invDet;
- var diff;
- var diffX;
- var diffY;
- var diffZ;
- var cp1;
- var cp1X;
- var cp1Y;
- var cp1Z;
- var cp2;
- var cp2X;
- var cp2Y;
- var cp2Z;
- diffX = w11X - w10X;
- diffY = w11Y - w10Y;
- diffZ = w11Z - w10Z;
- cp1X = w10X + diffX * s3;
- cp1Y = w10Y + diffY * s3;
- cp1Z = w10Z + diffZ * s3;
- diffX = w12X - w10X;
- diffY = w12Y - w10Y;
- diffZ = w12Z - w10Z;
- cp1X += diffX * t1;
- cp1Y += diffY * t1;
- cp1Z += diffZ * t1;
- diffX = w21X - w20X;
- diffY = w21Y - w20Y;
- diffZ = w21Z - w20Z;
- cp2X = w20X + diffX * s3;
- cp2Y = w20Y + diffY * s3;
- cp2Z = w20Z + diffZ * s3;
- diffX = w22X - w20X;
- diffY = w22Y - w20Y;
- diffZ = w22Z - w20Z;
- cp2X += diffX * t1;
- cp2Y += diffY * t1;
- cp2Z += diffZ * t1;
- var v19 = this.closestPoint1;
- v19.x = cp1X;
- v19.y = cp1Y;
- v19.z = cp1Z;
- var v20 = this.closestPoint2;
- v20.x = cp2X;
- v20.y = cp2Y;
- v20.z = cp2Z;
- var _this14 = this.closest;
- this.depth = Math.sqrt(_this14.x * _this14.x + _this14.y * _this14.y + _this14.z * _this14.z);
- return oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.SUCCEEDED;
- }
- var _this15 = this.polyhedron;
- var first4 = _this15._vertexPool;
- if(first4 != null) {
- _this15._vertexPool = first4._next;
- first4._next = null;
- } else {
- first4 = new oimo.collision.narrowphase.detector.gjkepa.EpaVertex();
- }
- var epaVertex = first4.init(supportingVertex,witness1,witness2);
- if(!this.polyhedron._addVertex(epaVertex,face)) {
- return oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.EPA_FAILED_TO_ADD_VERTEX;
- }
- ++count;
- }
- return oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.EPA_DID_NOT_CONVERGE;
- }
- computeClosestPoints(c1,c2,tf1,tf2,cache) {
- return this.computeClosestPointsImpl(c1,c2,tf1,tf2,cache,true);
- }
- computeDistance(c1,c2,tf1,tf2,cache) {
- return this.computeClosestPointsImpl(c1,c2,tf1,tf2,cache,false);
- }
- convexCast(c1,c2,tf1,tf2,tl1,tl2,hit) {
- return this.convexCastImpl(c1,c2,tf1,tf2,tl1,tl2,hit);
- }
- rayCast(c,tf,begin,end,hit) {
- var tf1 = this.tempTransform;
- var tf2 = tf;
- var v = begin;
- tf1._positionX = v.x;
- tf1._positionY = v.y;
- tf1._positionZ = v.z;
- var tl1 = this.tl1;
- var tl2 = this.tl2;
- tl1.x = end.x;
- tl1.y = end.y;
- tl1.z = end.z;
- var _this = tl1;
- var tx = _this.x - begin.x;
- var ty = _this.y - begin.y;
- var tz = _this.z - begin.z;
- _this.x = tx;
- _this.y = ty;
- _this.z = tz;
- tl2.zero();
- return this.convexCastImpl(null,c,tf1,tf2,tl1,tl2,hit);
- }
- static getInstance() {
- return oimo.collision.narrowphase.detector.gjkepa.GjkEpa.instance;
- }
- }
- oimo.collision.narrowphase.detector.gjkepa.GjkEpaLog = class oimo_collision_narrowphase_detector_gjkepa_GjkEpaLog {
- }
- oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState = class oimo_collision_narrowphase_detector_gjkepa_GjkEpaResultState {
- }
- oimo.collision.narrowphase.detector.gjkepa.SimplexUtil = class oimo_collision_narrowphase_detector_gjkepa_SimplexUtil {
- static projectOrigin2(vec1,vec2,out) {
- var v1;
- var v1X;
- var v1Y;
- var v1Z;
- var v2;
- var v2X;
- var v2Y;
- var v2Z;
- var v = vec1;
- v1X = v.x;
- v1Y = v.y;
- v1Z = v.z;
- var v3 = vec2;
- v2X = v3.x;
- v2Y = v3.y;
- v2Z = v3.z;
- var v12;
- var v12X;
- var v12Y;
- var v12Z;
- v12X = v2X - v1X;
- v12Y = v2Y - v1Y;
- v12Z = v2Z - v1Z;
- var d = v12X * v12X + v12Y * v12Y + v12Z * v12Z;
- var t = v12X * v1X + v12Y * v1Y + v12Z * v1Z;
- t = -t / d;
- if(t < 0) {
- var v4 = out;
- v4.x = v1X;
- v4.y = v1Y;
- v4.z = v1Z;
- return 1;
- }
- if(t > 1) {
- var v5 = out;
- v5.x = v2X;
- v5.y = v2Y;
- v5.z = v2Z;
- return 2;
- }
- var p;
- var pX;
- var pY;
- var pZ;
- pX = v1X + v12X * t;
- pY = v1Y + v12Y * t;
- pZ = v1Z + v12Z * t;
- var v6 = out;
- v6.x = pX;
- v6.y = pY;
- v6.z = pZ;
- return 3;
- }
- static projectOrigin3(vec1,vec2,vec3,out) {
- var v1;
- var v1X;
- var v1Y;
- var v1Z;
- var v2;
- var v2X;
- var v2Y;
- var v2Z;
- var v3;
- var v3X;
- var v3Y;
- var v3Z;
- var v12;
- var v12X;
- var v12Y;
- var v12Z;
- var v23;
- var v23X;
- var v23Y;
- var v23Z;
- var v31;
- var v31X;
- var v31Y;
- var v31Z;
- var v = vec1;
- v1X = v.x;
- v1Y = v.y;
- v1Z = v.z;
- var v4 = vec2;
- v2X = v4.x;
- v2Y = v4.y;
- v2Z = v4.z;
- var v5 = vec3;
- v3X = v5.x;
- v3Y = v5.y;
- v3Z = v5.z;
- v12X = v2X - v1X;
- v12Y = v2Y - v1Y;
- v12Z = v2Z - v1Z;
- v23X = v3X - v2X;
- v23Y = v3Y - v2Y;
- v23Z = v3Z - v2Z;
- v31X = v1X - v3X;
- v31Y = v1Y - v3Y;
- v31Z = v1Z - v3Z;
- var n;
- var nX;
- var nY;
- var nZ;
- nX = v12Y * v23Z - v12Z * v23Y;
- nY = v12Z * v23X - v12X * v23Z;
- nZ = v12X * v23Y - v12Y * v23X;
- var n12;
- var n12X;
- var n12Y;
- var n12Z;
- var n23;
- var n23X;
- var n23Y;
- var n23Z;
- var n31;
- var n31X;
- var n31Y;
- var n31Z;
- n12X = v12Y * nZ - v12Z * nY;
- n12Y = v12Z * nX - v12X * nZ;
- n12Z = v12X * nY - v12Y * nX;
- n23X = v23Y * nZ - v23Z * nY;
- n23Y = v23Z * nX - v23X * nZ;
- n23Z = v23X * nY - v23Y * nX;
- n31X = v31Y * nZ - v31Z * nY;
- n31Y = v31Z * nX - v31X * nZ;
- n31Z = v31X * nY - v31Y * nX;
- var d12 = v1X * n12X + v1Y * n12Y + v1Z * n12Z;
- var d23 = v2X * n23X + v2Y * n23Y + v2Z * n23Z;
- var d31 = v3X * n31X + v3Y * n31Y + v3Z * n31Z;
- var mind = -1;
- var minv;
- var minvX;
- var minvY;
- var minvZ;
- var mini = 0;
- minvX = 0;
- minvY = 0;
- minvZ = 0;
- if(d12 < 0) {
- var v11;
- var v1X1;
- var v1Y1;
- var v1Z1;
- var v21;
- var v2X1;
- var v2Y1;
- var v2Z1;
- var v6 = vec1;
- v1X1 = v6.x;
- v1Y1 = v6.y;
- v1Z1 = v6.z;
- var v7 = vec2;
- v2X1 = v7.x;
- v2Y1 = v7.y;
- v2Z1 = v7.z;
- var v121;
- var v12X1;
- var v12Y1;
- var v12Z1;
- v12X1 = v2X1 - v1X1;
- v12Y1 = v2Y1 - v1Y1;
- v12Z1 = v2Z1 - v1Z1;
- var d = v12X1 * v12X1 + v12Y1 * v12Y1 + v12Z1 * v12Z1;
- var t = v12X1 * v1X1 + v12Y1 * v1Y1 + v12Z1 * v1Z1;
- t = -t / d;
- var b;
- if(t < 0) {
- var v8 = out;
- v8.x = v1X1;
- v8.y = v1Y1;
- v8.z = v1Z1;
- b = 1;
- } else if(t > 1) {
- var v9 = out;
- v9.x = v2X1;
- v9.y = v2Y1;
- v9.z = v2Z1;
- b = 2;
- } else {
- var p;
- var pX;
- var pY;
- var pZ;
- pX = v1X1 + v12X1 * t;
- pY = v1Y1 + v12Y1 * t;
- pZ = v1Z1 + v12Z1 * t;
- var v10 = out;
- v10.x = pX;
- v10.y = pY;
- v10.z = pZ;
- b = 3;
- }
- var d1 = out.x * out.x + out.y * out.y + out.z * out.z;
- mini = b;
- mind = d1;
- var v13 = out;
- minvX = v13.x;
- minvY = v13.y;
- minvZ = v13.z;
- }
- if(d23 < 0) {
- var v14;
- var v1X2;
- var v1Y2;
- var v1Z2;
- var v22;
- var v2X2;
- var v2Y2;
- var v2Z2;
- var v15 = vec2;
- v1X2 = v15.x;
- v1Y2 = v15.y;
- v1Z2 = v15.z;
- var v16 = vec3;
- v2X2 = v16.x;
- v2Y2 = v16.y;
- v2Z2 = v16.z;
- var v122;
- var v12X2;
- var v12Y2;
- var v12Z2;
- v12X2 = v2X2 - v1X2;
- v12Y2 = v2Y2 - v1Y2;
- v12Z2 = v2Z2 - v1Z2;
- var d2 = v12X2 * v12X2 + v12Y2 * v12Y2 + v12Z2 * v12Z2;
- var t1 = v12X2 * v1X2 + v12Y2 * v1Y2 + v12Z2 * v1Z2;
- t1 = -t1 / d2;
- var b1;
- if(t1 < 0) {
- var v17 = out;
- v17.x = v1X2;
- v17.y = v1Y2;
- v17.z = v1Z2;
- b1 = 1;
- } else if(t1 > 1) {
- var v18 = out;
- v18.x = v2X2;
- v18.y = v2Y2;
- v18.z = v2Z2;
- b1 = 2;
- } else {
- var p1;
- var pX1;
- var pY1;
- var pZ1;
- pX1 = v1X2 + v12X2 * t1;
- pY1 = v1Y2 + v12Y2 * t1;
- pZ1 = v1Z2 + v12Z2 * t1;
- var v19 = out;
- v19.x = pX1;
- v19.y = pY1;
- v19.z = pZ1;
- b1 = 3;
- }
- var d3 = out.x * out.x + out.y * out.y + out.z * out.z;
- if(mind < 0 || d3 < mind) {
- mini = b1 << 1;
- mind = d3;
- var v20 = out;
- minvX = v20.x;
- minvY = v20.y;
- minvZ = v20.z;
- }
- }
- if(d31 < 0) {
- var v110;
- var v1X3;
- var v1Y3;
- var v1Z3;
- var v24;
- var v2X3;
- var v2Y3;
- var v2Z3;
- var v25 = vec1;
- v1X3 = v25.x;
- v1Y3 = v25.y;
- v1Z3 = v25.z;
- var v26 = vec3;
- v2X3 = v26.x;
- v2Y3 = v26.y;
- v2Z3 = v26.z;
- var v123;
- var v12X3;
- var v12Y3;
- var v12Z3;
- v12X3 = v2X3 - v1X3;
- v12Y3 = v2Y3 - v1Y3;
- v12Z3 = v2Z3 - v1Z3;
- var d4 = v12X3 * v12X3 + v12Y3 * v12Y3 + v12Z3 * v12Z3;
- var t2 = v12X3 * v1X3 + v12Y3 * v1Y3 + v12Z3 * v1Z3;
- t2 = -t2 / d4;
- var b2;
- if(t2 < 0) {
- var v27 = out;
- v27.x = v1X3;
- v27.y = v1Y3;
- v27.z = v1Z3;
- b2 = 1;
- } else if(t2 > 1) {
- var v28 = out;
- v28.x = v2X3;
- v28.y = v2Y3;
- v28.z = v2Z3;
- b2 = 2;
- } else {
- var p2;
- var pX2;
- var pY2;
- var pZ2;
- pX2 = v1X3 + v12X3 * t2;
- pY2 = v1Y3 + v12Y3 * t2;
- pZ2 = v1Z3 + v12Z3 * t2;
- var v29 = out;
- v29.x = pX2;
- v29.y = pY2;
- v29.z = pZ2;
- b2 = 3;
- }
- var d5 = out.x * out.x + out.y * out.y + out.z * out.z;
- if(mind < 0 || d5 < mind) {
- mini = b2 & 1 | (b2 & 2) << 1;
- mind = d5;
- var v30 = out;
- minvX = v30.x;
- minvY = v30.y;
- minvZ = v30.z;
- }
- }
- if(mind > 0) {
- var v32 = out;
- v32.x = minvX;
- v32.y = minvY;
- v32.z = minvZ;
- return mini;
- }
- var l = nX * nX + nY * nY + nZ * nZ;
- if(l > 0) {
- l = 1 / Math.sqrt(l);
- }
- nX *= l;
- nY *= l;
- nZ *= l;
- var dn = v1X * nX + v1Y * nY + v1Z * nZ;
- var l2 = nX * nX + nY * nY + nZ * nZ;
- l2 = dn / l2;
- minvX = nX * l2;
- minvY = nY * l2;
- minvZ = nZ * l2;
- var v33 = out;
- v33.x = minvX;
- v33.y = minvY;
- v33.z = minvZ;
- return 7;
- }
- static projectOrigin4(vec1,vec2,vec3,vec4,out) {
- var v1;
- var v1X;
- var v1Y;
- var v1Z;
- var v2;
- var v2X;
- var v2Y;
- var v2Z;
- var v3;
- var v3X;
- var v3Y;
- var v3Z;
- var v4;
- var v4X;
- var v4Y;
- var v4Z;
- var v12;
- var v12X;
- var v12Y;
- var v12Z;
- var v13;
- var v13X;
- var v13Y;
- var v13Z;
- var v14;
- var v14X;
- var v14Y;
- var v14Z;
- var v23;
- var v23X;
- var v23Y;
- var v23Z;
- var v24;
- var v24X;
- var v24Y;
- var v24Z;
- var v34;
- var v34X;
- var v34Y;
- var v34Z;
- var v = vec1;
- v1X = v.x;
- v1Y = v.y;
- v1Z = v.z;
- var v5 = vec2;
- v2X = v5.x;
- v2Y = v5.y;
- v2Z = v5.z;
- var v6 = vec3;
- v3X = v6.x;
- v3Y = v6.y;
- v3Z = v6.z;
- var v7 = vec4;
- v4X = v7.x;
- v4Y = v7.y;
- v4Z = v7.z;
- v12X = v2X - v1X;
- v12Y = v2Y - v1Y;
- v12Z = v2Z - v1Z;
- v13X = v3X - v1X;
- v13Y = v3Y - v1Y;
- v13Z = v3Z - v1Z;
- v14X = v4X - v1X;
- v14Y = v4Y - v1Y;
- v14Z = v4Z - v1Z;
- v23X = v3X - v2X;
- v23Y = v3Y - v2Y;
- v23Z = v3Z - v2Z;
- v24X = v4X - v2X;
- v24Y = v4Y - v2Y;
- v24Z = v4Z - v2Z;
- v34X = v4X - v3X;
- v34Y = v4Y - v3Y;
- v34Z = v4Z - v3Z;
- var rev;
- var n123;
- var n123X;
- var n123Y;
- var n123Z;
- var n134;
- var n134X;
- var n134Y;
- var n134Z;
- var n142;
- var n142X;
- var n142Y;
- var n142Z;
- var n243;
- var n243X;
- var n243Y;
- var n243Z;
- var n;
- var nX;
- var nY;
- var nZ;
- n123X = v12Y * v13Z - v12Z * v13Y;
- n123Y = v12Z * v13X - v12X * v13Z;
- n123Z = v12X * v13Y - v12Y * v13X;
- n134X = v13Y * v14Z - v13Z * v14Y;
- n134Y = v13Z * v14X - v13X * v14Z;
- n134Z = v13X * v14Y - v13Y * v14X;
- n142X = v14Y * v12Z - v14Z * v12Y;
- n142Y = v14Z * v12X - v14X * v12Z;
- n142Z = v14X * v12Y - v14Y * v12X;
- n243X = v24Y * v23Z - v24Z * v23Y;
- n243Y = v24Z * v23X - v24X * v23Z;
- n243Z = v24X * v23Y - v24Y * v23X;
- var sign = v12X * n243X + v12Y * n243Y + v12Z * n243Z > 0 ? 1 : -1;
- var d123 = v1X * n123X + v1Y * n123Y + v1Z * n123Z;
- var d134 = v1X * n134X + v1Y * n134Y + v1Z * n134Z;
- var d142 = v1X * n142X + v1Y * n142Y + v1Z * n142Z;
- var d243 = v2X * n243X + v2Y * n243Y + v2Z * n243Z;
- var mind = -1;
- var minv;
- var minvX;
- var minvY;
- var minvZ;
- var mini = 0;
- minvX = 0;
- minvY = 0;
- minvZ = 0;
- if(d123 * sign < 0) {
- var v11;
- var v1X1;
- var v1Y1;
- var v1Z1;
- var v21;
- var v2X1;
- var v2Y1;
- var v2Z1;
- var v31;
- var v3X1;
- var v3Y1;
- var v3Z1;
- var v121;
- var v12X1;
- var v12Y1;
- var v12Z1;
- var v231;
- var v23X1;
- var v23Y1;
- var v23Z1;
- var v311;
- var v31X;
- var v31Y;
- var v31Z;
- var v8 = vec1;
- v1X1 = v8.x;
- v1Y1 = v8.y;
- v1Z1 = v8.z;
- var v9 = vec2;
- v2X1 = v9.x;
- v2Y1 = v9.y;
- v2Z1 = v9.z;
- var v10 = vec3;
- v3X1 = v10.x;
- v3Y1 = v10.y;
- v3Z1 = v10.z;
- v12X1 = v2X1 - v1X1;
- v12Y1 = v2Y1 - v1Y1;
- v12Z1 = v2Z1 - v1Z1;
- v23X1 = v3X1 - v2X1;
- v23Y1 = v3Y1 - v2Y1;
- v23Z1 = v3Z1 - v2Z1;
- v31X = v1X1 - v3X1;
- v31Y = v1Y1 - v3Y1;
- v31Z = v1Z1 - v3Z1;
- var n1;
- var nX1;
- var nY1;
- var nZ1;
- nX1 = v12Y1 * v23Z1 - v12Z1 * v23Y1;
- nY1 = v12Z1 * v23X1 - v12X1 * v23Z1;
- nZ1 = v12X1 * v23Y1 - v12Y1 * v23X1;
- var n12;
- var n12X;
- var n12Y;
- var n12Z;
- var n23;
- var n23X;
- var n23Y;
- var n23Z;
- var n31;
- var n31X;
- var n31Y;
- var n31Z;
- n12X = v12Y1 * nZ1 - v12Z1 * nY1;
- n12Y = v12Z1 * nX1 - v12X1 * nZ1;
- n12Z = v12X1 * nY1 - v12Y1 * nX1;
- n23X = v23Y1 * nZ1 - v23Z1 * nY1;
- n23Y = v23Z1 * nX1 - v23X1 * nZ1;
- n23Z = v23X1 * nY1 - v23Y1 * nX1;
- n31X = v31Y * nZ1 - v31Z * nY1;
- n31Y = v31Z * nX1 - v31X * nZ1;
- n31Z = v31X * nY1 - v31Y * nX1;
- var d12 = v1X1 * n12X + v1Y1 * n12Y + v1Z1 * n12Z;
- var d23 = v2X1 * n23X + v2Y1 * n23Y + v2Z1 * n23Z;
- var d31 = v3X1 * n31X + v3Y1 * n31Y + v3Z1 * n31Z;
- var mind1 = -1;
- var minv1;
- var minvX1;
- var minvY1;
- var minvZ1;
- var mini1 = 0;
- minvX1 = 0;
- minvY1 = 0;
- minvZ1 = 0;
- if(d12 < 0) {
- var v15;
- var v1X2;
- var v1Y2;
- var v1Z2;
- var v22;
- var v2X2;
- var v2Y2;
- var v2Z2;
- var v16 = vec1;
- v1X2 = v16.x;
- v1Y2 = v16.y;
- v1Z2 = v16.z;
- var v17 = vec2;
- v2X2 = v17.x;
- v2Y2 = v17.y;
- v2Z2 = v17.z;
- var v122;
- var v12X2;
- var v12Y2;
- var v12Z2;
- v12X2 = v2X2 - v1X2;
- v12Y2 = v2Y2 - v1Y2;
- v12Z2 = v2Z2 - v1Z2;
- var d = v12X2 * v12X2 + v12Y2 * v12Y2 + v12Z2 * v12Z2;
- var t = v12X2 * v1X2 + v12Y2 * v1Y2 + v12Z2 * v1Z2;
- t = -t / d;
- var b;
- if(t < 0) {
- var v18 = out;
- v18.x = v1X2;
- v18.y = v1Y2;
- v18.z = v1Z2;
- b = 1;
- } else if(t > 1) {
- var v19 = out;
- v19.x = v2X2;
- v19.y = v2Y2;
- v19.z = v2Z2;
- b = 2;
- } else {
- var p;
- var pX;
- var pY;
- var pZ;
- pX = v1X2 + v12X2 * t;
- pY = v1Y2 + v12Y2 * t;
- pZ = v1Z2 + v12Z2 * t;
- var v20 = out;
- v20.x = pX;
- v20.y = pY;
- v20.z = pZ;
- b = 3;
- }
- var d1 = out.x * out.x + out.y * out.y + out.z * out.z;
- mini1 = b;
- mind1 = d1;
- var v25 = out;
- minvX1 = v25.x;
- minvY1 = v25.y;
- minvZ1 = v25.z;
- }
- if(d23 < 0) {
- var v110;
- var v1X3;
- var v1Y3;
- var v1Z3;
- var v26;
- var v2X3;
- var v2Y3;
- var v2Z3;
- var v27 = vec2;
- v1X3 = v27.x;
- v1Y3 = v27.y;
- v1Z3 = v27.z;
- var v28 = vec3;
- v2X3 = v28.x;
- v2Y3 = v28.y;
- v2Z3 = v28.z;
- var v123;
- var v12X3;
- var v12Y3;
- var v12Z3;
- v12X3 = v2X3 - v1X3;
- v12Y3 = v2Y3 - v1Y3;
- v12Z3 = v2Z3 - v1Z3;
- var d2 = v12X3 * v12X3 + v12Y3 * v12Y3 + v12Z3 * v12Z3;
- var t1 = v12X3 * v1X3 + v12Y3 * v1Y3 + v12Z3 * v1Z3;
- t1 = -t1 / d2;
- var b1;
- if(t1 < 0) {
- var v29 = out;
- v29.x = v1X3;
- v29.y = v1Y3;
- v29.z = v1Z3;
- b1 = 1;
- } else if(t1 > 1) {
- var v30 = out;
- v30.x = v2X3;
- v30.y = v2Y3;
- v30.z = v2Z3;
- b1 = 2;
- } else {
- var p1;
- var pX1;
- var pY1;
- var pZ1;
- pX1 = v1X3 + v12X3 * t1;
- pY1 = v1Y3 + v12Y3 * t1;
- pZ1 = v1Z3 + v12Z3 * t1;
- var v32 = out;
- v32.x = pX1;
- v32.y = pY1;
- v32.z = pZ1;
- b1 = 3;
- }
- var d3 = out.x * out.x + out.y * out.y + out.z * out.z;
- if(mind1 < 0 || d3 < mind1) {
- mini1 = b1 << 1;
- mind1 = d3;
- var v33 = out;
- minvX1 = v33.x;
- minvY1 = v33.y;
- minvZ1 = v33.z;
- }
- }
- if(d31 < 0) {
- var v111;
- var v1X4;
- var v1Y4;
- var v1Z4;
- var v210;
- var v2X4;
- var v2Y4;
- var v2Z4;
- var v35 = vec1;
- v1X4 = v35.x;
- v1Y4 = v35.y;
- v1Z4 = v35.z;
- var v36 = vec3;
- v2X4 = v36.x;
- v2Y4 = v36.y;
- v2Z4 = v36.z;
- var v124;
- var v12X4;
- var v12Y4;
- var v12Z4;
- v12X4 = v2X4 - v1X4;
- v12Y4 = v2Y4 - v1Y4;
- v12Z4 = v2Z4 - v1Z4;
- var d4 = v12X4 * v12X4 + v12Y4 * v12Y4 + v12Z4 * v12Z4;
- var t2 = v12X4 * v1X4 + v12Y4 * v1Y4 + v12Z4 * v1Z4;
- t2 = -t2 / d4;
- var b2;
- if(t2 < 0) {
- var v37 = out;
- v37.x = v1X4;
- v37.y = v1Y4;
- v37.z = v1Z4;
- b2 = 1;
- } else if(t2 > 1) {
- var v38 = out;
- v38.x = v2X4;
- v38.y = v2Y4;
- v38.z = v2Z4;
- b2 = 2;
- } else {
- var p2;
- var pX2;
- var pY2;
- var pZ2;
- pX2 = v1X4 + v12X4 * t2;
- pY2 = v1Y4 + v12Y4 * t2;
- pZ2 = v1Z4 + v12Z4 * t2;
- var v39 = out;
- v39.x = pX2;
- v39.y = pY2;
- v39.z = pZ2;
- b2 = 3;
- }
- var d5 = out.x * out.x + out.y * out.y + out.z * out.z;
- if(mind1 < 0 || d5 < mind1) {
- mini1 = b2 & 1 | (b2 & 2) << 1;
- mind1 = d5;
- var v40 = out;
- minvX1 = v40.x;
- minvY1 = v40.y;
- minvZ1 = v40.z;
- }
- }
- var b3;
- if(mind1 > 0) {
- var v41 = out;
- v41.x = minvX1;
- v41.y = minvY1;
- v41.z = minvZ1;
- b3 = mini1;
- } else {
- var l = nX1 * nX1 + nY1 * nY1 + nZ1 * nZ1;
- if(l > 0) {
- l = 1 / Math.sqrt(l);
- }
- nX1 *= l;
- nY1 *= l;
- nZ1 *= l;
- var dn = v1X1 * nX1 + v1Y1 * nY1 + v1Z1 * nZ1;
- var l2 = nX1 * nX1 + nY1 * nY1 + nZ1 * nZ1;
- l2 = dn / l2;
- minvX1 = nX1 * l2;
- minvY1 = nY1 * l2;
- minvZ1 = nZ1 * l2;
- var v42 = out;
- v42.x = minvX1;
- v42.y = minvY1;
- v42.z = minvZ1;
- b3 = 7;
- }
- var d6 = out.x * out.x + out.y * out.y + out.z * out.z;
- mini = b3;
- mind = d6;
- var v43 = out;
- minvX = v43.x;
- minvY = v43.y;
- minvZ = v43.z;
- }
- if(d134 * sign < 0) {
- var v112;
- var v1X5;
- var v1Y5;
- var v1Z5;
- var v211;
- var v2X5;
- var v2Y5;
- var v2Z5;
- var v310;
- var v3X2;
- var v3Y2;
- var v3Z2;
- var v125;
- var v12X5;
- var v12Y5;
- var v12Z5;
- var v232;
- var v23X2;
- var v23Y2;
- var v23Z2;
- var v312;
- var v31X1;
- var v31Y1;
- var v31Z1;
- var v44 = vec1;
- v1X5 = v44.x;
- v1Y5 = v44.y;
- v1Z5 = v44.z;
- var v45 = vec3;
- v2X5 = v45.x;
- v2Y5 = v45.y;
- v2Z5 = v45.z;
- var v46 = vec4;
- v3X2 = v46.x;
- v3Y2 = v46.y;
- v3Z2 = v46.z;
- v12X5 = v2X5 - v1X5;
- v12Y5 = v2Y5 - v1Y5;
- v12Z5 = v2Z5 - v1Z5;
- v23X2 = v3X2 - v2X5;
- v23Y2 = v3Y2 - v2Y5;
- v23Z2 = v3Z2 - v2Z5;
- v31X1 = v1X5 - v3X2;
- v31Y1 = v1Y5 - v3Y2;
- v31Z1 = v1Z5 - v3Z2;
- var n2;
- var nX2;
- var nY2;
- var nZ2;
- nX2 = v12Y5 * v23Z2 - v12Z5 * v23Y2;
- nY2 = v12Z5 * v23X2 - v12X5 * v23Z2;
- nZ2 = v12X5 * v23Y2 - v12Y5 * v23X2;
- var n121;
- var n12X1;
- var n12Y1;
- var n12Z1;
- var n231;
- var n23X1;
- var n23Y1;
- var n23Z1;
- var n311;
- var n31X1;
- var n31Y1;
- var n31Z1;
- n12X1 = v12Y5 * nZ2 - v12Z5 * nY2;
- n12Y1 = v12Z5 * nX2 - v12X5 * nZ2;
- n12Z1 = v12X5 * nY2 - v12Y5 * nX2;
- n23X1 = v23Y2 * nZ2 - v23Z2 * nY2;
- n23Y1 = v23Z2 * nX2 - v23X2 * nZ2;
- n23Z1 = v23X2 * nY2 - v23Y2 * nX2;
- n31X1 = v31Y1 * nZ2 - v31Z1 * nY2;
- n31Y1 = v31Z1 * nX2 - v31X1 * nZ2;
- n31Z1 = v31X1 * nY2 - v31Y1 * nX2;
- var d121 = v1X5 * n12X1 + v1Y5 * n12Y1 + v1Z5 * n12Z1;
- var d231 = v2X5 * n23X1 + v2Y5 * n23Y1 + v2Z5 * n23Z1;
- var d311 = v3X2 * n31X1 + v3Y2 * n31Y1 + v3Z2 * n31Z1;
- var mind2 = -1;
- var minv2;
- var minvX2;
- var minvY2;
- var minvZ2;
- var mini2 = 0;
- minvX2 = 0;
- minvY2 = 0;
- minvZ2 = 0;
- if(d121 < 0) {
- var v113;
- var v1X6;
- var v1Y6;
- var v1Z6;
- var v212;
- var v2X6;
- var v2Y6;
- var v2Z6;
- var v47 = vec1;
- v1X6 = v47.x;
- v1Y6 = v47.y;
- v1Z6 = v47.z;
- var v48 = vec3;
- v2X6 = v48.x;
- v2Y6 = v48.y;
- v2Z6 = v48.z;
- var v126;
- var v12X6;
- var v12Y6;
- var v12Z6;
- v12X6 = v2X6 - v1X6;
- v12Y6 = v2Y6 - v1Y6;
- v12Z6 = v2Z6 - v1Z6;
- var d7 = v12X6 * v12X6 + v12Y6 * v12Y6 + v12Z6 * v12Z6;
- var t3 = v12X6 * v1X6 + v12Y6 * v1Y6 + v12Z6 * v1Z6;
- t3 = -t3 / d7;
- var b4;
- if(t3 < 0) {
- var v49 = out;
- v49.x = v1X6;
- v49.y = v1Y6;
- v49.z = v1Z6;
- b4 = 1;
- } else if(t3 > 1) {
- var v50 = out;
- v50.x = v2X6;
- v50.y = v2Y6;
- v50.z = v2Z6;
- b4 = 2;
- } else {
- var p3;
- var pX3;
- var pY3;
- var pZ3;
- pX3 = v1X6 + v12X6 * t3;
- pY3 = v1Y6 + v12Y6 * t3;
- pZ3 = v1Z6 + v12Z6 * t3;
- var v51 = out;
- v51.x = pX3;
- v51.y = pY3;
- v51.z = pZ3;
- b4 = 3;
- }
- var d8 = out.x * out.x + out.y * out.y + out.z * out.z;
- mini2 = b4;
- mind2 = d8;
- var v52 = out;
- minvX2 = v52.x;
- minvY2 = v52.y;
- minvZ2 = v52.z;
- }
- if(d231 < 0) {
- var v114;
- var v1X7;
- var v1Y7;
- var v1Z7;
- var v213;
- var v2X7;
- var v2Y7;
- var v2Z7;
- var v53 = vec3;
- v1X7 = v53.x;
- v1Y7 = v53.y;
- v1Z7 = v53.z;
- var v54 = vec4;
- v2X7 = v54.x;
- v2Y7 = v54.y;
- v2Z7 = v54.z;
- var v127;
- var v12X7;
- var v12Y7;
- var v12Z7;
- v12X7 = v2X7 - v1X7;
- v12Y7 = v2Y7 - v1Y7;
- v12Z7 = v2Z7 - v1Z7;
- var d9 = v12X7 * v12X7 + v12Y7 * v12Y7 + v12Z7 * v12Z7;
- var t4 = v12X7 * v1X7 + v12Y7 * v1Y7 + v12Z7 * v1Z7;
- t4 = -t4 / d9;
- var b5;
- if(t4 < 0) {
- var v55 = out;
- v55.x = v1X7;
- v55.y = v1Y7;
- v55.z = v1Z7;
- b5 = 1;
- } else if(t4 > 1) {
- var v56 = out;
- v56.x = v2X7;
- v56.y = v2Y7;
- v56.z = v2Z7;
- b5 = 2;
- } else {
- var p4;
- var pX4;
- var pY4;
- var pZ4;
- pX4 = v1X7 + v12X7 * t4;
- pY4 = v1Y7 + v12Y7 * t4;
- pZ4 = v1Z7 + v12Z7 * t4;
- var v57 = out;
- v57.x = pX4;
- v57.y = pY4;
- v57.z = pZ4;
- b5 = 3;
- }
- var d10 = out.x * out.x + out.y * out.y + out.z * out.z;
- if(mind2 < 0 || d10 < mind2) {
- mini2 = b5 << 1;
- mind2 = d10;
- var v58 = out;
- minvX2 = v58.x;
- minvY2 = v58.y;
- minvZ2 = v58.z;
- }
- }
- if(d311 < 0) {
- var v115;
- var v1X8;
- var v1Y8;
- var v1Z8;
- var v214;
- var v2X8;
- var v2Y8;
- var v2Z8;
- var v59 = vec1;
- v1X8 = v59.x;
- v1Y8 = v59.y;
- v1Z8 = v59.z;
- var v60 = vec4;
- v2X8 = v60.x;
- v2Y8 = v60.y;
- v2Z8 = v60.z;
- var v128;
- var v12X8;
- var v12Y8;
- var v12Z8;
- v12X8 = v2X8 - v1X8;
- v12Y8 = v2Y8 - v1Y8;
- v12Z8 = v2Z8 - v1Z8;
- var d11 = v12X8 * v12X8 + v12Y8 * v12Y8 + v12Z8 * v12Z8;
- var t5 = v12X8 * v1X8 + v12Y8 * v1Y8 + v12Z8 * v1Z8;
- t5 = -t5 / d11;
- var b6;
- if(t5 < 0) {
- var v61 = out;
- v61.x = v1X8;
- v61.y = v1Y8;
- v61.z = v1Z8;
- b6 = 1;
- } else if(t5 > 1) {
- var v62 = out;
- v62.x = v2X8;
- v62.y = v2Y8;
- v62.z = v2Z8;
- b6 = 2;
- } else {
- var p5;
- var pX5;
- var pY5;
- var pZ5;
- pX5 = v1X8 + v12X8 * t5;
- pY5 = v1Y8 + v12Y8 * t5;
- pZ5 = v1Z8 + v12Z8 * t5;
- var v63 = out;
- v63.x = pX5;
- v63.y = pY5;
- v63.z = pZ5;
- b6 = 3;
- }
- var d13 = out.x * out.x + out.y * out.y + out.z * out.z;
- if(mind2 < 0 || d13 < mind2) {
- mini2 = b6 & 1 | (b6 & 2) << 1;
- mind2 = d13;
- var v64 = out;
- minvX2 = v64.x;
- minvY2 = v64.y;
- minvZ2 = v64.z;
- }
- }
- var b7;
- if(mind2 > 0) {
- var v65 = out;
- v65.x = minvX2;
- v65.y = minvY2;
- v65.z = minvZ2;
- b7 = mini2;
- } else {
- var l1 = nX2 * nX2 + nY2 * nY2 + nZ2 * nZ2;
- if(l1 > 0) {
- l1 = 1 / Math.sqrt(l1);
- }
- nX2 *= l1;
- nY2 *= l1;
- nZ2 *= l1;
- var dn1 = v1X5 * nX2 + v1Y5 * nY2 + v1Z5 * nZ2;
- var l21 = nX2 * nX2 + nY2 * nY2 + nZ2 * nZ2;
- l21 = dn1 / l21;
- minvX2 = nX2 * l21;
- minvY2 = nY2 * l21;
- minvZ2 = nZ2 * l21;
- var v66 = out;
- v66.x = minvX2;
- v66.y = minvY2;
- v66.z = minvZ2;
- b7 = 7;
- }
- var d14 = out.x * out.x + out.y * out.y + out.z * out.z;
- if(mind < 0 || d14 < mind) {
- mini = b7 & 1 | (b7 & 6) << 1;
- mind = d14;
- var v67 = out;
- minvX = v67.x;
- minvY = v67.y;
- minvZ = v67.z;
- }
- }
- if(d142 * sign < 0) {
- var v116;
- var v1X9;
- var v1Y9;
- var v1Z9;
- var v215;
- var v2X9;
- var v2Y9;
- var v2Z9;
- var v313;
- var v3X3;
- var v3Y3;
- var v3Z3;
- var v129;
- var v12X9;
- var v12Y9;
- var v12Z9;
- var v233;
- var v23X3;
- var v23Y3;
- var v23Z3;
- var v314;
- var v31X2;
- var v31Y2;
- var v31Z2;
- var v68 = vec1;
- v1X9 = v68.x;
- v1Y9 = v68.y;
- v1Z9 = v68.z;
- var v69 = vec2;
- v2X9 = v69.x;
- v2Y9 = v69.y;
- v2Z9 = v69.z;
- var v70 = vec4;
- v3X3 = v70.x;
- v3Y3 = v70.y;
- v3Z3 = v70.z;
- v12X9 = v2X9 - v1X9;
- v12Y9 = v2Y9 - v1Y9;
- v12Z9 = v2Z9 - v1Z9;
- v23X3 = v3X3 - v2X9;
- v23Y3 = v3Y3 - v2Y9;
- v23Z3 = v3Z3 - v2Z9;
- v31X2 = v1X9 - v3X3;
- v31Y2 = v1Y9 - v3Y3;
- v31Z2 = v1Z9 - v3Z3;
- var n3;
- var nX3;
- var nY3;
- var nZ3;
- nX3 = v12Y9 * v23Z3 - v12Z9 * v23Y3;
- nY3 = v12Z9 * v23X3 - v12X9 * v23Z3;
- nZ3 = v12X9 * v23Y3 - v12Y9 * v23X3;
- var n122;
- var n12X2;
- var n12Y2;
- var n12Z2;
- var n232;
- var n23X2;
- var n23Y2;
- var n23Z2;
- var n312;
- var n31X2;
- var n31Y2;
- var n31Z2;
- n12X2 = v12Y9 * nZ3 - v12Z9 * nY3;
- n12Y2 = v12Z9 * nX3 - v12X9 * nZ3;
- n12Z2 = v12X9 * nY3 - v12Y9 * nX3;
- n23X2 = v23Y3 * nZ3 - v23Z3 * nY3;
- n23Y2 = v23Z3 * nX3 - v23X3 * nZ3;
- n23Z2 = v23X3 * nY3 - v23Y3 * nX3;
- n31X2 = v31Y2 * nZ3 - v31Z2 * nY3;
- n31Y2 = v31Z2 * nX3 - v31X2 * nZ3;
- n31Z2 = v31X2 * nY3 - v31Y2 * nX3;
- var d122 = v1X9 * n12X2 + v1Y9 * n12Y2 + v1Z9 * n12Z2;
- var d232 = v2X9 * n23X2 + v2Y9 * n23Y2 + v2Z9 * n23Z2;
- var d312 = v3X3 * n31X2 + v3Y3 * n31Y2 + v3Z3 * n31Z2;
- var mind3 = -1;
- var minv3;
- var minvX3;
- var minvY3;
- var minvZ3;
- var mini3 = 0;
- minvX3 = 0;
- minvY3 = 0;
- minvZ3 = 0;
- if(d122 < 0) {
- var v117;
- var v1X10;
- var v1Y10;
- var v1Z10;
- var v216;
- var v2X10;
- var v2Y10;
- var v2Z10;
- var v71 = vec1;
- v1X10 = v71.x;
- v1Y10 = v71.y;
- v1Z10 = v71.z;
- var v72 = vec2;
- v2X10 = v72.x;
- v2Y10 = v72.y;
- v2Z10 = v72.z;
- var v1210;
- var v12X10;
- var v12Y10;
- var v12Z10;
- v12X10 = v2X10 - v1X10;
- v12Y10 = v2Y10 - v1Y10;
- v12Z10 = v2Z10 - v1Z10;
- var d15 = v12X10 * v12X10 + v12Y10 * v12Y10 + v12Z10 * v12Z10;
- var t6 = v12X10 * v1X10 + v12Y10 * v1Y10 + v12Z10 * v1Z10;
- t6 = -t6 / d15;
- var b8;
- if(t6 < 0) {
- var v73 = out;
- v73.x = v1X10;
- v73.y = v1Y10;
- v73.z = v1Z10;
- b8 = 1;
- } else if(t6 > 1) {
- var v74 = out;
- v74.x = v2X10;
- v74.y = v2Y10;
- v74.z = v2Z10;
- b8 = 2;
- } else {
- var p6;
- var pX6;
- var pY6;
- var pZ6;
- pX6 = v1X10 + v12X10 * t6;
- pY6 = v1Y10 + v12Y10 * t6;
- pZ6 = v1Z10 + v12Z10 * t6;
- var v75 = out;
- v75.x = pX6;
- v75.y = pY6;
- v75.z = pZ6;
- b8 = 3;
- }
- var d16 = out.x * out.x + out.y * out.y + out.z * out.z;
- mini3 = b8;
- mind3 = d16;
- var v76 = out;
- minvX3 = v76.x;
- minvY3 = v76.y;
- minvZ3 = v76.z;
- }
- if(d232 < 0) {
- var v118;
- var v1X11;
- var v1Y11;
- var v1Z11;
- var v217;
- var v2X11;
- var v2Y11;
- var v2Z11;
- var v77 = vec2;
- v1X11 = v77.x;
- v1Y11 = v77.y;
- v1Z11 = v77.z;
- var v78 = vec4;
- v2X11 = v78.x;
- v2Y11 = v78.y;
- v2Z11 = v78.z;
- var v1211;
- var v12X11;
- var v12Y11;
- var v12Z11;
- v12X11 = v2X11 - v1X11;
- v12Y11 = v2Y11 - v1Y11;
- v12Z11 = v2Z11 - v1Z11;
- var d17 = v12X11 * v12X11 + v12Y11 * v12Y11 + v12Z11 * v12Z11;
- var t7 = v12X11 * v1X11 + v12Y11 * v1Y11 + v12Z11 * v1Z11;
- t7 = -t7 / d17;
- var b9;
- if(t7 < 0) {
- var v79 = out;
- v79.x = v1X11;
- v79.y = v1Y11;
- v79.z = v1Z11;
- b9 = 1;
- } else if(t7 > 1) {
- var v80 = out;
- v80.x = v2X11;
- v80.y = v2Y11;
- v80.z = v2Z11;
- b9 = 2;
- } else {
- var p7;
- var pX7;
- var pY7;
- var pZ7;
- pX7 = v1X11 + v12X11 * t7;
- pY7 = v1Y11 + v12Y11 * t7;
- pZ7 = v1Z11 + v12Z11 * t7;
- var v81 = out;
- v81.x = pX7;
- v81.y = pY7;
- v81.z = pZ7;
- b9 = 3;
- }
- var d18 = out.x * out.x + out.y * out.y + out.z * out.z;
- if(mind3 < 0 || d18 < mind3) {
- mini3 = b9 << 1;
- mind3 = d18;
- var v82 = out;
- minvX3 = v82.x;
- minvY3 = v82.y;
- minvZ3 = v82.z;
- }
- }
- if(d312 < 0) {
- var v119;
- var v1X12;
- var v1Y12;
- var v1Z12;
- var v218;
- var v2X12;
- var v2Y12;
- var v2Z12;
- var v83 = vec1;
- v1X12 = v83.x;
- v1Y12 = v83.y;
- v1Z12 = v83.z;
- var v84 = vec4;
- v2X12 = v84.x;
- v2Y12 = v84.y;
- v2Z12 = v84.z;
- var v1212;
- var v12X12;
- var v12Y12;
- var v12Z12;
- v12X12 = v2X12 - v1X12;
- v12Y12 = v2Y12 - v1Y12;
- v12Z12 = v2Z12 - v1Z12;
- var d19 = v12X12 * v12X12 + v12Y12 * v12Y12 + v12Z12 * v12Z12;
- var t8 = v12X12 * v1X12 + v12Y12 * v1Y12 + v12Z12 * v1Z12;
- t8 = -t8 / d19;
- var b10;
- if(t8 < 0) {
- var v85 = out;
- v85.x = v1X12;
- v85.y = v1Y12;
- v85.z = v1Z12;
- b10 = 1;
- } else if(t8 > 1) {
- var v86 = out;
- v86.x = v2X12;
- v86.y = v2Y12;
- v86.z = v2Z12;
- b10 = 2;
- } else {
- var p8;
- var pX8;
- var pY8;
- var pZ8;
- pX8 = v1X12 + v12X12 * t8;
- pY8 = v1Y12 + v12Y12 * t8;
- pZ8 = v1Z12 + v12Z12 * t8;
- var v87 = out;
- v87.x = pX8;
- v87.y = pY8;
- v87.z = pZ8;
- b10 = 3;
- }
- var d20 = out.x * out.x + out.y * out.y + out.z * out.z;
- if(mind3 < 0 || d20 < mind3) {
- mini3 = b10 & 1 | (b10 & 2) << 1;
- mind3 = d20;
- var v88 = out;
- minvX3 = v88.x;
- minvY3 = v88.y;
- minvZ3 = v88.z;
- }
- }
- var b11;
- if(mind3 > 0) {
- var v89 = out;
- v89.x = minvX3;
- v89.y = minvY3;
- v89.z = minvZ3;
- b11 = mini3;
- } else {
- var l3 = nX3 * nX3 + nY3 * nY3 + nZ3 * nZ3;
- if(l3 > 0) {
- l3 = 1 / Math.sqrt(l3);
- }
- nX3 *= l3;
- nY3 *= l3;
- nZ3 *= l3;
- var dn2 = v1X9 * nX3 + v1Y9 * nY3 + v1Z9 * nZ3;
- var l22 = nX3 * nX3 + nY3 * nY3 + nZ3 * nZ3;
- l22 = dn2 / l22;
- minvX3 = nX3 * l22;
- minvY3 = nY3 * l22;
- minvZ3 = nZ3 * l22;
- var v90 = out;
- v90.x = minvX3;
- v90.y = minvY3;
- v90.z = minvZ3;
- b11 = 7;
- }
- var d21 = out.x * out.x + out.y * out.y + out.z * out.z;
- if(mind < 0 || d21 < mind) {
- mini = b11 & 3 | (b11 & 4) << 1;
- mind = d21;
- var v91 = out;
- minvX = v91.x;
- minvY = v91.y;
- minvZ = v91.z;
- }
- }
- if(d243 * sign < 0) {
- var v120;
- var v1X13;
- var v1Y13;
- var v1Z13;
- var v219;
- var v2X13;
- var v2Y13;
- var v2Z13;
- var v315;
- var v3X4;
- var v3Y4;
- var v3Z4;
- var v1213;
- var v12X13;
- var v12Y13;
- var v12Z13;
- var v234;
- var v23X4;
- var v23Y4;
- var v23Z4;
- var v316;
- var v31X3;
- var v31Y3;
- var v31Z3;
- var v92 = vec2;
- v1X13 = v92.x;
- v1Y13 = v92.y;
- v1Z13 = v92.z;
- var v93 = vec3;
- v2X13 = v93.x;
- v2Y13 = v93.y;
- v2Z13 = v93.z;
- var v94 = vec4;
- v3X4 = v94.x;
- v3Y4 = v94.y;
- v3Z4 = v94.z;
- v12X13 = v2X13 - v1X13;
- v12Y13 = v2Y13 - v1Y13;
- v12Z13 = v2Z13 - v1Z13;
- v23X4 = v3X4 - v2X13;
- v23Y4 = v3Y4 - v2Y13;
- v23Z4 = v3Z4 - v2Z13;
- v31X3 = v1X13 - v3X4;
- v31Y3 = v1Y13 - v3Y4;
- v31Z3 = v1Z13 - v3Z4;
- var n4;
- var nX4;
- var nY4;
- var nZ4;
- nX4 = v12Y13 * v23Z4 - v12Z13 * v23Y4;
- nY4 = v12Z13 * v23X4 - v12X13 * v23Z4;
- nZ4 = v12X13 * v23Y4 - v12Y13 * v23X4;
- var n124;
- var n12X3;
- var n12Y3;
- var n12Z3;
- var n233;
- var n23X3;
- var n23Y3;
- var n23Z3;
- var n313;
- var n31X3;
- var n31Y3;
- var n31Z3;
- n12X3 = v12Y13 * nZ4 - v12Z13 * nY4;
- n12Y3 = v12Z13 * nX4 - v12X13 * nZ4;
- n12Z3 = v12X13 * nY4 - v12Y13 * nX4;
- n23X3 = v23Y4 * nZ4 - v23Z4 * nY4;
- n23Y3 = v23Z4 * nX4 - v23X4 * nZ4;
- n23Z3 = v23X4 * nY4 - v23Y4 * nX4;
- n31X3 = v31Y3 * nZ4 - v31Z3 * nY4;
- n31Y3 = v31Z3 * nX4 - v31X3 * nZ4;
- n31Z3 = v31X3 * nY4 - v31Y3 * nX4;
- var d124 = v1X13 * n12X3 + v1Y13 * n12Y3 + v1Z13 * n12Z3;
- var d233 = v2X13 * n23X3 + v2Y13 * n23Y3 + v2Z13 * n23Z3;
- var d313 = v3X4 * n31X3 + v3Y4 * n31Y3 + v3Z4 * n31Z3;
- var mind4 = -1;
- var minv4;
- var minvX4;
- var minvY4;
- var minvZ4;
- var mini4 = 0;
- minvX4 = 0;
- minvY4 = 0;
- minvZ4 = 0;
- if(d124 < 0) {
- var v130;
- var v1X14;
- var v1Y14;
- var v1Z14;
- var v220;
- var v2X14;
- var v2Y14;
- var v2Z14;
- var v95 = vec2;
- v1X14 = v95.x;
- v1Y14 = v95.y;
- v1Z14 = v95.z;
- var v96 = vec3;
- v2X14 = v96.x;
- v2Y14 = v96.y;
- v2Z14 = v96.z;
- var v1214;
- var v12X14;
- var v12Y14;
- var v12Z14;
- v12X14 = v2X14 - v1X14;
- v12Y14 = v2Y14 - v1Y14;
- v12Z14 = v2Z14 - v1Z14;
- var d22 = v12X14 * v12X14 + v12Y14 * v12Y14 + v12Z14 * v12Z14;
- var t9 = v12X14 * v1X14 + v12Y14 * v1Y14 + v12Z14 * v1Z14;
- t9 = -t9 / d22;
- var b12;
- if(t9 < 0) {
- var v97 = out;
- v97.x = v1X14;
- v97.y = v1Y14;
- v97.z = v1Z14;
- b12 = 1;
- } else if(t9 > 1) {
- var v98 = out;
- v98.x = v2X14;
- v98.y = v2Y14;
- v98.z = v2Z14;
- b12 = 2;
- } else {
- var p9;
- var pX9;
- var pY9;
- var pZ9;
- pX9 = v1X14 + v12X14 * t9;
- pY9 = v1Y14 + v12Y14 * t9;
- pZ9 = v1Z14 + v12Z14 * t9;
- var v99 = out;
- v99.x = pX9;
- v99.y = pY9;
- v99.z = pZ9;
- b12 = 3;
- }
- var d24 = out.x * out.x + out.y * out.y + out.z * out.z;
- mini4 = b12;
- mind4 = d24;
- var v100 = out;
- minvX4 = v100.x;
- minvY4 = v100.y;
- minvZ4 = v100.z;
- }
- if(d233 < 0) {
- var v131;
- var v1X15;
- var v1Y15;
- var v1Z15;
- var v221;
- var v2X15;
- var v2Y15;
- var v2Z15;
- var v101 = vec3;
- v1X15 = v101.x;
- v1Y15 = v101.y;
- v1Z15 = v101.z;
- var v102 = vec4;
- v2X15 = v102.x;
- v2Y15 = v102.y;
- v2Z15 = v102.z;
- var v1215;
- var v12X15;
- var v12Y15;
- var v12Z15;
- v12X15 = v2X15 - v1X15;
- v12Y15 = v2Y15 - v1Y15;
- v12Z15 = v2Z15 - v1Z15;
- var d25 = v12X15 * v12X15 + v12Y15 * v12Y15 + v12Z15 * v12Z15;
- var t10 = v12X15 * v1X15 + v12Y15 * v1Y15 + v12Z15 * v1Z15;
- t10 = -t10 / d25;
- var b13;
- if(t10 < 0) {
- var v103 = out;
- v103.x = v1X15;
- v103.y = v1Y15;
- v103.z = v1Z15;
- b13 = 1;
- } else if(t10 > 1) {
- var v104 = out;
- v104.x = v2X15;
- v104.y = v2Y15;
- v104.z = v2Z15;
- b13 = 2;
- } else {
- var p10;
- var pX10;
- var pY10;
- var pZ10;
- pX10 = v1X15 + v12X15 * t10;
- pY10 = v1Y15 + v12Y15 * t10;
- pZ10 = v1Z15 + v12Z15 * t10;
- var v105 = out;
- v105.x = pX10;
- v105.y = pY10;
- v105.z = pZ10;
- b13 = 3;
- }
- var d26 = out.x * out.x + out.y * out.y + out.z * out.z;
- if(mind4 < 0 || d26 < mind4) {
- mini4 = b13 << 1;
- mind4 = d26;
- var v106 = out;
- minvX4 = v106.x;
- minvY4 = v106.y;
- minvZ4 = v106.z;
- }
- }
- if(d313 < 0) {
- var v132;
- var v1X16;
- var v1Y16;
- var v1Z16;
- var v222;
- var v2X16;
- var v2Y16;
- var v2Z16;
- var v107 = vec2;
- v1X16 = v107.x;
- v1Y16 = v107.y;
- v1Z16 = v107.z;
- var v108 = vec4;
- v2X16 = v108.x;
- v2Y16 = v108.y;
- v2Z16 = v108.z;
- var v1216;
- var v12X16;
- var v12Y16;
- var v12Z16;
- v12X16 = v2X16 - v1X16;
- v12Y16 = v2Y16 - v1Y16;
- v12Z16 = v2Z16 - v1Z16;
- var d27 = v12X16 * v12X16 + v12Y16 * v12Y16 + v12Z16 * v12Z16;
- var t11 = v12X16 * v1X16 + v12Y16 * v1Y16 + v12Z16 * v1Z16;
- t11 = -t11 / d27;
- var b14;
- if(t11 < 0) {
- var v109 = out;
- v109.x = v1X16;
- v109.y = v1Y16;
- v109.z = v1Z16;
- b14 = 1;
- } else if(t11 > 1) {
- var v133 = out;
- v133.x = v2X16;
- v133.y = v2Y16;
- v133.z = v2Z16;
- b14 = 2;
- } else {
- var p11;
- var pX11;
- var pY11;
- var pZ11;
- pX11 = v1X16 + v12X16 * t11;
- pY11 = v1Y16 + v12Y16 * t11;
- pZ11 = v1Z16 + v12Z16 * t11;
- var v134 = out;
- v134.x = pX11;
- v134.y = pY11;
- v134.z = pZ11;
- b14 = 3;
- }
- var d28 = out.x * out.x + out.y * out.y + out.z * out.z;
- if(mind4 < 0 || d28 < mind4) {
- mini4 = b14 & 1 | (b14 & 2) << 1;
- mind4 = d28;
- var v135 = out;
- minvX4 = v135.x;
- minvY4 = v135.y;
- minvZ4 = v135.z;
- }
- }
- var b15;
- if(mind4 > 0) {
- var v136 = out;
- v136.x = minvX4;
- v136.y = minvY4;
- v136.z = minvZ4;
- b15 = mini4;
- } else {
- var l4 = nX4 * nX4 + nY4 * nY4 + nZ4 * nZ4;
- if(l4 > 0) {
- l4 = 1 / Math.sqrt(l4);
- }
- nX4 *= l4;
- nY4 *= l4;
- nZ4 *= l4;
- var dn3 = v1X13 * nX4 + v1Y13 * nY4 + v1Z13 * nZ4;
- var l23 = nX4 * nX4 + nY4 * nY4 + nZ4 * nZ4;
- l23 = dn3 / l23;
- minvX4 = nX4 * l23;
- minvY4 = nY4 * l23;
- minvZ4 = nZ4 * l23;
- var v137 = out;
- v137.x = minvX4;
- v137.y = minvY4;
- v137.z = minvZ4;
- b15 = 7;
- }
- var d29 = out.x * out.x + out.y * out.y + out.z * out.z;
- if(mind < 0 || d29 < mind) {
- mini = b15 << 1;
- mind = d29;
- var v138 = out;
- minvX = v138.x;
- minvY = v138.y;
- minvZ = v138.z;
- }
- }
- if(mind > 0) {
- var v139 = out;
- v139.x = minvX;
- v139.y = minvY;
- v139.z = minvZ;
- return mini;
- }
- out.zero();
- return 15;
- }
- }
- oimo.common.Mat3 = class oimo_common_Mat3 {
- constructor(e00,e01,e02,e10,e11,e12,e20,e21,e22) {
- if(e22 == null) {
- e22 = 1;
- }
- if(e21 == null) {
- e21 = 0;
- }
- if(e20 == null) {
- e20 = 0;
- }
- if(e12 == null) {
- e12 = 0;
- }
- if(e11 == null) {
- e11 = 1;
- }
- if(e10 == null) {
- e10 = 0;
- }
- if(e02 == null) {
- e02 = 0;
- }
- if(e01 == null) {
- e01 = 0;
- }
- if(e00 == null) {
- e00 = 1;
- }
- this.e00 = e00;
- this.e01 = e01;
- this.e02 = e02;
- this.e10 = e10;
- this.e11 = e11;
- this.e12 = e12;
- this.e20 = e20;
- this.e21 = e21;
- this.e22 = e22;
- oimo.common.Mat3.numCreations++;
- }
- init(e00,e01,e02,e10,e11,e12,e20,e21,e22) {
- this.e00 = e00;
- this.e01 = e01;
- this.e02 = e02;
- this.e10 = e10;
- this.e11 = e11;
- this.e12 = e12;
- this.e20 = e20;
- this.e21 = e21;
- this.e22 = e22;
- return this;
- }
- identity() {
- var t00 = 1;
- var t01 = 0;
- var t02 = 0;
- var t10 = 0;
- var t11 = 1;
- var t12 = 0;
- var t20 = 0;
- var t21 = 0;
- var t22 = 1;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- return this;
- }
- add(m) {
- return new oimo.common.Mat3(this.e00 + m.e00,this.e01 + m.e01,this.e02 + m.e02,this.e10 + m.e10,this.e11 + m.e11,this.e12 + m.e12,this.e20 + m.e20,this.e21 + m.e21,this.e22 + m.e22);
- }
- sub(m) {
- return new oimo.common.Mat3(this.e00 - m.e00,this.e01 - m.e01,this.e02 - m.e02,this.e10 - m.e10,this.e11 - m.e11,this.e12 - m.e12,this.e20 - m.e20,this.e21 - m.e21,this.e22 - m.e22);
- }
- scale(s) {
- return new oimo.common.Mat3(this.e00 * s,this.e01 * s,this.e02 * s,this.e10 * s,this.e11 * s,this.e12 * s,this.e20 * s,this.e21 * s,this.e22 * s);
- }
- mul(m) {
- return new oimo.common.Mat3(this.e00 * m.e00 + this.e01 * m.e10 + this.e02 * m.e20,this.e00 * m.e01 + this.e01 * m.e11 + this.e02 * m.e21,this.e00 * m.e02 + this.e01 * m.e12 + this.e02 * m.e22,this.e10 * m.e00 + this.e11 * m.e10 + this.e12 * m.e20,this.e10 * m.e01 + this.e11 * m.e11 + this.e12 * m.e21,this.e10 * m.e02 + this.e11 * m.e12 + this.e12 * m.e22,this.e20 * m.e00 + this.e21 * m.e10 + this.e22 * m.e20,this.e20 * m.e01 + this.e21 * m.e11 + this.e22 * m.e21,this.e20 * m.e02 + this.e21 * m.e12 + this.e22 * m.e22);
- }
- addEq(m) {
- var t00 = this.e00 + m.e00;
- var t01 = this.e01 + m.e01;
- var t02 = this.e02 + m.e02;
- var t10 = this.e10 + m.e10;
- var t11 = this.e11 + m.e11;
- var t12 = this.e12 + m.e12;
- var t20 = this.e20 + m.e20;
- var t21 = this.e21 + m.e21;
- var t22 = this.e22 + m.e22;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- return this;
- }
- subEq(m) {
- var t00 = this.e00 - m.e00;
- var t01 = this.e01 - m.e01;
- var t02 = this.e02 - m.e02;
- var t10 = this.e10 - m.e10;
- var t11 = this.e11 - m.e11;
- var t12 = this.e12 - m.e12;
- var t20 = this.e20 - m.e20;
- var t21 = this.e21 - m.e21;
- var t22 = this.e22 - m.e22;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- return this;
- }
- scaleEq(s) {
- var t00 = this.e00 * s;
- var t01 = this.e01 * s;
- var t02 = this.e02 * s;
- var t10 = this.e10 * s;
- var t11 = this.e11 * s;
- var t12 = this.e12 * s;
- var t20 = this.e20 * s;
- var t21 = this.e21 * s;
- var t22 = this.e22 * s;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- return this;
- }
- mulEq(m) {
- var t00 = this.e00 * m.e00 + this.e01 * m.e10 + this.e02 * m.e20;
- var t01 = this.e00 * m.e01 + this.e01 * m.e11 + this.e02 * m.e21;
- var t02 = this.e00 * m.e02 + this.e01 * m.e12 + this.e02 * m.e22;
- var t10 = this.e10 * m.e00 + this.e11 * m.e10 + this.e12 * m.e20;
- var t11 = this.e10 * m.e01 + this.e11 * m.e11 + this.e12 * m.e21;
- var t12 = this.e10 * m.e02 + this.e11 * m.e12 + this.e12 * m.e22;
- var t20 = this.e20 * m.e00 + this.e21 * m.e10 + this.e22 * m.e20;
- var t21 = this.e20 * m.e01 + this.e21 * m.e11 + this.e22 * m.e21;
- var t22 = this.e20 * m.e02 + this.e21 * m.e12 + this.e22 * m.e22;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- return this;
- }
- prependScale(sx,sy,sz) {
- return new oimo.common.Mat3(this.e00 * sx,this.e01 * sx,this.e02 * sx,this.e10 * sy,this.e11 * sy,this.e12 * sy,this.e20 * sz,this.e21 * sz,this.e22 * sz);
- }
- appendScale(sx,sy,sz) {
- return new oimo.common.Mat3(this.e00 * sx,this.e01 * sy,this.e02 * sz,this.e10 * sx,this.e11 * sy,this.e12 * sz,this.e20 * sx,this.e21 * sy,this.e22 * sz);
- }
- prependRotation(rad,axisX,axisY,axisZ) {
- var s = Math.sin(rad);
- var c = Math.cos(rad);
- var c1 = 1 - c;
- var r00 = axisX * axisX * c1 + c;
- var r01 = axisX * axisY * c1 - axisZ * s;
- var r02 = axisX * axisZ * c1 + axisY * s;
- var r10 = axisY * axisX * c1 + axisZ * s;
- var r11 = axisY * axisY * c1 + c;
- var r12 = axisY * axisZ * c1 - axisX * s;
- var r20 = axisZ * axisX * c1 - axisY * s;
- var r21 = axisZ * axisY * c1 + axisX * s;
- var r22 = axisZ * axisZ * c1 + c;
- return new oimo.common.Mat3(r00 * this.e00 + r01 * this.e10 + r02 * this.e20,r00 * this.e01 + r01 * this.e11 + r02 * this.e21,r00 * this.e02 + r01 * this.e12 + r02 * this.e22,r10 * this.e00 + r11 * this.e10 + r12 * this.e20,r10 * this.e01 + r11 * this.e11 + r12 * this.e21,r10 * this.e02 + r11 * this.e12 + r12 * this.e22,r20 * this.e00 + r21 * this.e10 + r22 * this.e20,r20 * this.e01 + r21 * this.e11 + r22 * this.e21,r20 * this.e02 + r21 * this.e12 + r22 * this.e22);
- }
- appendRotation(rad,axisX,axisY,axisZ) {
- var s = Math.sin(rad);
- var c = Math.cos(rad);
- var c1 = 1 - c;
- var r00 = axisX * axisX * c1 + c;
- var r01 = axisX * axisY * c1 - axisZ * s;
- var r02 = axisX * axisZ * c1 + axisY * s;
- var r10 = axisY * axisX * c1 + axisZ * s;
- var r11 = axisY * axisY * c1 + c;
- var r12 = axisY * axisZ * c1 - axisX * s;
- var r20 = axisZ * axisX * c1 - axisY * s;
- var r21 = axisZ * axisY * c1 + axisX * s;
- var r22 = axisZ * axisZ * c1 + c;
- return new oimo.common.Mat3(this.e00 * r00 + this.e01 * r10 + this.e02 * r20,this.e00 * r01 + this.e01 * r11 + this.e02 * r21,this.e00 * r02 + this.e01 * r12 + this.e02 * r22,this.e10 * r00 + this.e11 * r10 + this.e12 * r20,this.e10 * r01 + this.e11 * r11 + this.e12 * r21,this.e10 * r02 + this.e11 * r12 + this.e12 * r22,this.e20 * r00 + this.e21 * r10 + this.e22 * r20,this.e20 * r01 + this.e21 * r11 + this.e22 * r21,this.e20 * r02 + this.e21 * r12 + this.e22 * r22);
- }
- prependScaleEq(sx,sy,sz) {
- var t00 = this.e00 * sx;
- var t01 = this.e01 * sx;
- var t02 = this.e02 * sx;
- var t10 = this.e10 * sy;
- var t11 = this.e11 * sy;
- var t12 = this.e12 * sy;
- var t20 = this.e20 * sz;
- var t21 = this.e21 * sz;
- var t22 = this.e22 * sz;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- return this;
- }
- appendScaleEq(sx,sy,sz) {
- var t00 = this.e00 * sx;
- var t01 = this.e01 * sy;
- var t02 = this.e02 * sz;
- var t10 = this.e10 * sx;
- var t11 = this.e11 * sy;
- var t12 = this.e12 * sz;
- var t20 = this.e20 * sx;
- var t21 = this.e21 * sy;
- var t22 = this.e22 * sz;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- return this;
- }
- prependRotationEq(rad,axisX,axisY,axisZ) {
- var s = Math.sin(rad);
- var c = Math.cos(rad);
- var c1 = 1 - c;
- var r00 = axisX * axisX * c1 + c;
- var r01 = axisX * axisY * c1 - axisZ * s;
- var r02 = axisX * axisZ * c1 + axisY * s;
- var r10 = axisY * axisX * c1 + axisZ * s;
- var r11 = axisY * axisY * c1 + c;
- var r12 = axisY * axisZ * c1 - axisX * s;
- var r20 = axisZ * axisX * c1 - axisY * s;
- var r21 = axisZ * axisY * c1 + axisX * s;
- var r22 = axisZ * axisZ * c1 + c;
- var t00 = r00 * this.e00 + r01 * this.e10 + r02 * this.e20;
- var t01 = r00 * this.e01 + r01 * this.e11 + r02 * this.e21;
- var t02 = r00 * this.e02 + r01 * this.e12 + r02 * this.e22;
- var t10 = r10 * this.e00 + r11 * this.e10 + r12 * this.e20;
- var t11 = r10 * this.e01 + r11 * this.e11 + r12 * this.e21;
- var t12 = r10 * this.e02 + r11 * this.e12 + r12 * this.e22;
- var t20 = r20 * this.e00 + r21 * this.e10 + r22 * this.e20;
- var t21 = r20 * this.e01 + r21 * this.e11 + r22 * this.e21;
- var t22 = r20 * this.e02 + r21 * this.e12 + r22 * this.e22;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- return this;
- }
- appendRotationEq(rad,axisX,axisY,axisZ) {
- var s = Math.sin(rad);
- var c = Math.cos(rad);
- var c1 = 1 - c;
- var r00 = axisX * axisX * c1 + c;
- var r01 = axisX * axisY * c1 - axisZ * s;
- var r02 = axisX * axisZ * c1 + axisY * s;
- var r10 = axisY * axisX * c1 + axisZ * s;
- var r11 = axisY * axisY * c1 + c;
- var r12 = axisY * axisZ * c1 - axisX * s;
- var r20 = axisZ * axisX * c1 - axisY * s;
- var r21 = axisZ * axisY * c1 + axisX * s;
- var r22 = axisZ * axisZ * c1 + c;
- var t00 = this.e00 * r00 + this.e01 * r10 + this.e02 * r20;
- var t01 = this.e00 * r01 + this.e01 * r11 + this.e02 * r21;
- var t02 = this.e00 * r02 + this.e01 * r12 + this.e02 * r22;
- var t10 = this.e10 * r00 + this.e11 * r10 + this.e12 * r20;
- var t11 = this.e10 * r01 + this.e11 * r11 + this.e12 * r21;
- var t12 = this.e10 * r02 + this.e11 * r12 + this.e12 * r22;
- var t20 = this.e20 * r00 + this.e21 * r10 + this.e22 * r20;
- var t21 = this.e20 * r01 + this.e21 * r11 + this.e22 * r21;
- var t22 = this.e20 * r02 + this.e21 * r12 + this.e22 * r22;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- return this;
- }
- transpose() {
- return new oimo.common.Mat3(this.e00,this.e10,this.e20,this.e01,this.e11,this.e21,this.e02,this.e12,this.e22);
- }
- transposeEq() {
- var t00 = this.e00;
- var t01 = this.e10;
- var t02 = this.e20;
- var t10 = this.e01;
- var t11 = this.e11;
- var t12 = this.e21;
- var t20 = this.e02;
- var t21 = this.e12;
- var t22 = this.e22;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- return this;
- }
- determinant() {
- return this.e00 * (this.e11 * this.e22 - this.e12 * this.e21) - this.e01 * (this.e10 * this.e22 - this.e12 * this.e20) + this.e02 * (this.e10 * this.e21 - this.e11 * this.e20);
- }
- trace() {
- return this.e00 + this.e11 + this.e22;
- }
- inverse() {
- var d00 = this.e11 * this.e22 - this.e12 * this.e21;
- var d01 = this.e10 * this.e22 - this.e12 * this.e20;
- var d02 = this.e10 * this.e21 - this.e11 * this.e20;
- var d10 = this.e01 * this.e22 - this.e02 * this.e21;
- var d11 = this.e00 * this.e22 - this.e02 * this.e20;
- var d12 = this.e00 * this.e21 - this.e01 * this.e20;
- var d20 = this.e01 * this.e12 - this.e02 * this.e11;
- var d21 = this.e00 * this.e12 - this.e02 * this.e10;
- var d22 = this.e00 * this.e11 - this.e01 * this.e10;
- var invDet = this.e00 * d00 - this.e01 * d01 + this.e02 * d02;
- if(invDet != 0) {
- invDet = 1 / invDet;
- }
- return new oimo.common.Mat3(d00 * invDet,-d10 * invDet,d20 * invDet,-d01 * invDet,d11 * invDet,-d21 * invDet,d02 * invDet,-d12 * invDet,d22 * invDet);
- }
- inverseEq() {
- var d00 = this.e11 * this.e22 - this.e12 * this.e21;
- var d01 = this.e10 * this.e22 - this.e12 * this.e20;
- var d02 = this.e10 * this.e21 - this.e11 * this.e20;
- var d10 = this.e01 * this.e22 - this.e02 * this.e21;
- var d11 = this.e00 * this.e22 - this.e02 * this.e20;
- var d12 = this.e00 * this.e21 - this.e01 * this.e20;
- var d20 = this.e01 * this.e12 - this.e02 * this.e11;
- var d21 = this.e00 * this.e12 - this.e02 * this.e10;
- var d22 = this.e00 * this.e11 - this.e01 * this.e10;
- var invDet = this.e00 * d00 - this.e01 * d01 + this.e02 * d02;
- if(invDet != 0) {
- invDet = 1 / invDet;
- }
- var t00 = d00 * invDet;
- var t01 = -d10 * invDet;
- var t02 = d20 * invDet;
- var t10 = -d01 * invDet;
- var t11 = d11 * invDet;
- var t12 = -d21 * invDet;
- var t20 = d02 * invDet;
- var t21 = -d12 * invDet;
- var t22 = d22 * invDet;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- return this;
- }
- toArray(columnMajor) {
- if(columnMajor == null) {
- columnMajor = false;
- }
- if(columnMajor) {
- return [this.e00,this.e10,this.e20,this.e01,this.e11,this.e21,this.e02,this.e12,this.e22];
- } else {
- return [this.e00,this.e01,this.e02,this.e10,this.e11,this.e12,this.e20,this.e21,this.e22];
- }
- }
- copyFrom(m) {
- this.e00 = m.e00;
- this.e01 = m.e01;
- this.e02 = m.e02;
- this.e10 = m.e10;
- this.e11 = m.e11;
- this.e12 = m.e12;
- this.e20 = m.e20;
- this.e21 = m.e21;
- this.e22 = m.e22;
- return this;
- }
- clone() {
- return new oimo.common.Mat3(this.e00,this.e01,this.e02,this.e10,this.e11,this.e12,this.e20,this.e21,this.e22);
- }
- fromQuat(q) {
- var x = q.x;
- var y = q.y;
- var z = q.z;
- var w = q.w;
- var x2 = 2 * x;
- var y2 = 2 * y;
- var z2 = 2 * z;
- var xx = x * x2;
- var yy = y * y2;
- var zz = z * z2;
- var xy = x * y2;
- var yz = y * z2;
- var xz = x * z2;
- var wx = w * x2;
- var wy = w * y2;
- var wz = w * z2;
- this.e00 = 1 - yy - zz;
- this.e01 = xy - wz;
- this.e02 = xz + wy;
- this.e10 = xy + wz;
- this.e11 = 1 - xx - zz;
- this.e12 = yz - wx;
- this.e20 = xz - wy;
- this.e21 = yz + wx;
- this.e22 = 1 - xx - yy;
- return this;
- }
- toQuat() {
- var _this = new oimo.common.Quat();
- var e00 = this.e00;
- var e11 = this.e11;
- var e22 = this.e22;
- var t = e00 + e11 + e22;
- var s;
- if(t > 0) {
- s = Math.sqrt(t + 1);
- _this.w = 0.5 * s;
- s = 0.5 / s;
- _this.x = (this.e21 - this.e12) * s;
- _this.y = (this.e02 - this.e20) * s;
- _this.z = (this.e10 - this.e01) * s;
- } else if(e00 > e11) {
- if(e00 > e22) {
- s = Math.sqrt(e00 - e11 - e22 + 1);
- _this.x = 0.5 * s;
- s = 0.5 / s;
- _this.y = (this.e01 + this.e10) * s;
- _this.z = (this.e02 + this.e20) * s;
- _this.w = (this.e21 - this.e12) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- _this.z = 0.5 * s;
- s = 0.5 / s;
- _this.x = (this.e02 + this.e20) * s;
- _this.y = (this.e12 + this.e21) * s;
- _this.w = (this.e10 - this.e01) * s;
- }
- } else if(e11 > e22) {
- s = Math.sqrt(e11 - e22 - e00 + 1);
- _this.y = 0.5 * s;
- s = 0.5 / s;
- _this.x = (this.e01 + this.e10) * s;
- _this.z = (this.e12 + this.e21) * s;
- _this.w = (this.e02 - this.e20) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- _this.z = 0.5 * s;
- s = 0.5 / s;
- _this.x = (this.e02 + this.e20) * s;
- _this.y = (this.e12 + this.e21) * s;
- _this.w = (this.e10 - this.e01) * s;
- }
- return _this;
- }
- fromEulerXyz(eulerAngles) {
- var sx = Math.sin(eulerAngles.x);
- var sy = Math.sin(eulerAngles.y);
- var sz = Math.sin(eulerAngles.z);
- var cx = Math.cos(eulerAngles.x);
- var cy = Math.cos(eulerAngles.y);
- var cz = Math.cos(eulerAngles.z);
- var t00 = cy * cz;
- var t01 = -cy * sz;
- var t02 = sy;
- var t10 = cx * sz + cz * sx * sy;
- var t11 = cx * cz - sx * sy * sz;
- var t12 = -cy * sx;
- var t20 = sx * sz - cx * cz * sy;
- var t21 = cz * sx + cx * sy * sz;
- var t22 = cx * cy;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- return this;
- }
- toEulerXyz() {
- var sy = this.e02;
- if(sy <= -1) {
- var xSubZ = Math.atan2(this.e21,this.e11);
- return new oimo.common.Vec3(xSubZ * 0.5,-1.570796326794895,-xSubZ * 0.5);
- }
- if(sy >= 1) {
- var xAddZ = Math.atan2(this.e21,this.e11);
- return new oimo.common.Vec3(xAddZ * 0.5,1.570796326794895,xAddZ * 0.5);
- }
- var y = Math.asin(sy);
- var x = Math.atan2(-this.e12,this.e22);
- var z = Math.atan2(-this.e01,this.e00);
- return new oimo.common.Vec3(x,y,z);
- }
- getRow(index) {
- if(index == 0) {
- return new oimo.common.Vec3(this.e00,this.e01,this.e02);
- } else if(index == 1) {
- return new oimo.common.Vec3(this.e10,this.e11,this.e12);
- } else if(index == 2) {
- return new oimo.common.Vec3(this.e20,this.e21,this.e22);
- } else {
- return null;
- }
- }
- getCol(index) {
- if(index == 0) {
- return new oimo.common.Vec3(this.e00,this.e10,this.e20);
- } else if(index == 1) {
- return new oimo.common.Vec3(this.e01,this.e11,this.e21);
- } else if(index == 2) {
- return new oimo.common.Vec3(this.e02,this.e12,this.e22);
- } else {
- return null;
- }
- }
- getRowTo(index,dst) {
- if(index == 0) {
- dst.init(this.e00,this.e01,this.e02);
- } else if(index == 1) {
- dst.init(this.e10,this.e11,this.e12);
- } else if(index == 2) {
- dst.init(this.e20,this.e21,this.e22);
- } else {
- dst.zero();
- }
- }
- getColTo(index,dst) {
- if(index == 0) {
- dst.init(this.e00,this.e10,this.e20);
- } else if(index == 1) {
- dst.init(this.e01,this.e11,this.e21);
- } else if(index == 2) {
- dst.init(this.e02,this.e12,this.e22);
- } else {
- dst.zero();
- }
- }
- fromRows(row0,row1,row2) {
- var t00 = row0.x;
- var t01 = row0.y;
- var t02 = row0.z;
- var t10 = row1.x;
- var t11 = row1.y;
- var t12 = row1.z;
- var t20 = row2.x;
- var t21 = row2.y;
- var t22 = row2.z;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- return this;
- }
- fromCols(col0,col1,col2) {
- var t00 = col0.x;
- var t01 = col1.x;
- var t02 = col2.x;
- var t10 = col0.y;
- var t11 = col1.y;
- var t12 = col2.y;
- var t20 = col0.z;
- var t21 = col1.z;
- var t22 = col2.z;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- return this;
- }
- toString() {
- return "Mat3[" + (this.e00 > 0 ? (this.e00 * 10000000 + 0.5 | 0) / 10000000 : (this.e00 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e01 > 0 ? (this.e01 * 10000000 + 0.5 | 0) / 10000000 : (this.e01 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e02 > 0 ? (this.e02 * 10000000 + 0.5 | 0) / 10000000 : (this.e02 * 10000000 - 0.5 | 0) / 10000000) + ",\n" + " " + (this.e10 > 0 ? (this.e10 * 10000000 + 0.5 | 0) / 10000000 : (this.e10 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e11 > 0 ? (this.e11 * 10000000 + 0.5 | 0) / 10000000 : (this.e11 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e12 > 0 ? (this.e12 * 10000000 + 0.5 | 0) / 10000000 : (this.e12 * 10000000 - 0.5 | 0) / 10000000) + ",\n" + " " + (this.e20 > 0 ? (this.e20 * 10000000 + 0.5 | 0) / 10000000 : (this.e20 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e21 > 0 ? (this.e21 * 10000000 + 0.5 | 0) / 10000000 : (this.e21 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e22 > 0 ? (this.e22 * 10000000 + 0.5 | 0) / 10000000 : (this.e22 * 10000000 - 0.5 | 0) / 10000000) + "]";
- }
- }
- oimo.common.Mat4 = class oimo_common_Mat4 {
- constructor(e00,e01,e02,e03,e10,e11,e12,e13,e20,e21,e22,e23,e30,e31,e32,e33) {
- if(e33 == null) {
- e33 = 1;
- }
- if(e32 == null) {
- e32 = 0;
- }
- if(e31 == null) {
- e31 = 0;
- }
- if(e30 == null) {
- e30 = 0;
- }
- if(e23 == null) {
- e23 = 0;
- }
- if(e22 == null) {
- e22 = 1;
- }
- if(e21 == null) {
- e21 = 0;
- }
- if(e20 == null) {
- e20 = 0;
- }
- if(e13 == null) {
- e13 = 0;
- }
- if(e12 == null) {
- e12 = 0;
- }
- if(e11 == null) {
- e11 = 1;
- }
- if(e10 == null) {
- e10 = 0;
- }
- if(e03 == null) {
- e03 = 0;
- }
- if(e02 == null) {
- e02 = 0;
- }
- if(e01 == null) {
- e01 = 0;
- }
- if(e00 == null) {
- e00 = 1;
- }
- this.e00 = e00;
- this.e01 = e01;
- this.e02 = e02;
- this.e03 = e03;
- this.e10 = e10;
- this.e11 = e11;
- this.e12 = e12;
- this.e13 = e13;
- this.e20 = e20;
- this.e21 = e21;
- this.e22 = e22;
- this.e23 = e23;
- this.e30 = e30;
- this.e31 = e31;
- this.e32 = e32;
- this.e33 = e33;
- oimo.common.Mat4.numCreations++;
- }
- init(e00,e01,e02,e03,e10,e11,e12,e13,e20,e21,e22,e23,e30,e31,e32,e33) {
- this.e00 = e00;
- this.e01 = e01;
- this.e02 = e02;
- this.e03 = e03;
- this.e10 = e10;
- this.e11 = e11;
- this.e12 = e12;
- this.e13 = e13;
- this.e20 = e20;
- this.e21 = e21;
- this.e22 = e22;
- this.e23 = e23;
- this.e30 = e30;
- this.e31 = e31;
- this.e32 = e32;
- this.e33 = e33;
- return this;
- }
- identity() {
- var t00 = 1;
- var t01 = 0;
- var t02 = 0;
- var t03 = 0;
- var t10 = 0;
- var t11 = 1;
- var t12 = 0;
- var t13 = 0;
- var t20 = 0;
- var t21 = 0;
- var t22 = 1;
- var t23 = 0;
- var t30 = 0;
- var t31 = 0;
- var t32 = 0;
- var t33 = 1;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e03 = t03;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e13 = t13;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- this.e23 = t23;
- this.e30 = t30;
- this.e31 = t31;
- this.e32 = t32;
- this.e33 = t33;
- return this;
- }
- add(m) {
- return new oimo.common.Mat4(this.e00 + m.e00,this.e01 + m.e01,this.e02 + m.e02,this.e03 + m.e03,this.e10 + m.e10,this.e11 + m.e11,this.e12 + m.e12,this.e13 + m.e13,this.e20 + m.e20,this.e21 + m.e21,this.e22 + m.e22,this.e23 + m.e23,this.e30 + m.e30,this.e31 + m.e31,this.e32 + m.e32,this.e33 + m.e33);
- }
- sub(m) {
- return new oimo.common.Mat4(this.e00 - m.e00,this.e01 - m.e01,this.e02 - m.e02,this.e03 - m.e03,this.e10 - m.e10,this.e11 - m.e11,this.e12 - m.e12,this.e13 - m.e13,this.e20 - m.e20,this.e21 - m.e21,this.e22 - m.e22,this.e23 - m.e23,this.e30 - m.e30,this.e31 - m.e31,this.e32 - m.e32,this.e33 - m.e33);
- }
- scale(s) {
- return new oimo.common.Mat4(this.e00 * s,this.e01 * s,this.e02 * s,this.e03 * s,this.e10 * s,this.e11 * s,this.e12 * s,this.e13 * s,this.e20 * s,this.e21 * s,this.e22 * s,this.e23 * s,this.e30 * s,this.e31 * s,this.e32 * s,this.e33 * s);
- }
- mul(m) {
- return new oimo.common.Mat4(this.e00 * m.e00 + this.e01 * m.e10 + this.e02 * m.e20 + this.e03 * m.e30,this.e00 * m.e01 + this.e01 * m.e11 + this.e02 * m.e21 + this.e03 * m.e31,this.e00 * m.e02 + this.e01 * m.e12 + this.e02 * m.e22 + this.e03 * m.e32,this.e00 * m.e03 + this.e01 * m.e13 + this.e02 * m.e23 + this.e03 * m.e33,this.e10 * m.e00 + this.e11 * m.e10 + this.e12 * m.e20 + this.e13 * m.e30,this.e10 * m.e01 + this.e11 * m.e11 + this.e12 * m.e21 + this.e13 * m.e31,this.e10 * m.e02 + this.e11 * m.e12 + this.e12 * m.e22 + this.e13 * m.e32,this.e10 * m.e03 + this.e11 * m.e13 + this.e12 * m.e23 + this.e13 * m.e33,this.e20 * m.e00 + this.e21 * m.e10 + this.e22 * m.e20 + this.e23 * m.e30,this.e20 * m.e01 + this.e21 * m.e11 + this.e22 * m.e21 + this.e23 * m.e31,this.e20 * m.e02 + this.e21 * m.e12 + this.e22 * m.e22 + this.e23 * m.e32,this.e20 * m.e03 + this.e21 * m.e13 + this.e22 * m.e23 + this.e23 * m.e33,this.e30 * m.e00 + this.e31 * m.e10 + this.e32 * m.e20 + this.e33 * m.e30,this.e30 * m.e01 + this.e31 * m.e11 + this.e32 * m.e21 + this.e33 * m.e31,this.e30 * m.e02 + this.e31 * m.e12 + this.e32 * m.e22 + this.e33 * m.e32,this.e30 * m.e03 + this.e31 * m.e13 + this.e32 * m.e23 + this.e33 * m.e33);
- }
- addEq(m) {
- var t00 = this.e00 + m.e00;
- var t01 = this.e01 + m.e01;
- var t02 = this.e02 + m.e02;
- var t03 = this.e03 + m.e03;
- var t10 = this.e10 + m.e10;
- var t11 = this.e11 + m.e11;
- var t12 = this.e12 + m.e12;
- var t13 = this.e13 + m.e13;
- var t20 = this.e20 + m.e20;
- var t21 = this.e21 + m.e21;
- var t22 = this.e22 + m.e22;
- var t23 = this.e23 + m.e23;
- var t30 = this.e30 + m.e30;
- var t31 = this.e31 + m.e31;
- var t32 = this.e32 + m.e32;
- var t33 = this.e33 + m.e33;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e03 = t03;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e13 = t13;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- this.e23 = t23;
- this.e30 = t30;
- this.e31 = t31;
- this.e32 = t32;
- this.e33 = t33;
- return this;
- }
- subEq(m) {
- var t00 = this.e00 - m.e00;
- var t01 = this.e01 - m.e01;
- var t02 = this.e02 - m.e02;
- var t03 = this.e03 - m.e03;
- var t10 = this.e10 - m.e10;
- var t11 = this.e11 - m.e11;
- var t12 = this.e12 - m.e12;
- var t13 = this.e13 - m.e13;
- var t20 = this.e20 - m.e20;
- var t21 = this.e21 - m.e21;
- var t22 = this.e22 - m.e22;
- var t23 = this.e23 - m.e23;
- var t30 = this.e30 - m.e30;
- var t31 = this.e31 - m.e31;
- var t32 = this.e32 - m.e32;
- var t33 = this.e33 - m.e33;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e03 = t03;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e13 = t13;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- this.e23 = t23;
- this.e30 = t30;
- this.e31 = t31;
- this.e32 = t32;
- this.e33 = t33;
- return this;
- }
- scaleEq(s) {
- var t00 = this.e00 * s;
- var t01 = this.e01 * s;
- var t02 = this.e02 * s;
- var t03 = this.e03 * s;
- var t10 = this.e10 * s;
- var t11 = this.e11 * s;
- var t12 = this.e12 * s;
- var t13 = this.e13 * s;
- var t20 = this.e20 * s;
- var t21 = this.e21 * s;
- var t22 = this.e22 * s;
- var t23 = this.e23 * s;
- var t30 = this.e30 * s;
- var t31 = this.e31 * s;
- var t32 = this.e32 * s;
- var t33 = this.e33 * s;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e03 = t03;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e13 = t13;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- this.e23 = t23;
- this.e30 = t30;
- this.e31 = t31;
- this.e32 = t32;
- this.e33 = t33;
- return this;
- }
- mulEq(m) {
- var t00 = this.e00 * m.e00 + this.e01 * m.e10 + this.e02 * m.e20 + this.e03 * m.e30;
- var t01 = this.e00 * m.e01 + this.e01 * m.e11 + this.e02 * m.e21 + this.e03 * m.e31;
- var t02 = this.e00 * m.e02 + this.e01 * m.e12 + this.e02 * m.e22 + this.e03 * m.e32;
- var t03 = this.e00 * m.e03 + this.e01 * m.e13 + this.e02 * m.e23 + this.e03 * m.e33;
- var t10 = this.e10 * m.e00 + this.e11 * m.e10 + this.e12 * m.e20 + this.e13 * m.e30;
- var t11 = this.e10 * m.e01 + this.e11 * m.e11 + this.e12 * m.e21 + this.e13 * m.e31;
- var t12 = this.e10 * m.e02 + this.e11 * m.e12 + this.e12 * m.e22 + this.e13 * m.e32;
- var t13 = this.e10 * m.e03 + this.e11 * m.e13 + this.e12 * m.e23 + this.e13 * m.e33;
- var t20 = this.e20 * m.e00 + this.e21 * m.e10 + this.e22 * m.e20 + this.e23 * m.e30;
- var t21 = this.e20 * m.e01 + this.e21 * m.e11 + this.e22 * m.e21 + this.e23 * m.e31;
- var t22 = this.e20 * m.e02 + this.e21 * m.e12 + this.e22 * m.e22 + this.e23 * m.e32;
- var t23 = this.e20 * m.e03 + this.e21 * m.e13 + this.e22 * m.e23 + this.e23 * m.e33;
- var t30 = this.e30 * m.e00 + this.e31 * m.e10 + this.e32 * m.e20 + this.e33 * m.e30;
- var t31 = this.e30 * m.e01 + this.e31 * m.e11 + this.e32 * m.e21 + this.e33 * m.e31;
- var t32 = this.e30 * m.e02 + this.e31 * m.e12 + this.e32 * m.e22 + this.e33 * m.e32;
- var t33 = this.e30 * m.e03 + this.e31 * m.e13 + this.e32 * m.e23 + this.e33 * m.e33;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e03 = t03;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e13 = t13;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- this.e23 = t23;
- this.e30 = t30;
- this.e31 = t31;
- this.e32 = t32;
- this.e33 = t33;
- return this;
- }
- prependScale(sx,sy,sz) {
- return new oimo.common.Mat4(this.e00 * sx,this.e01 * sx,this.e02 * sx,this.e03 * sx,this.e10 * sy,this.e11 * sy,this.e12 * sy,this.e13 * sy,this.e20 * sz,this.e21 * sz,this.e22 * sz,this.e23 * sz,this.e30,this.e31,this.e32,this.e33);
- }
- appendScale(sx,sy,sz) {
- return new oimo.common.Mat4(this.e00 * sx,this.e01 * sy,this.e02 * sz,this.e03,this.e10 * sx,this.e11 * sy,this.e12 * sz,this.e13,this.e20 * sx,this.e21 * sy,this.e22 * sz,this.e23,this.e30 * sx,this.e31 * sy,this.e32 * sz,this.e33);
- }
- prependRotation(rad,axisX,axisY,axisZ) {
- var s = Math.sin(rad);
- var c = Math.cos(rad);
- var c1 = 1 - c;
- var r00 = axisX * axisX * c1 + c;
- var r01 = axisX * axisY * c1 - axisZ * s;
- var r02 = axisX * axisZ * c1 + axisY * s;
- var r10 = axisY * axisX * c1 + axisZ * s;
- var r11 = axisY * axisY * c1 + c;
- var r12 = axisY * axisZ * c1 - axisX * s;
- var r20 = axisZ * axisX * c1 - axisY * s;
- var r21 = axisZ * axisY * c1 + axisX * s;
- var r22 = axisZ * axisZ * c1 + c;
- return new oimo.common.Mat4(r00 * this.e00 + r01 * this.e10 + r02 * this.e20,r00 * this.e01 + r01 * this.e11 + r02 * this.e21,r00 * this.e02 + r01 * this.e12 + r02 * this.e22,r00 * this.e03 + r01 * this.e13 + r02 * this.e23,r10 * this.e00 + r11 * this.e10 + r12 * this.e20,r10 * this.e01 + r11 * this.e11 + r12 * this.e21,r10 * this.e02 + r11 * this.e12 + r12 * this.e22,r10 * this.e03 + r11 * this.e13 + r12 * this.e23,r20 * this.e00 + r21 * this.e10 + r22 * this.e20,r20 * this.e01 + r21 * this.e11 + r22 * this.e21,r20 * this.e02 + r21 * this.e12 + r22 * this.e22,r20 * this.e03 + r21 * this.e13 + r22 * this.e23,this.e30,this.e31,this.e32,this.e33);
- }
- appendRotation(rad,axisX,axisY,axisZ) {
- var s = Math.sin(rad);
- var c = Math.cos(rad);
- var c1 = 1 - c;
- var r00 = axisX * axisX * c1 + c;
- var r01 = axisX * axisY * c1 - axisZ * s;
- var r02 = axisX * axisZ * c1 + axisY * s;
- var r10 = axisY * axisX * c1 + axisZ * s;
- var r11 = axisY * axisY * c1 + c;
- var r12 = axisY * axisZ * c1 - axisX * s;
- var r20 = axisZ * axisX * c1 - axisY * s;
- var r21 = axisZ * axisY * c1 + axisX * s;
- var r22 = axisZ * axisZ * c1 + c;
- return new oimo.common.Mat4(this.e00 * r00 + this.e01 * r10 + this.e02 * r20,this.e00 * r01 + this.e01 * r11 + this.e02 * r21,this.e00 * r02 + this.e01 * r12 + this.e02 * r22,this.e03,this.e10 * r00 + this.e11 * r10 + this.e12 * r20,this.e10 * r01 + this.e11 * r11 + this.e12 * r21,this.e10 * r02 + this.e11 * r12 + this.e12 * r22,this.e13,this.e20 * r00 + this.e21 * r10 + this.e22 * r20,this.e20 * r01 + this.e21 * r11 + this.e22 * r21,this.e20 * r02 + this.e21 * r12 + this.e22 * r22,this.e23,this.e30 * r00 + this.e31 * r10 + this.e32 * r20,this.e30 * r01 + this.e31 * r11 + this.e32 * r21,this.e30 * r02 + this.e31 * r12 + this.e32 * r22,this.e33);
- }
- prependTranslation(tx,ty,tz) {
- return new oimo.common.Mat4(this.e00 + tx * this.e30,this.e01 + tx * this.e31,this.e02 + tx * this.e32,this.e03 + tx * this.e33,this.e10 + ty * this.e30,this.e11 + ty * this.e31,this.e12 + ty * this.e32,this.e13 + ty * this.e33,this.e20 + tz * this.e30,this.e21 + tz * this.e31,this.e22 + tz * this.e32,this.e23 + tz * this.e33,this.e30,this.e31,this.e32,this.e33);
- }
- appendTranslation(tx,ty,tz) {
- return new oimo.common.Mat4(this.e00,this.e01,this.e02,this.e00 * tx + this.e01 * ty + this.e02 * tz + this.e03,this.e10,this.e11,this.e12,this.e10 * tx + this.e11 * ty + this.e12 * tz + this.e13,this.e20,this.e21,this.e22,this.e20 * tx + this.e21 * ty + this.e22 * tz + this.e23,this.e30,this.e31,this.e32,this.e30 * tx + this.e31 * ty + this.e32 * tz + this.e33);
- }
- prependScaleEq(sx,sy,sz) {
- var t00 = this.e00 * sx;
- var t01 = this.e01 * sx;
- var t02 = this.e02 * sx;
- var t03 = this.e03 * sx;
- var t10 = this.e10 * sy;
- var t11 = this.e11 * sy;
- var t12 = this.e12 * sy;
- var t13 = this.e13 * sy;
- var t20 = this.e20 * sz;
- var t21 = this.e21 * sz;
- var t22 = this.e22 * sz;
- var t23 = this.e23 * sz;
- var t30 = this.e30;
- var t31 = this.e31;
- var t32 = this.e32;
- var t33 = this.e33;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e03 = t03;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e13 = t13;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- this.e23 = t23;
- this.e30 = t30;
- this.e31 = t31;
- this.e32 = t32;
- this.e33 = t33;
- return this;
- }
- appendScaleEq(sx,sy,sz) {
- var t00 = this.e00 * sx;
- var t01 = this.e01 * sy;
- var t02 = this.e02 * sz;
- var t03 = this.e03;
- var t10 = this.e10 * sx;
- var t11 = this.e11 * sy;
- var t12 = this.e12 * sz;
- var t13 = this.e13;
- var t20 = this.e20 * sx;
- var t21 = this.e21 * sy;
- var t22 = this.e22 * sz;
- var t23 = this.e23;
- var t30 = this.e30 * sx;
- var t31 = this.e31 * sy;
- var t32 = this.e32 * sz;
- var t33 = this.e33;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e03 = t03;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e13 = t13;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- this.e23 = t23;
- this.e30 = t30;
- this.e31 = t31;
- this.e32 = t32;
- this.e33 = t33;
- return this;
- }
- prependRotationEq(rad,axisX,axisY,axisZ) {
- var s = Math.sin(rad);
- var c = Math.cos(rad);
- var c1 = 1 - c;
- var r00 = axisX * axisX * c1 + c;
- var r01 = axisX * axisY * c1 - axisZ * s;
- var r02 = axisX * axisZ * c1 + axisY * s;
- var r10 = axisY * axisX * c1 + axisZ * s;
- var r11 = axisY * axisY * c1 + c;
- var r12 = axisY * axisZ * c1 - axisX * s;
- var r20 = axisZ * axisX * c1 - axisY * s;
- var r21 = axisZ * axisY * c1 + axisX * s;
- var r22 = axisZ * axisZ * c1 + c;
- var t00 = r00 * this.e00 + r01 * this.e10 + r02 * this.e20;
- var t01 = r00 * this.e01 + r01 * this.e11 + r02 * this.e21;
- var t02 = r00 * this.e02 + r01 * this.e12 + r02 * this.e22;
- var t03 = r00 * this.e03 + r01 * this.e13 + r02 * this.e23;
- var t10 = r10 * this.e00 + r11 * this.e10 + r12 * this.e20;
- var t11 = r10 * this.e01 + r11 * this.e11 + r12 * this.e21;
- var t12 = r10 * this.e02 + r11 * this.e12 + r12 * this.e22;
- var t13 = r10 * this.e03 + r11 * this.e13 + r12 * this.e23;
- var t20 = r20 * this.e00 + r21 * this.e10 + r22 * this.e20;
- var t21 = r20 * this.e01 + r21 * this.e11 + r22 * this.e21;
- var t22 = r20 * this.e02 + r21 * this.e12 + r22 * this.e22;
- var t23 = r20 * this.e03 + r21 * this.e13 + r22 * this.e23;
- var t30 = this.e30;
- var t31 = this.e31;
- var t32 = this.e32;
- var t33 = this.e33;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e03 = t03;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e13 = t13;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- this.e23 = t23;
- this.e30 = t30;
- this.e31 = t31;
- this.e32 = t32;
- this.e33 = t33;
- return this;
- }
- appendRotationEq(rad,axisX,axisY,axisZ) {
- var s = Math.sin(rad);
- var c = Math.cos(rad);
- var c1 = 1 - c;
- var r00 = axisX * axisX * c1 + c;
- var r01 = axisX * axisY * c1 - axisZ * s;
- var r02 = axisX * axisZ * c1 + axisY * s;
- var r10 = axisY * axisX * c1 + axisZ * s;
- var r11 = axisY * axisY * c1 + c;
- var r12 = axisY * axisZ * c1 - axisX * s;
- var r20 = axisZ * axisX * c1 - axisY * s;
- var r21 = axisZ * axisY * c1 + axisX * s;
- var r22 = axisZ * axisZ * c1 + c;
- var t00 = this.e00 * r00 + this.e01 * r10 + this.e02 * r20;
- var t01 = this.e00 * r01 + this.e01 * r11 + this.e02 * r21;
- var t02 = this.e00 * r02 + this.e01 * r12 + this.e02 * r22;
- var t03 = this.e03;
- var t10 = this.e10 * r00 + this.e11 * r10 + this.e12 * r20;
- var t11 = this.e10 * r01 + this.e11 * r11 + this.e12 * r21;
- var t12 = this.e10 * r02 + this.e11 * r12 + this.e12 * r22;
- var t13 = this.e13;
- var t20 = this.e20 * r00 + this.e21 * r10 + this.e22 * r20;
- var t21 = this.e20 * r01 + this.e21 * r11 + this.e22 * r21;
- var t22 = this.e20 * r02 + this.e21 * r12 + this.e22 * r22;
- var t23 = this.e23;
- var t30 = this.e30 * r00 + this.e31 * r10 + this.e32 * r20;
- var t31 = this.e30 * r01 + this.e31 * r11 + this.e32 * r21;
- var t32 = this.e30 * r02 + this.e31 * r12 + this.e32 * r22;
- var t33 = this.e33;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e03 = t03;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e13 = t13;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- this.e23 = t23;
- this.e30 = t30;
- this.e31 = t31;
- this.e32 = t32;
- this.e33 = t33;
- return this;
- }
- prependTranslationEq(tx,ty,tz) {
- var t00 = this.e00 + tx * this.e30;
- var t01 = this.e01 + tx * this.e31;
- var t02 = this.e02 + tx * this.e32;
- var t03 = this.e03 + tx * this.e33;
- var t10 = this.e10 + ty * this.e30;
- var t11 = this.e11 + ty * this.e31;
- var t12 = this.e12 + ty * this.e32;
- var t13 = this.e13 + ty * this.e33;
- var t20 = this.e20 + tz * this.e30;
- var t21 = this.e21 + tz * this.e31;
- var t22 = this.e22 + tz * this.e32;
- var t23 = this.e23 + tz * this.e33;
- var t30 = this.e30;
- var t31 = this.e31;
- var t32 = this.e32;
- var t33 = this.e33;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e03 = t03;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e13 = t13;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- this.e23 = t23;
- this.e30 = t30;
- this.e31 = t31;
- this.e32 = t32;
- this.e33 = t33;
- return this;
- }
- appendTranslationEq(tx,ty,tz) {
- var t00 = this.e00;
- var t01 = this.e01;
- var t02 = this.e02;
- var t03 = this.e00 * tx + this.e01 * ty + this.e02 * tz + this.e03;
- var t10 = this.e10;
- var t11 = this.e11;
- var t12 = this.e12;
- var t13 = this.e10 * tx + this.e11 * ty + this.e12 * tz + this.e13;
- var t20 = this.e20;
- var t21 = this.e21;
- var t22 = this.e22;
- var t23 = this.e20 * tx + this.e21 * ty + this.e22 * tz + this.e23;
- var t30 = this.e30;
- var t31 = this.e31;
- var t32 = this.e32;
- var t33 = this.e30 * tx + this.e31 * ty + this.e32 * tz + this.e33;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e03 = t03;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e13 = t13;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- this.e23 = t23;
- this.e30 = t30;
- this.e31 = t31;
- this.e32 = t32;
- this.e33 = t33;
- return this;
- }
- transpose() {
- return new oimo.common.Mat4(this.e00,this.e10,this.e20,this.e30,this.e01,this.e11,this.e21,this.e31,this.e02,this.e12,this.e22,this.e32,this.e03,this.e13,this.e23,this.e33);
- }
- transposeEq() {
- var t00 = this.e00;
- var t01 = this.e10;
- var t02 = this.e20;
- var t03 = this.e30;
- var t10 = this.e01;
- var t11 = this.e11;
- var t12 = this.e21;
- var t13 = this.e31;
- var t20 = this.e02;
- var t21 = this.e12;
- var t22 = this.e22;
- var t23 = this.e32;
- var t30 = this.e03;
- var t31 = this.e13;
- var t32 = this.e23;
- var t33 = this.e33;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e03 = t03;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e13 = t13;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- this.e23 = t23;
- this.e30 = t30;
- this.e31 = t31;
- this.e32 = t32;
- this.e33 = t33;
- return this;
- }
- determinant() {
- var d23_01 = this.e20 * this.e31 - this.e21 * this.e30;
- var d23_02 = this.e20 * this.e32 - this.e22 * this.e30;
- var d23_03 = this.e20 * this.e33 - this.e23 * this.e30;
- var d23_12 = this.e21 * this.e32 - this.e22 * this.e31;
- var d23_13 = this.e21 * this.e33 - this.e23 * this.e31;
- var d23_23 = this.e22 * this.e33 - this.e23 * this.e32;
- return this.e00 * (this.e11 * d23_23 - this.e12 * d23_13 + this.e13 * d23_12) - this.e01 * (this.e10 * d23_23 - this.e12 * d23_03 + this.e13 * d23_02) + this.e02 * (this.e10 * d23_13 - this.e11 * d23_03 + this.e13 * d23_01) - this.e03 * (this.e10 * d23_12 - this.e11 * d23_02 + this.e12 * d23_01);
- }
- trace() {
- return this.e00 + this.e11 + this.e22 + this.e33;
- }
- inverse() {
- var d01_01 = this.e00 * this.e11 - this.e01 * this.e10;
- var d01_02 = this.e00 * this.e12 - this.e02 * this.e10;
- var d01_03 = this.e00 * this.e13 - this.e03 * this.e10;
- var d01_12 = this.e01 * this.e12 - this.e02 * this.e11;
- var d01_13 = this.e01 * this.e13 - this.e03 * this.e11;
- var d01_23 = this.e02 * this.e13 - this.e03 * this.e12;
- var d23_01 = this.e20 * this.e31 - this.e21 * this.e30;
- var d23_02 = this.e20 * this.e32 - this.e22 * this.e30;
- var d23_03 = this.e20 * this.e33 - this.e23 * this.e30;
- var d23_12 = this.e21 * this.e32 - this.e22 * this.e31;
- var d23_13 = this.e21 * this.e33 - this.e23 * this.e31;
- var d23_23 = this.e22 * this.e33 - this.e23 * this.e32;
- var d00 = this.e11 * d23_23 - this.e12 * d23_13 + this.e13 * d23_12;
- var d01 = this.e10 * d23_23 - this.e12 * d23_03 + this.e13 * d23_02;
- var d02 = this.e10 * d23_13 - this.e11 * d23_03 + this.e13 * d23_01;
- var d03 = this.e10 * d23_12 - this.e11 * d23_02 + this.e12 * d23_01;
- var d10 = this.e01 * d23_23 - this.e02 * d23_13 + this.e03 * d23_12;
- var d11 = this.e00 * d23_23 - this.e02 * d23_03 + this.e03 * d23_02;
- var d12 = this.e00 * d23_13 - this.e01 * d23_03 + this.e03 * d23_01;
- var d13 = this.e00 * d23_12 - this.e01 * d23_02 + this.e02 * d23_01;
- var d20 = this.e31 * d01_23 - this.e32 * d01_13 + this.e33 * d01_12;
- var d21 = this.e30 * d01_23 - this.e32 * d01_03 + this.e33 * d01_02;
- var d22 = this.e30 * d01_13 - this.e31 * d01_03 + this.e33 * d01_01;
- var d23 = this.e30 * d01_12 - this.e31 * d01_02 + this.e32 * d01_01;
- var d30 = this.e21 * d01_23 - this.e22 * d01_13 + this.e23 * d01_12;
- var d31 = this.e20 * d01_23 - this.e22 * d01_03 + this.e23 * d01_02;
- var d32 = this.e20 * d01_13 - this.e21 * d01_03 + this.e23 * d01_01;
- var d33 = this.e20 * d01_12 - this.e21 * d01_02 + this.e22 * d01_01;
- var invDet = this.e00 * d00 - this.e01 * d01 + this.e02 * d02 - this.e03 * d03;
- if(invDet != 0) {
- invDet = 1 / invDet;
- }
- return new oimo.common.Mat4(d00 * invDet,-d10 * invDet,d20 * invDet,-d30 * invDet,-d01 * invDet,d11 * invDet,-d21 * invDet,d31 * invDet,d02 * invDet,-d12 * invDet,d22 * invDet,-d32 * invDet,-d03 * invDet,d13 * invDet,-d23 * invDet,d33 * invDet);
- }
- inverseEq() {
- var d01_01 = this.e00 * this.e11 - this.e01 * this.e10;
- var d01_02 = this.e00 * this.e12 - this.e02 * this.e10;
- var d01_03 = this.e00 * this.e13 - this.e03 * this.e10;
- var d01_12 = this.e01 * this.e12 - this.e02 * this.e11;
- var d01_13 = this.e01 * this.e13 - this.e03 * this.e11;
- var d01_23 = this.e02 * this.e13 - this.e03 * this.e12;
- var d23_01 = this.e20 * this.e31 - this.e21 * this.e30;
- var d23_02 = this.e20 * this.e32 - this.e22 * this.e30;
- var d23_03 = this.e20 * this.e33 - this.e23 * this.e30;
- var d23_12 = this.e21 * this.e32 - this.e22 * this.e31;
- var d23_13 = this.e21 * this.e33 - this.e23 * this.e31;
- var d23_23 = this.e22 * this.e33 - this.e23 * this.e32;
- var d00 = this.e11 * d23_23 - this.e12 * d23_13 + this.e13 * d23_12;
- var d01 = this.e10 * d23_23 - this.e12 * d23_03 + this.e13 * d23_02;
- var d02 = this.e10 * d23_13 - this.e11 * d23_03 + this.e13 * d23_01;
- var d03 = this.e10 * d23_12 - this.e11 * d23_02 + this.e12 * d23_01;
- var d10 = this.e01 * d23_23 - this.e02 * d23_13 + this.e03 * d23_12;
- var d11 = this.e00 * d23_23 - this.e02 * d23_03 + this.e03 * d23_02;
- var d12 = this.e00 * d23_13 - this.e01 * d23_03 + this.e03 * d23_01;
- var d13 = this.e00 * d23_12 - this.e01 * d23_02 + this.e02 * d23_01;
- var d20 = this.e31 * d01_23 - this.e32 * d01_13 + this.e33 * d01_12;
- var d21 = this.e30 * d01_23 - this.e32 * d01_03 + this.e33 * d01_02;
- var d22 = this.e30 * d01_13 - this.e31 * d01_03 + this.e33 * d01_01;
- var d23 = this.e30 * d01_12 - this.e31 * d01_02 + this.e32 * d01_01;
- var d30 = this.e21 * d01_23 - this.e22 * d01_13 + this.e23 * d01_12;
- var d31 = this.e20 * d01_23 - this.e22 * d01_03 + this.e23 * d01_02;
- var d32 = this.e20 * d01_13 - this.e21 * d01_03 + this.e23 * d01_01;
- var d33 = this.e20 * d01_12 - this.e21 * d01_02 + this.e22 * d01_01;
- var invDet = this.e00 * d00 - this.e01 * d01 + this.e02 * d02 - this.e03 * d03;
- if(invDet != 0) {
- invDet = 1 / invDet;
- }
- var t00 = d00 * invDet;
- var t01 = -d10 * invDet;
- var t02 = d20 * invDet;
- var t03 = -d30 * invDet;
- var t10 = -d01 * invDet;
- var t11 = d11 * invDet;
- var t12 = -d21 * invDet;
- var t13 = d31 * invDet;
- var t20 = d02 * invDet;
- var t21 = -d12 * invDet;
- var t22 = d22 * invDet;
- var t23 = -d32 * invDet;
- var t30 = -d03 * invDet;
- var t31 = d13 * invDet;
- var t32 = -d23 * invDet;
- var t33 = d33 * invDet;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e03 = t03;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e13 = t13;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- this.e23 = t23;
- this.e30 = t30;
- this.e31 = t31;
- this.e32 = t32;
- this.e33 = t33;
- return this;
- }
- lookAt(eyeX,eyeY,eyeZ,atX,atY,atZ,upX,upY,upZ) {
- var zx = eyeX - atX;
- var zy = eyeY - atY;
- var zz = eyeZ - atZ;
- var tmp = 1 / Math.sqrt(zx * zx + zy * zy + zz * zz);
- zx *= tmp;
- zy *= tmp;
- zz *= tmp;
- var xx = upY * zz - upZ * zy;
- var xy = upZ * zx - upX * zz;
- var xz = upX * zy - upY * zx;
- tmp = 1 / Math.sqrt(xx * xx + xy * xy + xz * xz);
- xx *= tmp;
- xy *= tmp;
- xz *= tmp;
- var yx = zy * xz - zz * xy;
- var yy = zz * xx - zx * xz;
- var yz = zx * xy - zy * xx;
- this.e00 = xx;
- this.e01 = xy;
- this.e02 = xz;
- this.e03 = -(xx * eyeX + xy * eyeY + xz * eyeZ);
- this.e10 = yx;
- this.e11 = yy;
- this.e12 = yz;
- this.e13 = -(yx * eyeX + yy * eyeY + yz * eyeZ);
- this.e20 = zx;
- this.e21 = zy;
- this.e22 = zz;
- this.e23 = -(zx * eyeX + zy * eyeY + zz * eyeZ);
- this.e30 = 0;
- this.e31 = 0;
- this.e32 = 0;
- this.e33 = 1;
- return this;
- }
- perspective(fovY,aspect,near,far) {
- var h = 1 / Math.tan(fovY * 0.5);
- var fnf = far / (near - far);
- this.e00 = h / aspect;
- this.e01 = 0;
- this.e02 = 0;
- this.e03 = 0;
- this.e10 = 0;
- this.e11 = h;
- this.e12 = 0;
- this.e13 = 0;
- this.e20 = 0;
- this.e21 = 0;
- this.e22 = fnf;
- this.e23 = near * fnf;
- this.e30 = 0;
- this.e31 = 0;
- this.e32 = -1;
- this.e33 = 0;
- return this;
- }
- ortho(width,height,near,far) {
- var nf = 1 / (near - far);
- this.e00 = 2 / width;
- this.e01 = 0;
- this.e02 = 0;
- this.e03 = 0;
- this.e10 = 0;
- this.e11 = 2 / height;
- this.e12 = 0;
- this.e13 = 0;
- this.e20 = 0;
- this.e21 = 0;
- this.e22 = nf;
- this.e23 = near * nf;
- this.e30 = 0;
- this.e31 = 0;
- this.e32 = 0;
- this.e33 = 1;
- return this;
- }
- toArray(columnMajor) {
- if(columnMajor == null) {
- columnMajor = false;
- }
- if(columnMajor) {
- return [this.e00,this.e10,this.e20,this.e30,this.e01,this.e11,this.e21,this.e31,this.e02,this.e12,this.e22,this.e32,this.e03,this.e13,this.e23,this.e33];
- } else {
- return [this.e00,this.e01,this.e02,this.e03,this.e10,this.e11,this.e12,this.e13,this.e20,this.e21,this.e22,this.e23,this.e30,this.e31,this.e32,this.e33];
- }
- }
- copyFrom(m) {
- this.e00 = m.e00;
- this.e01 = m.e01;
- this.e02 = m.e02;
- this.e03 = m.e03;
- this.e10 = m.e10;
- this.e11 = m.e11;
- this.e12 = m.e12;
- this.e13 = m.e13;
- this.e20 = m.e20;
- this.e21 = m.e21;
- this.e22 = m.e22;
- this.e23 = m.e23;
- this.e30 = m.e30;
- this.e31 = m.e31;
- this.e32 = m.e32;
- this.e33 = m.e33;
- return this;
- }
- fromMat3(m) {
- var t00 = m.e00;
- var t01 = m.e01;
- var t02 = m.e02;
- var t03 = 0;
- var t10 = m.e10;
- var t11 = m.e11;
- var t12 = m.e12;
- var t13 = 0;
- var t20 = m.e20;
- var t21 = m.e21;
- var t22 = m.e22;
- var t23 = 0;
- var t30 = 0;
- var t31 = 0;
- var t32 = 0;
- var t33 = 1;
- this.e00 = t00;
- this.e01 = t01;
- this.e02 = t02;
- this.e03 = t03;
- this.e10 = t10;
- this.e11 = t11;
- this.e12 = t12;
- this.e13 = t13;
- this.e20 = t20;
- this.e21 = t21;
- this.e22 = t22;
- this.e23 = t23;
- this.e30 = t30;
- this.e31 = t31;
- this.e32 = t32;
- this.e33 = t33;
- return this;
- }
- fromTransform(transform) {
- var m = this;
- m.e00 = transform._rotation00;
- m.e01 = transform._rotation01;
- m.e02 = transform._rotation02;
- m.e10 = transform._rotation10;
- m.e11 = transform._rotation11;
- m.e12 = transform._rotation12;
- m.e20 = transform._rotation20;
- m.e21 = transform._rotation21;
- m.e22 = transform._rotation22;
- m.e03 = transform._positionX;
- m.e13 = transform._positionY;
- m.e23 = transform._positionZ;
- m.e30 = 0;
- m.e31 = 0;
- m.e32 = 0;
- m.e33 = 1;
- return this;
- }
- clone() {
- return new oimo.common.Mat4(this.e00,this.e01,this.e02,this.e03,this.e10,this.e11,this.e12,this.e13,this.e20,this.e21,this.e22,this.e23,this.e30,this.e31,this.e32,this.e33);
- }
- toString() {
- return "Mat4[" + (this.e00 > 0 ? (this.e00 * 10000000 + 0.5 | 0) / 10000000 : (this.e00 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e01 > 0 ? (this.e01 * 10000000 + 0.5 | 0) / 10000000 : (this.e01 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e02 > 0 ? (this.e02 * 10000000 + 0.5 | 0) / 10000000 : (this.e02 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e03 > 0 ? (this.e03 * 10000000 + 0.5 | 0) / 10000000 : (this.e03 * 10000000 - 0.5 | 0) / 10000000) + ",\n" + " " + (this.e10 > 0 ? (this.e10 * 10000000 + 0.5 | 0) / 10000000 : (this.e10 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e11 > 0 ? (this.e11 * 10000000 + 0.5 | 0) / 10000000 : (this.e11 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e12 > 0 ? (this.e12 * 10000000 + 0.5 | 0) / 10000000 : (this.e12 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e13 > 0 ? (this.e13 * 10000000 + 0.5 | 0) / 10000000 : (this.e13 * 10000000 - 0.5 | 0) / 10000000) + ",\n" + " " + (this.e20 > 0 ? (this.e20 * 10000000 + 0.5 | 0) / 10000000 : (this.e20 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e21 > 0 ? (this.e21 * 10000000 + 0.5 | 0) / 10000000 : (this.e21 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e22 > 0 ? (this.e22 * 10000000 + 0.5 | 0) / 10000000 : (this.e22 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e23 > 0 ? (this.e23 * 10000000 + 0.5 | 0) / 10000000 : (this.e23 * 10000000 - 0.5 | 0) / 10000000) + ",\n" + " " + (this.e30 > 0 ? (this.e30 * 10000000 + 0.5 | 0) / 10000000 : (this.e30 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e31 > 0 ? (this.e31 * 10000000 + 0.5 | 0) / 10000000 : (this.e31 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e32 > 0 ? (this.e32 * 10000000 + 0.5 | 0) / 10000000 : (this.e32 * 10000000 - 0.5 | 0) / 10000000) + ", " + (this.e33 > 0 ? (this.e33 * 10000000 + 0.5 | 0) / 10000000 : (this.e33 * 10000000 - 0.5 | 0) / 10000000) + "]";
- }
- }
- oimo.common.MathUtil = class oimo_common_MathUtil {
- static abs(x) {
- if(x > 0) {
- return x;
- } else {
- return -x;
- }
- }
- static sin(x) {
- return Math.sin(x);
- }
- static cos(x) {
- return Math.cos(x);
- }
- static tan(x) {
- return Math.tan(x);
- }
- static asin(x) {
- return Math.asin(x);
- }
- static acos(x) {
- return Math.acos(x);
- }
- static atan(x) {
- return Math.atan(x);
- }
- static safeAsin(x) {
- if(x <= -1) {
- return -1.570796326794895;
- }
- if(x >= 1) {
- return 1.570796326794895;
- }
- return Math.asin(x);
- }
- static safeAcos(x) {
- if(x <= -1) {
- return 3.14159265358979;
- }
- if(x >= 1) {
- return 0;
- }
- return Math.acos(x);
- }
- static atan2(y,x) {
- return Math.atan2(y,x);
- }
- static sqrt(x) {
- return Math.sqrt(x);
- }
- static clamp(x,min,max) {
- if(x < min) {
- return min;
- } else if(x > max) {
- return max;
- } else {
- return x;
- }
- }
- static rand() {
- return Math.random();
- }
- static randIn(min,max) {
- return min + Math.random() * (max - min);
- }
- static randVec3In(min,max) {
- return new oimo.common.Vec3(min + Math.random() * (max - min),min + Math.random() * (max - min),min + Math.random() * (max - min));
- }
- static randVec3() {
- return new oimo.common.Vec3(-1 + Math.random() * 2,-1 + Math.random() * 2,-1 + Math.random() * 2);
- }
- }
- oimo.common.Pool = class oimo_common_Pool {
- constructor() {
- var this1 = new Array(256);
- this.stackVec3 = this1;
- this.sizeVec3 = 0;
- var this2 = new Array(256);
- this.stackMat3 = this2;
- this.sizeMat3 = 0;
- var this3 = new Array(256);
- this.stackMat4 = this3;
- this.sizeMat4 = 0;
- var this4 = new Array(256);
- this.stackQuat = this4;
- this.sizeQuat = 0;
- }
- vec3() {
- if(this.sizeVec3 == 0) {
- return new oimo.common.Vec3();
- } else {
- return this.stackVec3[--this.sizeVec3];
- }
- }
- mat3() {
- if(this.sizeMat3 == 0) {
- return new oimo.common.Mat3();
- } else {
- return this.stackMat3[--this.sizeMat3];
- }
- }
- mat4() {
- if(this.sizeMat4 == 0) {
- return new oimo.common.Mat4();
- } else {
- return this.stackMat4[--this.sizeMat4];
- }
- }
- quat() {
- if(this.sizeQuat == 0) {
- return new oimo.common.Quat();
- } else {
- return this.stackQuat[--this.sizeQuat];
- }
- }
- dispose(vec3,mat3,mat4,quat) {
- if(vec3 != null) {
- vec3.zero();
- if(this.sizeVec3 == this.stackVec3.length) {
- var newLength = this.sizeVec3 << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = this.sizeVec3;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = this.stackVec3[i];
- this.stackVec3[i] = null;
- }
- this.stackVec3 = newArray;
- }
- this.stackVec3[this.sizeVec3++] = vec3;
- }
- if(mat3 != null) {
- var t00 = 1;
- var t01 = 0;
- var t02 = 0;
- var t10 = 0;
- var t11 = 1;
- var t12 = 0;
- var t20 = 0;
- var t21 = 0;
- var t22 = 1;
- mat3.e00 = t00;
- mat3.e01 = t01;
- mat3.e02 = t02;
- mat3.e10 = t10;
- mat3.e11 = t11;
- mat3.e12 = t12;
- mat3.e20 = t20;
- mat3.e21 = t21;
- mat3.e22 = t22;
- if(this.sizeMat3 == this.stackMat3.length) {
- var newLength1 = this.sizeMat3 << 1;
- var this2 = new Array(newLength1);
- var newArray1 = this2;
- var _g2 = 0;
- var _g11 = this.sizeMat3;
- while(_g2 < _g11) {
- var i1 = _g2++;
- newArray1[i1] = this.stackMat3[i1];
- this.stackMat3[i1] = null;
- }
- this.stackMat3 = newArray1;
- }
- this.stackMat3[this.sizeMat3++] = mat3;
- }
- if(mat4 != null) {
- var t001 = 1;
- var t011 = 0;
- var t021 = 0;
- var t03 = 0;
- var t101 = 0;
- var t111 = 1;
- var t121 = 0;
- var t13 = 0;
- var t201 = 0;
- var t211 = 0;
- var t221 = 1;
- var t23 = 0;
- var t30 = 0;
- var t31 = 0;
- var t32 = 0;
- var t33 = 1;
- mat4.e00 = t001;
- mat4.e01 = t011;
- mat4.e02 = t021;
- mat4.e03 = t03;
- mat4.e10 = t101;
- mat4.e11 = t111;
- mat4.e12 = t121;
- mat4.e13 = t13;
- mat4.e20 = t201;
- mat4.e21 = t211;
- mat4.e22 = t221;
- mat4.e23 = t23;
- mat4.e30 = t30;
- mat4.e31 = t31;
- mat4.e32 = t32;
- mat4.e33 = t33;
- if(this.sizeMat4 == this.stackMat4.length) {
- var newLength2 = this.sizeMat4 << 1;
- var this3 = new Array(newLength2);
- var newArray2 = this3;
- var _g3 = 0;
- var _g12 = this.sizeMat4;
- while(_g3 < _g12) {
- var i2 = _g3++;
- newArray2[i2] = this.stackMat4[i2];
- this.stackMat4[i2] = null;
- }
- this.stackMat4 = newArray2;
- }
- this.stackMat4[this.sizeMat4++] = mat4;
- }
- if(quat != null) {
- var tx = 0;
- var ty = 0;
- var tz = 0;
- var tw = 1;
- quat.x = tx;
- quat.y = ty;
- quat.z = tz;
- quat.w = tw;
- if(this.sizeQuat == this.stackQuat.length) {
- var newLength3 = this.sizeQuat << 1;
- var this4 = new Array(newLength3);
- var newArray3 = this4;
- var _g4 = 0;
- var _g13 = this.sizeQuat;
- while(_g4 < _g13) {
- var i3 = _g4++;
- newArray3[i3] = this.stackQuat[i3];
- this.stackQuat[i3] = null;
- }
- this.stackQuat = newArray3;
- }
- this.stackQuat[this.sizeQuat++] = quat;
- }
- }
- disposeVec3(v) {
- v.zero();
- if(this.sizeVec3 == this.stackVec3.length) {
- var newLength = this.sizeVec3 << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = this.sizeVec3;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = this.stackVec3[i];
- this.stackVec3[i] = null;
- }
- this.stackVec3 = newArray;
- }
- this.stackVec3[this.sizeVec3++] = v;
- }
- disposeMat3(m) {
- var t00 = 1;
- var t01 = 0;
- var t02 = 0;
- var t10 = 0;
- var t11 = 1;
- var t12 = 0;
- var t20 = 0;
- var t21 = 0;
- var t22 = 1;
- m.e00 = t00;
- m.e01 = t01;
- m.e02 = t02;
- m.e10 = t10;
- m.e11 = t11;
- m.e12 = t12;
- m.e20 = t20;
- m.e21 = t21;
- m.e22 = t22;
- if(this.sizeMat3 == this.stackMat3.length) {
- var newLength = this.sizeMat3 << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = this.sizeMat3;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = this.stackMat3[i];
- this.stackMat3[i] = null;
- }
- this.stackMat3 = newArray;
- }
- this.stackMat3[this.sizeMat3++] = m;
- }
- disposeMat4(m) {
- var t00 = 1;
- var t01 = 0;
- var t02 = 0;
- var t03 = 0;
- var t10 = 0;
- var t11 = 1;
- var t12 = 0;
- var t13 = 0;
- var t20 = 0;
- var t21 = 0;
- var t22 = 1;
- var t23 = 0;
- var t30 = 0;
- var t31 = 0;
- var t32 = 0;
- var t33 = 1;
- m.e00 = t00;
- m.e01 = t01;
- m.e02 = t02;
- m.e03 = t03;
- m.e10 = t10;
- m.e11 = t11;
- m.e12 = t12;
- m.e13 = t13;
- m.e20 = t20;
- m.e21 = t21;
- m.e22 = t22;
- m.e23 = t23;
- m.e30 = t30;
- m.e31 = t31;
- m.e32 = t32;
- m.e33 = t33;
- if(this.sizeMat4 == this.stackMat4.length) {
- var newLength = this.sizeMat4 << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = this.sizeMat4;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = this.stackMat4[i];
- this.stackMat4[i] = null;
- }
- this.stackMat4 = newArray;
- }
- this.stackMat4[this.sizeMat4++] = m;
- }
- disposeQuat(q) {
- var tx = 0;
- var ty = 0;
- var tz = 0;
- var tw = 1;
- q.x = tx;
- q.y = ty;
- q.z = tz;
- q.w = tw;
- if(this.sizeQuat == this.stackQuat.length) {
- var newLength = this.sizeQuat << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = this.sizeQuat;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = this.stackQuat[i];
- this.stackQuat[i] = null;
- }
- this.stackQuat = newArray;
- }
- this.stackQuat[this.sizeQuat++] = q;
- }
- }
- oimo.common.Quat = class oimo_common_Quat {
- constructor(x,y,z,w) {
- if(w == null) {
- w = 1;
- }
- if(z == null) {
- z = 0;
- }
- if(y == null) {
- y = 0;
- }
- if(x == null) {
- x = 0;
- }
- this.x = x;
- this.y = y;
- this.z = z;
- this.w = w;
- oimo.common.Quat.numCreations++;
- }
- identity() {
- var tx = 0;
- var ty = 0;
- var tz = 0;
- var tw = 1;
- this.x = tx;
- this.y = ty;
- this.z = tz;
- this.w = tw;
- return this;
- }
- init(x,y,z,w) {
- this.x = x;
- this.y = y;
- this.z = z;
- this.w = w;
- return this;
- }
- add(q) {
- return new oimo.common.Quat(this.x + q.x,this.y + q.y,this.z + q.z,this.w + q.w);
- }
- sub(q) {
- return new oimo.common.Quat(this.x - q.x,this.y - q.y,this.z - q.z,this.w - q.w);
- }
- scale(s) {
- return new oimo.common.Quat(this.x * s,this.y * s,this.z * s,this.w * s);
- }
- addEq(q) {
- var tx = this.x + q.x;
- var ty = this.y + q.y;
- var tz = this.z + q.z;
- var tw = this.w + q.w;
- this.x = tx;
- this.y = ty;
- this.z = tz;
- this.w = tw;
- return this;
- }
- subEq(q) {
- var tx = this.x - q.x;
- var ty = this.y - q.y;
- var tz = this.z - q.z;
- var tw = this.w - q.w;
- this.x = tx;
- this.y = ty;
- this.z = tz;
- this.w = tw;
- return this;
- }
- scaleEq(s) {
- var tx = this.x * s;
- var ty = this.y * s;
- var tz = this.z * s;
- var tw = this.w * s;
- this.x = tx;
- this.y = ty;
- this.z = tz;
- this.w = tw;
- return this;
- }
- length() {
- return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);
- }
- lengthSq() {
- return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;
- }
- dot(q) {
- return this.x * q.x + this.y * q.y + this.z * q.z + this.w * q.w;
- }
- normalized() {
- var invLen = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);
- if(invLen > 0) {
- invLen = 1 / invLen;
- }
- return new oimo.common.Quat(this.x * invLen,this.y * invLen,this.z * invLen,this.w * invLen);
- }
- normalize() {
- var invLen = Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);
- if(invLen > 0) {
- invLen = 1 / invLen;
- }
- var tx = this.x * invLen;
- var ty = this.y * invLen;
- var tz = this.z * invLen;
- var tw = this.w * invLen;
- this.x = tx;
- this.y = ty;
- this.z = tz;
- this.w = tw;
- return this;
- }
- setArc(v1,v2) {
- var x1 = v1.x;
- var y1 = v1.y;
- var z1 = v1.z;
- var x2 = v2.x;
- var y2 = v2.y;
- var z2 = v2.z;
- var d = x1 * x2 + y1 * y2 + z1 * z2;
- this.w = Math.sqrt((1 + d) * 0.5);
- if(this.w == 0) {
- x2 = x1 * x1;
- y2 = y1 * y1;
- z2 = z1 * z1;
- if(x2 < y2) {
- if(x2 < z2) {
- d = 1 / Math.sqrt(y2 + z2);
- this.x = 0;
- this.y = z1 * d;
- this.z = -y1 * d;
- } else {
- d = 1 / Math.sqrt(x2 + y2);
- this.z = 0;
- this.x = y1 * d;
- this.y = -x1 * d;
- }
- } else if(y2 < z2) {
- d = 1 / Math.sqrt(z2 + x2);
- this.y = 0;
- this.z = x1 * d;
- this.x = -z1 * d;
- } else {
- d = 1 / Math.sqrt(x2 + y2);
- this.z = 0;
- this.x = y1 * d;
- this.y = -x1 * d;
- }
- return this;
- }
- d = 0.5 / this.w;
- var cx = y1 * z2 - z1 * y2;
- var cy = z1 * x2 - x1 * z2;
- var cz = x1 * y2 - y1 * x2;
- this.x = cx * d;
- this.y = cy * d;
- this.z = cz * d;
- return this;
- }
- slerp(q,t) {
- var qx;
- var qy;
- var qz;
- var qw;
- var d = this.x * q.x + this.y * q.y + this.z * q.z + this.w * q.w;
- if(d < 0) {
- d = -d;
- qx = -q.x;
- qy = -q.y;
- qz = -q.z;
- qw = -q.w;
- } else {
- qx = q.x;
- qy = q.y;
- qz = q.z;
- qw = q.w;
- }
- if(d > 0.999999) {
- var _this = new oimo.common.Quat(this.x + (qx - this.x) * t,this.y + (qy - this.y) * t,this.z + (qz - this.z) * t,this.w + (qw - this.w) * t);
- var invLen = Math.sqrt(_this.x * _this.x + _this.y * _this.y + _this.z * _this.z + _this.w * _this.w);
- if(invLen > 0) {
- invLen = 1 / invLen;
- }
- var tx = _this.x * invLen;
- var ty = _this.y * invLen;
- var tz = _this.z * invLen;
- var tw = _this.w * invLen;
- _this.x = tx;
- _this.y = ty;
- _this.z = tz;
- _this.w = tw;
- return _this;
- }
- var theta = t * Math.acos(d);
- qx -= this.x * d;
- qy -= this.y * d;
- qz -= this.z * d;
- qw -= this.w * d;
- var invLen1 = 1 / Math.sqrt(qx * qx + qy * qy + qz * qz + qw * qw);
- qx *= invLen1;
- qy *= invLen1;
- qz *= invLen1;
- qw *= invLen1;
- var sin = Math.sin(theta);
- var cos = Math.cos(theta);
- return new oimo.common.Quat(this.x * cos + qx * sin,this.y * cos + qy * sin,this.z * cos + qz * sin,this.w * cos + qw * sin);
- }
- copyFrom(q) {
- this.x = q.x;
- this.y = q.y;
- this.z = q.z;
- this.w = q.w;
- return this;
- }
- clone() {
- return new oimo.common.Quat(this.x,this.y,this.z,this.w);
- }
- fromMat3(m) {
- var e00 = m.e00;
- var e11 = m.e11;
- var e22 = m.e22;
- var t = e00 + e11 + e22;
- var s;
- if(t > 0) {
- s = Math.sqrt(t + 1);
- this.w = 0.5 * s;
- s = 0.5 / s;
- this.x = (m.e21 - m.e12) * s;
- this.y = (m.e02 - m.e20) * s;
- this.z = (m.e10 - m.e01) * s;
- } else if(e00 > e11) {
- if(e00 > e22) {
- s = Math.sqrt(e00 - e11 - e22 + 1);
- this.x = 0.5 * s;
- s = 0.5 / s;
- this.y = (m.e01 + m.e10) * s;
- this.z = (m.e02 + m.e20) * s;
- this.w = (m.e21 - m.e12) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- this.z = 0.5 * s;
- s = 0.5 / s;
- this.x = (m.e02 + m.e20) * s;
- this.y = (m.e12 + m.e21) * s;
- this.w = (m.e10 - m.e01) * s;
- }
- } else if(e11 > e22) {
- s = Math.sqrt(e11 - e22 - e00 + 1);
- this.y = 0.5 * s;
- s = 0.5 / s;
- this.x = (m.e01 + m.e10) * s;
- this.z = (m.e12 + m.e21) * s;
- this.w = (m.e02 - m.e20) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- this.z = 0.5 * s;
- s = 0.5 / s;
- this.x = (m.e02 + m.e20) * s;
- this.y = (m.e12 + m.e21) * s;
- this.w = (m.e10 - m.e01) * s;
- }
- return this;
- }
- toMat3() {
- var _this = new oimo.common.Mat3();
- var x = this.x;
- var y = this.y;
- var z = this.z;
- var w = this.w;
- var x2 = 2 * x;
- var y2 = 2 * y;
- var z2 = 2 * z;
- var xx = x * x2;
- var yy = y * y2;
- var zz = z * z2;
- var xy = x * y2;
- var yz = y * z2;
- var xz = x * z2;
- var wx = w * x2;
- var wy = w * y2;
- var wz = w * z2;
- _this.e00 = 1 - yy - zz;
- _this.e01 = xy - wz;
- _this.e02 = xz + wy;
- _this.e10 = xy + wz;
- _this.e11 = 1 - xx - zz;
- _this.e12 = yz - wx;
- _this.e20 = xz - wy;
- _this.e21 = yz + wx;
- _this.e22 = 1 - xx - yy;
- return _this;
- }
- toString() {
- return "Quat[" + (this.x > 0 ? (this.x * 10000000 + 0.5 | 0) / 10000000 : (this.x * 10000000 - 0.5 | 0) / 10000000) + " i,\n" + " " + (this.y > 0 ? (this.y * 10000000 + 0.5 | 0) / 10000000 : (this.y * 10000000 - 0.5 | 0) / 10000000) + " j,\n" + " " + (this.z > 0 ? (this.z * 10000000 + 0.5 | 0) / 10000000 : (this.z * 10000000 - 0.5 | 0) / 10000000) + " k,\n" + " " + (this.w > 0 ? (this.w * 10000000 + 0.5 | 0) / 10000000 : (this.w * 10000000 - 0.5 | 0) / 10000000) + "]";
- }
- }
- if(!oimo.dynamics) oimo.dynamics = {};
- oimo.dynamics.Contact = class oimo_dynamics_Contact {
- constructor() {
- this._next = null;
- this._prev = null;
- this._link1 = new oimo.dynamics.ContactLink();
- this._link2 = new oimo.dynamics.ContactLink();
- this._s1 = null;
- this._s2 = null;
- this._b1 = null;
- this._b2 = null;
- this._detector = null;
- this._cachedDetectorData = new oimo.collision.narrowphase.detector.CachedDetectorData();
- this._detectorResult = new oimo.collision.narrowphase.DetectorResult();
- this._latest = false;
- this._shouldBeSkipped = false;
- this._manifold = new oimo.dynamics.constraint.contact.Manifold();
- this._updater = new oimo.dynamics.constraint.contact.ManifoldUpdater(this._manifold);
- this._contactConstraint = new oimo.dynamics.constraint.contact.ContactConstraint(this._manifold);
- this._touching = false;
- }
- _updateManifold() {
- if(this._detector == null) {
- return;
- }
- var ptouching = this._touching;
- var result = this._detectorResult;
- this._detector.detect(result,this._s1._geom,this._s2._geom,this._s1._transform,this._s2._transform,this._cachedDetectorData);
- var num = result.numPoints;
- this._touching = num > 0;
- if(this._touching) {
- this._manifold._buildBasis(result.normal);
- if(result.getMaxDepth() > oimo.common.Setting.contactUseAlternativePositionCorrectionAlgorithmDepthThreshold) {
- this._contactConstraint._positionCorrectionAlgorithm = oimo.common.Setting.alternativeContactPositionCorrectionAlgorithm;
- } else {
- this._contactConstraint._positionCorrectionAlgorithm = oimo.common.Setting.defaultContactPositionCorrectionAlgorithm;
- }
- if(result.incremental) {
- this._updater.incrementalUpdate(result,this._b1._transform,this._b2._transform);
- } else {
- this._updater.totalUpdate(result,this._b1._transform,this._b2._transform);
- }
- } else {
- this._manifold._clear();
- }
- if(this._touching && !ptouching) {
- var cc1 = this._s1._contactCallback;
- var cc2 = this._s2._contactCallback;
- if(cc1 == cc2) {
- cc2 = null;
- }
- if(cc1 != null) {
- cc1.beginContact(this);
- }
- if(cc2 != null) {
- cc2.beginContact(this);
- }
- }
- if(!this._touching && ptouching) {
- var cc11 = this._s1._contactCallback;
- var cc21 = this._s2._contactCallback;
- if(cc11 == cc21) {
- cc21 = null;
- }
- if(cc11 != null) {
- cc11.endContact(this);
- }
- if(cc21 != null) {
- cc21.endContact(this);
- }
- }
- if(this._touching) {
- var cc12 = this._s1._contactCallback;
- var cc22 = this._s2._contactCallback;
- if(cc12 == cc22) {
- cc22 = null;
- }
- if(cc12 != null) {
- cc12.preSolve(this);
- }
- if(cc22 != null) {
- cc22.preSolve(this);
- }
- }
- }
- _postSolve() {
- var cc1 = this._s1._contactCallback;
- var cc2 = this._s2._contactCallback;
- if(cc1 == cc2) {
- cc2 = null;
- }
- if(cc1 != null) {
- cc1.postSolve(this);
- }
- if(cc2 != null) {
- cc2.postSolve(this);
- }
- }
- getShape1() {
- return this._s1;
- }
- getShape2() {
- return this._s2;
- }
- isTouching() {
- return this._touching;
- }
- getManifold() {
- return this._manifold;
- }
- getContactConstraint() {
- return this._contactConstraint;
- }
- getPrev() {
- return this._prev;
- }
- getNext() {
- return this._next;
- }
- }
- oimo.dynamics.ContactLink = class oimo_dynamics_ContactLink {
- constructor() {
- this._prev = null;
- this._next = null;
- this._contact = null;
- this._other = null;
- }
- getContact() {
- return this._contact;
- }
- getOther() {
- return this._other;
- }
- getPrev() {
- return this._prev;
- }
- getNext() {
- return this._next;
- }
- }
- oimo.dynamics.ContactManager = class oimo_dynamics_ContactManager {
- constructor(broadPhase) {
- this._broadPhase = broadPhase;
- this._collisionMatrix = new oimo.collision.narrowphase.CollisionMatrix();
- this._numContacts = 0;
- }
- createContacts() {
- var pp = this._broadPhase._proxyPairList;
- while(pp != null) {
- var n = pp._next;
- while(true) {
- var s1;
- var s2;
- if(pp._p1._id < pp._p2._id) {
- s1 = pp._p1.userData;
- s2 = pp._p2.userData;
- } else {
- s1 = pp._p2.userData;
- s2 = pp._p1.userData;
- }
- if(!this.shouldCollide(s1,s2)) {
- break;
- }
- var b1 = s1._rigidBody;
- var b2 = s2._rigidBody;
- var n1 = b1._numContactLinks;
- var n2 = b2._numContactLinks;
- var l;
- if(n1 < n2) {
- l = b1._contactLinkList;
- } else {
- l = b2._contactLinkList;
- }
- var id1 = s1._id;
- var id2 = s2._id;
- var found = false;
- while(l != null) {
- var n3 = l._next;
- var c = l._contact;
- if(c._s1._id == id1 && c._s2._id == id2) {
- c._latest = true;
- found = true;
- break;
- }
- l = n3;
- }
- if(!found) {
- var first = this._contactPool;
- if(first != null) {
- this._contactPool = first._next;
- first._next = null;
- } else {
- first = new oimo.dynamics.Contact();
- }
- var c1 = first;
- if(this._contactList == null) {
- this._contactList = c1;
- this._contactListLast = c1;
- } else {
- this._contactListLast._next = c1;
- c1._prev = this._contactListLast;
- this._contactListLast = c1;
- }
- c1._latest = true;
- var detector = this._collisionMatrix.detectors[s1._geom._type][s2._geom._type];
- c1._s1 = s1;
- c1._s2 = s2;
- c1._b1 = s1._rigidBody;
- c1._b2 = s2._rigidBody;
- c1._touching = false;
- if(c1._b1._contactLinkList == null) {
- c1._b1._contactLinkList = c1._link1;
- c1._b1._contactLinkListLast = c1._link1;
- } else {
- c1._b1._contactLinkListLast._next = c1._link1;
- c1._link1._prev = c1._b1._contactLinkListLast;
- c1._b1._contactLinkListLast = c1._link1;
- }
- if(c1._b2._contactLinkList == null) {
- c1._b2._contactLinkList = c1._link2;
- c1._b2._contactLinkListLast = c1._link2;
- } else {
- c1._b2._contactLinkListLast._next = c1._link2;
- c1._link2._prev = c1._b2._contactLinkListLast;
- c1._b2._contactLinkListLast = c1._link2;
- }
- c1._b1._numContactLinks++;
- c1._b2._numContactLinks++;
- c1._link1._other = c1._b2;
- c1._link2._other = c1._b1;
- c1._link1._contact = c1;
- c1._link2._contact = c1;
- c1._detector = detector;
- var _this = c1._contactConstraint;
- _this._s1 = s1;
- _this._s2 = s2;
- _this._b1 = _this._s1._rigidBody;
- _this._b2 = _this._s2._rigidBody;
- _this._tf1 = _this._b1._transform;
- _this._tf2 = _this._b2._transform;
- this._numContacts++;
- }
- if(!false) {
- break;
- }
- }
- pp = n;
- }
- }
- destroyOutdatedContacts() {
- var incremental = this._broadPhase._incremental;
- var c = this._contactList;
- while(c != null) {
- var n = c._next;
- while(true) {
- if(c._latest) {
- c._latest = false;
- c._shouldBeSkipped = false;
- break;
- }
- if(!incremental) {
- var prev = c._prev;
- var next = c._next;
- if(prev != null) {
- prev._next = next;
- }
- if(next != null) {
- next._prev = prev;
- }
- if(c == this._contactList) {
- this._contactList = this._contactList._next;
- }
- if(c == this._contactListLast) {
- this._contactListLast = this._contactListLast._prev;
- }
- c._next = null;
- c._prev = null;
- if(c._touching) {
- var cc1 = c._s1._contactCallback;
- var cc2 = c._s2._contactCallback;
- if(cc1 == cc2) {
- cc2 = null;
- }
- if(cc1 != null) {
- cc1.endContact(c);
- }
- if(cc2 != null) {
- cc2.endContact(c);
- }
- }
- var prev1 = c._link1._prev;
- var next1 = c._link1._next;
- if(prev1 != null) {
- prev1._next = next1;
- }
- if(next1 != null) {
- next1._prev = prev1;
- }
- if(c._link1 == c._b1._contactLinkList) {
- c._b1._contactLinkList = c._b1._contactLinkList._next;
- }
- if(c._link1 == c._b1._contactLinkListLast) {
- c._b1._contactLinkListLast = c._b1._contactLinkListLast._prev;
- }
- c._link1._next = null;
- c._link1._prev = null;
- var prev2 = c._link2._prev;
- var next2 = c._link2._next;
- if(prev2 != null) {
- prev2._next = next2;
- }
- if(next2 != null) {
- next2._prev = prev2;
- }
- if(c._link2 == c._b2._contactLinkList) {
- c._b2._contactLinkList = c._b2._contactLinkList._next;
- }
- if(c._link2 == c._b2._contactLinkListLast) {
- c._b2._contactLinkListLast = c._b2._contactLinkListLast._prev;
- }
- c._link2._next = null;
- c._link2._prev = null;
- c._b1._numContactLinks--;
- c._b2._numContactLinks--;
- c._link1._other = null;
- c._link2._other = null;
- c._link1._contact = null;
- c._link2._contact = null;
- c._s1 = null;
- c._s2 = null;
- c._b1 = null;
- c._b2 = null;
- c._touching = false;
- c._cachedDetectorData._clear();
- c._manifold._clear();
- c._detector = null;
- var _this = c._contactConstraint;
- _this._s1 = null;
- _this._s2 = null;
- _this._b1 = null;
- _this._b2 = null;
- _this._tf1 = null;
- _this._tf2 = null;
- c._next = this._contactPool;
- this._contactPool = c;
- this._numContacts--;
- break;
- }
- var s1 = c._s1;
- var s2 = c._s2;
- var r1 = s1._rigidBody;
- var r2 = s2._rigidBody;
- var active1 = !r1._sleeping && r1._type != 1;
- var active2 = !r2._sleeping && r2._type != 1;
- if(!active1 && !active2) {
- c._shouldBeSkipped = true;
- break;
- }
- var aabb1 = s1._aabb;
- var aabb2 = s2._aabb;
- var proxy1 = s1._proxy;
- var proxy2 = s2._proxy;
- if(!(proxy1._aabbMinX < proxy2._aabbMaxX && proxy1._aabbMaxX > proxy2._aabbMinX && proxy1._aabbMinY < proxy2._aabbMaxY && proxy1._aabbMaxY > proxy2._aabbMinY && proxy1._aabbMinZ < proxy2._aabbMaxZ && proxy1._aabbMaxZ > proxy2._aabbMinZ) || !this.shouldCollide(s1,s2)) {
- var prev3 = c._prev;
- var next3 = c._next;
- if(prev3 != null) {
- prev3._next = next3;
- }
- if(next3 != null) {
- next3._prev = prev3;
- }
- if(c == this._contactList) {
- this._contactList = this._contactList._next;
- }
- if(c == this._contactListLast) {
- this._contactListLast = this._contactListLast._prev;
- }
- c._next = null;
- c._prev = null;
- if(c._touching) {
- var cc11 = c._s1._contactCallback;
- var cc21 = c._s2._contactCallback;
- if(cc11 == cc21) {
- cc21 = null;
- }
- if(cc11 != null) {
- cc11.endContact(c);
- }
- if(cc21 != null) {
- cc21.endContact(c);
- }
- }
- var prev4 = c._link1._prev;
- var next4 = c._link1._next;
- if(prev4 != null) {
- prev4._next = next4;
- }
- if(next4 != null) {
- next4._prev = prev4;
- }
- if(c._link1 == c._b1._contactLinkList) {
- c._b1._contactLinkList = c._b1._contactLinkList._next;
- }
- if(c._link1 == c._b1._contactLinkListLast) {
- c._b1._contactLinkListLast = c._b1._contactLinkListLast._prev;
- }
- c._link1._next = null;
- c._link1._prev = null;
- var prev5 = c._link2._prev;
- var next5 = c._link2._next;
- if(prev5 != null) {
- prev5._next = next5;
- }
- if(next5 != null) {
- next5._prev = prev5;
- }
- if(c._link2 == c._b2._contactLinkList) {
- c._b2._contactLinkList = c._b2._contactLinkList._next;
- }
- if(c._link2 == c._b2._contactLinkListLast) {
- c._b2._contactLinkListLast = c._b2._contactLinkListLast._prev;
- }
- c._link2._next = null;
- c._link2._prev = null;
- c._b1._numContactLinks--;
- c._b2._numContactLinks--;
- c._link1._other = null;
- c._link2._other = null;
- c._link1._contact = null;
- c._link2._contact = null;
- c._s1 = null;
- c._s2 = null;
- c._b1 = null;
- c._b2 = null;
- c._touching = false;
- c._cachedDetectorData._clear();
- c._manifold._clear();
- c._detector = null;
- var _this1 = c._contactConstraint;
- _this1._s1 = null;
- _this1._s2 = null;
- _this1._b1 = null;
- _this1._b2 = null;
- _this1._tf1 = null;
- _this1._tf2 = null;
- c._next = this._contactPool;
- this._contactPool = c;
- this._numContacts--;
- break;
- }
- var aabbOverlapping = aabb1._minX < aabb2._maxX && aabb1._maxX > aabb2._minX && aabb1._minY < aabb2._maxY && aabb1._maxY > aabb2._minY && aabb1._minZ < aabb2._maxZ && aabb1._maxZ > aabb2._minZ;
- c._shouldBeSkipped = !aabbOverlapping;
- if(!false) {
- break;
- }
- }
- c = n;
- }
- }
- shouldCollide(s1,s2) {
- var r1 = s1._rigidBody;
- var r2 = s2._rigidBody;
- if(r1 == r2) {
- return false;
- }
- if(r1._type != 0 && r2._type != 0) {
- return false;
- }
- if((s1._collisionGroup & s2._collisionMask) == 0 || (s2._collisionGroup & s1._collisionMask) == 0) {
- return false;
- }
- var jl;
- var other;
- if(r1._numJointLinks < r2._numJointLinks) {
- jl = r1._jointLinkList;
- other = r2;
- } else {
- jl = r2._jointLinkList;
- other = r1;
- }
- while(jl != null) {
- var n = jl._next;
- if(jl._other == other && !jl._joint._allowCollision) {
- return false;
- }
- jl = n;
- }
- return true;
- }
- _updateContacts() {
- this._broadPhase.collectPairs();
- this.createContacts();
- this.destroyOutdatedContacts();
- }
- _postSolve() {
- var c = this._contactList;
- while(c != null) {
- var n = c._next;
- if(c._touching) {
- c._postSolve();
- }
- c = n;
- }
- }
- getNumContacts() {
- return this._numContacts;
- }
- getContactList() {
- return this._contactList;
- }
- }
- oimo.dynamics.Island = class oimo_dynamics_Island {
- constructor() {
- var this1 = new Array(oimo.common.Setting.islandInitialRigidBodyArraySize);
- this.rigidBodies = this1;
- var this2 = new Array(oimo.common.Setting.islandInitialConstraintArraySize);
- this.solvers = this2;
- var this3 = new Array(oimo.common.Setting.islandInitialConstraintArraySize);
- this.solversSi = this3;
- var this4 = new Array(oimo.common.Setting.islandInitialConstraintArraySize);
- this.solversNgs = this4;
- this.numRigidBodies = 0;
- this.numSolvers = 0;
- this.numSolversSi = 0;
- this.numSolversNgs = 0;
- }
- _clear() {
- while(this.numRigidBodies > 0) this.rigidBodies[--this.numRigidBodies] = null;
- while(this.numSolvers > 0) this.solvers[--this.numSolvers] = null;
- while(this.numSolversSi > 0) this.solversSi[--this.numSolversSi] = null;
- while(this.numSolversNgs > 0) this.solversNgs[--this.numSolversNgs] = null;
- }
- _addRigidBody(rigidBody) {
- if(this.numRigidBodies == this.rigidBodies.length) {
- var newLength = this.numRigidBodies << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = this.numRigidBodies;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = this.rigidBodies[i];
- this.rigidBodies[i] = null;
- }
- this.rigidBodies = newArray;
- }
- rigidBody._addedToIsland = true;
- this.rigidBodies[this.numRigidBodies++] = rigidBody;
- }
- _addConstraintSolver(solver,positionCorrection) {
- if(this.numSolvers == this.solvers.length) {
- var newLength = this.numSolvers << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = this.numSolvers;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = this.solvers[i];
- this.solvers[i] = null;
- }
- this.solvers = newArray;
- }
- solver._addedToIsland = true;
- this.solvers[this.numSolvers++] = solver;
- if(positionCorrection == oimo.dynamics.constraint.PositionCorrectionAlgorithm.SPLIT_IMPULSE) {
- if(this.numSolversSi == this.solversSi.length) {
- var newLength1 = this.numSolversSi << 1;
- var this2 = new Array(newLength1);
- var newArray1 = this2;
- var _g2 = 0;
- var _g11 = this.numSolversSi;
- while(_g2 < _g11) {
- var i1 = _g2++;
- newArray1[i1] = this.solversSi[i1];
- this.solversSi[i1] = null;
- }
- this.solversSi = newArray1;
- }
- this.solversSi[this.numSolversSi++] = solver;
- }
- if(positionCorrection == oimo.dynamics.constraint.PositionCorrectionAlgorithm.NGS) {
- if(this.numSolversNgs == this.solversNgs.length) {
- var newLength2 = this.numSolversNgs << 1;
- var this3 = new Array(newLength2);
- var newArray2 = this3;
- var _g3 = 0;
- var _g12 = this.numSolversNgs;
- while(_g3 < _g12) {
- var i2 = _g3++;
- newArray2[i2] = this.solversNgs[i2];
- this.solversNgs[i2] = null;
- }
- this.solversNgs = newArray2;
- }
- this.solversNgs[this.numSolversNgs++] = solver;
- }
- }
- _stepSingleRigidBody(timeStep,rb) {
- var dt = timeStep.dt;
- var dst = rb._ptransform;
- var src = rb._transform;
- dst._positionX = src._positionX;
- dst._positionY = src._positionY;
- dst._positionZ = src._positionZ;
- dst._rotation00 = src._rotation00;
- dst._rotation01 = src._rotation01;
- dst._rotation02 = src._rotation02;
- dst._rotation10 = src._rotation10;
- dst._rotation11 = src._rotation11;
- dst._rotation12 = src._rotation12;
- dst._rotation20 = src._rotation20;
- dst._rotation21 = src._rotation21;
- dst._rotation22 = src._rotation22;
- rb._linearContactImpulseX = 0;
- rb._linearContactImpulseY = 0;
- rb._linearContactImpulseZ = 0;
- rb._angularContactImpulseX = 0;
- rb._angularContactImpulseY = 0;
- rb._angularContactImpulseZ = 0;
- if(rb._autoSleep && rb._velX * rb._velX + rb._velY * rb._velY + rb._velZ * rb._velZ < oimo.common.Setting.sleepingVelocityThreshold * oimo.common.Setting.sleepingVelocityThreshold && rb._angVelX * rb._angVelX + rb._angVelY * rb._angVelY + rb._angVelZ * rb._angVelZ < oimo.common.Setting.sleepingAngularVelocityThreshold * oimo.common.Setting.sleepingAngularVelocityThreshold) {
- rb._sleepTime += dt;
- if(rb._sleepTime > oimo.common.Setting.sleepingTimeThreshold) {
- rb._sleeping = true;
- rb._sleepTime = 0;
- }
- } else {
- rb._sleepTime = 0;
- }
- if(!rb._sleeping) {
- if(rb._type == 0) {
- var x = dt * rb._linearDamping;
- var x2 = x * x;
- var linScale = 1 / (1 + x + x2 * (0.5 + x * 0.166666666666666657 + x2 * 0.0416666666666666644));
- var x1 = dt * rb._angularDamping;
- var x21 = x1 * x1;
- var angScale = 1 / (1 + x1 + x21 * (0.5 + x1 * 0.166666666666666657 + x21 * 0.0416666666666666644));
- var linAcc;
- var linAccX;
- var linAccY;
- var linAccZ;
- var angAcc;
- var angAccX;
- var angAccY;
- var angAccZ;
- linAccX = this.gravityX * rb._gravityScale;
- linAccY = this.gravityY * rb._gravityScale;
- linAccZ = this.gravityZ * rb._gravityScale;
- linAccX += rb._forceX * rb._invMass;
- linAccY += rb._forceY * rb._invMass;
- linAccZ += rb._forceZ * rb._invMass;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = rb._invInertia00 * rb._torqueX + rb._invInertia01 * rb._torqueY + rb._invInertia02 * rb._torqueZ;
- __tmp__Y = rb._invInertia10 * rb._torqueX + rb._invInertia11 * rb._torqueY + rb._invInertia12 * rb._torqueZ;
- __tmp__Z = rb._invInertia20 * rb._torqueX + rb._invInertia21 * rb._torqueY + rb._invInertia22 * rb._torqueZ;
- angAccX = __tmp__X;
- angAccY = __tmp__Y;
- angAccZ = __tmp__Z;
- rb._velX += linAccX * dt;
- rb._velY += linAccY * dt;
- rb._velZ += linAccZ * dt;
- rb._velX *= linScale;
- rb._velY *= linScale;
- rb._velZ *= linScale;
- rb._angVelX += angAccX * dt;
- rb._angVelY += angAccY * dt;
- rb._angVelZ += angAccZ * dt;
- rb._angVelX *= angScale;
- rb._angVelY *= angScale;
- rb._angVelZ *= angScale;
- }
- rb._integrate(dt);
- var s = rb._shapeList;
- while(s != null) {
- var n = s._next;
- var dst1 = s._ptransform;
- var src1 = s._localTransform;
- var src2 = rb._ptransform;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
- __tmp__01 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
- __tmp__02 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
- __tmp__10 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
- __tmp__11 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
- __tmp__12 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
- __tmp__20 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
- __tmp__21 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
- __tmp__22 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
- dst1._rotation00 = __tmp__00;
- dst1._rotation01 = __tmp__01;
- dst1._rotation02 = __tmp__02;
- dst1._rotation10 = __tmp__10;
- dst1._rotation11 = __tmp__11;
- dst1._rotation12 = __tmp__12;
- dst1._rotation20 = __tmp__20;
- dst1._rotation21 = __tmp__21;
- dst1._rotation22 = __tmp__22;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
- __tmp__Y1 = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
- __tmp__Z1 = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
- dst1._positionX = __tmp__X1;
- dst1._positionY = __tmp__Y1;
- dst1._positionZ = __tmp__Z1;
- dst1._positionX += src2._positionX;
- dst1._positionY += src2._positionY;
- dst1._positionZ += src2._positionZ;
- var dst2 = s._transform;
- var src11 = s._localTransform;
- var src21 = rb._transform;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
- __tmp__011 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
- __tmp__021 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
- __tmp__101 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
- __tmp__111 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
- __tmp__121 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
- __tmp__201 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
- __tmp__211 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
- __tmp__221 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
- dst2._rotation00 = __tmp__001;
- dst2._rotation01 = __tmp__011;
- dst2._rotation02 = __tmp__021;
- dst2._rotation10 = __tmp__101;
- dst2._rotation11 = __tmp__111;
- dst2._rotation12 = __tmp__121;
- dst2._rotation20 = __tmp__201;
- dst2._rotation21 = __tmp__211;
- dst2._rotation22 = __tmp__221;
- var __tmp__X2;
- var __tmp__Y2;
- var __tmp__Z2;
- __tmp__X2 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
- __tmp__Y2 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
- __tmp__Z2 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
- dst2._positionX = __tmp__X2;
- dst2._positionY = __tmp__Y2;
- dst2._positionZ = __tmp__Z2;
- dst2._positionX += src21._positionX;
- dst2._positionY += src21._positionY;
- dst2._positionZ += src21._positionZ;
- var min;
- var minX;
- var minY;
- var minZ;
- var max;
- var maxX;
- var maxY;
- var maxZ;
- s._geom._computeAabb(s._aabb,s._ptransform);
- minX = s._aabb._minX;
- minY = s._aabb._minY;
- minZ = s._aabb._minZ;
- maxX = s._aabb._maxX;
- maxY = s._aabb._maxY;
- maxZ = s._aabb._maxZ;
- s._geom._computeAabb(s._aabb,s._transform);
- s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
- s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
- s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
- s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
- s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
- s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
- if(s._proxy != null) {
- var d;
- var dX;
- var dY;
- var dZ;
- dX = s._transform._positionX - s._ptransform._positionX;
- dY = s._transform._positionY - s._ptransform._positionY;
- dZ = s._transform._positionZ - s._ptransform._positionZ;
- var v = s.displacement;
- v.x = dX;
- v.y = dY;
- v.z = dZ;
- s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
- }
- s = n;
- }
- }
- }
- _step(timeStep,numVelocityIterations,numPositionIterations) {
- var dt = timeStep.dt;
- var sleepIsland = true;
- var _g = 0;
- var _g1 = this.numRigidBodies;
- while(_g < _g1) {
- var i = _g++;
- var rb = this.rigidBodies[i];
- var dst = rb._ptransform;
- var src = rb._transform;
- dst._positionX = src._positionX;
- dst._positionY = src._positionY;
- dst._positionZ = src._positionZ;
- dst._rotation00 = src._rotation00;
- dst._rotation01 = src._rotation01;
- dst._rotation02 = src._rotation02;
- dst._rotation10 = src._rotation10;
- dst._rotation11 = src._rotation11;
- dst._rotation12 = src._rotation12;
- dst._rotation20 = src._rotation20;
- dst._rotation21 = src._rotation21;
- dst._rotation22 = src._rotation22;
- rb._linearContactImpulseX = 0;
- rb._linearContactImpulseY = 0;
- rb._linearContactImpulseZ = 0;
- rb._angularContactImpulseX = 0;
- rb._angularContactImpulseY = 0;
- rb._angularContactImpulseZ = 0;
- rb._sleeping = false;
- if(rb._autoSleep && rb._velX * rb._velX + rb._velY * rb._velY + rb._velZ * rb._velZ < oimo.common.Setting.sleepingVelocityThreshold * oimo.common.Setting.sleepingVelocityThreshold && rb._angVelX * rb._angVelX + rb._angVelY * rb._angVelY + rb._angVelZ * rb._angVelZ < oimo.common.Setting.sleepingAngularVelocityThreshold * oimo.common.Setting.sleepingAngularVelocityThreshold) {
- rb._sleepTime += dt;
- } else {
- rb._sleepTime = 0;
- }
- if(rb._sleepTime < oimo.common.Setting.sleepingTimeThreshold) {
- sleepIsland = false;
- }
- if(rb._type == 0) {
- var x = dt * rb._linearDamping;
- var x2 = x * x;
- var linScale = 1 / (1 + x + x2 * (0.5 + x * 0.166666666666666657 + x2 * 0.0416666666666666644));
- var x1 = dt * rb._angularDamping;
- var x21 = x1 * x1;
- var angScale = 1 / (1 + x1 + x21 * (0.5 + x1 * 0.166666666666666657 + x21 * 0.0416666666666666644));
- var linAcc;
- var linAccX;
- var linAccY;
- var linAccZ;
- var angAcc;
- var angAccX;
- var angAccY;
- var angAccZ;
- linAccX = this.gravityX * rb._gravityScale;
- linAccY = this.gravityY * rb._gravityScale;
- linAccZ = this.gravityZ * rb._gravityScale;
- linAccX += rb._forceX * rb._invMass;
- linAccY += rb._forceY * rb._invMass;
- linAccZ += rb._forceZ * rb._invMass;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = rb._invInertia00 * rb._torqueX + rb._invInertia01 * rb._torqueY + rb._invInertia02 * rb._torqueZ;
- __tmp__Y = rb._invInertia10 * rb._torqueX + rb._invInertia11 * rb._torqueY + rb._invInertia12 * rb._torqueZ;
- __tmp__Z = rb._invInertia20 * rb._torqueX + rb._invInertia21 * rb._torqueY + rb._invInertia22 * rb._torqueZ;
- angAccX = __tmp__X;
- angAccY = __tmp__Y;
- angAccZ = __tmp__Z;
- rb._velX += linAccX * dt;
- rb._velY += linAccY * dt;
- rb._velZ += linAccZ * dt;
- rb._velX *= linScale;
- rb._velY *= linScale;
- rb._velZ *= linScale;
- rb._angVelX += angAccX * dt;
- rb._angVelY += angAccY * dt;
- rb._angVelZ += angAccZ * dt;
- rb._angVelX *= angScale;
- rb._angVelY *= angScale;
- rb._angVelZ *= angScale;
- }
- }
- if(sleepIsland) {
- var _g2 = 0;
- var _g3 = this.numRigidBodies;
- while(_g2 < _g3) {
- var i1 = _g2++;
- var rb1 = this.rigidBodies[i1];
- rb1._sleeping = true;
- rb1._sleepTime = 0;
- }
- return;
- }
- var _g21 = 0;
- var _g31 = this.numSolvers;
- while(_g21 < _g31) {
- var i2 = _g21++;
- var s = this.solvers[i2];
- s.preSolveVelocity(timeStep);
- }
- var _g4 = 0;
- var _g5 = this.numSolvers;
- while(_g4 < _g5) {
- var i3 = _g4++;
- var s1 = this.solvers[i3];
- s1.warmStart(timeStep);
- }
- var _g6 = 0;
- var _g7 = numVelocityIterations;
- while(_g6 < _g7) {
- var t = _g6++;
- var _g61 = 0;
- var _g71 = this.numSolvers;
- while(_g61 < _g71) {
- var i4 = _g61++;
- var s2 = this.solvers[i4];
- s2.solveVelocity();
- }
- }
- var _g8 = 0;
- var _g9 = this.numSolvers;
- while(_g8 < _g9) {
- var i5 = _g8++;
- var s3 = this.solvers[i5];
- s3.postSolveVelocity(timeStep);
- }
- var _g10 = 0;
- var _g11 = this.numRigidBodies;
- while(_g10 < _g11) {
- var i6 = _g10++;
- var rb2 = this.rigidBodies[i6];
- rb2._integrate(dt);
- }
- var _g12 = 0;
- var _g13 = this.numSolversSi;
- while(_g12 < _g13) {
- var i7 = _g12++;
- var s4 = this.solversSi[i7];
- s4.preSolvePosition(timeStep);
- }
- var _g14 = 0;
- var _g15 = numPositionIterations;
- while(_g14 < _g15) {
- var t1 = _g14++;
- var _g141 = 0;
- var _g151 = this.numSolversSi;
- while(_g141 < _g151) {
- var i8 = _g141++;
- var s5 = this.solversSi[i8];
- s5.solvePositionSplitImpulse();
- }
- }
- var _g16 = 0;
- var _g17 = this.numRigidBodies;
- while(_g16 < _g17) {
- var i9 = _g16++;
- var rb3 = this.rigidBodies[i9];
- rb3._integratePseudoVelocity();
- }
- var _g18 = 0;
- var _g19 = this.numSolversNgs;
- while(_g18 < _g19) {
- var i10 = _g18++;
- var s6 = this.solversNgs[i10];
- s6.preSolvePosition(timeStep);
- }
- var _g20 = 0;
- var _g211 = numPositionIterations;
- while(_g20 < _g211) {
- var t2 = _g20++;
- var _g201 = 0;
- var _g212 = this.numSolversNgs;
- while(_g201 < _g212) {
- var i11 = _g201++;
- var s7 = this.solversNgs[i11];
- s7.solvePositionNgs(timeStep);
- }
- }
- var _g22 = 0;
- var _g23 = this.numSolvers;
- while(_g22 < _g23) {
- var i12 = _g22++;
- var s8 = this.solvers[i12];
- s8.postSolve();
- }
- var _g24 = 0;
- var _g25 = this.numRigidBodies;
- while(_g24 < _g25) {
- var i13 = _g24++;
- var rb4 = this.rigidBodies[i13];
- var s9 = rb4._shapeList;
- while(s9 != null) {
- var n = s9._next;
- var dst1 = s9._ptransform;
- var src1 = s9._localTransform;
- var src2 = rb4._ptransform;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
- __tmp__01 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
- __tmp__02 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
- __tmp__10 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
- __tmp__11 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
- __tmp__12 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
- __tmp__20 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
- __tmp__21 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
- __tmp__22 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
- dst1._rotation00 = __tmp__00;
- dst1._rotation01 = __tmp__01;
- dst1._rotation02 = __tmp__02;
- dst1._rotation10 = __tmp__10;
- dst1._rotation11 = __tmp__11;
- dst1._rotation12 = __tmp__12;
- dst1._rotation20 = __tmp__20;
- dst1._rotation21 = __tmp__21;
- dst1._rotation22 = __tmp__22;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
- __tmp__Y1 = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
- __tmp__Z1 = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
- dst1._positionX = __tmp__X1;
- dst1._positionY = __tmp__Y1;
- dst1._positionZ = __tmp__Z1;
- dst1._positionX += src2._positionX;
- dst1._positionY += src2._positionY;
- dst1._positionZ += src2._positionZ;
- var dst2 = s9._transform;
- var src11 = s9._localTransform;
- var src21 = rb4._transform;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
- __tmp__011 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
- __tmp__021 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
- __tmp__101 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
- __tmp__111 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
- __tmp__121 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
- __tmp__201 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
- __tmp__211 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
- __tmp__221 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
- dst2._rotation00 = __tmp__001;
- dst2._rotation01 = __tmp__011;
- dst2._rotation02 = __tmp__021;
- dst2._rotation10 = __tmp__101;
- dst2._rotation11 = __tmp__111;
- dst2._rotation12 = __tmp__121;
- dst2._rotation20 = __tmp__201;
- dst2._rotation21 = __tmp__211;
- dst2._rotation22 = __tmp__221;
- var __tmp__X2;
- var __tmp__Y2;
- var __tmp__Z2;
- __tmp__X2 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
- __tmp__Y2 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
- __tmp__Z2 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
- dst2._positionX = __tmp__X2;
- dst2._positionY = __tmp__Y2;
- dst2._positionZ = __tmp__Z2;
- dst2._positionX += src21._positionX;
- dst2._positionY += src21._positionY;
- dst2._positionZ += src21._positionZ;
- var min;
- var minX;
- var minY;
- var minZ;
- var max;
- var maxX;
- var maxY;
- var maxZ;
- s9._geom._computeAabb(s9._aabb,s9._ptransform);
- minX = s9._aabb._minX;
- minY = s9._aabb._minY;
- minZ = s9._aabb._minZ;
- maxX = s9._aabb._maxX;
- maxY = s9._aabb._maxY;
- maxZ = s9._aabb._maxZ;
- s9._geom._computeAabb(s9._aabb,s9._transform);
- s9._aabb._minX = minX < s9._aabb._minX ? minX : s9._aabb._minX;
- s9._aabb._minY = minY < s9._aabb._minY ? minY : s9._aabb._minY;
- s9._aabb._minZ = minZ < s9._aabb._minZ ? minZ : s9._aabb._minZ;
- s9._aabb._maxX = maxX > s9._aabb._maxX ? maxX : s9._aabb._maxX;
- s9._aabb._maxY = maxY > s9._aabb._maxY ? maxY : s9._aabb._maxY;
- s9._aabb._maxZ = maxZ > s9._aabb._maxZ ? maxZ : s9._aabb._maxZ;
- if(s9._proxy != null) {
- var d;
- var dX;
- var dY;
- var dZ;
- dX = s9._transform._positionX - s9._ptransform._positionX;
- dY = s9._transform._positionY - s9._ptransform._positionY;
- dZ = s9._transform._positionZ - s9._ptransform._positionZ;
- var v = s9.displacement;
- v.x = dX;
- v.y = dY;
- v.z = dZ;
- s9._rigidBody._world._broadPhase.moveProxy(s9._proxy,s9._aabb,s9.displacement);
- }
- s9 = n;
- }
- }
- }
- }
- oimo.dynamics.TimeStep = class oimo_dynamics_TimeStep {
- constructor() {
- this.dt = 0;
- this.invDt = 0;
- this.dtRatio = 1;
- }
- }
- oimo.dynamics.World = class oimo_dynamics_World {
- constructor(broadPhaseType,gravity) {
- if(broadPhaseType == null) {
- broadPhaseType = 2;
- }
- switch(broadPhaseType) {
- case 1:
- this._broadPhase = new oimo.collision.broadphase.bruteforce.BruteForceBroadPhase();
- break;
- case 2:
- this._broadPhase = new oimo.collision.broadphase.bvh.BvhBroadPhase();
- break;
- }
- this._contactManager = new oimo.dynamics.ContactManager(this._broadPhase);
- if(gravity == null) {
- gravity = new oimo.common.Vec3(0,-9.80665,0);
- }
- this._gravity = new oimo.common.Vec3(gravity.x,gravity.y,gravity.z);
- this._rigidBodyList = null;
- this._rigidBodyListLast = null;
- this._jointList = null;
- this._jointListLast = null;
- this._numRigidBodies = 0;
- this._numShapes = 0;
- this._numJoints = 0;
- this._numIslands = 0;
- this._numVelocityIterations = 10;
- this._numPositionIterations = 5;
- this._rayCastWrapper = new oimo.dynamics._World.RayCastWrapper();
- this._convexCastWrapper = new oimo.dynamics._World.ConvexCastWrapper();
- this._aabbTestWrapper = new oimo.dynamics._World.AabbTestWrapper();
- this._island = new oimo.dynamics.Island();
- var this1 = new Array(oimo.common.Setting.islandInitialConstraintArraySize);
- this._solversInIslands = this1;
- var this2 = new Array(oimo.common.Setting.islandInitialRigidBodyArraySize);
- this._rigidBodyStack = this2;
- this._timeStep = new oimo.dynamics.TimeStep();
- this._pool = new oimo.common.Pool();
- this._shapeIdCount = 0;
- }
- _updateContacts() {
- var st = Date.now() / 1000;
- this._contactManager._updateContacts();
- var en = Date.now() / 1000;
- oimo.dynamics.common.Performance.broadPhaseCollisionTime = (en - st) * 1000;
- var st1 = Date.now() / 1000;
- var c = this._contactManager._contactList;
- while(c != null) {
- var n = c._next;
- if(!c._shouldBeSkipped) {
- c._updateManifold();
- }
- c = n;
- }
- var en1 = Date.now() / 1000;
- oimo.dynamics.common.Performance.narrowPhaseCollisionTime = (en1 - st1) * 1000;
- }
- _solveIslands() {
- var st = Date.now() / 1000;
- if(oimo.common.Setting.disableSleeping) {
- var b = this._rigidBodyList;
- while(b != null) {
- var n = b._next;
- b._sleeping = false;
- b._sleepTime = 0;
- b = n;
- }
- }
- if(this._rigidBodyStack.length < this._numRigidBodies) {
- var newStackSize = this._rigidBodyStack.length << 1;
- while(newStackSize < this._numRigidBodies) newStackSize <<= 1;
- var this1 = new Array(newStackSize);
- this._rigidBodyStack = this1;
- }
- this._numIslands = 0;
- var _this = this._island;
- var v = this._gravity;
- _this.gravityX = v.x;
- _this.gravityY = v.y;
- _this.gravityZ = v.z;
- var b1 = this._rigidBodyList;
- this._numSolversInIslands = 0;
- while(b1 != null) {
- var n1 = b1._next;
- while(!(b1._addedToIsland || b1._sleeping || b1._type == 1)) {
- if(b1._numContactLinks == 0 && b1._numJointLinks == 0) {
- this._island._stepSingleRigidBody(this._timeStep,b1);
- this._numIslands++;
- break;
- }
- this.buildIsland(b1);
- this._island._step(this._timeStep,this._numVelocityIterations,this._numPositionIterations);
- this._island._clear();
- this._numIslands++;
- if(!false) {
- break;
- }
- }
- b1 = n1;
- }
- this._contactManager._postSolve();
- b1 = this._rigidBodyList;
- while(b1 != null) {
- var n2 = b1._next;
- b1._addedToIsland = false;
- b1 = n2;
- }
- b1 = this._rigidBodyList;
- while(b1 != null) {
- var n3 = b1._next;
- b1._forceX = 0;
- b1._forceY = 0;
- b1._forceZ = 0;
- b1._torqueX = 0;
- b1._torqueY = 0;
- b1._torqueZ = 0;
- b1 = n3;
- }
- while(this._numSolversInIslands > 0) {
- this._solversInIslands[--this._numSolversInIslands]._addedToIsland = false;
- this._solversInIslands[this._numSolversInIslands] = null;
- }
- var en = Date.now() / 1000;
- oimo.dynamics.common.Performance.dynamicsTime = (en - st) * 1000;
- }
- buildIsland(base) {
- var stackCount = 1;
- this._island._addRigidBody(base);
- this._rigidBodyStack[0] = base;
- while(stackCount > 0) {
- var rb = this._rigidBodyStack[--stackCount];
- this._rigidBodyStack[stackCount] = null;
- if(rb._type == 1) {
- continue;
- }
- var cl = rb._contactLinkList;
- while(cl != null) {
- var n = cl._next;
- var cc = cl._contact._contactConstraint;
- var ccs = cl._contact._contactConstraint._solver;
- if(cc.isTouching() && !ccs._addedToIsland) {
- if(this._solversInIslands.length == this._numSolversInIslands) {
- var newLength = this._numSolversInIslands << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = this._numSolversInIslands;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = this._solversInIslands[i];
- this._solversInIslands[i] = null;
- }
- this._solversInIslands = newArray;
- }
- this._solversInIslands[this._numSolversInIslands++] = ccs;
- this._island._addConstraintSolver(ccs,cc._positionCorrectionAlgorithm);
- var other = cl._other;
- if(!other._addedToIsland) {
- this._island._addRigidBody(other);
- this._rigidBodyStack[stackCount++] = other;
- }
- }
- cl = n;
- }
- var jl = rb._jointLinkList;
- while(jl != null) {
- var n1 = jl._next;
- var j = jl._joint;
- var js1 = j._solver;
- if(!js1._addedToIsland) {
- if(this._solversInIslands.length == this._numSolversInIslands) {
- var newLength1 = this._numSolversInIslands << 1;
- var this2 = new Array(newLength1);
- var newArray1 = this2;
- var _g2 = 0;
- var _g11 = this._numSolversInIslands;
- while(_g2 < _g11) {
- var i1 = _g2++;
- newArray1[i1] = this._solversInIslands[i1];
- this._solversInIslands[i1] = null;
- }
- this._solversInIslands = newArray1;
- }
- this._solversInIslands[this._numSolversInIslands++] = js1;
- this._island._addConstraintSolver(js1,j._positionCorrectionAlgorithm);
- var other1 = jl._other;
- if(!other1._addedToIsland) {
- this._island._addRigidBody(other1);
- this._rigidBodyStack[stackCount++] = other1;
- }
- }
- jl = n1;
- }
- }
- }
- _drawBvh(d,tree) {
- if(d.drawBvh) {
- this._drawBvhNode(d,tree._root,0,d.style.bvhNodeColor);
- }
- }
- _drawBvhNode(d,node,level,color) {
- if(node == null) {
- return;
- }
- if(level >= d.drawBvhMinLevel && level <= d.drawBvhMaxLevel) {
- var _this = this._pool;
- var min = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
- var _this1 = this._pool;
- var max = _this1.sizeVec3 == 0 ? new oimo.common.Vec3() : _this1.stackVec3[--_this1.sizeVec3];
- var v = min;
- v.x = node._aabbMinX;
- v.y = node._aabbMinY;
- v.z = node._aabbMinZ;
- var v1 = max;
- v1.x = node._aabbMaxX;
- v1.y = node._aabbMaxY;
- v1.z = node._aabbMaxZ;
- d.aabb(min,max,color);
- var _this2 = this._pool;
- var mat3 = null;
- var mat4 = null;
- var quat = null;
- if(min != null) {
- min.zero();
- if(_this2.sizeVec3 == _this2.stackVec3.length) {
- var newLength = _this2.sizeVec3 << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = _this2.sizeVec3;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = _this2.stackVec3[i];
- _this2.stackVec3[i] = null;
- }
- _this2.stackVec3 = newArray;
- }
- _this2.stackVec3[_this2.sizeVec3++] = min;
- }
- if(mat3 != null) {
- var t00 = 1;
- var t01 = 0;
- var t02 = 0;
- var t10 = 0;
- var t11 = 1;
- var t12 = 0;
- var t20 = 0;
- var t21 = 0;
- var t22 = 1;
- mat3.e00 = t00;
- mat3.e01 = t01;
- mat3.e02 = t02;
- mat3.e10 = t10;
- mat3.e11 = t11;
- mat3.e12 = t12;
- mat3.e20 = t20;
- mat3.e21 = t21;
- mat3.e22 = t22;
- if(_this2.sizeMat3 == _this2.stackMat3.length) {
- var newLength1 = _this2.sizeMat3 << 1;
- var this2 = new Array(newLength1);
- var newArray1 = this2;
- var _g2 = 0;
- var _g11 = _this2.sizeMat3;
- while(_g2 < _g11) {
- var i1 = _g2++;
- newArray1[i1] = _this2.stackMat3[i1];
- _this2.stackMat3[i1] = null;
- }
- _this2.stackMat3 = newArray1;
- }
- _this2.stackMat3[_this2.sizeMat3++] = mat3;
- }
- if(mat4 != null) {
- var t001 = 1;
- var t011 = 0;
- var t021 = 0;
- var t03 = 0;
- var t101 = 0;
- var t111 = 1;
- var t121 = 0;
- var t13 = 0;
- var t201 = 0;
- var t211 = 0;
- var t221 = 1;
- var t23 = 0;
- var t30 = 0;
- var t31 = 0;
- var t32 = 0;
- var t33 = 1;
- mat4.e00 = t001;
- mat4.e01 = t011;
- mat4.e02 = t021;
- mat4.e03 = t03;
- mat4.e10 = t101;
- mat4.e11 = t111;
- mat4.e12 = t121;
- mat4.e13 = t13;
- mat4.e20 = t201;
- mat4.e21 = t211;
- mat4.e22 = t221;
- mat4.e23 = t23;
- mat4.e30 = t30;
- mat4.e31 = t31;
- mat4.e32 = t32;
- mat4.e33 = t33;
- if(_this2.sizeMat4 == _this2.stackMat4.length) {
- var newLength2 = _this2.sizeMat4 << 1;
- var this3 = new Array(newLength2);
- var newArray2 = this3;
- var _g3 = 0;
- var _g12 = _this2.sizeMat4;
- while(_g3 < _g12) {
- var i2 = _g3++;
- newArray2[i2] = _this2.stackMat4[i2];
- _this2.stackMat4[i2] = null;
- }
- _this2.stackMat4 = newArray2;
- }
- _this2.stackMat4[_this2.sizeMat4++] = mat4;
- }
- if(quat != null) {
- var tx = 0;
- var ty = 0;
- var tz = 0;
- var tw = 1;
- quat.x = tx;
- quat.y = ty;
- quat.z = tz;
- quat.w = tw;
- if(_this2.sizeQuat == _this2.stackQuat.length) {
- var newLength3 = _this2.sizeQuat << 1;
- var this4 = new Array(newLength3);
- var newArray3 = this4;
- var _g4 = 0;
- var _g13 = _this2.sizeQuat;
- while(_g4 < _g13) {
- var i3 = _g4++;
- newArray3[i3] = _this2.stackQuat[i3];
- _this2.stackQuat[i3] = null;
- }
- _this2.stackQuat = newArray3;
- }
- _this2.stackQuat[_this2.sizeQuat++] = quat;
- }
- var _this3 = this._pool;
- var mat31 = null;
- var mat41 = null;
- var quat1 = null;
- if(max != null) {
- max.zero();
- if(_this3.sizeVec3 == _this3.stackVec3.length) {
- var newLength4 = _this3.sizeVec3 << 1;
- var this5 = new Array(newLength4);
- var newArray4 = this5;
- var _g5 = 0;
- var _g14 = _this3.sizeVec3;
- while(_g5 < _g14) {
- var i4 = _g5++;
- newArray4[i4] = _this3.stackVec3[i4];
- _this3.stackVec3[i4] = null;
- }
- _this3.stackVec3 = newArray4;
- }
- _this3.stackVec3[_this3.sizeVec3++] = max;
- }
- if(mat31 != null) {
- var t002 = 1;
- var t012 = 0;
- var t022 = 0;
- var t102 = 0;
- var t112 = 1;
- var t122 = 0;
- var t202 = 0;
- var t212 = 0;
- var t222 = 1;
- mat31.e00 = t002;
- mat31.e01 = t012;
- mat31.e02 = t022;
- mat31.e10 = t102;
- mat31.e11 = t112;
- mat31.e12 = t122;
- mat31.e20 = t202;
- mat31.e21 = t212;
- mat31.e22 = t222;
- if(_this3.sizeMat3 == _this3.stackMat3.length) {
- var newLength5 = _this3.sizeMat3 << 1;
- var this6 = new Array(newLength5);
- var newArray5 = this6;
- var _g6 = 0;
- var _g15 = _this3.sizeMat3;
- while(_g6 < _g15) {
- var i5 = _g6++;
- newArray5[i5] = _this3.stackMat3[i5];
- _this3.stackMat3[i5] = null;
- }
- _this3.stackMat3 = newArray5;
- }
- _this3.stackMat3[_this3.sizeMat3++] = mat31;
- }
- if(mat41 != null) {
- var t003 = 1;
- var t013 = 0;
- var t023 = 0;
- var t031 = 0;
- var t103 = 0;
- var t113 = 1;
- var t123 = 0;
- var t131 = 0;
- var t203 = 0;
- var t213 = 0;
- var t223 = 1;
- var t231 = 0;
- var t301 = 0;
- var t311 = 0;
- var t321 = 0;
- var t331 = 1;
- mat41.e00 = t003;
- mat41.e01 = t013;
- mat41.e02 = t023;
- mat41.e03 = t031;
- mat41.e10 = t103;
- mat41.e11 = t113;
- mat41.e12 = t123;
- mat41.e13 = t131;
- mat41.e20 = t203;
- mat41.e21 = t213;
- mat41.e22 = t223;
- mat41.e23 = t231;
- mat41.e30 = t301;
- mat41.e31 = t311;
- mat41.e32 = t321;
- mat41.e33 = t331;
- if(_this3.sizeMat4 == _this3.stackMat4.length) {
- var newLength6 = _this3.sizeMat4 << 1;
- var this7 = new Array(newLength6);
- var newArray6 = this7;
- var _g7 = 0;
- var _g16 = _this3.sizeMat4;
- while(_g7 < _g16) {
- var i6 = _g7++;
- newArray6[i6] = _this3.stackMat4[i6];
- _this3.stackMat4[i6] = null;
- }
- _this3.stackMat4 = newArray6;
- }
- _this3.stackMat4[_this3.sizeMat4++] = mat41;
- }
- if(quat1 != null) {
- var tx1 = 0;
- var ty1 = 0;
- var tz1 = 0;
- var tw1 = 1;
- quat1.x = tx1;
- quat1.y = ty1;
- quat1.z = tz1;
- quat1.w = tw1;
- if(_this3.sizeQuat == _this3.stackQuat.length) {
- var newLength7 = _this3.sizeQuat << 1;
- var this8 = new Array(newLength7);
- var newArray7 = this8;
- var _g8 = 0;
- var _g17 = _this3.sizeQuat;
- while(_g8 < _g17) {
- var i7 = _g8++;
- newArray7[i7] = _this3.stackQuat[i7];
- _this3.stackQuat[i7] = null;
- }
- _this3.stackQuat = newArray7;
- }
- _this3.stackQuat[_this3.sizeQuat++] = quat1;
- }
- }
- this._drawBvhNode(d,node._children[0],level + 1,color);
- this._drawBvhNode(d,node._children[1],level + 1,color);
- }
- _drawRigidBodies(d) {
- var style = d.style;
- var r = this._rigidBodyList;
- while(r != null) {
- var n = r._next;
- if(d.drawBases) {
- var style1 = d.style;
- d.basis(r._transform,style1.basisLength,style1.basisColorX,style1.basisColorY,style1.basisColorZ);
- }
- var shapeColor = null;
- var isDynamic = r._type == 0;
- if(!isDynamic) {
- shapeColor = r._type == 2 ? style.kinematicShapeColor : style.staticShapeColor;
- }
- var s = r._shapeList;
- while(s != null) {
- var n1 = s._next;
- if(isDynamic) {
- if((s._id & 1) == 0) {
- shapeColor = r._sleeping ? style.sleepingShapeColor1 : r._sleepTime > oimo.common.Setting.sleepingTimeThreshold ? style.sleepyShapeColor1 : style.shapeColor1;
- } else {
- shapeColor = r._sleeping ? style.sleepingShapeColor2 : r._sleepTime > oimo.common.Setting.sleepingTimeThreshold ? style.sleepyShapeColor2 : style.shapeColor2;
- }
- }
- if(d.drawShapes) {
- var geom = s._geom;
- var tf = s._transform;
- switch(geom._type) {
- case 0:
- d.sphere(tf,geom._radius,shapeColor);
- break;
- case 1:
- var g = geom;
- var _this = this._pool;
- var hx = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
- var v = hx;
- v.x = g._halfExtentsX;
- v.y = g._halfExtentsY;
- v.z = g._halfExtentsZ;
- d.box(tf,hx,shapeColor);
- var _this1 = this._pool;
- var mat3 = null;
- var mat4 = null;
- var quat = null;
- if(hx != null) {
- hx.zero();
- if(_this1.sizeVec3 == _this1.stackVec3.length) {
- var newLength = _this1.sizeVec3 << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = _this1.sizeVec3;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = _this1.stackVec3[i];
- _this1.stackVec3[i] = null;
- }
- _this1.stackVec3 = newArray;
- }
- _this1.stackVec3[_this1.sizeVec3++] = hx;
- }
- if(mat3 != null) {
- var t00 = 1;
- var t01 = 0;
- var t02 = 0;
- var t10 = 0;
- var t11 = 1;
- var t12 = 0;
- var t20 = 0;
- var t21 = 0;
- var t22 = 1;
- mat3.e00 = t00;
- mat3.e01 = t01;
- mat3.e02 = t02;
- mat3.e10 = t10;
- mat3.e11 = t11;
- mat3.e12 = t12;
- mat3.e20 = t20;
- mat3.e21 = t21;
- mat3.e22 = t22;
- if(_this1.sizeMat3 == _this1.stackMat3.length) {
- var newLength1 = _this1.sizeMat3 << 1;
- var this2 = new Array(newLength1);
- var newArray1 = this2;
- var _g2 = 0;
- var _g11 = _this1.sizeMat3;
- while(_g2 < _g11) {
- var i1 = _g2++;
- newArray1[i1] = _this1.stackMat3[i1];
- _this1.stackMat3[i1] = null;
- }
- _this1.stackMat3 = newArray1;
- }
- _this1.stackMat3[_this1.sizeMat3++] = mat3;
- }
- if(mat4 != null) {
- var t001 = 1;
- var t011 = 0;
- var t021 = 0;
- var t03 = 0;
- var t101 = 0;
- var t111 = 1;
- var t121 = 0;
- var t13 = 0;
- var t201 = 0;
- var t211 = 0;
- var t221 = 1;
- var t23 = 0;
- var t30 = 0;
- var t31 = 0;
- var t32 = 0;
- var t33 = 1;
- mat4.e00 = t001;
- mat4.e01 = t011;
- mat4.e02 = t021;
- mat4.e03 = t03;
- mat4.e10 = t101;
- mat4.e11 = t111;
- mat4.e12 = t121;
- mat4.e13 = t13;
- mat4.e20 = t201;
- mat4.e21 = t211;
- mat4.e22 = t221;
- mat4.e23 = t23;
- mat4.e30 = t30;
- mat4.e31 = t31;
- mat4.e32 = t32;
- mat4.e33 = t33;
- if(_this1.sizeMat4 == _this1.stackMat4.length) {
- var newLength2 = _this1.sizeMat4 << 1;
- var this3 = new Array(newLength2);
- var newArray2 = this3;
- var _g3 = 0;
- var _g12 = _this1.sizeMat4;
- while(_g3 < _g12) {
- var i2 = _g3++;
- newArray2[i2] = _this1.stackMat4[i2];
- _this1.stackMat4[i2] = null;
- }
- _this1.stackMat4 = newArray2;
- }
- _this1.stackMat4[_this1.sizeMat4++] = mat4;
- }
- if(quat != null) {
- var tx = 0;
- var ty = 0;
- var tz = 0;
- var tw = 1;
- quat.x = tx;
- quat.y = ty;
- quat.z = tz;
- quat.w = tw;
- if(_this1.sizeQuat == _this1.stackQuat.length) {
- var newLength3 = _this1.sizeQuat << 1;
- var this4 = new Array(newLength3);
- var newArray3 = this4;
- var _g4 = 0;
- var _g13 = _this1.sizeQuat;
- while(_g4 < _g13) {
- var i3 = _g4++;
- newArray3[i3] = _this1.stackQuat[i3];
- _this1.stackQuat[i3] = null;
- }
- _this1.stackQuat = newArray3;
- }
- _this1.stackQuat[_this1.sizeQuat++] = quat;
- }
- break;
- case 2:
- var g1 = geom;
- d.cylinder(tf,g1._radius,g1._halfHeight,shapeColor);
- break;
- case 3:
- var g2 = geom;
- d.cone(tf,g2._radius,g2._halfHeight,shapeColor);
- break;
- case 4:
- var g3 = geom;
- d.capsule(tf,g3._radius,g3._halfHeight,shapeColor);
- break;
- case 5:
- var g4 = geom;
- var n2 = g4._numVertices;
- var _this2 = this._pool;
- var v1 = _this2.sizeVec3 == 0 ? new oimo.common.Vec3() : _this2.stackVec3[--_this2.sizeVec3];
- var _this3 = this._pool;
- var v2 = _this3.sizeVec3 == 0 ? new oimo.common.Vec3() : _this3.stackVec3[--_this3.sizeVec3];
- var _this4 = this._pool;
- var v3 = _this4.sizeVec3 == 0 ? new oimo.common.Vec3() : _this4.stackVec3[--_this4.sizeVec3];
- var _this5 = this._pool;
- var v12 = _this5.sizeVec3 == 0 ? new oimo.common.Vec3() : _this5.stackVec3[--_this5.sizeVec3];
- var _this6 = this._pool;
- var v13 = _this6.sizeVec3 == 0 ? new oimo.common.Vec3() : _this6.stackVec3[--_this6.sizeVec3];
- var _this7 = this._pool;
- var normal = _this7.sizeVec3 == 0 ? new oimo.common.Vec3() : _this7.stackVec3[--_this7.sizeVec3];
- var _this8 = this._pool;
- var m = _this8.sizeMat3 == 0 ? new oimo.common.Mat3() : _this8.stackMat3[--_this8.sizeMat3];
- var _this9 = this._pool;
- var o = _this9.sizeVec3 == 0 ? new oimo.common.Vec3() : _this9.stackVec3[--_this9.sizeVec3];
- var m1 = m;
- m1.e00 = tf._rotation00;
- m1.e01 = tf._rotation01;
- m1.e02 = tf._rotation02;
- m1.e10 = tf._rotation10;
- m1.e11 = tf._rotation11;
- m1.e12 = tf._rotation12;
- m1.e20 = tf._rotation20;
- m1.e21 = tf._rotation21;
- m1.e22 = tf._rotation22;
- var v4 = o;
- v4.x = tf._positionX;
- v4.y = tf._positionY;
- v4.z = tf._positionZ;
- var _g5 = 0;
- var _g14 = n2;
- while(_g5 < _g14) {
- var i4 = _g5++;
- var _this10 = g4._tmpVertices[i4];
- var v5 = g4._vertices[i4];
- _this10.x = v5.x;
- _this10.y = v5.y;
- _this10.z = v5.z;
- var _this11 = _this10;
- var tx1 = _this11.x * m.e00 + _this11.y * m.e01 + _this11.z * m.e02;
- var ty1 = _this11.x * m.e10 + _this11.y * m.e11 + _this11.z * m.e12;
- var tz1 = _this11.x * m.e20 + _this11.y * m.e21 + _this11.z * m.e22;
- _this11.x = tx1;
- _this11.y = ty1;
- _this11.z = tz1;
- var _this12 = _this11;
- var tx2 = _this12.x + o.x;
- var ty2 = _this12.y + o.y;
- var tz2 = _this12.z + o.z;
- _this12.x = tx2;
- _this12.y = ty2;
- _this12.z = tz2;
- }
- if(n2 > 30) {
- var _g21 = 0;
- var _g31 = n2;
- while(_g21 < _g31) {
- var i5 = _g21++;
- var v6 = g4._tmpVertices[i5];
- v1.x = v6.x;
- v1.y = v6.y;
- v1.z = v6.z;
- var v7 = g4._tmpVertices[(i5 + 1) % n2];
- v2.x = v7.x;
- v2.y = v7.y;
- v2.z = v7.z;
- d.line(v1,v2,shapeColor);
- }
- } else if(this._debugDraw.wireframe || n2 > 10) {
- var _g22 = 0;
- var _g32 = n2;
- while(_g22 < _g32) {
- var i6 = _g22++;
- var v8 = g4._tmpVertices[i6];
- v1.x = v8.x;
- v1.y = v8.y;
- v1.z = v8.z;
- var _g23 = 0;
- var _g33 = i6;
- while(_g23 < _g33) {
- var j = _g23++;
- var v9 = g4._tmpVertices[j];
- v2.x = v9.x;
- v2.y = v9.y;
- v2.z = v9.z;
- d.line(v1,v2,shapeColor);
- }
- }
- } else {
- var _g24 = 0;
- var _g34 = n2;
- while(_g24 < _g34) {
- var i7 = _g24++;
- var v10 = g4._tmpVertices[i7];
- v1.x = v10.x;
- v1.y = v10.y;
- v1.z = v10.z;
- var _g25 = 0;
- var _g35 = i7;
- while(_g25 < _g35) {
- var j1 = _g25++;
- var v11 = g4._tmpVertices[j1];
- v2.x = v11.x;
- v2.y = v11.y;
- v2.z = v11.z;
- var _g26 = 0;
- var _g36 = j1;
- while(_g26 < _g36) {
- var k = _g26++;
- var v14 = g4._tmpVertices[k];
- v3.x = v14.x;
- v3.y = v14.y;
- v3.z = v14.z;
- v12.x = v2.x;
- v12.y = v2.y;
- v12.z = v2.z;
- var _this13 = v12;
- var tx3 = _this13.x - v1.x;
- var ty3 = _this13.y - v1.y;
- var tz3 = _this13.z - v1.z;
- _this13.x = tx3;
- _this13.y = ty3;
- _this13.z = tz3;
- v13.x = v3.x;
- v13.y = v3.y;
- v13.z = v3.z;
- var _this14 = v13;
- var tx4 = _this14.x - v1.x;
- var ty4 = _this14.y - v1.y;
- var tz4 = _this14.z - v1.z;
- _this14.x = tx4;
- _this14.y = ty4;
- _this14.z = tz4;
- normal.x = v12.x;
- normal.y = v12.y;
- normal.z = v12.z;
- var _this15 = normal;
- var tx5 = _this15.y * v13.z - _this15.z * v13.y;
- var ty5 = _this15.z * v13.x - _this15.x * v13.z;
- var tz5 = _this15.x * v13.y - _this15.y * v13.x;
- _this15.x = tx5;
- _this15.y = ty5;
- _this15.z = tz5;
- var _this16 = _this15;
- var invLen = Math.sqrt(_this16.x * _this16.x + _this16.y * _this16.y + _this16.z * _this16.z);
- if(invLen > 0) {
- invLen = 1 / invLen;
- }
- var tx6 = _this16.x * invLen;
- var ty6 = _this16.y * invLen;
- var tz6 = _this16.z * invLen;
- _this16.x = tx6;
- _this16.y = ty6;
- _this16.z = tz6;
- d.triangle(v1,v2,v3,normal,normal,normal,shapeColor);
- var tx7 = -normal.x;
- var ty7 = -normal.y;
- var tz7 = -normal.z;
- normal.x = tx7;
- normal.y = ty7;
- normal.z = tz7;
- d.triangle(v1,v3,v2,normal,normal,normal,shapeColor);
- }
- }
- }
- }
- var _this17 = this._pool;
- var mat31 = null;
- var mat41 = null;
- var quat1 = null;
- if(v1 != null) {
- v1.zero();
- if(_this17.sizeVec3 == _this17.stackVec3.length) {
- var newLength4 = _this17.sizeVec3 << 1;
- var this5 = new Array(newLength4);
- var newArray4 = this5;
- var _g6 = 0;
- var _g15 = _this17.sizeVec3;
- while(_g6 < _g15) {
- var i8 = _g6++;
- newArray4[i8] = _this17.stackVec3[i8];
- _this17.stackVec3[i8] = null;
- }
- _this17.stackVec3 = newArray4;
- }
- _this17.stackVec3[_this17.sizeVec3++] = v1;
- }
- if(mat31 != null) {
- var t002 = 1;
- var t012 = 0;
- var t022 = 0;
- var t102 = 0;
- var t112 = 1;
- var t122 = 0;
- var t202 = 0;
- var t212 = 0;
- var t222 = 1;
- mat31.e00 = t002;
- mat31.e01 = t012;
- mat31.e02 = t022;
- mat31.e10 = t102;
- mat31.e11 = t112;
- mat31.e12 = t122;
- mat31.e20 = t202;
- mat31.e21 = t212;
- mat31.e22 = t222;
- if(_this17.sizeMat3 == _this17.stackMat3.length) {
- var newLength5 = _this17.sizeMat3 << 1;
- var this6 = new Array(newLength5);
- var newArray5 = this6;
- var _g7 = 0;
- var _g16 = _this17.sizeMat3;
- while(_g7 < _g16) {
- var i9 = _g7++;
- newArray5[i9] = _this17.stackMat3[i9];
- _this17.stackMat3[i9] = null;
- }
- _this17.stackMat3 = newArray5;
- }
- _this17.stackMat3[_this17.sizeMat3++] = mat31;
- }
- if(mat41 != null) {
- var t003 = 1;
- var t013 = 0;
- var t023 = 0;
- var t031 = 0;
- var t103 = 0;
- var t113 = 1;
- var t123 = 0;
- var t131 = 0;
- var t203 = 0;
- var t213 = 0;
- var t223 = 1;
- var t231 = 0;
- var t301 = 0;
- var t311 = 0;
- var t321 = 0;
- var t331 = 1;
- mat41.e00 = t003;
- mat41.e01 = t013;
- mat41.e02 = t023;
- mat41.e03 = t031;
- mat41.e10 = t103;
- mat41.e11 = t113;
- mat41.e12 = t123;
- mat41.e13 = t131;
- mat41.e20 = t203;
- mat41.e21 = t213;
- mat41.e22 = t223;
- mat41.e23 = t231;
- mat41.e30 = t301;
- mat41.e31 = t311;
- mat41.e32 = t321;
- mat41.e33 = t331;
- if(_this17.sizeMat4 == _this17.stackMat4.length) {
- var newLength6 = _this17.sizeMat4 << 1;
- var this7 = new Array(newLength6);
- var newArray6 = this7;
- var _g8 = 0;
- var _g17 = _this17.sizeMat4;
- while(_g8 < _g17) {
- var i10 = _g8++;
- newArray6[i10] = _this17.stackMat4[i10];
- _this17.stackMat4[i10] = null;
- }
- _this17.stackMat4 = newArray6;
- }
- _this17.stackMat4[_this17.sizeMat4++] = mat41;
- }
- if(quat1 != null) {
- var tx8 = 0;
- var ty8 = 0;
- var tz8 = 0;
- var tw1 = 1;
- quat1.x = tx8;
- quat1.y = ty8;
- quat1.z = tz8;
- quat1.w = tw1;
- if(_this17.sizeQuat == _this17.stackQuat.length) {
- var newLength7 = _this17.sizeQuat << 1;
- var this8 = new Array(newLength7);
- var newArray7 = this8;
- var _g9 = 0;
- var _g18 = _this17.sizeQuat;
- while(_g9 < _g18) {
- var i11 = _g9++;
- newArray7[i11] = _this17.stackQuat[i11];
- _this17.stackQuat[i11] = null;
- }
- _this17.stackQuat = newArray7;
- }
- _this17.stackQuat[_this17.sizeQuat++] = quat1;
- }
- var _this18 = this._pool;
- var mat32 = null;
- var mat42 = null;
- var quat2 = null;
- if(v2 != null) {
- v2.zero();
- if(_this18.sizeVec3 == _this18.stackVec3.length) {
- var newLength8 = _this18.sizeVec3 << 1;
- var this9 = new Array(newLength8);
- var newArray8 = this9;
- var _g10 = 0;
- var _g19 = _this18.sizeVec3;
- while(_g10 < _g19) {
- var i12 = _g10++;
- newArray8[i12] = _this18.stackVec3[i12];
- _this18.stackVec3[i12] = null;
- }
- _this18.stackVec3 = newArray8;
- }
- _this18.stackVec3[_this18.sizeVec3++] = v2;
- }
- if(mat32 != null) {
- var t004 = 1;
- var t014 = 0;
- var t024 = 0;
- var t104 = 0;
- var t114 = 1;
- var t124 = 0;
- var t204 = 0;
- var t214 = 0;
- var t224 = 1;
- mat32.e00 = t004;
- mat32.e01 = t014;
- mat32.e02 = t024;
- mat32.e10 = t104;
- mat32.e11 = t114;
- mat32.e12 = t124;
- mat32.e20 = t204;
- mat32.e21 = t214;
- mat32.e22 = t224;
- if(_this18.sizeMat3 == _this18.stackMat3.length) {
- var newLength9 = _this18.sizeMat3 << 1;
- var this10 = new Array(newLength9);
- var newArray9 = this10;
- var _g20 = 0;
- var _g110 = _this18.sizeMat3;
- while(_g20 < _g110) {
- var i13 = _g20++;
- newArray9[i13] = _this18.stackMat3[i13];
- _this18.stackMat3[i13] = null;
- }
- _this18.stackMat3 = newArray9;
- }
- _this18.stackMat3[_this18.sizeMat3++] = mat32;
- }
- if(mat42 != null) {
- var t005 = 1;
- var t015 = 0;
- var t025 = 0;
- var t032 = 0;
- var t105 = 0;
- var t115 = 1;
- var t125 = 0;
- var t132 = 0;
- var t205 = 0;
- var t215 = 0;
- var t225 = 1;
- var t232 = 0;
- var t302 = 0;
- var t312 = 0;
- var t322 = 0;
- var t332 = 1;
- mat42.e00 = t005;
- mat42.e01 = t015;
- mat42.e02 = t025;
- mat42.e03 = t032;
- mat42.e10 = t105;
- mat42.e11 = t115;
- mat42.e12 = t125;
- mat42.e13 = t132;
- mat42.e20 = t205;
- mat42.e21 = t215;
- mat42.e22 = t225;
- mat42.e23 = t232;
- mat42.e30 = t302;
- mat42.e31 = t312;
- mat42.e32 = t322;
- mat42.e33 = t332;
- if(_this18.sizeMat4 == _this18.stackMat4.length) {
- var newLength10 = _this18.sizeMat4 << 1;
- var this11 = new Array(newLength10);
- var newArray10 = this11;
- var _g27 = 0;
- var _g111 = _this18.sizeMat4;
- while(_g27 < _g111) {
- var i14 = _g27++;
- newArray10[i14] = _this18.stackMat4[i14];
- _this18.stackMat4[i14] = null;
- }
- _this18.stackMat4 = newArray10;
- }
- _this18.stackMat4[_this18.sizeMat4++] = mat42;
- }
- if(quat2 != null) {
- var tx9 = 0;
- var ty9 = 0;
- var tz9 = 0;
- var tw2 = 1;
- quat2.x = tx9;
- quat2.y = ty9;
- quat2.z = tz9;
- quat2.w = tw2;
- if(_this18.sizeQuat == _this18.stackQuat.length) {
- var newLength11 = _this18.sizeQuat << 1;
- var this12 = new Array(newLength11);
- var newArray11 = this12;
- var _g28 = 0;
- var _g112 = _this18.sizeQuat;
- while(_g28 < _g112) {
- var i15 = _g28++;
- newArray11[i15] = _this18.stackQuat[i15];
- _this18.stackQuat[i15] = null;
- }
- _this18.stackQuat = newArray11;
- }
- _this18.stackQuat[_this18.sizeQuat++] = quat2;
- }
- var _this19 = this._pool;
- var mat33 = null;
- var mat43 = null;
- var quat3 = null;
- if(v3 != null) {
- v3.zero();
- if(_this19.sizeVec3 == _this19.stackVec3.length) {
- var newLength12 = _this19.sizeVec3 << 1;
- var this13 = new Array(newLength12);
- var newArray12 = this13;
- var _g29 = 0;
- var _g113 = _this19.sizeVec3;
- while(_g29 < _g113) {
- var i16 = _g29++;
- newArray12[i16] = _this19.stackVec3[i16];
- _this19.stackVec3[i16] = null;
- }
- _this19.stackVec3 = newArray12;
- }
- _this19.stackVec3[_this19.sizeVec3++] = v3;
- }
- if(mat33 != null) {
- var t006 = 1;
- var t016 = 0;
- var t026 = 0;
- var t106 = 0;
- var t116 = 1;
- var t126 = 0;
- var t206 = 0;
- var t216 = 0;
- var t226 = 1;
- mat33.e00 = t006;
- mat33.e01 = t016;
- mat33.e02 = t026;
- mat33.e10 = t106;
- mat33.e11 = t116;
- mat33.e12 = t126;
- mat33.e20 = t206;
- mat33.e21 = t216;
- mat33.e22 = t226;
- if(_this19.sizeMat3 == _this19.stackMat3.length) {
- var newLength13 = _this19.sizeMat3 << 1;
- var this14 = new Array(newLength13);
- var newArray13 = this14;
- var _g30 = 0;
- var _g114 = _this19.sizeMat3;
- while(_g30 < _g114) {
- var i17 = _g30++;
- newArray13[i17] = _this19.stackMat3[i17];
- _this19.stackMat3[i17] = null;
- }
- _this19.stackMat3 = newArray13;
- }
- _this19.stackMat3[_this19.sizeMat3++] = mat33;
- }
- if(mat43 != null) {
- var t007 = 1;
- var t017 = 0;
- var t027 = 0;
- var t033 = 0;
- var t107 = 0;
- var t117 = 1;
- var t127 = 0;
- var t133 = 0;
- var t207 = 0;
- var t217 = 0;
- var t227 = 1;
- var t233 = 0;
- var t303 = 0;
- var t313 = 0;
- var t323 = 0;
- var t333 = 1;
- mat43.e00 = t007;
- mat43.e01 = t017;
- mat43.e02 = t027;
- mat43.e03 = t033;
- mat43.e10 = t107;
- mat43.e11 = t117;
- mat43.e12 = t127;
- mat43.e13 = t133;
- mat43.e20 = t207;
- mat43.e21 = t217;
- mat43.e22 = t227;
- mat43.e23 = t233;
- mat43.e30 = t303;
- mat43.e31 = t313;
- mat43.e32 = t323;
- mat43.e33 = t333;
- if(_this19.sizeMat4 == _this19.stackMat4.length) {
- var newLength14 = _this19.sizeMat4 << 1;
- var this15 = new Array(newLength14);
- var newArray14 = this15;
- var _g37 = 0;
- var _g115 = _this19.sizeMat4;
- while(_g37 < _g115) {
- var i18 = _g37++;
- newArray14[i18] = _this19.stackMat4[i18];
- _this19.stackMat4[i18] = null;
- }
- _this19.stackMat4 = newArray14;
- }
- _this19.stackMat4[_this19.sizeMat4++] = mat43;
- }
- if(quat3 != null) {
- var tx10 = 0;
- var ty10 = 0;
- var tz10 = 0;
- var tw3 = 1;
- quat3.x = tx10;
- quat3.y = ty10;
- quat3.z = tz10;
- quat3.w = tw3;
- if(_this19.sizeQuat == _this19.stackQuat.length) {
- var newLength15 = _this19.sizeQuat << 1;
- var this16 = new Array(newLength15);
- var newArray15 = this16;
- var _g38 = 0;
- var _g116 = _this19.sizeQuat;
- while(_g38 < _g116) {
- var i19 = _g38++;
- newArray15[i19] = _this19.stackQuat[i19];
- _this19.stackQuat[i19] = null;
- }
- _this19.stackQuat = newArray15;
- }
- _this19.stackQuat[_this19.sizeQuat++] = quat3;
- }
- var _this20 = this._pool;
- var mat34 = null;
- var mat44 = null;
- var quat4 = null;
- if(v12 != null) {
- v12.zero();
- if(_this20.sizeVec3 == _this20.stackVec3.length) {
- var newLength16 = _this20.sizeVec3 << 1;
- var this17 = new Array(newLength16);
- var newArray16 = this17;
- var _g39 = 0;
- var _g117 = _this20.sizeVec3;
- while(_g39 < _g117) {
- var i20 = _g39++;
- newArray16[i20] = _this20.stackVec3[i20];
- _this20.stackVec3[i20] = null;
- }
- _this20.stackVec3 = newArray16;
- }
- _this20.stackVec3[_this20.sizeVec3++] = v12;
- }
- if(mat34 != null) {
- var t008 = 1;
- var t018 = 0;
- var t028 = 0;
- var t108 = 0;
- var t118 = 1;
- var t128 = 0;
- var t208 = 0;
- var t218 = 0;
- var t228 = 1;
- mat34.e00 = t008;
- mat34.e01 = t018;
- mat34.e02 = t028;
- mat34.e10 = t108;
- mat34.e11 = t118;
- mat34.e12 = t128;
- mat34.e20 = t208;
- mat34.e21 = t218;
- mat34.e22 = t228;
- if(_this20.sizeMat3 == _this20.stackMat3.length) {
- var newLength17 = _this20.sizeMat3 << 1;
- var this18 = new Array(newLength17);
- var newArray17 = this18;
- var _g40 = 0;
- var _g118 = _this20.sizeMat3;
- while(_g40 < _g118) {
- var i21 = _g40++;
- newArray17[i21] = _this20.stackMat3[i21];
- _this20.stackMat3[i21] = null;
- }
- _this20.stackMat3 = newArray17;
- }
- _this20.stackMat3[_this20.sizeMat3++] = mat34;
- }
- if(mat44 != null) {
- var t009 = 1;
- var t019 = 0;
- var t029 = 0;
- var t034 = 0;
- var t109 = 0;
- var t119 = 1;
- var t129 = 0;
- var t134 = 0;
- var t209 = 0;
- var t219 = 0;
- var t229 = 1;
- var t234 = 0;
- var t304 = 0;
- var t314 = 0;
- var t324 = 0;
- var t334 = 1;
- mat44.e00 = t009;
- mat44.e01 = t019;
- mat44.e02 = t029;
- mat44.e03 = t034;
- mat44.e10 = t109;
- mat44.e11 = t119;
- mat44.e12 = t129;
- mat44.e13 = t134;
- mat44.e20 = t209;
- mat44.e21 = t219;
- mat44.e22 = t229;
- mat44.e23 = t234;
- mat44.e30 = t304;
- mat44.e31 = t314;
- mat44.e32 = t324;
- mat44.e33 = t334;
- if(_this20.sizeMat4 == _this20.stackMat4.length) {
- var newLength18 = _this20.sizeMat4 << 1;
- var this19 = new Array(newLength18);
- var newArray18 = this19;
- var _g41 = 0;
- var _g119 = _this20.sizeMat4;
- while(_g41 < _g119) {
- var i22 = _g41++;
- newArray18[i22] = _this20.stackMat4[i22];
- _this20.stackMat4[i22] = null;
- }
- _this20.stackMat4 = newArray18;
- }
- _this20.stackMat4[_this20.sizeMat4++] = mat44;
- }
- if(quat4 != null) {
- var tx11 = 0;
- var ty11 = 0;
- var tz11 = 0;
- var tw4 = 1;
- quat4.x = tx11;
- quat4.y = ty11;
- quat4.z = tz11;
- quat4.w = tw4;
- if(_this20.sizeQuat == _this20.stackQuat.length) {
- var newLength19 = _this20.sizeQuat << 1;
- var this20 = new Array(newLength19);
- var newArray19 = this20;
- var _g42 = 0;
- var _g120 = _this20.sizeQuat;
- while(_g42 < _g120) {
- var i23 = _g42++;
- newArray19[i23] = _this20.stackQuat[i23];
- _this20.stackQuat[i23] = null;
- }
- _this20.stackQuat = newArray19;
- }
- _this20.stackQuat[_this20.sizeQuat++] = quat4;
- }
- var _this21 = this._pool;
- var mat35 = null;
- var mat45 = null;
- var quat5 = null;
- if(v13 != null) {
- v13.zero();
- if(_this21.sizeVec3 == _this21.stackVec3.length) {
- var newLength20 = _this21.sizeVec3 << 1;
- var this21 = new Array(newLength20);
- var newArray20 = this21;
- var _g43 = 0;
- var _g121 = _this21.sizeVec3;
- while(_g43 < _g121) {
- var i24 = _g43++;
- newArray20[i24] = _this21.stackVec3[i24];
- _this21.stackVec3[i24] = null;
- }
- _this21.stackVec3 = newArray20;
- }
- _this21.stackVec3[_this21.sizeVec3++] = v13;
- }
- if(mat35 != null) {
- var t0010 = 1;
- var t0110 = 0;
- var t0210 = 0;
- var t1010 = 0;
- var t1110 = 1;
- var t1210 = 0;
- var t2010 = 0;
- var t2110 = 0;
- var t2210 = 1;
- mat35.e00 = t0010;
- mat35.e01 = t0110;
- mat35.e02 = t0210;
- mat35.e10 = t1010;
- mat35.e11 = t1110;
- mat35.e12 = t1210;
- mat35.e20 = t2010;
- mat35.e21 = t2110;
- mat35.e22 = t2210;
- if(_this21.sizeMat3 == _this21.stackMat3.length) {
- var newLength21 = _this21.sizeMat3 << 1;
- var this22 = new Array(newLength21);
- var newArray21 = this22;
- var _g44 = 0;
- var _g122 = _this21.sizeMat3;
- while(_g44 < _g122) {
- var i25 = _g44++;
- newArray21[i25] = _this21.stackMat3[i25];
- _this21.stackMat3[i25] = null;
- }
- _this21.stackMat3 = newArray21;
- }
- _this21.stackMat3[_this21.sizeMat3++] = mat35;
- }
- if(mat45 != null) {
- var t0011 = 1;
- var t0111 = 0;
- var t0211 = 0;
- var t035 = 0;
- var t1011 = 0;
- var t1111 = 1;
- var t1211 = 0;
- var t135 = 0;
- var t2011 = 0;
- var t2111 = 0;
- var t2211 = 1;
- var t235 = 0;
- var t305 = 0;
- var t315 = 0;
- var t325 = 0;
- var t335 = 1;
- mat45.e00 = t0011;
- mat45.e01 = t0111;
- mat45.e02 = t0211;
- mat45.e03 = t035;
- mat45.e10 = t1011;
- mat45.e11 = t1111;
- mat45.e12 = t1211;
- mat45.e13 = t135;
- mat45.e20 = t2011;
- mat45.e21 = t2111;
- mat45.e22 = t2211;
- mat45.e23 = t235;
- mat45.e30 = t305;
- mat45.e31 = t315;
- mat45.e32 = t325;
- mat45.e33 = t335;
- if(_this21.sizeMat4 == _this21.stackMat4.length) {
- var newLength22 = _this21.sizeMat4 << 1;
- var this23 = new Array(newLength22);
- var newArray22 = this23;
- var _g45 = 0;
- var _g123 = _this21.sizeMat4;
- while(_g45 < _g123) {
- var i26 = _g45++;
- newArray22[i26] = _this21.stackMat4[i26];
- _this21.stackMat4[i26] = null;
- }
- _this21.stackMat4 = newArray22;
- }
- _this21.stackMat4[_this21.sizeMat4++] = mat45;
- }
- if(quat5 != null) {
- var tx12 = 0;
- var ty12 = 0;
- var tz12 = 0;
- var tw5 = 1;
- quat5.x = tx12;
- quat5.y = ty12;
- quat5.z = tz12;
- quat5.w = tw5;
- if(_this21.sizeQuat == _this21.stackQuat.length) {
- var newLength23 = _this21.sizeQuat << 1;
- var this24 = new Array(newLength23);
- var newArray23 = this24;
- var _g46 = 0;
- var _g124 = _this21.sizeQuat;
- while(_g46 < _g124) {
- var i27 = _g46++;
- newArray23[i27] = _this21.stackQuat[i27];
- _this21.stackQuat[i27] = null;
- }
- _this21.stackQuat = newArray23;
- }
- _this21.stackQuat[_this21.sizeQuat++] = quat5;
- }
- var _this22 = this._pool;
- var mat36 = null;
- var mat46 = null;
- var quat6 = null;
- if(normal != null) {
- normal.zero();
- if(_this22.sizeVec3 == _this22.stackVec3.length) {
- var newLength24 = _this22.sizeVec3 << 1;
- var this25 = new Array(newLength24);
- var newArray24 = this25;
- var _g47 = 0;
- var _g125 = _this22.sizeVec3;
- while(_g47 < _g125) {
- var i28 = _g47++;
- newArray24[i28] = _this22.stackVec3[i28];
- _this22.stackVec3[i28] = null;
- }
- _this22.stackVec3 = newArray24;
- }
- _this22.stackVec3[_this22.sizeVec3++] = normal;
- }
- if(mat36 != null) {
- var t0012 = 1;
- var t0112 = 0;
- var t0212 = 0;
- var t1012 = 0;
- var t1112 = 1;
- var t1212 = 0;
- var t2012 = 0;
- var t2112 = 0;
- var t2212 = 1;
- mat36.e00 = t0012;
- mat36.e01 = t0112;
- mat36.e02 = t0212;
- mat36.e10 = t1012;
- mat36.e11 = t1112;
- mat36.e12 = t1212;
- mat36.e20 = t2012;
- mat36.e21 = t2112;
- mat36.e22 = t2212;
- if(_this22.sizeMat3 == _this22.stackMat3.length) {
- var newLength25 = _this22.sizeMat3 << 1;
- var this26 = new Array(newLength25);
- var newArray25 = this26;
- var _g48 = 0;
- var _g126 = _this22.sizeMat3;
- while(_g48 < _g126) {
- var i29 = _g48++;
- newArray25[i29] = _this22.stackMat3[i29];
- _this22.stackMat3[i29] = null;
- }
- _this22.stackMat3 = newArray25;
- }
- _this22.stackMat3[_this22.sizeMat3++] = mat36;
- }
- if(mat46 != null) {
- var t0013 = 1;
- var t0113 = 0;
- var t0213 = 0;
- var t036 = 0;
- var t1013 = 0;
- var t1113 = 1;
- var t1213 = 0;
- var t136 = 0;
- var t2013 = 0;
- var t2113 = 0;
- var t2213 = 1;
- var t236 = 0;
- var t306 = 0;
- var t316 = 0;
- var t326 = 0;
- var t336 = 1;
- mat46.e00 = t0013;
- mat46.e01 = t0113;
- mat46.e02 = t0213;
- mat46.e03 = t036;
- mat46.e10 = t1013;
- mat46.e11 = t1113;
- mat46.e12 = t1213;
- mat46.e13 = t136;
- mat46.e20 = t2013;
- mat46.e21 = t2113;
- mat46.e22 = t2213;
- mat46.e23 = t236;
- mat46.e30 = t306;
- mat46.e31 = t316;
- mat46.e32 = t326;
- mat46.e33 = t336;
- if(_this22.sizeMat4 == _this22.stackMat4.length) {
- var newLength26 = _this22.sizeMat4 << 1;
- var this27 = new Array(newLength26);
- var newArray26 = this27;
- var _g49 = 0;
- var _g127 = _this22.sizeMat4;
- while(_g49 < _g127) {
- var i30 = _g49++;
- newArray26[i30] = _this22.stackMat4[i30];
- _this22.stackMat4[i30] = null;
- }
- _this22.stackMat4 = newArray26;
- }
- _this22.stackMat4[_this22.sizeMat4++] = mat46;
- }
- if(quat6 != null) {
- var tx13 = 0;
- var ty13 = 0;
- var tz13 = 0;
- var tw6 = 1;
- quat6.x = tx13;
- quat6.y = ty13;
- quat6.z = tz13;
- quat6.w = tw6;
- if(_this22.sizeQuat == _this22.stackQuat.length) {
- var newLength27 = _this22.sizeQuat << 1;
- var this28 = new Array(newLength27);
- var newArray27 = this28;
- var _g50 = 0;
- var _g128 = _this22.sizeQuat;
- while(_g50 < _g128) {
- var i31 = _g50++;
- newArray27[i31] = _this22.stackQuat[i31];
- _this22.stackQuat[i31] = null;
- }
- _this22.stackQuat = newArray27;
- }
- _this22.stackQuat[_this22.sizeQuat++] = quat6;
- }
- var _this23 = this._pool;
- var vec3 = null;
- var mat47 = null;
- var quat7 = null;
- if(vec3 != null) {
- vec3.zero();
- if(_this23.sizeVec3 == _this23.stackVec3.length) {
- var newLength28 = _this23.sizeVec3 << 1;
- var this29 = new Array(newLength28);
- var newArray28 = this29;
- var _g51 = 0;
- var _g129 = _this23.sizeVec3;
- while(_g51 < _g129) {
- var i32 = _g51++;
- newArray28[i32] = _this23.stackVec3[i32];
- _this23.stackVec3[i32] = null;
- }
- _this23.stackVec3 = newArray28;
- }
- _this23.stackVec3[_this23.sizeVec3++] = vec3;
- }
- if(m != null) {
- var t0014 = 1;
- var t0114 = 0;
- var t0214 = 0;
- var t1014 = 0;
- var t1114 = 1;
- var t1214 = 0;
- var t2014 = 0;
- var t2114 = 0;
- var t2214 = 1;
- m.e00 = t0014;
- m.e01 = t0114;
- m.e02 = t0214;
- m.e10 = t1014;
- m.e11 = t1114;
- m.e12 = t1214;
- m.e20 = t2014;
- m.e21 = t2114;
- m.e22 = t2214;
- if(_this23.sizeMat3 == _this23.stackMat3.length) {
- var newLength29 = _this23.sizeMat3 << 1;
- var this30 = new Array(newLength29);
- var newArray29 = this30;
- var _g52 = 0;
- var _g130 = _this23.sizeMat3;
- while(_g52 < _g130) {
- var i33 = _g52++;
- newArray29[i33] = _this23.stackMat3[i33];
- _this23.stackMat3[i33] = null;
- }
- _this23.stackMat3 = newArray29;
- }
- _this23.stackMat3[_this23.sizeMat3++] = m;
- }
- if(mat47 != null) {
- var t0015 = 1;
- var t0115 = 0;
- var t0215 = 0;
- var t037 = 0;
- var t1015 = 0;
- var t1115 = 1;
- var t1215 = 0;
- var t137 = 0;
- var t2015 = 0;
- var t2115 = 0;
- var t2215 = 1;
- var t237 = 0;
- var t307 = 0;
- var t317 = 0;
- var t327 = 0;
- var t337 = 1;
- mat47.e00 = t0015;
- mat47.e01 = t0115;
- mat47.e02 = t0215;
- mat47.e03 = t037;
- mat47.e10 = t1015;
- mat47.e11 = t1115;
- mat47.e12 = t1215;
- mat47.e13 = t137;
- mat47.e20 = t2015;
- mat47.e21 = t2115;
- mat47.e22 = t2215;
- mat47.e23 = t237;
- mat47.e30 = t307;
- mat47.e31 = t317;
- mat47.e32 = t327;
- mat47.e33 = t337;
- if(_this23.sizeMat4 == _this23.stackMat4.length) {
- var newLength30 = _this23.sizeMat4 << 1;
- var this31 = new Array(newLength30);
- var newArray30 = this31;
- var _g53 = 0;
- var _g131 = _this23.sizeMat4;
- while(_g53 < _g131) {
- var i34 = _g53++;
- newArray30[i34] = _this23.stackMat4[i34];
- _this23.stackMat4[i34] = null;
- }
- _this23.stackMat4 = newArray30;
- }
- _this23.stackMat4[_this23.sizeMat4++] = mat47;
- }
- if(quat7 != null) {
- var tx14 = 0;
- var ty14 = 0;
- var tz14 = 0;
- var tw7 = 1;
- quat7.x = tx14;
- quat7.y = ty14;
- quat7.z = tz14;
- quat7.w = tw7;
- if(_this23.sizeQuat == _this23.stackQuat.length) {
- var newLength31 = _this23.sizeQuat << 1;
- var this32 = new Array(newLength31);
- var newArray31 = this32;
- var _g54 = 0;
- var _g132 = _this23.sizeQuat;
- while(_g54 < _g132) {
- var i35 = _g54++;
- newArray31[i35] = _this23.stackQuat[i35];
- _this23.stackQuat[i35] = null;
- }
- _this23.stackQuat = newArray31;
- }
- _this23.stackQuat[_this23.sizeQuat++] = quat7;
- }
- var _this24 = this._pool;
- var mat37 = null;
- var mat48 = null;
- var quat8 = null;
- if(o != null) {
- o.zero();
- if(_this24.sizeVec3 == _this24.stackVec3.length) {
- var newLength32 = _this24.sizeVec3 << 1;
- var this33 = new Array(newLength32);
- var newArray32 = this33;
- var _g55 = 0;
- var _g133 = _this24.sizeVec3;
- while(_g55 < _g133) {
- var i36 = _g55++;
- newArray32[i36] = _this24.stackVec3[i36];
- _this24.stackVec3[i36] = null;
- }
- _this24.stackVec3 = newArray32;
- }
- _this24.stackVec3[_this24.sizeVec3++] = o;
- }
- if(mat37 != null) {
- var t0016 = 1;
- var t0116 = 0;
- var t0216 = 0;
- var t1016 = 0;
- var t1116 = 1;
- var t1216 = 0;
- var t2016 = 0;
- var t2116 = 0;
- var t2216 = 1;
- mat37.e00 = t0016;
- mat37.e01 = t0116;
- mat37.e02 = t0216;
- mat37.e10 = t1016;
- mat37.e11 = t1116;
- mat37.e12 = t1216;
- mat37.e20 = t2016;
- mat37.e21 = t2116;
- mat37.e22 = t2216;
- if(_this24.sizeMat3 == _this24.stackMat3.length) {
- var newLength33 = _this24.sizeMat3 << 1;
- var this34 = new Array(newLength33);
- var newArray33 = this34;
- var _g56 = 0;
- var _g134 = _this24.sizeMat3;
- while(_g56 < _g134) {
- var i37 = _g56++;
- newArray33[i37] = _this24.stackMat3[i37];
- _this24.stackMat3[i37] = null;
- }
- _this24.stackMat3 = newArray33;
- }
- _this24.stackMat3[_this24.sizeMat3++] = mat37;
- }
- if(mat48 != null) {
- var t0017 = 1;
- var t0117 = 0;
- var t0217 = 0;
- var t038 = 0;
- var t1017 = 0;
- var t1117 = 1;
- var t1217 = 0;
- var t138 = 0;
- var t2017 = 0;
- var t2117 = 0;
- var t2217 = 1;
- var t238 = 0;
- var t308 = 0;
- var t318 = 0;
- var t328 = 0;
- var t338 = 1;
- mat48.e00 = t0017;
- mat48.e01 = t0117;
- mat48.e02 = t0217;
- mat48.e03 = t038;
- mat48.e10 = t1017;
- mat48.e11 = t1117;
- mat48.e12 = t1217;
- mat48.e13 = t138;
- mat48.e20 = t2017;
- mat48.e21 = t2117;
- mat48.e22 = t2217;
- mat48.e23 = t238;
- mat48.e30 = t308;
- mat48.e31 = t318;
- mat48.e32 = t328;
- mat48.e33 = t338;
- if(_this24.sizeMat4 == _this24.stackMat4.length) {
- var newLength34 = _this24.sizeMat4 << 1;
- var this35 = new Array(newLength34);
- var newArray34 = this35;
- var _g57 = 0;
- var _g135 = _this24.sizeMat4;
- while(_g57 < _g135) {
- var i38 = _g57++;
- newArray34[i38] = _this24.stackMat4[i38];
- _this24.stackMat4[i38] = null;
- }
- _this24.stackMat4 = newArray34;
- }
- _this24.stackMat4[_this24.sizeMat4++] = mat48;
- }
- if(quat8 != null) {
- var tx15 = 0;
- var ty15 = 0;
- var tz15 = 0;
- var tw8 = 1;
- quat8.x = tx15;
- quat8.y = ty15;
- quat8.z = tz15;
- quat8.w = tw8;
- if(_this24.sizeQuat == _this24.stackQuat.length) {
- var newLength35 = _this24.sizeQuat << 1;
- var this36 = new Array(newLength35);
- var newArray35 = this36;
- var _g58 = 0;
- var _g136 = _this24.sizeQuat;
- while(_g58 < _g136) {
- var i39 = _g58++;
- newArray35[i39] = _this24.stackQuat[i39];
- _this24.stackQuat[i39] = null;
- }
- _this24.stackQuat = newArray35;
- }
- _this24.stackQuat[_this24.sizeQuat++] = quat8;
- }
- break;
- }
- }
- if(d.drawAabbs) {
- var aabb = s._aabb;
- var color = style.aabbColor;
- var _this25 = this._pool;
- var min = _this25.sizeVec3 == 0 ? new oimo.common.Vec3() : _this25.stackVec3[--_this25.sizeVec3];
- var _this26 = this._pool;
- var max = _this26.sizeVec3 == 0 ? new oimo.common.Vec3() : _this26.stackVec3[--_this26.sizeVec3];
- var v15 = min;
- v15.x = aabb._minX;
- v15.y = aabb._minY;
- v15.z = aabb._minZ;
- var v16 = max;
- v16.x = aabb._maxX;
- v16.y = aabb._maxY;
- v16.z = aabb._maxZ;
- d.aabb(min,max,color);
- var _this27 = this._pool;
- var mat38 = null;
- var mat49 = null;
- var quat9 = null;
- if(min != null) {
- min.zero();
- if(_this27.sizeVec3 == _this27.stackVec3.length) {
- var newLength36 = _this27.sizeVec3 << 1;
- var this37 = new Array(newLength36);
- var newArray36 = this37;
- var _g59 = 0;
- var _g137 = _this27.sizeVec3;
- while(_g59 < _g137) {
- var i40 = _g59++;
- newArray36[i40] = _this27.stackVec3[i40];
- _this27.stackVec3[i40] = null;
- }
- _this27.stackVec3 = newArray36;
- }
- _this27.stackVec3[_this27.sizeVec3++] = min;
- }
- if(mat38 != null) {
- var t0018 = 1;
- var t0118 = 0;
- var t0218 = 0;
- var t1018 = 0;
- var t1118 = 1;
- var t1218 = 0;
- var t2018 = 0;
- var t2118 = 0;
- var t2218 = 1;
- mat38.e00 = t0018;
- mat38.e01 = t0118;
- mat38.e02 = t0218;
- mat38.e10 = t1018;
- mat38.e11 = t1118;
- mat38.e12 = t1218;
- mat38.e20 = t2018;
- mat38.e21 = t2118;
- mat38.e22 = t2218;
- if(_this27.sizeMat3 == _this27.stackMat3.length) {
- var newLength37 = _this27.sizeMat3 << 1;
- var this38 = new Array(newLength37);
- var newArray37 = this38;
- var _g60 = 0;
- var _g138 = _this27.sizeMat3;
- while(_g60 < _g138) {
- var i41 = _g60++;
- newArray37[i41] = _this27.stackMat3[i41];
- _this27.stackMat3[i41] = null;
- }
- _this27.stackMat3 = newArray37;
- }
- _this27.stackMat3[_this27.sizeMat3++] = mat38;
- }
- if(mat49 != null) {
- var t0019 = 1;
- var t0119 = 0;
- var t0219 = 0;
- var t039 = 0;
- var t1019 = 0;
- var t1119 = 1;
- var t1219 = 0;
- var t139 = 0;
- var t2019 = 0;
- var t2119 = 0;
- var t2219 = 1;
- var t239 = 0;
- var t309 = 0;
- var t319 = 0;
- var t329 = 0;
- var t339 = 1;
- mat49.e00 = t0019;
- mat49.e01 = t0119;
- mat49.e02 = t0219;
- mat49.e03 = t039;
- mat49.e10 = t1019;
- mat49.e11 = t1119;
- mat49.e12 = t1219;
- mat49.e13 = t139;
- mat49.e20 = t2019;
- mat49.e21 = t2119;
- mat49.e22 = t2219;
- mat49.e23 = t239;
- mat49.e30 = t309;
- mat49.e31 = t319;
- mat49.e32 = t329;
- mat49.e33 = t339;
- if(_this27.sizeMat4 == _this27.stackMat4.length) {
- var newLength38 = _this27.sizeMat4 << 1;
- var this39 = new Array(newLength38);
- var newArray38 = this39;
- var _g61 = 0;
- var _g139 = _this27.sizeMat4;
- while(_g61 < _g139) {
- var i42 = _g61++;
- newArray38[i42] = _this27.stackMat4[i42];
- _this27.stackMat4[i42] = null;
- }
- _this27.stackMat4 = newArray38;
- }
- _this27.stackMat4[_this27.sizeMat4++] = mat49;
- }
- if(quat9 != null) {
- var tx16 = 0;
- var ty16 = 0;
- var tz16 = 0;
- var tw9 = 1;
- quat9.x = tx16;
- quat9.y = ty16;
- quat9.z = tz16;
- quat9.w = tw9;
- if(_this27.sizeQuat == _this27.stackQuat.length) {
- var newLength39 = _this27.sizeQuat << 1;
- var this40 = new Array(newLength39);
- var newArray39 = this40;
- var _g62 = 0;
- var _g140 = _this27.sizeQuat;
- while(_g62 < _g140) {
- var i43 = _g62++;
- newArray39[i43] = _this27.stackQuat[i43];
- _this27.stackQuat[i43] = null;
- }
- _this27.stackQuat = newArray39;
- }
- _this27.stackQuat[_this27.sizeQuat++] = quat9;
- }
- var _this28 = this._pool;
- var mat39 = null;
- var mat410 = null;
- var quat10 = null;
- if(max != null) {
- max.zero();
- if(_this28.sizeVec3 == _this28.stackVec3.length) {
- var newLength40 = _this28.sizeVec3 << 1;
- var this41 = new Array(newLength40);
- var newArray40 = this41;
- var _g63 = 0;
- var _g141 = _this28.sizeVec3;
- while(_g63 < _g141) {
- var i44 = _g63++;
- newArray40[i44] = _this28.stackVec3[i44];
- _this28.stackVec3[i44] = null;
- }
- _this28.stackVec3 = newArray40;
- }
- _this28.stackVec3[_this28.sizeVec3++] = max;
- }
- if(mat39 != null) {
- var t0020 = 1;
- var t0120 = 0;
- var t0220 = 0;
- var t1020 = 0;
- var t1120 = 1;
- var t1220 = 0;
- var t2020 = 0;
- var t2120 = 0;
- var t2220 = 1;
- mat39.e00 = t0020;
- mat39.e01 = t0120;
- mat39.e02 = t0220;
- mat39.e10 = t1020;
- mat39.e11 = t1120;
- mat39.e12 = t1220;
- mat39.e20 = t2020;
- mat39.e21 = t2120;
- mat39.e22 = t2220;
- if(_this28.sizeMat3 == _this28.stackMat3.length) {
- var newLength41 = _this28.sizeMat3 << 1;
- var this42 = new Array(newLength41);
- var newArray41 = this42;
- var _g64 = 0;
- var _g142 = _this28.sizeMat3;
- while(_g64 < _g142) {
- var i45 = _g64++;
- newArray41[i45] = _this28.stackMat3[i45];
- _this28.stackMat3[i45] = null;
- }
- _this28.stackMat3 = newArray41;
- }
- _this28.stackMat3[_this28.sizeMat3++] = mat39;
- }
- if(mat410 != null) {
- var t0021 = 1;
- var t0121 = 0;
- var t0221 = 0;
- var t0310 = 0;
- var t1021 = 0;
- var t1121 = 1;
- var t1221 = 0;
- var t1310 = 0;
- var t2021 = 0;
- var t2121 = 0;
- var t2221 = 1;
- var t2310 = 0;
- var t3010 = 0;
- var t3110 = 0;
- var t3210 = 0;
- var t3310 = 1;
- mat410.e00 = t0021;
- mat410.e01 = t0121;
- mat410.e02 = t0221;
- mat410.e03 = t0310;
- mat410.e10 = t1021;
- mat410.e11 = t1121;
- mat410.e12 = t1221;
- mat410.e13 = t1310;
- mat410.e20 = t2021;
- mat410.e21 = t2121;
- mat410.e22 = t2221;
- mat410.e23 = t2310;
- mat410.e30 = t3010;
- mat410.e31 = t3110;
- mat410.e32 = t3210;
- mat410.e33 = t3310;
- if(_this28.sizeMat4 == _this28.stackMat4.length) {
- var newLength42 = _this28.sizeMat4 << 1;
- var this43 = new Array(newLength42);
- var newArray42 = this43;
- var _g65 = 0;
- var _g143 = _this28.sizeMat4;
- while(_g65 < _g143) {
- var i46 = _g65++;
- newArray42[i46] = _this28.stackMat4[i46];
- _this28.stackMat4[i46] = null;
- }
- _this28.stackMat4 = newArray42;
- }
- _this28.stackMat4[_this28.sizeMat4++] = mat410;
- }
- if(quat10 != null) {
- var tx17 = 0;
- var ty17 = 0;
- var tz17 = 0;
- var tw10 = 1;
- quat10.x = tx17;
- quat10.y = ty17;
- quat10.z = tz17;
- quat10.w = tw10;
- if(_this28.sizeQuat == _this28.stackQuat.length) {
- var newLength43 = _this28.sizeQuat << 1;
- var this44 = new Array(newLength43);
- var newArray43 = this44;
- var _g66 = 0;
- var _g144 = _this28.sizeQuat;
- while(_g66 < _g144) {
- var i47 = _g66++;
- newArray43[i47] = _this28.stackQuat[i47];
- _this28.stackQuat[i47] = null;
- }
- _this28.stackQuat = newArray43;
- }
- _this28.stackQuat[_this28.sizeQuat++] = quat10;
- }
- }
- s = n1;
- }
- r = n;
- }
- }
- _drawConstraints(d) {
- var style = d.style;
- if(d.drawPairs || d.drawContacts) {
- var c = this._contactManager._contactList;
- while(c != null) {
- var n = c._next;
- if(d.drawPairs) {
- var color = style.pairColor;
- var _this = this._pool;
- var v1 = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
- var _this1 = this._pool;
- var v2 = _this1.sizeVec3 == 0 ? new oimo.common.Vec3() : _this1.stackVec3[--_this1.sizeVec3];
- var v = v1;
- v.x = c._s1._transform._positionX;
- v.y = c._s1._transform._positionY;
- v.z = c._s1._transform._positionZ;
- var v3 = v2;
- v3.x = c._s2._transform._positionX;
- v3.y = c._s2._transform._positionY;
- v3.z = c._s2._transform._positionZ;
- d.line(v1,v2,color);
- var _this2 = this._pool;
- var mat3 = null;
- var mat4 = null;
- var quat = null;
- if(v1 != null) {
- v1.zero();
- if(_this2.sizeVec3 == _this2.stackVec3.length) {
- var newLength = _this2.sizeVec3 << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = _this2.sizeVec3;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = _this2.stackVec3[i];
- _this2.stackVec3[i] = null;
- }
- _this2.stackVec3 = newArray;
- }
- _this2.stackVec3[_this2.sizeVec3++] = v1;
- }
- if(mat3 != null) {
- var t00 = 1;
- var t01 = 0;
- var t02 = 0;
- var t10 = 0;
- var t11 = 1;
- var t12 = 0;
- var t20 = 0;
- var t21 = 0;
- var t22 = 1;
- mat3.e00 = t00;
- mat3.e01 = t01;
- mat3.e02 = t02;
- mat3.e10 = t10;
- mat3.e11 = t11;
- mat3.e12 = t12;
- mat3.e20 = t20;
- mat3.e21 = t21;
- mat3.e22 = t22;
- if(_this2.sizeMat3 == _this2.stackMat3.length) {
- var newLength1 = _this2.sizeMat3 << 1;
- var this2 = new Array(newLength1);
- var newArray1 = this2;
- var _g2 = 0;
- var _g11 = _this2.sizeMat3;
- while(_g2 < _g11) {
- var i1 = _g2++;
- newArray1[i1] = _this2.stackMat3[i1];
- _this2.stackMat3[i1] = null;
- }
- _this2.stackMat3 = newArray1;
- }
- _this2.stackMat3[_this2.sizeMat3++] = mat3;
- }
- if(mat4 != null) {
- var t001 = 1;
- var t011 = 0;
- var t021 = 0;
- var t03 = 0;
- var t101 = 0;
- var t111 = 1;
- var t121 = 0;
- var t13 = 0;
- var t201 = 0;
- var t211 = 0;
- var t221 = 1;
- var t23 = 0;
- var t30 = 0;
- var t31 = 0;
- var t32 = 0;
- var t33 = 1;
- mat4.e00 = t001;
- mat4.e01 = t011;
- mat4.e02 = t021;
- mat4.e03 = t03;
- mat4.e10 = t101;
- mat4.e11 = t111;
- mat4.e12 = t121;
- mat4.e13 = t13;
- mat4.e20 = t201;
- mat4.e21 = t211;
- mat4.e22 = t221;
- mat4.e23 = t23;
- mat4.e30 = t30;
- mat4.e31 = t31;
- mat4.e32 = t32;
- mat4.e33 = t33;
- if(_this2.sizeMat4 == _this2.stackMat4.length) {
- var newLength2 = _this2.sizeMat4 << 1;
- var this3 = new Array(newLength2);
- var newArray2 = this3;
- var _g3 = 0;
- var _g12 = _this2.sizeMat4;
- while(_g3 < _g12) {
- var i2 = _g3++;
- newArray2[i2] = _this2.stackMat4[i2];
- _this2.stackMat4[i2] = null;
- }
- _this2.stackMat4 = newArray2;
- }
- _this2.stackMat4[_this2.sizeMat4++] = mat4;
- }
- if(quat != null) {
- var tx = 0;
- var ty = 0;
- var tz = 0;
- var tw = 1;
- quat.x = tx;
- quat.y = ty;
- quat.z = tz;
- quat.w = tw;
- if(_this2.sizeQuat == _this2.stackQuat.length) {
- var newLength3 = _this2.sizeQuat << 1;
- var this4 = new Array(newLength3);
- var newArray3 = this4;
- var _g4 = 0;
- var _g13 = _this2.sizeQuat;
- while(_g4 < _g13) {
- var i3 = _g4++;
- newArray3[i3] = _this2.stackQuat[i3];
- _this2.stackQuat[i3] = null;
- }
- _this2.stackQuat = newArray3;
- }
- _this2.stackQuat[_this2.sizeQuat++] = quat;
- }
- var _this3 = this._pool;
- var mat31 = null;
- var mat41 = null;
- var quat1 = null;
- if(v2 != null) {
- v2.zero();
- if(_this3.sizeVec3 == _this3.stackVec3.length) {
- var newLength4 = _this3.sizeVec3 << 1;
- var this5 = new Array(newLength4);
- var newArray4 = this5;
- var _g5 = 0;
- var _g14 = _this3.sizeVec3;
- while(_g5 < _g14) {
- var i4 = _g5++;
- newArray4[i4] = _this3.stackVec3[i4];
- _this3.stackVec3[i4] = null;
- }
- _this3.stackVec3 = newArray4;
- }
- _this3.stackVec3[_this3.sizeVec3++] = v2;
- }
- if(mat31 != null) {
- var t002 = 1;
- var t012 = 0;
- var t022 = 0;
- var t102 = 0;
- var t112 = 1;
- var t122 = 0;
- var t202 = 0;
- var t212 = 0;
- var t222 = 1;
- mat31.e00 = t002;
- mat31.e01 = t012;
- mat31.e02 = t022;
- mat31.e10 = t102;
- mat31.e11 = t112;
- mat31.e12 = t122;
- mat31.e20 = t202;
- mat31.e21 = t212;
- mat31.e22 = t222;
- if(_this3.sizeMat3 == _this3.stackMat3.length) {
- var newLength5 = _this3.sizeMat3 << 1;
- var this6 = new Array(newLength5);
- var newArray5 = this6;
- var _g6 = 0;
- var _g15 = _this3.sizeMat3;
- while(_g6 < _g15) {
- var i5 = _g6++;
- newArray5[i5] = _this3.stackMat3[i5];
- _this3.stackMat3[i5] = null;
- }
- _this3.stackMat3 = newArray5;
- }
- _this3.stackMat3[_this3.sizeMat3++] = mat31;
- }
- if(mat41 != null) {
- var t003 = 1;
- var t013 = 0;
- var t023 = 0;
- var t031 = 0;
- var t103 = 0;
- var t113 = 1;
- var t123 = 0;
- var t131 = 0;
- var t203 = 0;
- var t213 = 0;
- var t223 = 1;
- var t231 = 0;
- var t301 = 0;
- var t311 = 0;
- var t321 = 0;
- var t331 = 1;
- mat41.e00 = t003;
- mat41.e01 = t013;
- mat41.e02 = t023;
- mat41.e03 = t031;
- mat41.e10 = t103;
- mat41.e11 = t113;
- mat41.e12 = t123;
- mat41.e13 = t131;
- mat41.e20 = t203;
- mat41.e21 = t213;
- mat41.e22 = t223;
- mat41.e23 = t231;
- mat41.e30 = t301;
- mat41.e31 = t311;
- mat41.e32 = t321;
- mat41.e33 = t331;
- if(_this3.sizeMat4 == _this3.stackMat4.length) {
- var newLength6 = _this3.sizeMat4 << 1;
- var this7 = new Array(newLength6);
- var newArray6 = this7;
- var _g7 = 0;
- var _g16 = _this3.sizeMat4;
- while(_g7 < _g16) {
- var i6 = _g7++;
- newArray6[i6] = _this3.stackMat4[i6];
- _this3.stackMat4[i6] = null;
- }
- _this3.stackMat4 = newArray6;
- }
- _this3.stackMat4[_this3.sizeMat4++] = mat41;
- }
- if(quat1 != null) {
- var tx1 = 0;
- var ty1 = 0;
- var tz1 = 0;
- var tw1 = 1;
- quat1.x = tx1;
- quat1.y = ty1;
- quat1.z = tz1;
- quat1.w = tw1;
- if(_this3.sizeQuat == _this3.stackQuat.length) {
- var newLength7 = _this3.sizeQuat << 1;
- var this8 = new Array(newLength7);
- var newArray7 = this8;
- var _g8 = 0;
- var _g17 = _this3.sizeQuat;
- while(_g8 < _g17) {
- var i7 = _g8++;
- newArray7[i7] = _this3.stackQuat[i7];
- _this3.stackQuat[i7] = null;
- }
- _this3.stackQuat = newArray7;
- }
- _this3.stackQuat[_this3.sizeQuat++] = quat1;
- }
- }
- if(d.drawContacts) {
- var cc = c._contactConstraint;
- var ps = c._contactConstraint._manifold._points;
- var _g9 = 0;
- var _g18 = c._contactConstraint._manifold._numPoints;
- while(_g9 < _g18) {
- var i8 = _g9++;
- var p = ps[i8];
- var style1 = d.style;
- var tf1 = cc._s1._transform;
- var tf2 = cc._s2._transform;
- var _this4 = this._pool;
- var pos1 = _this4.sizeVec3 == 0 ? new oimo.common.Vec3() : _this4.stackVec3[--_this4.sizeVec3];
- var _this5 = this._pool;
- var pos2 = _this5.sizeVec3 == 0 ? new oimo.common.Vec3() : _this5.stackVec3[--_this5.sizeVec3];
- var _this6 = this._pool;
- var normal = _this6.sizeVec3 == 0 ? new oimo.common.Vec3() : _this6.stackVec3[--_this6.sizeVec3];
- var _this7 = this._pool;
- var tangent = _this7.sizeVec3 == 0 ? new oimo.common.Vec3() : _this7.stackVec3[--_this7.sizeVec3];
- var _this8 = this._pool;
- var binormal = _this8.sizeVec3 == 0 ? new oimo.common.Vec3() : _this8.stackVec3[--_this8.sizeVec3];
- var v4 = pos1;
- v4.x = p._pos1X;
- v4.y = p._pos1Y;
- v4.z = p._pos1Z;
- var v5 = pos2;
- v5.x = p._pos2X;
- v5.y = p._pos2Y;
- v5.z = p._pos2Z;
- var v6 = normal;
- v6.x = cc._manifold._normalX;
- v6.y = cc._manifold._normalY;
- v6.z = cc._manifold._normalZ;
- var v7 = tangent;
- v7.x = cc._manifold._tangentX;
- v7.y = cc._manifold._tangentY;
- v7.z = cc._manifold._tangentZ;
- var v8 = binormal;
- v8.x = cc._manifold._binormalX;
- v8.y = cc._manifold._binormalY;
- v8.z = cc._manifold._binormalZ;
- if(p._disabled) {
- d.point(pos1,style1.disabledContactColor);
- d.point(pos2,style1.disabledContactColor);
- d.line(pos1,pos2,style1.disabledContactColor);
- } else if(p._warmStarted) {
- var color1;
- switch(p._id & 3) {
- case 0:
- color1 = style1.contactColor;
- break;
- case 1:
- color1 = style1.contactColor2;
- break;
- case 2:
- color1 = style1.contactColor3;
- break;
- default:
- color1 = style1.contactColor4;
- }
- d.point(pos1,color1);
- d.point(pos2,color1);
- d.line(pos1,pos2,style1.contactColor);
- } else {
- d.point(pos1,style1.newContactColor);
- d.point(pos2,style1.newContactColor);
- d.line(pos1,pos2,style1.newContactColor);
- }
- pos2.x = pos1.x;
- pos2.y = pos1.y;
- pos2.z = pos1.z;
- var _this9 = pos2;
- var s = style1.contactNormalLength;
- var tx2 = _this9.x + normal.x * s;
- var ty2 = _this9.y + normal.y * s;
- var tz2 = _this9.z + normal.z * s;
- _this9.x = tx2;
- _this9.y = ty2;
- _this9.z = tz2;
- d.line(pos1,pos2,style1.contactNormalColor);
- if(d.drawContactBases) {
- pos2.x = pos1.x;
- pos2.y = pos1.y;
- pos2.z = pos1.z;
- var _this10 = pos2;
- var s1 = style1.contactTangentLength;
- var tx3 = _this10.x + tangent.x * s1;
- var ty3 = _this10.y + tangent.y * s1;
- var tz3 = _this10.z + tangent.z * s1;
- _this10.x = tx3;
- _this10.y = ty3;
- _this10.z = tz3;
- d.line(pos1,pos2,style1.contactTangentColor);
- pos2.x = pos1.x;
- pos2.y = pos1.y;
- pos2.z = pos1.z;
- var _this11 = pos2;
- var s2 = style1.contactBinormalLength;
- var tx4 = _this11.x + binormal.x * s2;
- var ty4 = _this11.y + binormal.y * s2;
- var tz4 = _this11.z + binormal.z * s2;
- _this11.x = tx4;
- _this11.y = ty4;
- _this11.z = tz4;
- d.line(pos1,pos2,style1.contactBinormalColor);
- }
- var _this12 = this._pool;
- var mat32 = null;
- var mat42 = null;
- var quat2 = null;
- if(pos1 != null) {
- pos1.zero();
- if(_this12.sizeVec3 == _this12.stackVec3.length) {
- var newLength8 = _this12.sizeVec3 << 1;
- var this9 = new Array(newLength8);
- var newArray8 = this9;
- var _g10 = 0;
- var _g19 = _this12.sizeVec3;
- while(_g10 < _g19) {
- var i9 = _g10++;
- newArray8[i9] = _this12.stackVec3[i9];
- _this12.stackVec3[i9] = null;
- }
- _this12.stackVec3 = newArray8;
- }
- _this12.stackVec3[_this12.sizeVec3++] = pos1;
- }
- if(mat32 != null) {
- var t004 = 1;
- var t014 = 0;
- var t024 = 0;
- var t104 = 0;
- var t114 = 1;
- var t124 = 0;
- var t204 = 0;
- var t214 = 0;
- var t224 = 1;
- mat32.e00 = t004;
- mat32.e01 = t014;
- mat32.e02 = t024;
- mat32.e10 = t104;
- mat32.e11 = t114;
- mat32.e12 = t124;
- mat32.e20 = t204;
- mat32.e21 = t214;
- mat32.e22 = t224;
- if(_this12.sizeMat3 == _this12.stackMat3.length) {
- var newLength9 = _this12.sizeMat3 << 1;
- var this10 = new Array(newLength9);
- var newArray9 = this10;
- var _g20 = 0;
- var _g110 = _this12.sizeMat3;
- while(_g20 < _g110) {
- var i10 = _g20++;
- newArray9[i10] = _this12.stackMat3[i10];
- _this12.stackMat3[i10] = null;
- }
- _this12.stackMat3 = newArray9;
- }
- _this12.stackMat3[_this12.sizeMat3++] = mat32;
- }
- if(mat42 != null) {
- var t005 = 1;
- var t015 = 0;
- var t025 = 0;
- var t032 = 0;
- var t105 = 0;
- var t115 = 1;
- var t125 = 0;
- var t132 = 0;
- var t205 = 0;
- var t215 = 0;
- var t225 = 1;
- var t232 = 0;
- var t302 = 0;
- var t312 = 0;
- var t322 = 0;
- var t332 = 1;
- mat42.e00 = t005;
- mat42.e01 = t015;
- mat42.e02 = t025;
- mat42.e03 = t032;
- mat42.e10 = t105;
- mat42.e11 = t115;
- mat42.e12 = t125;
- mat42.e13 = t132;
- mat42.e20 = t205;
- mat42.e21 = t215;
- mat42.e22 = t225;
- mat42.e23 = t232;
- mat42.e30 = t302;
- mat42.e31 = t312;
- mat42.e32 = t322;
- mat42.e33 = t332;
- if(_this12.sizeMat4 == _this12.stackMat4.length) {
- var newLength10 = _this12.sizeMat4 << 1;
- var this11 = new Array(newLength10);
- var newArray10 = this11;
- var _g21 = 0;
- var _g111 = _this12.sizeMat4;
- while(_g21 < _g111) {
- var i11 = _g21++;
- newArray10[i11] = _this12.stackMat4[i11];
- _this12.stackMat4[i11] = null;
- }
- _this12.stackMat4 = newArray10;
- }
- _this12.stackMat4[_this12.sizeMat4++] = mat42;
- }
- if(quat2 != null) {
- var tx5 = 0;
- var ty5 = 0;
- var tz5 = 0;
- var tw2 = 1;
- quat2.x = tx5;
- quat2.y = ty5;
- quat2.z = tz5;
- quat2.w = tw2;
- if(_this12.sizeQuat == _this12.stackQuat.length) {
- var newLength11 = _this12.sizeQuat << 1;
- var this12 = new Array(newLength11);
- var newArray11 = this12;
- var _g22 = 0;
- var _g112 = _this12.sizeQuat;
- while(_g22 < _g112) {
- var i12 = _g22++;
- newArray11[i12] = _this12.stackQuat[i12];
- _this12.stackQuat[i12] = null;
- }
- _this12.stackQuat = newArray11;
- }
- _this12.stackQuat[_this12.sizeQuat++] = quat2;
- }
- var _this13 = this._pool;
- var mat33 = null;
- var mat43 = null;
- var quat3 = null;
- if(pos2 != null) {
- pos2.zero();
- if(_this13.sizeVec3 == _this13.stackVec3.length) {
- var newLength12 = _this13.sizeVec3 << 1;
- var this13 = new Array(newLength12);
- var newArray12 = this13;
- var _g23 = 0;
- var _g113 = _this13.sizeVec3;
- while(_g23 < _g113) {
- var i13 = _g23++;
- newArray12[i13] = _this13.stackVec3[i13];
- _this13.stackVec3[i13] = null;
- }
- _this13.stackVec3 = newArray12;
- }
- _this13.stackVec3[_this13.sizeVec3++] = pos2;
- }
- if(mat33 != null) {
- var t006 = 1;
- var t016 = 0;
- var t026 = 0;
- var t106 = 0;
- var t116 = 1;
- var t126 = 0;
- var t206 = 0;
- var t216 = 0;
- var t226 = 1;
- mat33.e00 = t006;
- mat33.e01 = t016;
- mat33.e02 = t026;
- mat33.e10 = t106;
- mat33.e11 = t116;
- mat33.e12 = t126;
- mat33.e20 = t206;
- mat33.e21 = t216;
- mat33.e22 = t226;
- if(_this13.sizeMat3 == _this13.stackMat3.length) {
- var newLength13 = _this13.sizeMat3 << 1;
- var this14 = new Array(newLength13);
- var newArray13 = this14;
- var _g24 = 0;
- var _g114 = _this13.sizeMat3;
- while(_g24 < _g114) {
- var i14 = _g24++;
- newArray13[i14] = _this13.stackMat3[i14];
- _this13.stackMat3[i14] = null;
- }
- _this13.stackMat3 = newArray13;
- }
- _this13.stackMat3[_this13.sizeMat3++] = mat33;
- }
- if(mat43 != null) {
- var t007 = 1;
- var t017 = 0;
- var t027 = 0;
- var t033 = 0;
- var t107 = 0;
- var t117 = 1;
- var t127 = 0;
- var t133 = 0;
- var t207 = 0;
- var t217 = 0;
- var t227 = 1;
- var t233 = 0;
- var t303 = 0;
- var t313 = 0;
- var t323 = 0;
- var t333 = 1;
- mat43.e00 = t007;
- mat43.e01 = t017;
- mat43.e02 = t027;
- mat43.e03 = t033;
- mat43.e10 = t107;
- mat43.e11 = t117;
- mat43.e12 = t127;
- mat43.e13 = t133;
- mat43.e20 = t207;
- mat43.e21 = t217;
- mat43.e22 = t227;
- mat43.e23 = t233;
- mat43.e30 = t303;
- mat43.e31 = t313;
- mat43.e32 = t323;
- mat43.e33 = t333;
- if(_this13.sizeMat4 == _this13.stackMat4.length) {
- var newLength14 = _this13.sizeMat4 << 1;
- var this15 = new Array(newLength14);
- var newArray14 = this15;
- var _g25 = 0;
- var _g115 = _this13.sizeMat4;
- while(_g25 < _g115) {
- var i15 = _g25++;
- newArray14[i15] = _this13.stackMat4[i15];
- _this13.stackMat4[i15] = null;
- }
- _this13.stackMat4 = newArray14;
- }
- _this13.stackMat4[_this13.sizeMat4++] = mat43;
- }
- if(quat3 != null) {
- var tx6 = 0;
- var ty6 = 0;
- var tz6 = 0;
- var tw3 = 1;
- quat3.x = tx6;
- quat3.y = ty6;
- quat3.z = tz6;
- quat3.w = tw3;
- if(_this13.sizeQuat == _this13.stackQuat.length) {
- var newLength15 = _this13.sizeQuat << 1;
- var this16 = new Array(newLength15);
- var newArray15 = this16;
- var _g26 = 0;
- var _g116 = _this13.sizeQuat;
- while(_g26 < _g116) {
- var i16 = _g26++;
- newArray15[i16] = _this13.stackQuat[i16];
- _this13.stackQuat[i16] = null;
- }
- _this13.stackQuat = newArray15;
- }
- _this13.stackQuat[_this13.sizeQuat++] = quat3;
- }
- var _this14 = this._pool;
- var mat34 = null;
- var mat44 = null;
- var quat4 = null;
- if(normal != null) {
- normal.zero();
- if(_this14.sizeVec3 == _this14.stackVec3.length) {
- var newLength16 = _this14.sizeVec3 << 1;
- var this17 = new Array(newLength16);
- var newArray16 = this17;
- var _g27 = 0;
- var _g117 = _this14.sizeVec3;
- while(_g27 < _g117) {
- var i17 = _g27++;
- newArray16[i17] = _this14.stackVec3[i17];
- _this14.stackVec3[i17] = null;
- }
- _this14.stackVec3 = newArray16;
- }
- _this14.stackVec3[_this14.sizeVec3++] = normal;
- }
- if(mat34 != null) {
- var t008 = 1;
- var t018 = 0;
- var t028 = 0;
- var t108 = 0;
- var t118 = 1;
- var t128 = 0;
- var t208 = 0;
- var t218 = 0;
- var t228 = 1;
- mat34.e00 = t008;
- mat34.e01 = t018;
- mat34.e02 = t028;
- mat34.e10 = t108;
- mat34.e11 = t118;
- mat34.e12 = t128;
- mat34.e20 = t208;
- mat34.e21 = t218;
- mat34.e22 = t228;
- if(_this14.sizeMat3 == _this14.stackMat3.length) {
- var newLength17 = _this14.sizeMat3 << 1;
- var this18 = new Array(newLength17);
- var newArray17 = this18;
- var _g28 = 0;
- var _g118 = _this14.sizeMat3;
- while(_g28 < _g118) {
- var i18 = _g28++;
- newArray17[i18] = _this14.stackMat3[i18];
- _this14.stackMat3[i18] = null;
- }
- _this14.stackMat3 = newArray17;
- }
- _this14.stackMat3[_this14.sizeMat3++] = mat34;
- }
- if(mat44 != null) {
- var t009 = 1;
- var t019 = 0;
- var t029 = 0;
- var t034 = 0;
- var t109 = 0;
- var t119 = 1;
- var t129 = 0;
- var t134 = 0;
- var t209 = 0;
- var t219 = 0;
- var t229 = 1;
- var t234 = 0;
- var t304 = 0;
- var t314 = 0;
- var t324 = 0;
- var t334 = 1;
- mat44.e00 = t009;
- mat44.e01 = t019;
- mat44.e02 = t029;
- mat44.e03 = t034;
- mat44.e10 = t109;
- mat44.e11 = t119;
- mat44.e12 = t129;
- mat44.e13 = t134;
- mat44.e20 = t209;
- mat44.e21 = t219;
- mat44.e22 = t229;
- mat44.e23 = t234;
- mat44.e30 = t304;
- mat44.e31 = t314;
- mat44.e32 = t324;
- mat44.e33 = t334;
- if(_this14.sizeMat4 == _this14.stackMat4.length) {
- var newLength18 = _this14.sizeMat4 << 1;
- var this19 = new Array(newLength18);
- var newArray18 = this19;
- var _g29 = 0;
- var _g119 = _this14.sizeMat4;
- while(_g29 < _g119) {
- var i19 = _g29++;
- newArray18[i19] = _this14.stackMat4[i19];
- _this14.stackMat4[i19] = null;
- }
- _this14.stackMat4 = newArray18;
- }
- _this14.stackMat4[_this14.sizeMat4++] = mat44;
- }
- if(quat4 != null) {
- var tx7 = 0;
- var ty7 = 0;
- var tz7 = 0;
- var tw4 = 1;
- quat4.x = tx7;
- quat4.y = ty7;
- quat4.z = tz7;
- quat4.w = tw4;
- if(_this14.sizeQuat == _this14.stackQuat.length) {
- var newLength19 = _this14.sizeQuat << 1;
- var this20 = new Array(newLength19);
- var newArray19 = this20;
- var _g30 = 0;
- var _g120 = _this14.sizeQuat;
- while(_g30 < _g120) {
- var i20 = _g30++;
- newArray19[i20] = _this14.stackQuat[i20];
- _this14.stackQuat[i20] = null;
- }
- _this14.stackQuat = newArray19;
- }
- _this14.stackQuat[_this14.sizeQuat++] = quat4;
- }
- var _this15 = this._pool;
- var mat35 = null;
- var mat45 = null;
- var quat5 = null;
- if(tangent != null) {
- tangent.zero();
- if(_this15.sizeVec3 == _this15.stackVec3.length) {
- var newLength20 = _this15.sizeVec3 << 1;
- var this21 = new Array(newLength20);
- var newArray20 = this21;
- var _g31 = 0;
- var _g121 = _this15.sizeVec3;
- while(_g31 < _g121) {
- var i21 = _g31++;
- newArray20[i21] = _this15.stackVec3[i21];
- _this15.stackVec3[i21] = null;
- }
- _this15.stackVec3 = newArray20;
- }
- _this15.stackVec3[_this15.sizeVec3++] = tangent;
- }
- if(mat35 != null) {
- var t0010 = 1;
- var t0110 = 0;
- var t0210 = 0;
- var t1010 = 0;
- var t1110 = 1;
- var t1210 = 0;
- var t2010 = 0;
- var t2110 = 0;
- var t2210 = 1;
- mat35.e00 = t0010;
- mat35.e01 = t0110;
- mat35.e02 = t0210;
- mat35.e10 = t1010;
- mat35.e11 = t1110;
- mat35.e12 = t1210;
- mat35.e20 = t2010;
- mat35.e21 = t2110;
- mat35.e22 = t2210;
- if(_this15.sizeMat3 == _this15.stackMat3.length) {
- var newLength21 = _this15.sizeMat3 << 1;
- var this22 = new Array(newLength21);
- var newArray21 = this22;
- var _g32 = 0;
- var _g122 = _this15.sizeMat3;
- while(_g32 < _g122) {
- var i22 = _g32++;
- newArray21[i22] = _this15.stackMat3[i22];
- _this15.stackMat3[i22] = null;
- }
- _this15.stackMat3 = newArray21;
- }
- _this15.stackMat3[_this15.sizeMat3++] = mat35;
- }
- if(mat45 != null) {
- var t0011 = 1;
- var t0111 = 0;
- var t0211 = 0;
- var t035 = 0;
- var t1011 = 0;
- var t1111 = 1;
- var t1211 = 0;
- var t135 = 0;
- var t2011 = 0;
- var t2111 = 0;
- var t2211 = 1;
- var t235 = 0;
- var t305 = 0;
- var t315 = 0;
- var t325 = 0;
- var t335 = 1;
- mat45.e00 = t0011;
- mat45.e01 = t0111;
- mat45.e02 = t0211;
- mat45.e03 = t035;
- mat45.e10 = t1011;
- mat45.e11 = t1111;
- mat45.e12 = t1211;
- mat45.e13 = t135;
- mat45.e20 = t2011;
- mat45.e21 = t2111;
- mat45.e22 = t2211;
- mat45.e23 = t235;
- mat45.e30 = t305;
- mat45.e31 = t315;
- mat45.e32 = t325;
- mat45.e33 = t335;
- if(_this15.sizeMat4 == _this15.stackMat4.length) {
- var newLength22 = _this15.sizeMat4 << 1;
- var this23 = new Array(newLength22);
- var newArray22 = this23;
- var _g33 = 0;
- var _g123 = _this15.sizeMat4;
- while(_g33 < _g123) {
- var i23 = _g33++;
- newArray22[i23] = _this15.stackMat4[i23];
- _this15.stackMat4[i23] = null;
- }
- _this15.stackMat4 = newArray22;
- }
- _this15.stackMat4[_this15.sizeMat4++] = mat45;
- }
- if(quat5 != null) {
- var tx8 = 0;
- var ty8 = 0;
- var tz8 = 0;
- var tw5 = 1;
- quat5.x = tx8;
- quat5.y = ty8;
- quat5.z = tz8;
- quat5.w = tw5;
- if(_this15.sizeQuat == _this15.stackQuat.length) {
- var newLength23 = _this15.sizeQuat << 1;
- var this24 = new Array(newLength23);
- var newArray23 = this24;
- var _g34 = 0;
- var _g124 = _this15.sizeQuat;
- while(_g34 < _g124) {
- var i24 = _g34++;
- newArray23[i24] = _this15.stackQuat[i24];
- _this15.stackQuat[i24] = null;
- }
- _this15.stackQuat = newArray23;
- }
- _this15.stackQuat[_this15.sizeQuat++] = quat5;
- }
- var _this16 = this._pool;
- var mat36 = null;
- var mat46 = null;
- var quat6 = null;
- if(binormal != null) {
- binormal.zero();
- if(_this16.sizeVec3 == _this16.stackVec3.length) {
- var newLength24 = _this16.sizeVec3 << 1;
- var this25 = new Array(newLength24);
- var newArray24 = this25;
- var _g35 = 0;
- var _g125 = _this16.sizeVec3;
- while(_g35 < _g125) {
- var i25 = _g35++;
- newArray24[i25] = _this16.stackVec3[i25];
- _this16.stackVec3[i25] = null;
- }
- _this16.stackVec3 = newArray24;
- }
- _this16.stackVec3[_this16.sizeVec3++] = binormal;
- }
- if(mat36 != null) {
- var t0012 = 1;
- var t0112 = 0;
- var t0212 = 0;
- var t1012 = 0;
- var t1112 = 1;
- var t1212 = 0;
- var t2012 = 0;
- var t2112 = 0;
- var t2212 = 1;
- mat36.e00 = t0012;
- mat36.e01 = t0112;
- mat36.e02 = t0212;
- mat36.e10 = t1012;
- mat36.e11 = t1112;
- mat36.e12 = t1212;
- mat36.e20 = t2012;
- mat36.e21 = t2112;
- mat36.e22 = t2212;
- if(_this16.sizeMat3 == _this16.stackMat3.length) {
- var newLength25 = _this16.sizeMat3 << 1;
- var this26 = new Array(newLength25);
- var newArray25 = this26;
- var _g36 = 0;
- var _g126 = _this16.sizeMat3;
- while(_g36 < _g126) {
- var i26 = _g36++;
- newArray25[i26] = _this16.stackMat3[i26];
- _this16.stackMat3[i26] = null;
- }
- _this16.stackMat3 = newArray25;
- }
- _this16.stackMat3[_this16.sizeMat3++] = mat36;
- }
- if(mat46 != null) {
- var t0013 = 1;
- var t0113 = 0;
- var t0213 = 0;
- var t036 = 0;
- var t1013 = 0;
- var t1113 = 1;
- var t1213 = 0;
- var t136 = 0;
- var t2013 = 0;
- var t2113 = 0;
- var t2213 = 1;
- var t236 = 0;
- var t306 = 0;
- var t316 = 0;
- var t326 = 0;
- var t336 = 1;
- mat46.e00 = t0013;
- mat46.e01 = t0113;
- mat46.e02 = t0213;
- mat46.e03 = t036;
- mat46.e10 = t1013;
- mat46.e11 = t1113;
- mat46.e12 = t1213;
- mat46.e13 = t136;
- mat46.e20 = t2013;
- mat46.e21 = t2113;
- mat46.e22 = t2213;
- mat46.e23 = t236;
- mat46.e30 = t306;
- mat46.e31 = t316;
- mat46.e32 = t326;
- mat46.e33 = t336;
- if(_this16.sizeMat4 == _this16.stackMat4.length) {
- var newLength26 = _this16.sizeMat4 << 1;
- var this27 = new Array(newLength26);
- var newArray26 = this27;
- var _g37 = 0;
- var _g127 = _this16.sizeMat4;
- while(_g37 < _g127) {
- var i27 = _g37++;
- newArray26[i27] = _this16.stackMat4[i27];
- _this16.stackMat4[i27] = null;
- }
- _this16.stackMat4 = newArray26;
- }
- _this16.stackMat4[_this16.sizeMat4++] = mat46;
- }
- if(quat6 != null) {
- var tx9 = 0;
- var ty9 = 0;
- var tz9 = 0;
- var tw6 = 1;
- quat6.x = tx9;
- quat6.y = ty9;
- quat6.z = tz9;
- quat6.w = tw6;
- if(_this16.sizeQuat == _this16.stackQuat.length) {
- var newLength27 = _this16.sizeQuat << 1;
- var this28 = new Array(newLength27);
- var newArray27 = this28;
- var _g38 = 0;
- var _g128 = _this16.sizeQuat;
- while(_g38 < _g128) {
- var i28 = _g38++;
- newArray27[i28] = _this16.stackQuat[i28];
- _this16.stackQuat[i28] = null;
- }
- _this16.stackQuat = newArray27;
- }
- _this16.stackQuat[_this16.sizeQuat++] = quat6;
- }
- }
- }
- c = n;
- }
- }
- if(d.drawJoints) {
- var j = this._jointList;
- while(j != null) {
- var n1 = j._next;
- var _this17 = this._pool;
- var p1 = _this17.sizeVec3 == 0 ? new oimo.common.Vec3() : _this17.stackVec3[--_this17.sizeVec3];
- var _this18 = this._pool;
- var p2 = _this18.sizeVec3 == 0 ? new oimo.common.Vec3() : _this18.stackVec3[--_this18.sizeVec3];
- var v9 = p1;
- v9.x = j._b1._transform._positionX;
- v9.y = j._b1._transform._positionY;
- v9.z = j._b1._transform._positionZ;
- var v10 = p2;
- v10.x = j._b2._transform._positionX;
- v10.y = j._b2._transform._positionY;
- v10.z = j._b2._transform._positionZ;
- var _this19 = this._pool;
- var anchor1 = _this19.sizeVec3 == 0 ? new oimo.common.Vec3() : _this19.stackVec3[--_this19.sizeVec3];
- var _this20 = this._pool;
- var anchor2 = _this20.sizeVec3 == 0 ? new oimo.common.Vec3() : _this20.stackVec3[--_this20.sizeVec3];
- var _this21 = this._pool;
- var basisX1 = _this21.sizeVec3 == 0 ? new oimo.common.Vec3() : _this21.stackVec3[--_this21.sizeVec3];
- var _this22 = this._pool;
- var basisY1 = _this22.sizeVec3 == 0 ? new oimo.common.Vec3() : _this22.stackVec3[--_this22.sizeVec3];
- var _this23 = this._pool;
- var basisZ1 = _this23.sizeVec3 == 0 ? new oimo.common.Vec3() : _this23.stackVec3[--_this23.sizeVec3];
- var _this24 = this._pool;
- var basisX2 = _this24.sizeVec3 == 0 ? new oimo.common.Vec3() : _this24.stackVec3[--_this24.sizeVec3];
- var _this25 = this._pool;
- var basisY2 = _this25.sizeVec3 == 0 ? new oimo.common.Vec3() : _this25.stackVec3[--_this25.sizeVec3];
- var _this26 = this._pool;
- var basisZ2 = _this26.sizeVec3 == 0 ? new oimo.common.Vec3() : _this26.stackVec3[--_this26.sizeVec3];
- var v11 = anchor1;
- v11.x = j._anchor1X;
- v11.y = j._anchor1Y;
- v11.z = j._anchor1Z;
- var v12 = anchor2;
- v12.x = j._anchor2X;
- v12.y = j._anchor2Y;
- v12.z = j._anchor2Z;
- var v13 = basisX1;
- v13.x = j._basisX1X;
- v13.y = j._basisX1Y;
- v13.z = j._basisX1Z;
- var v14 = basisY1;
- v14.x = j._basisY1X;
- v14.y = j._basisY1Y;
- v14.z = j._basisY1Z;
- var v15 = basisZ1;
- v15.x = j._basisZ1X;
- v15.y = j._basisZ1Y;
- v15.z = j._basisZ1Z;
- var v16 = basisX2;
- v16.x = j._basisX2X;
- v16.y = j._basisX2Y;
- v16.z = j._basisX2Z;
- var v17 = basisY2;
- v17.x = j._basisY2X;
- v17.y = j._basisY2Y;
- v17.z = j._basisY2Z;
- var v18 = basisZ2;
- v18.x = j._basisZ2X;
- v18.y = j._basisZ2Y;
- v18.z = j._basisZ2Z;
- d.line(p1,anchor1,d.style.jointLineColor);
- d.line(p2,anchor2,d.style.jointLineColor);
- if(d.drawJointLimits) {
- switch(j._type) {
- case 0:
- break;
- case 1:
- var radius = d.style.jointRotationalConstraintRadius;
- var color2 = d.style.jointLineColor;
- var lm = j._lm;
- this._drawRotationalLimit(d,anchor1,basisY1,basisZ1,basisY2,radius,lm.lowerLimit,lm.upperLimit,color2);
- break;
- case 2:
- var j1 = j;
- var radius1 = d.style.jointRotationalConstraintRadius;
- var color3 = d.style.jointLineColor;
- var rlm = j1._rotLm;
- var tlm = j1._translLm;
- this._drawRotationalLimit(d,anchor2,basisY1,basisZ1,basisY2,radius1,rlm.lowerLimit,rlm.upperLimit,color3);
- this._drawTranslationalLimit(d,anchor1,basisX1,tlm.lowerLimit,tlm.upperLimit,color3);
- break;
- case 3:
- var radius2 = d.style.jointRotationalConstraintRadius;
- var color4 = d.style.jointLineColor;
- var lm1 = j._lm;
- this._drawTranslationalLimit(d,anchor1,basisX1,lm1.lowerLimit,lm1.upperLimit,color4);
- break;
- case 4:
- var j2 = j;
- var radius3 = d.style.jointRotationalConstraintRadius;
- var color5 = d.style.jointLineColor;
- var lm11 = j2._lm1;
- var lm2 = j2._lm2;
- this._drawRotationalLimit(d,anchor1,basisY1,basisZ1,basisY1,radius3,j2._angleX - lm11.upperLimit,j2._angleX - lm11.lowerLimit,color5);
- this._drawRotationalLimit(d,anchor2,basisX2,basisY2,basisX2,radius3,lm2.lowerLimit - j2._angleZ,lm2.upperLimit - j2._angleZ,color5);
- break;
- case 5:
- var j3 = j;
- var radius4 = d.style.jointRotationalConstraintRadius;
- var color6 = d.style.jointLineColor;
- var lm3 = j3._twistLm;
- this._drawRotationalLimit(d,anchor2,basisY2,basisZ2,basisY2,radius4,lm3.lowerLimit - j3._twistAngle,lm3.upperLimit - j3._twistAngle,color6);
- this._drawEllipseOnSphere(d,anchor1,basisX1,basisY1,basisZ1,j3._maxSwingAngle1,j3._maxSwingAngle2,radius4,color6);
- var _this27 = this._pool;
- var _this28 = _this27.sizeVec3 == 0 ? new oimo.common.Vec3() : _this27.stackVec3[--_this27.sizeVec3];
- _this28.x = anchor2.x;
- _this28.y = anchor2.y;
- _this28.z = anchor2.z;
- var _this29 = _this28;
- var tx10 = _this29.x + basisX2.x * radius4;
- var ty10 = _this29.y + basisX2.y * radius4;
- var tz10 = _this29.z + basisX2.z * radius4;
- _this29.x = tx10;
- _this29.y = ty10;
- _this29.z = tz10;
- var to = _this29;
- d.line(anchor2,to,color6);
- var _this30 = this._pool;
- var mat37 = null;
- var mat47 = null;
- var quat7 = null;
- if(to != null) {
- to.zero();
- if(_this30.sizeVec3 == _this30.stackVec3.length) {
- var newLength28 = _this30.sizeVec3 << 1;
- var this29 = new Array(newLength28);
- var newArray28 = this29;
- var _g39 = 0;
- var _g129 = _this30.sizeVec3;
- while(_g39 < _g129) {
- var i29 = _g39++;
- newArray28[i29] = _this30.stackVec3[i29];
- _this30.stackVec3[i29] = null;
- }
- _this30.stackVec3 = newArray28;
- }
- _this30.stackVec3[_this30.sizeVec3++] = to;
- }
- if(mat37 != null) {
- var t0014 = 1;
- var t0114 = 0;
- var t0214 = 0;
- var t1014 = 0;
- var t1114 = 1;
- var t1214 = 0;
- var t2014 = 0;
- var t2114 = 0;
- var t2214 = 1;
- mat37.e00 = t0014;
- mat37.e01 = t0114;
- mat37.e02 = t0214;
- mat37.e10 = t1014;
- mat37.e11 = t1114;
- mat37.e12 = t1214;
- mat37.e20 = t2014;
- mat37.e21 = t2114;
- mat37.e22 = t2214;
- if(_this30.sizeMat3 == _this30.stackMat3.length) {
- var newLength29 = _this30.sizeMat3 << 1;
- var this30 = new Array(newLength29);
- var newArray29 = this30;
- var _g40 = 0;
- var _g130 = _this30.sizeMat3;
- while(_g40 < _g130) {
- var i30 = _g40++;
- newArray29[i30] = _this30.stackMat3[i30];
- _this30.stackMat3[i30] = null;
- }
- _this30.stackMat3 = newArray29;
- }
- _this30.stackMat3[_this30.sizeMat3++] = mat37;
- }
- if(mat47 != null) {
- var t0015 = 1;
- var t0115 = 0;
- var t0215 = 0;
- var t037 = 0;
- var t1015 = 0;
- var t1115 = 1;
- var t1215 = 0;
- var t137 = 0;
- var t2015 = 0;
- var t2115 = 0;
- var t2215 = 1;
- var t237 = 0;
- var t307 = 0;
- var t317 = 0;
- var t327 = 0;
- var t337 = 1;
- mat47.e00 = t0015;
- mat47.e01 = t0115;
- mat47.e02 = t0215;
- mat47.e03 = t037;
- mat47.e10 = t1015;
- mat47.e11 = t1115;
- mat47.e12 = t1215;
- mat47.e13 = t137;
- mat47.e20 = t2015;
- mat47.e21 = t2115;
- mat47.e22 = t2215;
- mat47.e23 = t237;
- mat47.e30 = t307;
- mat47.e31 = t317;
- mat47.e32 = t327;
- mat47.e33 = t337;
- if(_this30.sizeMat4 == _this30.stackMat4.length) {
- var newLength30 = _this30.sizeMat4 << 1;
- var this31 = new Array(newLength30);
- var newArray30 = this31;
- var _g41 = 0;
- var _g131 = _this30.sizeMat4;
- while(_g41 < _g131) {
- var i31 = _g41++;
- newArray30[i31] = _this30.stackMat4[i31];
- _this30.stackMat4[i31] = null;
- }
- _this30.stackMat4 = newArray30;
- }
- _this30.stackMat4[_this30.sizeMat4++] = mat47;
- }
- if(quat7 != null) {
- var tx11 = 0;
- var ty11 = 0;
- var tz11 = 0;
- var tw7 = 1;
- quat7.x = tx11;
- quat7.y = ty11;
- quat7.z = tz11;
- quat7.w = tw7;
- if(_this30.sizeQuat == _this30.stackQuat.length) {
- var newLength31 = _this30.sizeQuat << 1;
- var this32 = new Array(newLength31);
- var newArray31 = this32;
- var _g42 = 0;
- var _g132 = _this30.sizeQuat;
- while(_g42 < _g132) {
- var i32 = _g42++;
- newArray31[i32] = _this30.stackQuat[i32];
- _this30.stackQuat[i32] = null;
- }
- _this30.stackQuat = newArray31;
- }
- _this30.stackQuat[_this30.sizeQuat++] = quat7;
- }
- break;
- case 6:
- var j4 = j;
- var radius5 = d.style.jointRotationalConstraintRadius;
- var color7 = d.style.jointLineColor;
- var txlm = j4._translLms[0];
- var tylm = j4._translLms[1];
- var tzlm = j4._translLms[2];
- var rxlm = j4._rotLms[0];
- var rylm = j4._rotLms[1];
- var rzlm = j4._rotLms[2];
- this._drawTranslationalLimit3D(d,anchor1,basisX1,basisY1,basisZ1,txlm,tylm,tzlm,color7);
- var _this31 = this._pool;
- var rotYAxis = _this31.sizeVec3 == 0 ? new oimo.common.Vec3() : _this31.stackVec3[--_this31.sizeVec3];
- var v19 = rotYAxis;
- v19.x = j4._axisYX;
- v19.y = j4._axisYY;
- v19.z = j4._axisYZ;
- var _this32 = this._pool;
- var _this33 = _this32.sizeVec3 == 0 ? new oimo.common.Vec3() : _this32.stackVec3[--_this32.sizeVec3];
- _this33.x = basisX1.x;
- _this33.y = basisX1.y;
- _this33.z = basisX1.z;
- var rotYBasisX = _this33;
- var _this34 = this._pool;
- var _this35 = _this34.sizeVec3 == 0 ? new oimo.common.Vec3() : _this34.stackVec3[--_this34.sizeVec3];
- _this35.x = basisX1.x;
- _this35.y = basisX1.y;
- _this35.z = basisX1.z;
- var _this36 = _this35;
- var tx12 = _this36.y * rotYAxis.z - _this36.z * rotYAxis.y;
- var ty12 = _this36.z * rotYAxis.x - _this36.x * rotYAxis.z;
- var tz12 = _this36.x * rotYAxis.y - _this36.y * rotYAxis.x;
- _this36.x = tx12;
- _this36.y = ty12;
- _this36.z = tz12;
- var rotYBasisY = _this36;
- this._drawRotationalLimit(d,anchor2,basisY1,basisZ1,basisY1,radius5,j4._angleX - rxlm.upperLimit,j4._angleX - rxlm.lowerLimit,color7);
- this._drawRotationalLimit(d,anchor2,rotYBasisX,rotYBasisY,rotYBasisX,radius5,rylm.lowerLimit - j4._angleY,rylm.upperLimit - j4._angleY,color7);
- this._drawRotationalLimit(d,anchor2,basisX2,basisY2,basisX2,radius5,rzlm.lowerLimit - j4._angleZ,rzlm.upperLimit - j4._angleZ,color7);
- break;
- }
- }
- d.line(anchor1,anchor2,d.style.jointErrorColor);
- var _this37 = this._pool;
- var mat38 = null;
- var mat48 = null;
- var quat8 = null;
- if(p1 != null) {
- p1.zero();
- if(_this37.sizeVec3 == _this37.stackVec3.length) {
- var newLength32 = _this37.sizeVec3 << 1;
- var this33 = new Array(newLength32);
- var newArray32 = this33;
- var _g43 = 0;
- var _g133 = _this37.sizeVec3;
- while(_g43 < _g133) {
- var i33 = _g43++;
- newArray32[i33] = _this37.stackVec3[i33];
- _this37.stackVec3[i33] = null;
- }
- _this37.stackVec3 = newArray32;
- }
- _this37.stackVec3[_this37.sizeVec3++] = p1;
- }
- if(mat38 != null) {
- var t0016 = 1;
- var t0116 = 0;
- var t0216 = 0;
- var t1016 = 0;
- var t1116 = 1;
- var t1216 = 0;
- var t2016 = 0;
- var t2116 = 0;
- var t2216 = 1;
- mat38.e00 = t0016;
- mat38.e01 = t0116;
- mat38.e02 = t0216;
- mat38.e10 = t1016;
- mat38.e11 = t1116;
- mat38.e12 = t1216;
- mat38.e20 = t2016;
- mat38.e21 = t2116;
- mat38.e22 = t2216;
- if(_this37.sizeMat3 == _this37.stackMat3.length) {
- var newLength33 = _this37.sizeMat3 << 1;
- var this34 = new Array(newLength33);
- var newArray33 = this34;
- var _g44 = 0;
- var _g134 = _this37.sizeMat3;
- while(_g44 < _g134) {
- var i34 = _g44++;
- newArray33[i34] = _this37.stackMat3[i34];
- _this37.stackMat3[i34] = null;
- }
- _this37.stackMat3 = newArray33;
- }
- _this37.stackMat3[_this37.sizeMat3++] = mat38;
- }
- if(mat48 != null) {
- var t0017 = 1;
- var t0117 = 0;
- var t0217 = 0;
- var t038 = 0;
- var t1017 = 0;
- var t1117 = 1;
- var t1217 = 0;
- var t138 = 0;
- var t2017 = 0;
- var t2117 = 0;
- var t2217 = 1;
- var t238 = 0;
- var t308 = 0;
- var t318 = 0;
- var t328 = 0;
- var t338 = 1;
- mat48.e00 = t0017;
- mat48.e01 = t0117;
- mat48.e02 = t0217;
- mat48.e03 = t038;
- mat48.e10 = t1017;
- mat48.e11 = t1117;
- mat48.e12 = t1217;
- mat48.e13 = t138;
- mat48.e20 = t2017;
- mat48.e21 = t2117;
- mat48.e22 = t2217;
- mat48.e23 = t238;
- mat48.e30 = t308;
- mat48.e31 = t318;
- mat48.e32 = t328;
- mat48.e33 = t338;
- if(_this37.sizeMat4 == _this37.stackMat4.length) {
- var newLength34 = _this37.sizeMat4 << 1;
- var this35 = new Array(newLength34);
- var newArray34 = this35;
- var _g45 = 0;
- var _g135 = _this37.sizeMat4;
- while(_g45 < _g135) {
- var i35 = _g45++;
- newArray34[i35] = _this37.stackMat4[i35];
- _this37.stackMat4[i35] = null;
- }
- _this37.stackMat4 = newArray34;
- }
- _this37.stackMat4[_this37.sizeMat4++] = mat48;
- }
- if(quat8 != null) {
- var tx13 = 0;
- var ty13 = 0;
- var tz13 = 0;
- var tw8 = 1;
- quat8.x = tx13;
- quat8.y = ty13;
- quat8.z = tz13;
- quat8.w = tw8;
- if(_this37.sizeQuat == _this37.stackQuat.length) {
- var newLength35 = _this37.sizeQuat << 1;
- var this36 = new Array(newLength35);
- var newArray35 = this36;
- var _g46 = 0;
- var _g136 = _this37.sizeQuat;
- while(_g46 < _g136) {
- var i36 = _g46++;
- newArray35[i36] = _this37.stackQuat[i36];
- _this37.stackQuat[i36] = null;
- }
- _this37.stackQuat = newArray35;
- }
- _this37.stackQuat[_this37.sizeQuat++] = quat8;
- }
- var _this38 = this._pool;
- var mat39 = null;
- var mat49 = null;
- var quat9 = null;
- if(p2 != null) {
- p2.zero();
- if(_this38.sizeVec3 == _this38.stackVec3.length) {
- var newLength36 = _this38.sizeVec3 << 1;
- var this37 = new Array(newLength36);
- var newArray36 = this37;
- var _g47 = 0;
- var _g137 = _this38.sizeVec3;
- while(_g47 < _g137) {
- var i37 = _g47++;
- newArray36[i37] = _this38.stackVec3[i37];
- _this38.stackVec3[i37] = null;
- }
- _this38.stackVec3 = newArray36;
- }
- _this38.stackVec3[_this38.sizeVec3++] = p2;
- }
- if(mat39 != null) {
- var t0018 = 1;
- var t0118 = 0;
- var t0218 = 0;
- var t1018 = 0;
- var t1118 = 1;
- var t1218 = 0;
- var t2018 = 0;
- var t2118 = 0;
- var t2218 = 1;
- mat39.e00 = t0018;
- mat39.e01 = t0118;
- mat39.e02 = t0218;
- mat39.e10 = t1018;
- mat39.e11 = t1118;
- mat39.e12 = t1218;
- mat39.e20 = t2018;
- mat39.e21 = t2118;
- mat39.e22 = t2218;
- if(_this38.sizeMat3 == _this38.stackMat3.length) {
- var newLength37 = _this38.sizeMat3 << 1;
- var this38 = new Array(newLength37);
- var newArray37 = this38;
- var _g48 = 0;
- var _g138 = _this38.sizeMat3;
- while(_g48 < _g138) {
- var i38 = _g48++;
- newArray37[i38] = _this38.stackMat3[i38];
- _this38.stackMat3[i38] = null;
- }
- _this38.stackMat3 = newArray37;
- }
- _this38.stackMat3[_this38.sizeMat3++] = mat39;
- }
- if(mat49 != null) {
- var t0019 = 1;
- var t0119 = 0;
- var t0219 = 0;
- var t039 = 0;
- var t1019 = 0;
- var t1119 = 1;
- var t1219 = 0;
- var t139 = 0;
- var t2019 = 0;
- var t2119 = 0;
- var t2219 = 1;
- var t239 = 0;
- var t309 = 0;
- var t319 = 0;
- var t329 = 0;
- var t339 = 1;
- mat49.e00 = t0019;
- mat49.e01 = t0119;
- mat49.e02 = t0219;
- mat49.e03 = t039;
- mat49.e10 = t1019;
- mat49.e11 = t1119;
- mat49.e12 = t1219;
- mat49.e13 = t139;
- mat49.e20 = t2019;
- mat49.e21 = t2119;
- mat49.e22 = t2219;
- mat49.e23 = t239;
- mat49.e30 = t309;
- mat49.e31 = t319;
- mat49.e32 = t329;
- mat49.e33 = t339;
- if(_this38.sizeMat4 == _this38.stackMat4.length) {
- var newLength38 = _this38.sizeMat4 << 1;
- var this39 = new Array(newLength38);
- var newArray38 = this39;
- var _g49 = 0;
- var _g139 = _this38.sizeMat4;
- while(_g49 < _g139) {
- var i39 = _g49++;
- newArray38[i39] = _this38.stackMat4[i39];
- _this38.stackMat4[i39] = null;
- }
- _this38.stackMat4 = newArray38;
- }
- _this38.stackMat4[_this38.sizeMat4++] = mat49;
- }
- if(quat9 != null) {
- var tx14 = 0;
- var ty14 = 0;
- var tz14 = 0;
- var tw9 = 1;
- quat9.x = tx14;
- quat9.y = ty14;
- quat9.z = tz14;
- quat9.w = tw9;
- if(_this38.sizeQuat == _this38.stackQuat.length) {
- var newLength39 = _this38.sizeQuat << 1;
- var this40 = new Array(newLength39);
- var newArray39 = this40;
- var _g50 = 0;
- var _g140 = _this38.sizeQuat;
- while(_g50 < _g140) {
- var i40 = _g50++;
- newArray39[i40] = _this38.stackQuat[i40];
- _this38.stackQuat[i40] = null;
- }
- _this38.stackQuat = newArray39;
- }
- _this38.stackQuat[_this38.sizeQuat++] = quat9;
- }
- var _this39 = this._pool;
- var mat310 = null;
- var mat410 = null;
- var quat10 = null;
- if(anchor1 != null) {
- anchor1.zero();
- if(_this39.sizeVec3 == _this39.stackVec3.length) {
- var newLength40 = _this39.sizeVec3 << 1;
- var this41 = new Array(newLength40);
- var newArray40 = this41;
- var _g51 = 0;
- var _g141 = _this39.sizeVec3;
- while(_g51 < _g141) {
- var i41 = _g51++;
- newArray40[i41] = _this39.stackVec3[i41];
- _this39.stackVec3[i41] = null;
- }
- _this39.stackVec3 = newArray40;
- }
- _this39.stackVec3[_this39.sizeVec3++] = anchor1;
- }
- if(mat310 != null) {
- var t0020 = 1;
- var t0120 = 0;
- var t0220 = 0;
- var t1020 = 0;
- var t1120 = 1;
- var t1220 = 0;
- var t2020 = 0;
- var t2120 = 0;
- var t2220 = 1;
- mat310.e00 = t0020;
- mat310.e01 = t0120;
- mat310.e02 = t0220;
- mat310.e10 = t1020;
- mat310.e11 = t1120;
- mat310.e12 = t1220;
- mat310.e20 = t2020;
- mat310.e21 = t2120;
- mat310.e22 = t2220;
- if(_this39.sizeMat3 == _this39.stackMat3.length) {
- var newLength41 = _this39.sizeMat3 << 1;
- var this42 = new Array(newLength41);
- var newArray41 = this42;
- var _g52 = 0;
- var _g142 = _this39.sizeMat3;
- while(_g52 < _g142) {
- var i42 = _g52++;
- newArray41[i42] = _this39.stackMat3[i42];
- _this39.stackMat3[i42] = null;
- }
- _this39.stackMat3 = newArray41;
- }
- _this39.stackMat3[_this39.sizeMat3++] = mat310;
- }
- if(mat410 != null) {
- var t0021 = 1;
- var t0121 = 0;
- var t0221 = 0;
- var t0310 = 0;
- var t1021 = 0;
- var t1121 = 1;
- var t1221 = 0;
- var t1310 = 0;
- var t2021 = 0;
- var t2121 = 0;
- var t2221 = 1;
- var t2310 = 0;
- var t3010 = 0;
- var t3110 = 0;
- var t3210 = 0;
- var t3310 = 1;
- mat410.e00 = t0021;
- mat410.e01 = t0121;
- mat410.e02 = t0221;
- mat410.e03 = t0310;
- mat410.e10 = t1021;
- mat410.e11 = t1121;
- mat410.e12 = t1221;
- mat410.e13 = t1310;
- mat410.e20 = t2021;
- mat410.e21 = t2121;
- mat410.e22 = t2221;
- mat410.e23 = t2310;
- mat410.e30 = t3010;
- mat410.e31 = t3110;
- mat410.e32 = t3210;
- mat410.e33 = t3310;
- if(_this39.sizeMat4 == _this39.stackMat4.length) {
- var newLength42 = _this39.sizeMat4 << 1;
- var this43 = new Array(newLength42);
- var newArray42 = this43;
- var _g53 = 0;
- var _g143 = _this39.sizeMat4;
- while(_g53 < _g143) {
- var i43 = _g53++;
- newArray42[i43] = _this39.stackMat4[i43];
- _this39.stackMat4[i43] = null;
- }
- _this39.stackMat4 = newArray42;
- }
- _this39.stackMat4[_this39.sizeMat4++] = mat410;
- }
- if(quat10 != null) {
- var tx15 = 0;
- var ty15 = 0;
- var tz15 = 0;
- var tw10 = 1;
- quat10.x = tx15;
- quat10.y = ty15;
- quat10.z = tz15;
- quat10.w = tw10;
- if(_this39.sizeQuat == _this39.stackQuat.length) {
- var newLength43 = _this39.sizeQuat << 1;
- var this44 = new Array(newLength43);
- var newArray43 = this44;
- var _g54 = 0;
- var _g144 = _this39.sizeQuat;
- while(_g54 < _g144) {
- var i44 = _g54++;
- newArray43[i44] = _this39.stackQuat[i44];
- _this39.stackQuat[i44] = null;
- }
- _this39.stackQuat = newArray43;
- }
- _this39.stackQuat[_this39.sizeQuat++] = quat10;
- }
- var _this40 = this._pool;
- var mat311 = null;
- var mat411 = null;
- var quat11 = null;
- if(anchor2 != null) {
- anchor2.zero();
- if(_this40.sizeVec3 == _this40.stackVec3.length) {
- var newLength44 = _this40.sizeVec3 << 1;
- var this45 = new Array(newLength44);
- var newArray44 = this45;
- var _g55 = 0;
- var _g145 = _this40.sizeVec3;
- while(_g55 < _g145) {
- var i45 = _g55++;
- newArray44[i45] = _this40.stackVec3[i45];
- _this40.stackVec3[i45] = null;
- }
- _this40.stackVec3 = newArray44;
- }
- _this40.stackVec3[_this40.sizeVec3++] = anchor2;
- }
- if(mat311 != null) {
- var t0022 = 1;
- var t0122 = 0;
- var t0222 = 0;
- var t1022 = 0;
- var t1122 = 1;
- var t1222 = 0;
- var t2022 = 0;
- var t2122 = 0;
- var t2222 = 1;
- mat311.e00 = t0022;
- mat311.e01 = t0122;
- mat311.e02 = t0222;
- mat311.e10 = t1022;
- mat311.e11 = t1122;
- mat311.e12 = t1222;
- mat311.e20 = t2022;
- mat311.e21 = t2122;
- mat311.e22 = t2222;
- if(_this40.sizeMat3 == _this40.stackMat3.length) {
- var newLength45 = _this40.sizeMat3 << 1;
- var this46 = new Array(newLength45);
- var newArray45 = this46;
- var _g56 = 0;
- var _g146 = _this40.sizeMat3;
- while(_g56 < _g146) {
- var i46 = _g56++;
- newArray45[i46] = _this40.stackMat3[i46];
- _this40.stackMat3[i46] = null;
- }
- _this40.stackMat3 = newArray45;
- }
- _this40.stackMat3[_this40.sizeMat3++] = mat311;
- }
- if(mat411 != null) {
- var t0023 = 1;
- var t0123 = 0;
- var t0223 = 0;
- var t0311 = 0;
- var t1023 = 0;
- var t1123 = 1;
- var t1223 = 0;
- var t1311 = 0;
- var t2023 = 0;
- var t2123 = 0;
- var t2223 = 1;
- var t2311 = 0;
- var t3011 = 0;
- var t3111 = 0;
- var t3211 = 0;
- var t3311 = 1;
- mat411.e00 = t0023;
- mat411.e01 = t0123;
- mat411.e02 = t0223;
- mat411.e03 = t0311;
- mat411.e10 = t1023;
- mat411.e11 = t1123;
- mat411.e12 = t1223;
- mat411.e13 = t1311;
- mat411.e20 = t2023;
- mat411.e21 = t2123;
- mat411.e22 = t2223;
- mat411.e23 = t2311;
- mat411.e30 = t3011;
- mat411.e31 = t3111;
- mat411.e32 = t3211;
- mat411.e33 = t3311;
- if(_this40.sizeMat4 == _this40.stackMat4.length) {
- var newLength46 = _this40.sizeMat4 << 1;
- var this47 = new Array(newLength46);
- var newArray46 = this47;
- var _g57 = 0;
- var _g147 = _this40.sizeMat4;
- while(_g57 < _g147) {
- var i47 = _g57++;
- newArray46[i47] = _this40.stackMat4[i47];
- _this40.stackMat4[i47] = null;
- }
- _this40.stackMat4 = newArray46;
- }
- _this40.stackMat4[_this40.sizeMat4++] = mat411;
- }
- if(quat11 != null) {
- var tx16 = 0;
- var ty16 = 0;
- var tz16 = 0;
- var tw11 = 1;
- quat11.x = tx16;
- quat11.y = ty16;
- quat11.z = tz16;
- quat11.w = tw11;
- if(_this40.sizeQuat == _this40.stackQuat.length) {
- var newLength47 = _this40.sizeQuat << 1;
- var this48 = new Array(newLength47);
- var newArray47 = this48;
- var _g58 = 0;
- var _g148 = _this40.sizeQuat;
- while(_g58 < _g148) {
- var i48 = _g58++;
- newArray47[i48] = _this40.stackQuat[i48];
- _this40.stackQuat[i48] = null;
- }
- _this40.stackQuat = newArray47;
- }
- _this40.stackQuat[_this40.sizeQuat++] = quat11;
- }
- var _this41 = this._pool;
- var mat312 = null;
- var mat412 = null;
- var quat12 = null;
- if(basisX1 != null) {
- basisX1.zero();
- if(_this41.sizeVec3 == _this41.stackVec3.length) {
- var newLength48 = _this41.sizeVec3 << 1;
- var this49 = new Array(newLength48);
- var newArray48 = this49;
- var _g59 = 0;
- var _g149 = _this41.sizeVec3;
- while(_g59 < _g149) {
- var i49 = _g59++;
- newArray48[i49] = _this41.stackVec3[i49];
- _this41.stackVec3[i49] = null;
- }
- _this41.stackVec3 = newArray48;
- }
- _this41.stackVec3[_this41.sizeVec3++] = basisX1;
- }
- if(mat312 != null) {
- var t0024 = 1;
- var t0124 = 0;
- var t0224 = 0;
- var t1024 = 0;
- var t1124 = 1;
- var t1224 = 0;
- var t2024 = 0;
- var t2124 = 0;
- var t2224 = 1;
- mat312.e00 = t0024;
- mat312.e01 = t0124;
- mat312.e02 = t0224;
- mat312.e10 = t1024;
- mat312.e11 = t1124;
- mat312.e12 = t1224;
- mat312.e20 = t2024;
- mat312.e21 = t2124;
- mat312.e22 = t2224;
- if(_this41.sizeMat3 == _this41.stackMat3.length) {
- var newLength49 = _this41.sizeMat3 << 1;
- var this50 = new Array(newLength49);
- var newArray49 = this50;
- var _g60 = 0;
- var _g150 = _this41.sizeMat3;
- while(_g60 < _g150) {
- var i50 = _g60++;
- newArray49[i50] = _this41.stackMat3[i50];
- _this41.stackMat3[i50] = null;
- }
- _this41.stackMat3 = newArray49;
- }
- _this41.stackMat3[_this41.sizeMat3++] = mat312;
- }
- if(mat412 != null) {
- var t0025 = 1;
- var t0125 = 0;
- var t0225 = 0;
- var t0312 = 0;
- var t1025 = 0;
- var t1125 = 1;
- var t1225 = 0;
- var t1312 = 0;
- var t2025 = 0;
- var t2125 = 0;
- var t2225 = 1;
- var t2312 = 0;
- var t3012 = 0;
- var t3112 = 0;
- var t3212 = 0;
- var t3312 = 1;
- mat412.e00 = t0025;
- mat412.e01 = t0125;
- mat412.e02 = t0225;
- mat412.e03 = t0312;
- mat412.e10 = t1025;
- mat412.e11 = t1125;
- mat412.e12 = t1225;
- mat412.e13 = t1312;
- mat412.e20 = t2025;
- mat412.e21 = t2125;
- mat412.e22 = t2225;
- mat412.e23 = t2312;
- mat412.e30 = t3012;
- mat412.e31 = t3112;
- mat412.e32 = t3212;
- mat412.e33 = t3312;
- if(_this41.sizeMat4 == _this41.stackMat4.length) {
- var newLength50 = _this41.sizeMat4 << 1;
- var this51 = new Array(newLength50);
- var newArray50 = this51;
- var _g61 = 0;
- var _g151 = _this41.sizeMat4;
- while(_g61 < _g151) {
- var i51 = _g61++;
- newArray50[i51] = _this41.stackMat4[i51];
- _this41.stackMat4[i51] = null;
- }
- _this41.stackMat4 = newArray50;
- }
- _this41.stackMat4[_this41.sizeMat4++] = mat412;
- }
- if(quat12 != null) {
- var tx17 = 0;
- var ty17 = 0;
- var tz17 = 0;
- var tw12 = 1;
- quat12.x = tx17;
- quat12.y = ty17;
- quat12.z = tz17;
- quat12.w = tw12;
- if(_this41.sizeQuat == _this41.stackQuat.length) {
- var newLength51 = _this41.sizeQuat << 1;
- var this52 = new Array(newLength51);
- var newArray51 = this52;
- var _g62 = 0;
- var _g152 = _this41.sizeQuat;
- while(_g62 < _g152) {
- var i52 = _g62++;
- newArray51[i52] = _this41.stackQuat[i52];
- _this41.stackQuat[i52] = null;
- }
- _this41.stackQuat = newArray51;
- }
- _this41.stackQuat[_this41.sizeQuat++] = quat12;
- }
- var _this42 = this._pool;
- var mat313 = null;
- var mat413 = null;
- var quat13 = null;
- if(basisY1 != null) {
- basisY1.zero();
- if(_this42.sizeVec3 == _this42.stackVec3.length) {
- var newLength52 = _this42.sizeVec3 << 1;
- var this53 = new Array(newLength52);
- var newArray52 = this53;
- var _g63 = 0;
- var _g153 = _this42.sizeVec3;
- while(_g63 < _g153) {
- var i53 = _g63++;
- newArray52[i53] = _this42.stackVec3[i53];
- _this42.stackVec3[i53] = null;
- }
- _this42.stackVec3 = newArray52;
- }
- _this42.stackVec3[_this42.sizeVec3++] = basisY1;
- }
- if(mat313 != null) {
- var t0026 = 1;
- var t0126 = 0;
- var t0226 = 0;
- var t1026 = 0;
- var t1126 = 1;
- var t1226 = 0;
- var t2026 = 0;
- var t2126 = 0;
- var t2226 = 1;
- mat313.e00 = t0026;
- mat313.e01 = t0126;
- mat313.e02 = t0226;
- mat313.e10 = t1026;
- mat313.e11 = t1126;
- mat313.e12 = t1226;
- mat313.e20 = t2026;
- mat313.e21 = t2126;
- mat313.e22 = t2226;
- if(_this42.sizeMat3 == _this42.stackMat3.length) {
- var newLength53 = _this42.sizeMat3 << 1;
- var this54 = new Array(newLength53);
- var newArray53 = this54;
- var _g64 = 0;
- var _g154 = _this42.sizeMat3;
- while(_g64 < _g154) {
- var i54 = _g64++;
- newArray53[i54] = _this42.stackMat3[i54];
- _this42.stackMat3[i54] = null;
- }
- _this42.stackMat3 = newArray53;
- }
- _this42.stackMat3[_this42.sizeMat3++] = mat313;
- }
- if(mat413 != null) {
- var t0027 = 1;
- var t0127 = 0;
- var t0227 = 0;
- var t0313 = 0;
- var t1027 = 0;
- var t1127 = 1;
- var t1227 = 0;
- var t1313 = 0;
- var t2027 = 0;
- var t2127 = 0;
- var t2227 = 1;
- var t2313 = 0;
- var t3013 = 0;
- var t3113 = 0;
- var t3213 = 0;
- var t3313 = 1;
- mat413.e00 = t0027;
- mat413.e01 = t0127;
- mat413.e02 = t0227;
- mat413.e03 = t0313;
- mat413.e10 = t1027;
- mat413.e11 = t1127;
- mat413.e12 = t1227;
- mat413.e13 = t1313;
- mat413.e20 = t2027;
- mat413.e21 = t2127;
- mat413.e22 = t2227;
- mat413.e23 = t2313;
- mat413.e30 = t3013;
- mat413.e31 = t3113;
- mat413.e32 = t3213;
- mat413.e33 = t3313;
- if(_this42.sizeMat4 == _this42.stackMat4.length) {
- var newLength54 = _this42.sizeMat4 << 1;
- var this55 = new Array(newLength54);
- var newArray54 = this55;
- var _g65 = 0;
- var _g155 = _this42.sizeMat4;
- while(_g65 < _g155) {
- var i55 = _g65++;
- newArray54[i55] = _this42.stackMat4[i55];
- _this42.stackMat4[i55] = null;
- }
- _this42.stackMat4 = newArray54;
- }
- _this42.stackMat4[_this42.sizeMat4++] = mat413;
- }
- if(quat13 != null) {
- var tx18 = 0;
- var ty18 = 0;
- var tz18 = 0;
- var tw13 = 1;
- quat13.x = tx18;
- quat13.y = ty18;
- quat13.z = tz18;
- quat13.w = tw13;
- if(_this42.sizeQuat == _this42.stackQuat.length) {
- var newLength55 = _this42.sizeQuat << 1;
- var this56 = new Array(newLength55);
- var newArray55 = this56;
- var _g66 = 0;
- var _g156 = _this42.sizeQuat;
- while(_g66 < _g156) {
- var i56 = _g66++;
- newArray55[i56] = _this42.stackQuat[i56];
- _this42.stackQuat[i56] = null;
- }
- _this42.stackQuat = newArray55;
- }
- _this42.stackQuat[_this42.sizeQuat++] = quat13;
- }
- var _this43 = this._pool;
- var mat314 = null;
- var mat414 = null;
- var quat14 = null;
- if(basisZ1 != null) {
- basisZ1.zero();
- if(_this43.sizeVec3 == _this43.stackVec3.length) {
- var newLength56 = _this43.sizeVec3 << 1;
- var this57 = new Array(newLength56);
- var newArray56 = this57;
- var _g67 = 0;
- var _g157 = _this43.sizeVec3;
- while(_g67 < _g157) {
- var i57 = _g67++;
- newArray56[i57] = _this43.stackVec3[i57];
- _this43.stackVec3[i57] = null;
- }
- _this43.stackVec3 = newArray56;
- }
- _this43.stackVec3[_this43.sizeVec3++] = basisZ1;
- }
- if(mat314 != null) {
- var t0028 = 1;
- var t0128 = 0;
- var t0228 = 0;
- var t1028 = 0;
- var t1128 = 1;
- var t1228 = 0;
- var t2028 = 0;
- var t2128 = 0;
- var t2228 = 1;
- mat314.e00 = t0028;
- mat314.e01 = t0128;
- mat314.e02 = t0228;
- mat314.e10 = t1028;
- mat314.e11 = t1128;
- mat314.e12 = t1228;
- mat314.e20 = t2028;
- mat314.e21 = t2128;
- mat314.e22 = t2228;
- if(_this43.sizeMat3 == _this43.stackMat3.length) {
- var newLength57 = _this43.sizeMat3 << 1;
- var this58 = new Array(newLength57);
- var newArray57 = this58;
- var _g68 = 0;
- var _g158 = _this43.sizeMat3;
- while(_g68 < _g158) {
- var i58 = _g68++;
- newArray57[i58] = _this43.stackMat3[i58];
- _this43.stackMat3[i58] = null;
- }
- _this43.stackMat3 = newArray57;
- }
- _this43.stackMat3[_this43.sizeMat3++] = mat314;
- }
- if(mat414 != null) {
- var t0029 = 1;
- var t0129 = 0;
- var t0229 = 0;
- var t0314 = 0;
- var t1029 = 0;
- var t1129 = 1;
- var t1229 = 0;
- var t1314 = 0;
- var t2029 = 0;
- var t2129 = 0;
- var t2229 = 1;
- var t2314 = 0;
- var t3014 = 0;
- var t3114 = 0;
- var t3214 = 0;
- var t3314 = 1;
- mat414.e00 = t0029;
- mat414.e01 = t0129;
- mat414.e02 = t0229;
- mat414.e03 = t0314;
- mat414.e10 = t1029;
- mat414.e11 = t1129;
- mat414.e12 = t1229;
- mat414.e13 = t1314;
- mat414.e20 = t2029;
- mat414.e21 = t2129;
- mat414.e22 = t2229;
- mat414.e23 = t2314;
- mat414.e30 = t3014;
- mat414.e31 = t3114;
- mat414.e32 = t3214;
- mat414.e33 = t3314;
- if(_this43.sizeMat4 == _this43.stackMat4.length) {
- var newLength58 = _this43.sizeMat4 << 1;
- var this59 = new Array(newLength58);
- var newArray58 = this59;
- var _g69 = 0;
- var _g159 = _this43.sizeMat4;
- while(_g69 < _g159) {
- var i59 = _g69++;
- newArray58[i59] = _this43.stackMat4[i59];
- _this43.stackMat4[i59] = null;
- }
- _this43.stackMat4 = newArray58;
- }
- _this43.stackMat4[_this43.sizeMat4++] = mat414;
- }
- if(quat14 != null) {
- var tx19 = 0;
- var ty19 = 0;
- var tz19 = 0;
- var tw14 = 1;
- quat14.x = tx19;
- quat14.y = ty19;
- quat14.z = tz19;
- quat14.w = tw14;
- if(_this43.sizeQuat == _this43.stackQuat.length) {
- var newLength59 = _this43.sizeQuat << 1;
- var this60 = new Array(newLength59);
- var newArray59 = this60;
- var _g70 = 0;
- var _g160 = _this43.sizeQuat;
- while(_g70 < _g160) {
- var i60 = _g70++;
- newArray59[i60] = _this43.stackQuat[i60];
- _this43.stackQuat[i60] = null;
- }
- _this43.stackQuat = newArray59;
- }
- _this43.stackQuat[_this43.sizeQuat++] = quat14;
- }
- var _this44 = this._pool;
- var mat315 = null;
- var mat415 = null;
- var quat15 = null;
- if(basisX2 != null) {
- basisX2.zero();
- if(_this44.sizeVec3 == _this44.stackVec3.length) {
- var newLength60 = _this44.sizeVec3 << 1;
- var this61 = new Array(newLength60);
- var newArray60 = this61;
- var _g71 = 0;
- var _g161 = _this44.sizeVec3;
- while(_g71 < _g161) {
- var i61 = _g71++;
- newArray60[i61] = _this44.stackVec3[i61];
- _this44.stackVec3[i61] = null;
- }
- _this44.stackVec3 = newArray60;
- }
- _this44.stackVec3[_this44.sizeVec3++] = basisX2;
- }
- if(mat315 != null) {
- var t0030 = 1;
- var t0130 = 0;
- var t0230 = 0;
- var t1030 = 0;
- var t1130 = 1;
- var t1230 = 0;
- var t2030 = 0;
- var t2130 = 0;
- var t2230 = 1;
- mat315.e00 = t0030;
- mat315.e01 = t0130;
- mat315.e02 = t0230;
- mat315.e10 = t1030;
- mat315.e11 = t1130;
- mat315.e12 = t1230;
- mat315.e20 = t2030;
- mat315.e21 = t2130;
- mat315.e22 = t2230;
- if(_this44.sizeMat3 == _this44.stackMat3.length) {
- var newLength61 = _this44.sizeMat3 << 1;
- var this62 = new Array(newLength61);
- var newArray61 = this62;
- var _g72 = 0;
- var _g162 = _this44.sizeMat3;
- while(_g72 < _g162) {
- var i62 = _g72++;
- newArray61[i62] = _this44.stackMat3[i62];
- _this44.stackMat3[i62] = null;
- }
- _this44.stackMat3 = newArray61;
- }
- _this44.stackMat3[_this44.sizeMat3++] = mat315;
- }
- if(mat415 != null) {
- var t0031 = 1;
- var t0131 = 0;
- var t0231 = 0;
- var t0315 = 0;
- var t1031 = 0;
- var t1131 = 1;
- var t1231 = 0;
- var t1315 = 0;
- var t2031 = 0;
- var t2131 = 0;
- var t2231 = 1;
- var t2315 = 0;
- var t3015 = 0;
- var t3115 = 0;
- var t3215 = 0;
- var t3315 = 1;
- mat415.e00 = t0031;
- mat415.e01 = t0131;
- mat415.e02 = t0231;
- mat415.e03 = t0315;
- mat415.e10 = t1031;
- mat415.e11 = t1131;
- mat415.e12 = t1231;
- mat415.e13 = t1315;
- mat415.e20 = t2031;
- mat415.e21 = t2131;
- mat415.e22 = t2231;
- mat415.e23 = t2315;
- mat415.e30 = t3015;
- mat415.e31 = t3115;
- mat415.e32 = t3215;
- mat415.e33 = t3315;
- if(_this44.sizeMat4 == _this44.stackMat4.length) {
- var newLength62 = _this44.sizeMat4 << 1;
- var this63 = new Array(newLength62);
- var newArray62 = this63;
- var _g73 = 0;
- var _g163 = _this44.sizeMat4;
- while(_g73 < _g163) {
- var i63 = _g73++;
- newArray62[i63] = _this44.stackMat4[i63];
- _this44.stackMat4[i63] = null;
- }
- _this44.stackMat4 = newArray62;
- }
- _this44.stackMat4[_this44.sizeMat4++] = mat415;
- }
- if(quat15 != null) {
- var tx20 = 0;
- var ty20 = 0;
- var tz20 = 0;
- var tw15 = 1;
- quat15.x = tx20;
- quat15.y = ty20;
- quat15.z = tz20;
- quat15.w = tw15;
- if(_this44.sizeQuat == _this44.stackQuat.length) {
- var newLength63 = _this44.sizeQuat << 1;
- var this64 = new Array(newLength63);
- var newArray63 = this64;
- var _g74 = 0;
- var _g164 = _this44.sizeQuat;
- while(_g74 < _g164) {
- var i64 = _g74++;
- newArray63[i64] = _this44.stackQuat[i64];
- _this44.stackQuat[i64] = null;
- }
- _this44.stackQuat = newArray63;
- }
- _this44.stackQuat[_this44.sizeQuat++] = quat15;
- }
- var _this45 = this._pool;
- var mat316 = null;
- var mat416 = null;
- var quat16 = null;
- if(basisY2 != null) {
- basisY2.zero();
- if(_this45.sizeVec3 == _this45.stackVec3.length) {
- var newLength64 = _this45.sizeVec3 << 1;
- var this65 = new Array(newLength64);
- var newArray64 = this65;
- var _g75 = 0;
- var _g165 = _this45.sizeVec3;
- while(_g75 < _g165) {
- var i65 = _g75++;
- newArray64[i65] = _this45.stackVec3[i65];
- _this45.stackVec3[i65] = null;
- }
- _this45.stackVec3 = newArray64;
- }
- _this45.stackVec3[_this45.sizeVec3++] = basisY2;
- }
- if(mat316 != null) {
- var t0032 = 1;
- var t0132 = 0;
- var t0232 = 0;
- var t1032 = 0;
- var t1132 = 1;
- var t1232 = 0;
- var t2032 = 0;
- var t2132 = 0;
- var t2232 = 1;
- mat316.e00 = t0032;
- mat316.e01 = t0132;
- mat316.e02 = t0232;
- mat316.e10 = t1032;
- mat316.e11 = t1132;
- mat316.e12 = t1232;
- mat316.e20 = t2032;
- mat316.e21 = t2132;
- mat316.e22 = t2232;
- if(_this45.sizeMat3 == _this45.stackMat3.length) {
- var newLength65 = _this45.sizeMat3 << 1;
- var this66 = new Array(newLength65);
- var newArray65 = this66;
- var _g76 = 0;
- var _g166 = _this45.sizeMat3;
- while(_g76 < _g166) {
- var i66 = _g76++;
- newArray65[i66] = _this45.stackMat3[i66];
- _this45.stackMat3[i66] = null;
- }
- _this45.stackMat3 = newArray65;
- }
- _this45.stackMat3[_this45.sizeMat3++] = mat316;
- }
- if(mat416 != null) {
- var t0033 = 1;
- var t0133 = 0;
- var t0233 = 0;
- var t0316 = 0;
- var t1033 = 0;
- var t1133 = 1;
- var t1233 = 0;
- var t1316 = 0;
- var t2033 = 0;
- var t2133 = 0;
- var t2233 = 1;
- var t2316 = 0;
- var t3016 = 0;
- var t3116 = 0;
- var t3216 = 0;
- var t3316 = 1;
- mat416.e00 = t0033;
- mat416.e01 = t0133;
- mat416.e02 = t0233;
- mat416.e03 = t0316;
- mat416.e10 = t1033;
- mat416.e11 = t1133;
- mat416.e12 = t1233;
- mat416.e13 = t1316;
- mat416.e20 = t2033;
- mat416.e21 = t2133;
- mat416.e22 = t2233;
- mat416.e23 = t2316;
- mat416.e30 = t3016;
- mat416.e31 = t3116;
- mat416.e32 = t3216;
- mat416.e33 = t3316;
- if(_this45.sizeMat4 == _this45.stackMat4.length) {
- var newLength66 = _this45.sizeMat4 << 1;
- var this67 = new Array(newLength66);
- var newArray66 = this67;
- var _g77 = 0;
- var _g167 = _this45.sizeMat4;
- while(_g77 < _g167) {
- var i67 = _g77++;
- newArray66[i67] = _this45.stackMat4[i67];
- _this45.stackMat4[i67] = null;
- }
- _this45.stackMat4 = newArray66;
- }
- _this45.stackMat4[_this45.sizeMat4++] = mat416;
- }
- if(quat16 != null) {
- var tx21 = 0;
- var ty21 = 0;
- var tz21 = 0;
- var tw16 = 1;
- quat16.x = tx21;
- quat16.y = ty21;
- quat16.z = tz21;
- quat16.w = tw16;
- if(_this45.sizeQuat == _this45.stackQuat.length) {
- var newLength67 = _this45.sizeQuat << 1;
- var this68 = new Array(newLength67);
- var newArray67 = this68;
- var _g78 = 0;
- var _g168 = _this45.sizeQuat;
- while(_g78 < _g168) {
- var i68 = _g78++;
- newArray67[i68] = _this45.stackQuat[i68];
- _this45.stackQuat[i68] = null;
- }
- _this45.stackQuat = newArray67;
- }
- _this45.stackQuat[_this45.sizeQuat++] = quat16;
- }
- var _this46 = this._pool;
- var mat317 = null;
- var mat417 = null;
- var quat17 = null;
- if(basisZ2 != null) {
- basisZ2.zero();
- if(_this46.sizeVec3 == _this46.stackVec3.length) {
- var newLength68 = _this46.sizeVec3 << 1;
- var this69 = new Array(newLength68);
- var newArray68 = this69;
- var _g79 = 0;
- var _g169 = _this46.sizeVec3;
- while(_g79 < _g169) {
- var i69 = _g79++;
- newArray68[i69] = _this46.stackVec3[i69];
- _this46.stackVec3[i69] = null;
- }
- _this46.stackVec3 = newArray68;
- }
- _this46.stackVec3[_this46.sizeVec3++] = basisZ2;
- }
- if(mat317 != null) {
- var t0034 = 1;
- var t0134 = 0;
- var t0234 = 0;
- var t1034 = 0;
- var t1134 = 1;
- var t1234 = 0;
- var t2034 = 0;
- var t2134 = 0;
- var t2234 = 1;
- mat317.e00 = t0034;
- mat317.e01 = t0134;
- mat317.e02 = t0234;
- mat317.e10 = t1034;
- mat317.e11 = t1134;
- mat317.e12 = t1234;
- mat317.e20 = t2034;
- mat317.e21 = t2134;
- mat317.e22 = t2234;
- if(_this46.sizeMat3 == _this46.stackMat3.length) {
- var newLength69 = _this46.sizeMat3 << 1;
- var this70 = new Array(newLength69);
- var newArray69 = this70;
- var _g80 = 0;
- var _g170 = _this46.sizeMat3;
- while(_g80 < _g170) {
- var i70 = _g80++;
- newArray69[i70] = _this46.stackMat3[i70];
- _this46.stackMat3[i70] = null;
- }
- _this46.stackMat3 = newArray69;
- }
- _this46.stackMat3[_this46.sizeMat3++] = mat317;
- }
- if(mat417 != null) {
- var t0035 = 1;
- var t0135 = 0;
- var t0235 = 0;
- var t0317 = 0;
- var t1035 = 0;
- var t1135 = 1;
- var t1235 = 0;
- var t1317 = 0;
- var t2035 = 0;
- var t2135 = 0;
- var t2235 = 1;
- var t2317 = 0;
- var t3017 = 0;
- var t3117 = 0;
- var t3217 = 0;
- var t3317 = 1;
- mat417.e00 = t0035;
- mat417.e01 = t0135;
- mat417.e02 = t0235;
- mat417.e03 = t0317;
- mat417.e10 = t1035;
- mat417.e11 = t1135;
- mat417.e12 = t1235;
- mat417.e13 = t1317;
- mat417.e20 = t2035;
- mat417.e21 = t2135;
- mat417.e22 = t2235;
- mat417.e23 = t2317;
- mat417.e30 = t3017;
- mat417.e31 = t3117;
- mat417.e32 = t3217;
- mat417.e33 = t3317;
- if(_this46.sizeMat4 == _this46.stackMat4.length) {
- var newLength70 = _this46.sizeMat4 << 1;
- var this71 = new Array(newLength70);
- var newArray70 = this71;
- var _g81 = 0;
- var _g171 = _this46.sizeMat4;
- while(_g81 < _g171) {
- var i71 = _g81++;
- newArray70[i71] = _this46.stackMat4[i71];
- _this46.stackMat4[i71] = null;
- }
- _this46.stackMat4 = newArray70;
- }
- _this46.stackMat4[_this46.sizeMat4++] = mat417;
- }
- if(quat17 != null) {
- var tx22 = 0;
- var ty22 = 0;
- var tz22 = 0;
- var tw17 = 1;
- quat17.x = tx22;
- quat17.y = ty22;
- quat17.z = tz22;
- quat17.w = tw17;
- if(_this46.sizeQuat == _this46.stackQuat.length) {
- var newLength71 = _this46.sizeQuat << 1;
- var this72 = new Array(newLength71);
- var newArray71 = this72;
- var _g82 = 0;
- var _g172 = _this46.sizeQuat;
- while(_g82 < _g172) {
- var i72 = _g82++;
- newArray71[i72] = _this46.stackQuat[i72];
- _this46.stackQuat[i72] = null;
- }
- _this46.stackQuat = newArray71;
- }
- _this46.stackQuat[_this46.sizeQuat++] = quat17;
- }
- j = n1;
- }
- }
- }
- _drawRotationalLimit(d,center,ex,ey,needle,radius,min,max,color) {
- if(min != max) {
- var _this = this._pool;
- var _this1 = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
- _this1.x = center.x;
- _this1.y = center.y;
- _this1.z = center.z;
- var _this2 = _this1;
- var tx = _this2.x + needle.x * radius;
- var ty = _this2.y + needle.y * radius;
- var tz = _this2.z + needle.z * radius;
- _this2.x = tx;
- _this2.y = ty;
- _this2.z = tz;
- var to = _this2;
- d.line(center,to,color);
- var _this3 = this._pool;
- var mat3 = null;
- var mat4 = null;
- var quat = null;
- if(to != null) {
- to.zero();
- if(_this3.sizeVec3 == _this3.stackVec3.length) {
- var newLength = _this3.sizeVec3 << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = _this3.sizeVec3;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = _this3.stackVec3[i];
- _this3.stackVec3[i] = null;
- }
- _this3.stackVec3 = newArray;
- }
- _this3.stackVec3[_this3.sizeVec3++] = to;
- }
- if(mat3 != null) {
- var t00 = 1;
- var t01 = 0;
- var t02 = 0;
- var t10 = 0;
- var t11 = 1;
- var t12 = 0;
- var t20 = 0;
- var t21 = 0;
- var t22 = 1;
- mat3.e00 = t00;
- mat3.e01 = t01;
- mat3.e02 = t02;
- mat3.e10 = t10;
- mat3.e11 = t11;
- mat3.e12 = t12;
- mat3.e20 = t20;
- mat3.e21 = t21;
- mat3.e22 = t22;
- if(_this3.sizeMat3 == _this3.stackMat3.length) {
- var newLength1 = _this3.sizeMat3 << 1;
- var this2 = new Array(newLength1);
- var newArray1 = this2;
- var _g2 = 0;
- var _g11 = _this3.sizeMat3;
- while(_g2 < _g11) {
- var i1 = _g2++;
- newArray1[i1] = _this3.stackMat3[i1];
- _this3.stackMat3[i1] = null;
- }
- _this3.stackMat3 = newArray1;
- }
- _this3.stackMat3[_this3.sizeMat3++] = mat3;
- }
- if(mat4 != null) {
- var t001 = 1;
- var t011 = 0;
- var t021 = 0;
- var t03 = 0;
- var t101 = 0;
- var t111 = 1;
- var t121 = 0;
- var t13 = 0;
- var t201 = 0;
- var t211 = 0;
- var t221 = 1;
- var t23 = 0;
- var t30 = 0;
- var t31 = 0;
- var t32 = 0;
- var t33 = 1;
- mat4.e00 = t001;
- mat4.e01 = t011;
- mat4.e02 = t021;
- mat4.e03 = t03;
- mat4.e10 = t101;
- mat4.e11 = t111;
- mat4.e12 = t121;
- mat4.e13 = t13;
- mat4.e20 = t201;
- mat4.e21 = t211;
- mat4.e22 = t221;
- mat4.e23 = t23;
- mat4.e30 = t30;
- mat4.e31 = t31;
- mat4.e32 = t32;
- mat4.e33 = t33;
- if(_this3.sizeMat4 == _this3.stackMat4.length) {
- var newLength2 = _this3.sizeMat4 << 1;
- var this3 = new Array(newLength2);
- var newArray2 = this3;
- var _g3 = 0;
- var _g12 = _this3.sizeMat4;
- while(_g3 < _g12) {
- var i2 = _g3++;
- newArray2[i2] = _this3.stackMat4[i2];
- _this3.stackMat4[i2] = null;
- }
- _this3.stackMat4 = newArray2;
- }
- _this3.stackMat4[_this3.sizeMat4++] = mat4;
- }
- if(quat != null) {
- var tx1 = 0;
- var ty1 = 0;
- var tz1 = 0;
- var tw = 1;
- quat.x = tx1;
- quat.y = ty1;
- quat.z = tz1;
- quat.w = tw;
- if(_this3.sizeQuat == _this3.stackQuat.length) {
- var newLength3 = _this3.sizeQuat << 1;
- var this4 = new Array(newLength3);
- var newArray3 = this4;
- var _g4 = 0;
- var _g13 = _this3.sizeQuat;
- while(_g4 < _g13) {
- var i3 = _g4++;
- newArray3[i3] = _this3.stackQuat[i3];
- _this3.stackQuat[i3] = null;
- }
- _this3.stackQuat = newArray3;
- }
- _this3.stackQuat[_this3.sizeQuat++] = quat;
- }
- if(min > max) {
- d.ellipse(center,ex,ey,radius,radius,color);
- } else {
- d.arc(center,ex,ey,radius,radius,min,max,true,color);
- }
- }
- }
- _drawTranslationalLimit(d,center,ex,min,max,color) {
- if(min < max) {
- var _this = this._pool;
- var _this1 = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
- _this1.x = center.x;
- _this1.y = center.y;
- _this1.z = center.z;
- var _this2 = _this1;
- var tx = _this2.x + ex.x * min;
- var ty = _this2.y + ex.y * min;
- var tz = _this2.z + ex.z * min;
- _this2.x = tx;
- _this2.y = ty;
- _this2.z = tz;
- var lower = _this2;
- var _this3 = this._pool;
- var _this4 = _this3.sizeVec3 == 0 ? new oimo.common.Vec3() : _this3.stackVec3[--_this3.sizeVec3];
- _this4.x = center.x;
- _this4.y = center.y;
- _this4.z = center.z;
- var _this5 = _this4;
- var tx1 = _this5.x + ex.x * max;
- var ty1 = _this5.y + ex.y * max;
- var tz1 = _this5.z + ex.z * max;
- _this5.x = tx1;
- _this5.y = ty1;
- _this5.z = tz1;
- var upper = _this5;
- d.line(lower,upper,color);
- var _this6 = this._pool;
- var mat3 = null;
- var mat4 = null;
- var quat = null;
- if(lower != null) {
- lower.zero();
- if(_this6.sizeVec3 == _this6.stackVec3.length) {
- var newLength = _this6.sizeVec3 << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = _this6.sizeVec3;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = _this6.stackVec3[i];
- _this6.stackVec3[i] = null;
- }
- _this6.stackVec3 = newArray;
- }
- _this6.stackVec3[_this6.sizeVec3++] = lower;
- }
- if(mat3 != null) {
- var t00 = 1;
- var t01 = 0;
- var t02 = 0;
- var t10 = 0;
- var t11 = 1;
- var t12 = 0;
- var t20 = 0;
- var t21 = 0;
- var t22 = 1;
- mat3.e00 = t00;
- mat3.e01 = t01;
- mat3.e02 = t02;
- mat3.e10 = t10;
- mat3.e11 = t11;
- mat3.e12 = t12;
- mat3.e20 = t20;
- mat3.e21 = t21;
- mat3.e22 = t22;
- if(_this6.sizeMat3 == _this6.stackMat3.length) {
- var newLength1 = _this6.sizeMat3 << 1;
- var this2 = new Array(newLength1);
- var newArray1 = this2;
- var _g2 = 0;
- var _g11 = _this6.sizeMat3;
- while(_g2 < _g11) {
- var i1 = _g2++;
- newArray1[i1] = _this6.stackMat3[i1];
- _this6.stackMat3[i1] = null;
- }
- _this6.stackMat3 = newArray1;
- }
- _this6.stackMat3[_this6.sizeMat3++] = mat3;
- }
- if(mat4 != null) {
- var t001 = 1;
- var t011 = 0;
- var t021 = 0;
- var t03 = 0;
- var t101 = 0;
- var t111 = 1;
- var t121 = 0;
- var t13 = 0;
- var t201 = 0;
- var t211 = 0;
- var t221 = 1;
- var t23 = 0;
- var t30 = 0;
- var t31 = 0;
- var t32 = 0;
- var t33 = 1;
- mat4.e00 = t001;
- mat4.e01 = t011;
- mat4.e02 = t021;
- mat4.e03 = t03;
- mat4.e10 = t101;
- mat4.e11 = t111;
- mat4.e12 = t121;
- mat4.e13 = t13;
- mat4.e20 = t201;
- mat4.e21 = t211;
- mat4.e22 = t221;
- mat4.e23 = t23;
- mat4.e30 = t30;
- mat4.e31 = t31;
- mat4.e32 = t32;
- mat4.e33 = t33;
- if(_this6.sizeMat4 == _this6.stackMat4.length) {
- var newLength2 = _this6.sizeMat4 << 1;
- var this3 = new Array(newLength2);
- var newArray2 = this3;
- var _g3 = 0;
- var _g12 = _this6.sizeMat4;
- while(_g3 < _g12) {
- var i2 = _g3++;
- newArray2[i2] = _this6.stackMat4[i2];
- _this6.stackMat4[i2] = null;
- }
- _this6.stackMat4 = newArray2;
- }
- _this6.stackMat4[_this6.sizeMat4++] = mat4;
- }
- if(quat != null) {
- var tx2 = 0;
- var ty2 = 0;
- var tz2 = 0;
- var tw = 1;
- quat.x = tx2;
- quat.y = ty2;
- quat.z = tz2;
- quat.w = tw;
- if(_this6.sizeQuat == _this6.stackQuat.length) {
- var newLength3 = _this6.sizeQuat << 1;
- var this4 = new Array(newLength3);
- var newArray3 = this4;
- var _g4 = 0;
- var _g13 = _this6.sizeQuat;
- while(_g4 < _g13) {
- var i3 = _g4++;
- newArray3[i3] = _this6.stackQuat[i3];
- _this6.stackQuat[i3] = null;
- }
- _this6.stackQuat = newArray3;
- }
- _this6.stackQuat[_this6.sizeQuat++] = quat;
- }
- var _this7 = this._pool;
- var mat31 = null;
- var mat41 = null;
- var quat1 = null;
- if(upper != null) {
- upper.zero();
- if(_this7.sizeVec3 == _this7.stackVec3.length) {
- var newLength4 = _this7.sizeVec3 << 1;
- var this5 = new Array(newLength4);
- var newArray4 = this5;
- var _g5 = 0;
- var _g14 = _this7.sizeVec3;
- while(_g5 < _g14) {
- var i4 = _g5++;
- newArray4[i4] = _this7.stackVec3[i4];
- _this7.stackVec3[i4] = null;
- }
- _this7.stackVec3 = newArray4;
- }
- _this7.stackVec3[_this7.sizeVec3++] = upper;
- }
- if(mat31 != null) {
- var t002 = 1;
- var t012 = 0;
- var t022 = 0;
- var t102 = 0;
- var t112 = 1;
- var t122 = 0;
- var t202 = 0;
- var t212 = 0;
- var t222 = 1;
- mat31.e00 = t002;
- mat31.e01 = t012;
- mat31.e02 = t022;
- mat31.e10 = t102;
- mat31.e11 = t112;
- mat31.e12 = t122;
- mat31.e20 = t202;
- mat31.e21 = t212;
- mat31.e22 = t222;
- if(_this7.sizeMat3 == _this7.stackMat3.length) {
- var newLength5 = _this7.sizeMat3 << 1;
- var this6 = new Array(newLength5);
- var newArray5 = this6;
- var _g6 = 0;
- var _g15 = _this7.sizeMat3;
- while(_g6 < _g15) {
- var i5 = _g6++;
- newArray5[i5] = _this7.stackMat3[i5];
- _this7.stackMat3[i5] = null;
- }
- _this7.stackMat3 = newArray5;
- }
- _this7.stackMat3[_this7.sizeMat3++] = mat31;
- }
- if(mat41 != null) {
- var t003 = 1;
- var t013 = 0;
- var t023 = 0;
- var t031 = 0;
- var t103 = 0;
- var t113 = 1;
- var t123 = 0;
- var t131 = 0;
- var t203 = 0;
- var t213 = 0;
- var t223 = 1;
- var t231 = 0;
- var t301 = 0;
- var t311 = 0;
- var t321 = 0;
- var t331 = 1;
- mat41.e00 = t003;
- mat41.e01 = t013;
- mat41.e02 = t023;
- mat41.e03 = t031;
- mat41.e10 = t103;
- mat41.e11 = t113;
- mat41.e12 = t123;
- mat41.e13 = t131;
- mat41.e20 = t203;
- mat41.e21 = t213;
- mat41.e22 = t223;
- mat41.e23 = t231;
- mat41.e30 = t301;
- mat41.e31 = t311;
- mat41.e32 = t321;
- mat41.e33 = t331;
- if(_this7.sizeMat4 == _this7.stackMat4.length) {
- var newLength6 = _this7.sizeMat4 << 1;
- var this7 = new Array(newLength6);
- var newArray6 = this7;
- var _g7 = 0;
- var _g16 = _this7.sizeMat4;
- while(_g7 < _g16) {
- var i6 = _g7++;
- newArray6[i6] = _this7.stackMat4[i6];
- _this7.stackMat4[i6] = null;
- }
- _this7.stackMat4 = newArray6;
- }
- _this7.stackMat4[_this7.sizeMat4++] = mat41;
- }
- if(quat1 != null) {
- var tx3 = 0;
- var ty3 = 0;
- var tz3 = 0;
- var tw1 = 1;
- quat1.x = tx3;
- quat1.y = ty3;
- quat1.z = tz3;
- quat1.w = tw1;
- if(_this7.sizeQuat == _this7.stackQuat.length) {
- var newLength7 = _this7.sizeQuat << 1;
- var this8 = new Array(newLength7);
- var newArray7 = this8;
- var _g8 = 0;
- var _g17 = _this7.sizeQuat;
- while(_g8 < _g17) {
- var i7 = _g8++;
- newArray7[i7] = _this7.stackQuat[i7];
- _this7.stackQuat[i7] = null;
- }
- _this7.stackQuat = newArray7;
- }
- _this7.stackQuat[_this7.sizeQuat++] = quat1;
- }
- }
- }
- _drawTranslationalLimit3D(d,center,ex,ey,ez,xlm,ylm,zlm,color) {
- var minx = xlm.lowerLimit;
- var maxx = xlm.upperLimit;
- var miny = ylm.lowerLimit;
- var maxy = ylm.upperLimit;
- var minz = zlm.lowerLimit;
- var maxz = zlm.upperLimit;
- var _this = this._pool;
- var lower = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
- var _this1 = this._pool;
- var upper = _this1.sizeVec3 == 0 ? new oimo.common.Vec3() : _this1.stackVec3[--_this1.sizeVec3];
- var _this2 = this._pool;
- var _this3 = _this2.sizeVec3 == 0 ? new oimo.common.Vec3() : _this2.stackVec3[--_this2.sizeVec3];
- _this3.x = center.x;
- _this3.y = center.y;
- _this3.z = center.z;
- var _this4 = _this3;
- var tx = _this4.x + ex.x * minx;
- var ty = _this4.y + ex.y * minx;
- var tz = _this4.z + ex.z * minx;
- _this4.x = tx;
- _this4.y = ty;
- _this4.z = tz;
- var _this5 = _this4;
- var tx1 = _this5.x + ey.x * miny;
- var ty1 = _this5.y + ey.y * miny;
- var tz1 = _this5.z + ey.z * miny;
- _this5.x = tx1;
- _this5.y = ty1;
- _this5.z = tz1;
- var _this6 = _this5;
- var tx2 = _this6.x + ez.x * minz;
- var ty2 = _this6.y + ez.y * minz;
- var tz2 = _this6.z + ez.z * minz;
- _this6.x = tx2;
- _this6.y = ty2;
- _this6.z = tz2;
- var xyz = _this6;
- var _this7 = this._pool;
- var _this8 = _this7.sizeVec3 == 0 ? new oimo.common.Vec3() : _this7.stackVec3[--_this7.sizeVec3];
- _this8.x = center.x;
- _this8.y = center.y;
- _this8.z = center.z;
- var _this9 = _this8;
- var tx3 = _this9.x + ex.x * minx;
- var ty3 = _this9.y + ex.y * minx;
- var tz3 = _this9.z + ex.z * minx;
- _this9.x = tx3;
- _this9.y = ty3;
- _this9.z = tz3;
- var _this10 = _this9;
- var tx4 = _this10.x + ey.x * miny;
- var ty4 = _this10.y + ey.y * miny;
- var tz4 = _this10.z + ey.z * miny;
- _this10.x = tx4;
- _this10.y = ty4;
- _this10.z = tz4;
- var _this11 = _this10;
- var tx5 = _this11.x + ez.x * maxz;
- var ty5 = _this11.y + ez.y * maxz;
- var tz5 = _this11.z + ez.z * maxz;
- _this11.x = tx5;
- _this11.y = ty5;
- _this11.z = tz5;
- var xyZ = _this11;
- var _this12 = this._pool;
- var _this13 = _this12.sizeVec3 == 0 ? new oimo.common.Vec3() : _this12.stackVec3[--_this12.sizeVec3];
- _this13.x = center.x;
- _this13.y = center.y;
- _this13.z = center.z;
- var _this14 = _this13;
- var tx6 = _this14.x + ex.x * minx;
- var ty6 = _this14.y + ex.y * minx;
- var tz6 = _this14.z + ex.z * minx;
- _this14.x = tx6;
- _this14.y = ty6;
- _this14.z = tz6;
- var _this15 = _this14;
- var tx7 = _this15.x + ey.x * maxy;
- var ty7 = _this15.y + ey.y * maxy;
- var tz7 = _this15.z + ey.z * maxy;
- _this15.x = tx7;
- _this15.y = ty7;
- _this15.z = tz7;
- var _this16 = _this15;
- var tx8 = _this16.x + ez.x * minz;
- var ty8 = _this16.y + ez.y * minz;
- var tz8 = _this16.z + ez.z * minz;
- _this16.x = tx8;
- _this16.y = ty8;
- _this16.z = tz8;
- var xYz = _this16;
- var _this17 = this._pool;
- var _this18 = _this17.sizeVec3 == 0 ? new oimo.common.Vec3() : _this17.stackVec3[--_this17.sizeVec3];
- _this18.x = center.x;
- _this18.y = center.y;
- _this18.z = center.z;
- var _this19 = _this18;
- var tx9 = _this19.x + ex.x * minx;
- var ty9 = _this19.y + ex.y * minx;
- var tz9 = _this19.z + ex.z * minx;
- _this19.x = tx9;
- _this19.y = ty9;
- _this19.z = tz9;
- var _this20 = _this19;
- var tx10 = _this20.x + ey.x * maxy;
- var ty10 = _this20.y + ey.y * maxy;
- var tz10 = _this20.z + ey.z * maxy;
- _this20.x = tx10;
- _this20.y = ty10;
- _this20.z = tz10;
- var _this21 = _this20;
- var tx11 = _this21.x + ez.x * maxz;
- var ty11 = _this21.y + ez.y * maxz;
- var tz11 = _this21.z + ez.z * maxz;
- _this21.x = tx11;
- _this21.y = ty11;
- _this21.z = tz11;
- var xYZ = _this21;
- var _this22 = this._pool;
- var _this23 = _this22.sizeVec3 == 0 ? new oimo.common.Vec3() : _this22.stackVec3[--_this22.sizeVec3];
- _this23.x = center.x;
- _this23.y = center.y;
- _this23.z = center.z;
- var _this24 = _this23;
- var tx12 = _this24.x + ex.x * maxx;
- var ty12 = _this24.y + ex.y * maxx;
- var tz12 = _this24.z + ex.z * maxx;
- _this24.x = tx12;
- _this24.y = ty12;
- _this24.z = tz12;
- var _this25 = _this24;
- var tx13 = _this25.x + ey.x * miny;
- var ty13 = _this25.y + ey.y * miny;
- var tz13 = _this25.z + ey.z * miny;
- _this25.x = tx13;
- _this25.y = ty13;
- _this25.z = tz13;
- var _this26 = _this25;
- var tx14 = _this26.x + ez.x * minz;
- var ty14 = _this26.y + ez.y * minz;
- var tz14 = _this26.z + ez.z * minz;
- _this26.x = tx14;
- _this26.y = ty14;
- _this26.z = tz14;
- var Xyz = _this26;
- var _this27 = this._pool;
- var _this28 = _this27.sizeVec3 == 0 ? new oimo.common.Vec3() : _this27.stackVec3[--_this27.sizeVec3];
- _this28.x = center.x;
- _this28.y = center.y;
- _this28.z = center.z;
- var _this29 = _this28;
- var tx15 = _this29.x + ex.x * maxx;
- var ty15 = _this29.y + ex.y * maxx;
- var tz15 = _this29.z + ex.z * maxx;
- _this29.x = tx15;
- _this29.y = ty15;
- _this29.z = tz15;
- var _this30 = _this29;
- var tx16 = _this30.x + ey.x * miny;
- var ty16 = _this30.y + ey.y * miny;
- var tz16 = _this30.z + ey.z * miny;
- _this30.x = tx16;
- _this30.y = ty16;
- _this30.z = tz16;
- var _this31 = _this30;
- var tx17 = _this31.x + ez.x * maxz;
- var ty17 = _this31.y + ez.y * maxz;
- var tz17 = _this31.z + ez.z * maxz;
- _this31.x = tx17;
- _this31.y = ty17;
- _this31.z = tz17;
- var XyZ = _this31;
- var _this32 = this._pool;
- var _this33 = _this32.sizeVec3 == 0 ? new oimo.common.Vec3() : _this32.stackVec3[--_this32.sizeVec3];
- _this33.x = center.x;
- _this33.y = center.y;
- _this33.z = center.z;
- var _this34 = _this33;
- var tx18 = _this34.x + ex.x * maxx;
- var ty18 = _this34.y + ex.y * maxx;
- var tz18 = _this34.z + ex.z * maxx;
- _this34.x = tx18;
- _this34.y = ty18;
- _this34.z = tz18;
- var _this35 = _this34;
- var tx19 = _this35.x + ey.x * maxy;
- var ty19 = _this35.y + ey.y * maxy;
- var tz19 = _this35.z + ey.z * maxy;
- _this35.x = tx19;
- _this35.y = ty19;
- _this35.z = tz19;
- var _this36 = _this35;
- var tx20 = _this36.x + ez.x * minz;
- var ty20 = _this36.y + ez.y * minz;
- var tz20 = _this36.z + ez.z * minz;
- _this36.x = tx20;
- _this36.y = ty20;
- _this36.z = tz20;
- var XYz = _this36;
- var _this37 = this._pool;
- var _this38 = _this37.sizeVec3 == 0 ? new oimo.common.Vec3() : _this37.stackVec3[--_this37.sizeVec3];
- _this38.x = center.x;
- _this38.y = center.y;
- _this38.z = center.z;
- var _this39 = _this38;
- var tx21 = _this39.x + ex.x * maxx;
- var ty21 = _this39.y + ex.y * maxx;
- var tz21 = _this39.z + ex.z * maxx;
- _this39.x = tx21;
- _this39.y = ty21;
- _this39.z = tz21;
- var _this40 = _this39;
- var tx22 = _this40.x + ey.x * maxy;
- var ty22 = _this40.y + ey.y * maxy;
- var tz22 = _this40.z + ey.z * maxy;
- _this40.x = tx22;
- _this40.y = ty22;
- _this40.z = tz22;
- var _this41 = _this40;
- var tx23 = _this41.x + ez.x * maxz;
- var ty23 = _this41.y + ez.y * maxz;
- var tz23 = _this41.z + ez.z * maxz;
- _this41.x = tx23;
- _this41.y = ty23;
- _this41.z = tz23;
- var XYZ = _this41;
- d.line(xyz,Xyz,color);
- d.line(xYz,XYz,color);
- d.line(xyZ,XyZ,color);
- d.line(xYZ,XYZ,color);
- d.line(xyz,xYz,color);
- d.line(Xyz,XYz,color);
- d.line(xyZ,xYZ,color);
- d.line(XyZ,XYZ,color);
- d.line(xyz,xyZ,color);
- d.line(Xyz,XyZ,color);
- d.line(xYz,xYZ,color);
- d.line(XYz,XYZ,color);
- var _this42 = this._pool;
- var mat3 = null;
- var mat4 = null;
- var quat = null;
- if(xyz != null) {
- xyz.zero();
- if(_this42.sizeVec3 == _this42.stackVec3.length) {
- var newLength = _this42.sizeVec3 << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = _this42.sizeVec3;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = _this42.stackVec3[i];
- _this42.stackVec3[i] = null;
- }
- _this42.stackVec3 = newArray;
- }
- _this42.stackVec3[_this42.sizeVec3++] = xyz;
- }
- if(mat3 != null) {
- var t00 = 1;
- var t01 = 0;
- var t02 = 0;
- var t10 = 0;
- var t11 = 1;
- var t12 = 0;
- var t20 = 0;
- var t21 = 0;
- var t22 = 1;
- mat3.e00 = t00;
- mat3.e01 = t01;
- mat3.e02 = t02;
- mat3.e10 = t10;
- mat3.e11 = t11;
- mat3.e12 = t12;
- mat3.e20 = t20;
- mat3.e21 = t21;
- mat3.e22 = t22;
- if(_this42.sizeMat3 == _this42.stackMat3.length) {
- var newLength1 = _this42.sizeMat3 << 1;
- var this2 = new Array(newLength1);
- var newArray1 = this2;
- var _g2 = 0;
- var _g11 = _this42.sizeMat3;
- while(_g2 < _g11) {
- var i1 = _g2++;
- newArray1[i1] = _this42.stackMat3[i1];
- _this42.stackMat3[i1] = null;
- }
- _this42.stackMat3 = newArray1;
- }
- _this42.stackMat3[_this42.sizeMat3++] = mat3;
- }
- if(mat4 != null) {
- var t001 = 1;
- var t011 = 0;
- var t021 = 0;
- var t03 = 0;
- var t101 = 0;
- var t111 = 1;
- var t121 = 0;
- var t13 = 0;
- var t201 = 0;
- var t211 = 0;
- var t221 = 1;
- var t23 = 0;
- var t30 = 0;
- var t31 = 0;
- var t32 = 0;
- var t33 = 1;
- mat4.e00 = t001;
- mat4.e01 = t011;
- mat4.e02 = t021;
- mat4.e03 = t03;
- mat4.e10 = t101;
- mat4.e11 = t111;
- mat4.e12 = t121;
- mat4.e13 = t13;
- mat4.e20 = t201;
- mat4.e21 = t211;
- mat4.e22 = t221;
- mat4.e23 = t23;
- mat4.e30 = t30;
- mat4.e31 = t31;
- mat4.e32 = t32;
- mat4.e33 = t33;
- if(_this42.sizeMat4 == _this42.stackMat4.length) {
- var newLength2 = _this42.sizeMat4 << 1;
- var this3 = new Array(newLength2);
- var newArray2 = this3;
- var _g3 = 0;
- var _g12 = _this42.sizeMat4;
- while(_g3 < _g12) {
- var i2 = _g3++;
- newArray2[i2] = _this42.stackMat4[i2];
- _this42.stackMat4[i2] = null;
- }
- _this42.stackMat4 = newArray2;
- }
- _this42.stackMat4[_this42.sizeMat4++] = mat4;
- }
- if(quat != null) {
- var tx24 = 0;
- var ty24 = 0;
- var tz24 = 0;
- var tw = 1;
- quat.x = tx24;
- quat.y = ty24;
- quat.z = tz24;
- quat.w = tw;
- if(_this42.sizeQuat == _this42.stackQuat.length) {
- var newLength3 = _this42.sizeQuat << 1;
- var this4 = new Array(newLength3);
- var newArray3 = this4;
- var _g4 = 0;
- var _g13 = _this42.sizeQuat;
- while(_g4 < _g13) {
- var i3 = _g4++;
- newArray3[i3] = _this42.stackQuat[i3];
- _this42.stackQuat[i3] = null;
- }
- _this42.stackQuat = newArray3;
- }
- _this42.stackQuat[_this42.sizeQuat++] = quat;
- }
- var _this43 = this._pool;
- var mat31 = null;
- var mat41 = null;
- var quat1 = null;
- if(xyZ != null) {
- xyZ.zero();
- if(_this43.sizeVec3 == _this43.stackVec3.length) {
- var newLength4 = _this43.sizeVec3 << 1;
- var this5 = new Array(newLength4);
- var newArray4 = this5;
- var _g5 = 0;
- var _g14 = _this43.sizeVec3;
- while(_g5 < _g14) {
- var i4 = _g5++;
- newArray4[i4] = _this43.stackVec3[i4];
- _this43.stackVec3[i4] = null;
- }
- _this43.stackVec3 = newArray4;
- }
- _this43.stackVec3[_this43.sizeVec3++] = xyZ;
- }
- if(mat31 != null) {
- var t002 = 1;
- var t012 = 0;
- var t022 = 0;
- var t102 = 0;
- var t112 = 1;
- var t122 = 0;
- var t202 = 0;
- var t212 = 0;
- var t222 = 1;
- mat31.e00 = t002;
- mat31.e01 = t012;
- mat31.e02 = t022;
- mat31.e10 = t102;
- mat31.e11 = t112;
- mat31.e12 = t122;
- mat31.e20 = t202;
- mat31.e21 = t212;
- mat31.e22 = t222;
- if(_this43.sizeMat3 == _this43.stackMat3.length) {
- var newLength5 = _this43.sizeMat3 << 1;
- var this6 = new Array(newLength5);
- var newArray5 = this6;
- var _g6 = 0;
- var _g15 = _this43.sizeMat3;
- while(_g6 < _g15) {
- var i5 = _g6++;
- newArray5[i5] = _this43.stackMat3[i5];
- _this43.stackMat3[i5] = null;
- }
- _this43.stackMat3 = newArray5;
- }
- _this43.stackMat3[_this43.sizeMat3++] = mat31;
- }
- if(mat41 != null) {
- var t003 = 1;
- var t013 = 0;
- var t023 = 0;
- var t031 = 0;
- var t103 = 0;
- var t113 = 1;
- var t123 = 0;
- var t131 = 0;
- var t203 = 0;
- var t213 = 0;
- var t223 = 1;
- var t231 = 0;
- var t301 = 0;
- var t311 = 0;
- var t321 = 0;
- var t331 = 1;
- mat41.e00 = t003;
- mat41.e01 = t013;
- mat41.e02 = t023;
- mat41.e03 = t031;
- mat41.e10 = t103;
- mat41.e11 = t113;
- mat41.e12 = t123;
- mat41.e13 = t131;
- mat41.e20 = t203;
- mat41.e21 = t213;
- mat41.e22 = t223;
- mat41.e23 = t231;
- mat41.e30 = t301;
- mat41.e31 = t311;
- mat41.e32 = t321;
- mat41.e33 = t331;
- if(_this43.sizeMat4 == _this43.stackMat4.length) {
- var newLength6 = _this43.sizeMat4 << 1;
- var this7 = new Array(newLength6);
- var newArray6 = this7;
- var _g7 = 0;
- var _g16 = _this43.sizeMat4;
- while(_g7 < _g16) {
- var i6 = _g7++;
- newArray6[i6] = _this43.stackMat4[i6];
- _this43.stackMat4[i6] = null;
- }
- _this43.stackMat4 = newArray6;
- }
- _this43.stackMat4[_this43.sizeMat4++] = mat41;
- }
- if(quat1 != null) {
- var tx25 = 0;
- var ty25 = 0;
- var tz25 = 0;
- var tw1 = 1;
- quat1.x = tx25;
- quat1.y = ty25;
- quat1.z = tz25;
- quat1.w = tw1;
- if(_this43.sizeQuat == _this43.stackQuat.length) {
- var newLength7 = _this43.sizeQuat << 1;
- var this8 = new Array(newLength7);
- var newArray7 = this8;
- var _g8 = 0;
- var _g17 = _this43.sizeQuat;
- while(_g8 < _g17) {
- var i7 = _g8++;
- newArray7[i7] = _this43.stackQuat[i7];
- _this43.stackQuat[i7] = null;
- }
- _this43.stackQuat = newArray7;
- }
- _this43.stackQuat[_this43.sizeQuat++] = quat1;
- }
- var _this44 = this._pool;
- var mat32 = null;
- var mat42 = null;
- var quat2 = null;
- if(xYz != null) {
- xYz.zero();
- if(_this44.sizeVec3 == _this44.stackVec3.length) {
- var newLength8 = _this44.sizeVec3 << 1;
- var this9 = new Array(newLength8);
- var newArray8 = this9;
- var _g9 = 0;
- var _g18 = _this44.sizeVec3;
- while(_g9 < _g18) {
- var i8 = _g9++;
- newArray8[i8] = _this44.stackVec3[i8];
- _this44.stackVec3[i8] = null;
- }
- _this44.stackVec3 = newArray8;
- }
- _this44.stackVec3[_this44.sizeVec3++] = xYz;
- }
- if(mat32 != null) {
- var t004 = 1;
- var t014 = 0;
- var t024 = 0;
- var t104 = 0;
- var t114 = 1;
- var t124 = 0;
- var t204 = 0;
- var t214 = 0;
- var t224 = 1;
- mat32.e00 = t004;
- mat32.e01 = t014;
- mat32.e02 = t024;
- mat32.e10 = t104;
- mat32.e11 = t114;
- mat32.e12 = t124;
- mat32.e20 = t204;
- mat32.e21 = t214;
- mat32.e22 = t224;
- if(_this44.sizeMat3 == _this44.stackMat3.length) {
- var newLength9 = _this44.sizeMat3 << 1;
- var this10 = new Array(newLength9);
- var newArray9 = this10;
- var _g10 = 0;
- var _g19 = _this44.sizeMat3;
- while(_g10 < _g19) {
- var i9 = _g10++;
- newArray9[i9] = _this44.stackMat3[i9];
- _this44.stackMat3[i9] = null;
- }
- _this44.stackMat3 = newArray9;
- }
- _this44.stackMat3[_this44.sizeMat3++] = mat32;
- }
- if(mat42 != null) {
- var t005 = 1;
- var t015 = 0;
- var t025 = 0;
- var t032 = 0;
- var t105 = 0;
- var t115 = 1;
- var t125 = 0;
- var t132 = 0;
- var t205 = 0;
- var t215 = 0;
- var t225 = 1;
- var t232 = 0;
- var t302 = 0;
- var t312 = 0;
- var t322 = 0;
- var t332 = 1;
- mat42.e00 = t005;
- mat42.e01 = t015;
- mat42.e02 = t025;
- mat42.e03 = t032;
- mat42.e10 = t105;
- mat42.e11 = t115;
- mat42.e12 = t125;
- mat42.e13 = t132;
- mat42.e20 = t205;
- mat42.e21 = t215;
- mat42.e22 = t225;
- mat42.e23 = t232;
- mat42.e30 = t302;
- mat42.e31 = t312;
- mat42.e32 = t322;
- mat42.e33 = t332;
- if(_this44.sizeMat4 == _this44.stackMat4.length) {
- var newLength10 = _this44.sizeMat4 << 1;
- var this11 = new Array(newLength10);
- var newArray10 = this11;
- var _g20 = 0;
- var _g110 = _this44.sizeMat4;
- while(_g20 < _g110) {
- var i10 = _g20++;
- newArray10[i10] = _this44.stackMat4[i10];
- _this44.stackMat4[i10] = null;
- }
- _this44.stackMat4 = newArray10;
- }
- _this44.stackMat4[_this44.sizeMat4++] = mat42;
- }
- if(quat2 != null) {
- var tx26 = 0;
- var ty26 = 0;
- var tz26 = 0;
- var tw2 = 1;
- quat2.x = tx26;
- quat2.y = ty26;
- quat2.z = tz26;
- quat2.w = tw2;
- if(_this44.sizeQuat == _this44.stackQuat.length) {
- var newLength11 = _this44.sizeQuat << 1;
- var this12 = new Array(newLength11);
- var newArray11 = this12;
- var _g21 = 0;
- var _g111 = _this44.sizeQuat;
- while(_g21 < _g111) {
- var i11 = _g21++;
- newArray11[i11] = _this44.stackQuat[i11];
- _this44.stackQuat[i11] = null;
- }
- _this44.stackQuat = newArray11;
- }
- _this44.stackQuat[_this44.sizeQuat++] = quat2;
- }
- var _this45 = this._pool;
- var mat33 = null;
- var mat43 = null;
- var quat3 = null;
- if(xYZ != null) {
- xYZ.zero();
- if(_this45.sizeVec3 == _this45.stackVec3.length) {
- var newLength12 = _this45.sizeVec3 << 1;
- var this13 = new Array(newLength12);
- var newArray12 = this13;
- var _g22 = 0;
- var _g112 = _this45.sizeVec3;
- while(_g22 < _g112) {
- var i12 = _g22++;
- newArray12[i12] = _this45.stackVec3[i12];
- _this45.stackVec3[i12] = null;
- }
- _this45.stackVec3 = newArray12;
- }
- _this45.stackVec3[_this45.sizeVec3++] = xYZ;
- }
- if(mat33 != null) {
- var t006 = 1;
- var t016 = 0;
- var t026 = 0;
- var t106 = 0;
- var t116 = 1;
- var t126 = 0;
- var t206 = 0;
- var t216 = 0;
- var t226 = 1;
- mat33.e00 = t006;
- mat33.e01 = t016;
- mat33.e02 = t026;
- mat33.e10 = t106;
- mat33.e11 = t116;
- mat33.e12 = t126;
- mat33.e20 = t206;
- mat33.e21 = t216;
- mat33.e22 = t226;
- if(_this45.sizeMat3 == _this45.stackMat3.length) {
- var newLength13 = _this45.sizeMat3 << 1;
- var this14 = new Array(newLength13);
- var newArray13 = this14;
- var _g23 = 0;
- var _g113 = _this45.sizeMat3;
- while(_g23 < _g113) {
- var i13 = _g23++;
- newArray13[i13] = _this45.stackMat3[i13];
- _this45.stackMat3[i13] = null;
- }
- _this45.stackMat3 = newArray13;
- }
- _this45.stackMat3[_this45.sizeMat3++] = mat33;
- }
- if(mat43 != null) {
- var t007 = 1;
- var t017 = 0;
- var t027 = 0;
- var t033 = 0;
- var t107 = 0;
- var t117 = 1;
- var t127 = 0;
- var t133 = 0;
- var t207 = 0;
- var t217 = 0;
- var t227 = 1;
- var t233 = 0;
- var t303 = 0;
- var t313 = 0;
- var t323 = 0;
- var t333 = 1;
- mat43.e00 = t007;
- mat43.e01 = t017;
- mat43.e02 = t027;
- mat43.e03 = t033;
- mat43.e10 = t107;
- mat43.e11 = t117;
- mat43.e12 = t127;
- mat43.e13 = t133;
- mat43.e20 = t207;
- mat43.e21 = t217;
- mat43.e22 = t227;
- mat43.e23 = t233;
- mat43.e30 = t303;
- mat43.e31 = t313;
- mat43.e32 = t323;
- mat43.e33 = t333;
- if(_this45.sizeMat4 == _this45.stackMat4.length) {
- var newLength14 = _this45.sizeMat4 << 1;
- var this15 = new Array(newLength14);
- var newArray14 = this15;
- var _g24 = 0;
- var _g114 = _this45.sizeMat4;
- while(_g24 < _g114) {
- var i14 = _g24++;
- newArray14[i14] = _this45.stackMat4[i14];
- _this45.stackMat4[i14] = null;
- }
- _this45.stackMat4 = newArray14;
- }
- _this45.stackMat4[_this45.sizeMat4++] = mat43;
- }
- if(quat3 != null) {
- var tx27 = 0;
- var ty27 = 0;
- var tz27 = 0;
- var tw3 = 1;
- quat3.x = tx27;
- quat3.y = ty27;
- quat3.z = tz27;
- quat3.w = tw3;
- if(_this45.sizeQuat == _this45.stackQuat.length) {
- var newLength15 = _this45.sizeQuat << 1;
- var this16 = new Array(newLength15);
- var newArray15 = this16;
- var _g25 = 0;
- var _g115 = _this45.sizeQuat;
- while(_g25 < _g115) {
- var i15 = _g25++;
- newArray15[i15] = _this45.stackQuat[i15];
- _this45.stackQuat[i15] = null;
- }
- _this45.stackQuat = newArray15;
- }
- _this45.stackQuat[_this45.sizeQuat++] = quat3;
- }
- var _this46 = this._pool;
- var mat34 = null;
- var mat44 = null;
- var quat4 = null;
- if(Xyz != null) {
- Xyz.zero();
- if(_this46.sizeVec3 == _this46.stackVec3.length) {
- var newLength16 = _this46.sizeVec3 << 1;
- var this17 = new Array(newLength16);
- var newArray16 = this17;
- var _g26 = 0;
- var _g116 = _this46.sizeVec3;
- while(_g26 < _g116) {
- var i16 = _g26++;
- newArray16[i16] = _this46.stackVec3[i16];
- _this46.stackVec3[i16] = null;
- }
- _this46.stackVec3 = newArray16;
- }
- _this46.stackVec3[_this46.sizeVec3++] = Xyz;
- }
- if(mat34 != null) {
- var t008 = 1;
- var t018 = 0;
- var t028 = 0;
- var t108 = 0;
- var t118 = 1;
- var t128 = 0;
- var t208 = 0;
- var t218 = 0;
- var t228 = 1;
- mat34.e00 = t008;
- mat34.e01 = t018;
- mat34.e02 = t028;
- mat34.e10 = t108;
- mat34.e11 = t118;
- mat34.e12 = t128;
- mat34.e20 = t208;
- mat34.e21 = t218;
- mat34.e22 = t228;
- if(_this46.sizeMat3 == _this46.stackMat3.length) {
- var newLength17 = _this46.sizeMat3 << 1;
- var this18 = new Array(newLength17);
- var newArray17 = this18;
- var _g27 = 0;
- var _g117 = _this46.sizeMat3;
- while(_g27 < _g117) {
- var i17 = _g27++;
- newArray17[i17] = _this46.stackMat3[i17];
- _this46.stackMat3[i17] = null;
- }
- _this46.stackMat3 = newArray17;
- }
- _this46.stackMat3[_this46.sizeMat3++] = mat34;
- }
- if(mat44 != null) {
- var t009 = 1;
- var t019 = 0;
- var t029 = 0;
- var t034 = 0;
- var t109 = 0;
- var t119 = 1;
- var t129 = 0;
- var t134 = 0;
- var t209 = 0;
- var t219 = 0;
- var t229 = 1;
- var t234 = 0;
- var t304 = 0;
- var t314 = 0;
- var t324 = 0;
- var t334 = 1;
- mat44.e00 = t009;
- mat44.e01 = t019;
- mat44.e02 = t029;
- mat44.e03 = t034;
- mat44.e10 = t109;
- mat44.e11 = t119;
- mat44.e12 = t129;
- mat44.e13 = t134;
- mat44.e20 = t209;
- mat44.e21 = t219;
- mat44.e22 = t229;
- mat44.e23 = t234;
- mat44.e30 = t304;
- mat44.e31 = t314;
- mat44.e32 = t324;
- mat44.e33 = t334;
- if(_this46.sizeMat4 == _this46.stackMat4.length) {
- var newLength18 = _this46.sizeMat4 << 1;
- var this19 = new Array(newLength18);
- var newArray18 = this19;
- var _g28 = 0;
- var _g118 = _this46.sizeMat4;
- while(_g28 < _g118) {
- var i18 = _g28++;
- newArray18[i18] = _this46.stackMat4[i18];
- _this46.stackMat4[i18] = null;
- }
- _this46.stackMat4 = newArray18;
- }
- _this46.stackMat4[_this46.sizeMat4++] = mat44;
- }
- if(quat4 != null) {
- var tx28 = 0;
- var ty28 = 0;
- var tz28 = 0;
- var tw4 = 1;
- quat4.x = tx28;
- quat4.y = ty28;
- quat4.z = tz28;
- quat4.w = tw4;
- if(_this46.sizeQuat == _this46.stackQuat.length) {
- var newLength19 = _this46.sizeQuat << 1;
- var this20 = new Array(newLength19);
- var newArray19 = this20;
- var _g29 = 0;
- var _g119 = _this46.sizeQuat;
- while(_g29 < _g119) {
- var i19 = _g29++;
- newArray19[i19] = _this46.stackQuat[i19];
- _this46.stackQuat[i19] = null;
- }
- _this46.stackQuat = newArray19;
- }
- _this46.stackQuat[_this46.sizeQuat++] = quat4;
- }
- var _this47 = this._pool;
- var mat35 = null;
- var mat45 = null;
- var quat5 = null;
- if(XyZ != null) {
- XyZ.zero();
- if(_this47.sizeVec3 == _this47.stackVec3.length) {
- var newLength20 = _this47.sizeVec3 << 1;
- var this21 = new Array(newLength20);
- var newArray20 = this21;
- var _g30 = 0;
- var _g120 = _this47.sizeVec3;
- while(_g30 < _g120) {
- var i20 = _g30++;
- newArray20[i20] = _this47.stackVec3[i20];
- _this47.stackVec3[i20] = null;
- }
- _this47.stackVec3 = newArray20;
- }
- _this47.stackVec3[_this47.sizeVec3++] = XyZ;
- }
- if(mat35 != null) {
- var t0010 = 1;
- var t0110 = 0;
- var t0210 = 0;
- var t1010 = 0;
- var t1110 = 1;
- var t1210 = 0;
- var t2010 = 0;
- var t2110 = 0;
- var t2210 = 1;
- mat35.e00 = t0010;
- mat35.e01 = t0110;
- mat35.e02 = t0210;
- mat35.e10 = t1010;
- mat35.e11 = t1110;
- mat35.e12 = t1210;
- mat35.e20 = t2010;
- mat35.e21 = t2110;
- mat35.e22 = t2210;
- if(_this47.sizeMat3 == _this47.stackMat3.length) {
- var newLength21 = _this47.sizeMat3 << 1;
- var this22 = new Array(newLength21);
- var newArray21 = this22;
- var _g31 = 0;
- var _g121 = _this47.sizeMat3;
- while(_g31 < _g121) {
- var i21 = _g31++;
- newArray21[i21] = _this47.stackMat3[i21];
- _this47.stackMat3[i21] = null;
- }
- _this47.stackMat3 = newArray21;
- }
- _this47.stackMat3[_this47.sizeMat3++] = mat35;
- }
- if(mat45 != null) {
- var t0011 = 1;
- var t0111 = 0;
- var t0211 = 0;
- var t035 = 0;
- var t1011 = 0;
- var t1111 = 1;
- var t1211 = 0;
- var t135 = 0;
- var t2011 = 0;
- var t2111 = 0;
- var t2211 = 1;
- var t235 = 0;
- var t305 = 0;
- var t315 = 0;
- var t325 = 0;
- var t335 = 1;
- mat45.e00 = t0011;
- mat45.e01 = t0111;
- mat45.e02 = t0211;
- mat45.e03 = t035;
- mat45.e10 = t1011;
- mat45.e11 = t1111;
- mat45.e12 = t1211;
- mat45.e13 = t135;
- mat45.e20 = t2011;
- mat45.e21 = t2111;
- mat45.e22 = t2211;
- mat45.e23 = t235;
- mat45.e30 = t305;
- mat45.e31 = t315;
- mat45.e32 = t325;
- mat45.e33 = t335;
- if(_this47.sizeMat4 == _this47.stackMat4.length) {
- var newLength22 = _this47.sizeMat4 << 1;
- var this23 = new Array(newLength22);
- var newArray22 = this23;
- var _g32 = 0;
- var _g122 = _this47.sizeMat4;
- while(_g32 < _g122) {
- var i22 = _g32++;
- newArray22[i22] = _this47.stackMat4[i22];
- _this47.stackMat4[i22] = null;
- }
- _this47.stackMat4 = newArray22;
- }
- _this47.stackMat4[_this47.sizeMat4++] = mat45;
- }
- if(quat5 != null) {
- var tx29 = 0;
- var ty29 = 0;
- var tz29 = 0;
- var tw5 = 1;
- quat5.x = tx29;
- quat5.y = ty29;
- quat5.z = tz29;
- quat5.w = tw5;
- if(_this47.sizeQuat == _this47.stackQuat.length) {
- var newLength23 = _this47.sizeQuat << 1;
- var this24 = new Array(newLength23);
- var newArray23 = this24;
- var _g33 = 0;
- var _g123 = _this47.sizeQuat;
- while(_g33 < _g123) {
- var i23 = _g33++;
- newArray23[i23] = _this47.stackQuat[i23];
- _this47.stackQuat[i23] = null;
- }
- _this47.stackQuat = newArray23;
- }
- _this47.stackQuat[_this47.sizeQuat++] = quat5;
- }
- var _this48 = this._pool;
- var mat36 = null;
- var mat46 = null;
- var quat6 = null;
- if(XYz != null) {
- XYz.zero();
- if(_this48.sizeVec3 == _this48.stackVec3.length) {
- var newLength24 = _this48.sizeVec3 << 1;
- var this25 = new Array(newLength24);
- var newArray24 = this25;
- var _g34 = 0;
- var _g124 = _this48.sizeVec3;
- while(_g34 < _g124) {
- var i24 = _g34++;
- newArray24[i24] = _this48.stackVec3[i24];
- _this48.stackVec3[i24] = null;
- }
- _this48.stackVec3 = newArray24;
- }
- _this48.stackVec3[_this48.sizeVec3++] = XYz;
- }
- if(mat36 != null) {
- var t0012 = 1;
- var t0112 = 0;
- var t0212 = 0;
- var t1012 = 0;
- var t1112 = 1;
- var t1212 = 0;
- var t2012 = 0;
- var t2112 = 0;
- var t2212 = 1;
- mat36.e00 = t0012;
- mat36.e01 = t0112;
- mat36.e02 = t0212;
- mat36.e10 = t1012;
- mat36.e11 = t1112;
- mat36.e12 = t1212;
- mat36.e20 = t2012;
- mat36.e21 = t2112;
- mat36.e22 = t2212;
- if(_this48.sizeMat3 == _this48.stackMat3.length) {
- var newLength25 = _this48.sizeMat3 << 1;
- var this26 = new Array(newLength25);
- var newArray25 = this26;
- var _g35 = 0;
- var _g125 = _this48.sizeMat3;
- while(_g35 < _g125) {
- var i25 = _g35++;
- newArray25[i25] = _this48.stackMat3[i25];
- _this48.stackMat3[i25] = null;
- }
- _this48.stackMat3 = newArray25;
- }
- _this48.stackMat3[_this48.sizeMat3++] = mat36;
- }
- if(mat46 != null) {
- var t0013 = 1;
- var t0113 = 0;
- var t0213 = 0;
- var t036 = 0;
- var t1013 = 0;
- var t1113 = 1;
- var t1213 = 0;
- var t136 = 0;
- var t2013 = 0;
- var t2113 = 0;
- var t2213 = 1;
- var t236 = 0;
- var t306 = 0;
- var t316 = 0;
- var t326 = 0;
- var t336 = 1;
- mat46.e00 = t0013;
- mat46.e01 = t0113;
- mat46.e02 = t0213;
- mat46.e03 = t036;
- mat46.e10 = t1013;
- mat46.e11 = t1113;
- mat46.e12 = t1213;
- mat46.e13 = t136;
- mat46.e20 = t2013;
- mat46.e21 = t2113;
- mat46.e22 = t2213;
- mat46.e23 = t236;
- mat46.e30 = t306;
- mat46.e31 = t316;
- mat46.e32 = t326;
- mat46.e33 = t336;
- if(_this48.sizeMat4 == _this48.stackMat4.length) {
- var newLength26 = _this48.sizeMat4 << 1;
- var this27 = new Array(newLength26);
- var newArray26 = this27;
- var _g36 = 0;
- var _g126 = _this48.sizeMat4;
- while(_g36 < _g126) {
- var i26 = _g36++;
- newArray26[i26] = _this48.stackMat4[i26];
- _this48.stackMat4[i26] = null;
- }
- _this48.stackMat4 = newArray26;
- }
- _this48.stackMat4[_this48.sizeMat4++] = mat46;
- }
- if(quat6 != null) {
- var tx30 = 0;
- var ty30 = 0;
- var tz30 = 0;
- var tw6 = 1;
- quat6.x = tx30;
- quat6.y = ty30;
- quat6.z = tz30;
- quat6.w = tw6;
- if(_this48.sizeQuat == _this48.stackQuat.length) {
- var newLength27 = _this48.sizeQuat << 1;
- var this28 = new Array(newLength27);
- var newArray27 = this28;
- var _g37 = 0;
- var _g127 = _this48.sizeQuat;
- while(_g37 < _g127) {
- var i27 = _g37++;
- newArray27[i27] = _this48.stackQuat[i27];
- _this48.stackQuat[i27] = null;
- }
- _this48.stackQuat = newArray27;
- }
- _this48.stackQuat[_this48.sizeQuat++] = quat6;
- }
- var _this49 = this._pool;
- var mat37 = null;
- var mat47 = null;
- var quat7 = null;
- if(XYZ != null) {
- XYZ.zero();
- if(_this49.sizeVec3 == _this49.stackVec3.length) {
- var newLength28 = _this49.sizeVec3 << 1;
- var this29 = new Array(newLength28);
- var newArray28 = this29;
- var _g38 = 0;
- var _g128 = _this49.sizeVec3;
- while(_g38 < _g128) {
- var i28 = _g38++;
- newArray28[i28] = _this49.stackVec3[i28];
- _this49.stackVec3[i28] = null;
- }
- _this49.stackVec3 = newArray28;
- }
- _this49.stackVec3[_this49.sizeVec3++] = XYZ;
- }
- if(mat37 != null) {
- var t0014 = 1;
- var t0114 = 0;
- var t0214 = 0;
- var t1014 = 0;
- var t1114 = 1;
- var t1214 = 0;
- var t2014 = 0;
- var t2114 = 0;
- var t2214 = 1;
- mat37.e00 = t0014;
- mat37.e01 = t0114;
- mat37.e02 = t0214;
- mat37.e10 = t1014;
- mat37.e11 = t1114;
- mat37.e12 = t1214;
- mat37.e20 = t2014;
- mat37.e21 = t2114;
- mat37.e22 = t2214;
- if(_this49.sizeMat3 == _this49.stackMat3.length) {
- var newLength29 = _this49.sizeMat3 << 1;
- var this30 = new Array(newLength29);
- var newArray29 = this30;
- var _g39 = 0;
- var _g129 = _this49.sizeMat3;
- while(_g39 < _g129) {
- var i29 = _g39++;
- newArray29[i29] = _this49.stackMat3[i29];
- _this49.stackMat3[i29] = null;
- }
- _this49.stackMat3 = newArray29;
- }
- _this49.stackMat3[_this49.sizeMat3++] = mat37;
- }
- if(mat47 != null) {
- var t0015 = 1;
- var t0115 = 0;
- var t0215 = 0;
- var t037 = 0;
- var t1015 = 0;
- var t1115 = 1;
- var t1215 = 0;
- var t137 = 0;
- var t2015 = 0;
- var t2115 = 0;
- var t2215 = 1;
- var t237 = 0;
- var t307 = 0;
- var t317 = 0;
- var t327 = 0;
- var t337 = 1;
- mat47.e00 = t0015;
- mat47.e01 = t0115;
- mat47.e02 = t0215;
- mat47.e03 = t037;
- mat47.e10 = t1015;
- mat47.e11 = t1115;
- mat47.e12 = t1215;
- mat47.e13 = t137;
- mat47.e20 = t2015;
- mat47.e21 = t2115;
- mat47.e22 = t2215;
- mat47.e23 = t237;
- mat47.e30 = t307;
- mat47.e31 = t317;
- mat47.e32 = t327;
- mat47.e33 = t337;
- if(_this49.sizeMat4 == _this49.stackMat4.length) {
- var newLength30 = _this49.sizeMat4 << 1;
- var this31 = new Array(newLength30);
- var newArray30 = this31;
- var _g40 = 0;
- var _g130 = _this49.sizeMat4;
- while(_g40 < _g130) {
- var i30 = _g40++;
- newArray30[i30] = _this49.stackMat4[i30];
- _this49.stackMat4[i30] = null;
- }
- _this49.stackMat4 = newArray30;
- }
- _this49.stackMat4[_this49.sizeMat4++] = mat47;
- }
- if(quat7 != null) {
- var tx31 = 0;
- var ty31 = 0;
- var tz31 = 0;
- var tw7 = 1;
- quat7.x = tx31;
- quat7.y = ty31;
- quat7.z = tz31;
- quat7.w = tw7;
- if(_this49.sizeQuat == _this49.stackQuat.length) {
- var newLength31 = _this49.sizeQuat << 1;
- var this32 = new Array(newLength31);
- var newArray31 = this32;
- var _g41 = 0;
- var _g131 = _this49.sizeQuat;
- while(_g41 < _g131) {
- var i31 = _g41++;
- newArray31[i31] = _this49.stackQuat[i31];
- _this49.stackQuat[i31] = null;
- }
- _this49.stackQuat = newArray31;
- }
- _this49.stackQuat[_this49.sizeQuat++] = quat7;
- }
- }
- _drawEllipseOnSphere(d,center,normal,x,y,radiansX,radiansY,radius,color) {
- var n = 16;
- var theta = 0;
- var dTheta = 6.28318530717958 / n;
- var _this = this._pool;
- var rotVec = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
- var _this1 = this._pool;
- var rotQ = _this1.sizeQuat == 0 ? new oimo.common.Quat() : _this1.stackQuat[--_this1.sizeQuat];
- var _this2 = this._pool;
- var rotM = _this2.sizeMat3 == 0 ? new oimo.common.Mat3() : _this2.stackMat3[--_this2.sizeMat3];
- var _this3 = this._pool;
- var prevV = _this3.sizeVec3 == 0 ? new oimo.common.Vec3() : _this3.stackVec3[--_this3.sizeVec3];
- var _g = 0;
- var _g1 = n + 1;
- while(_g < _g1) {
- var i = _g++;
- var rx = Math.cos(theta) * radiansX;
- var ry = Math.sin(theta) * radiansY;
- var halfRotAng = Math.sqrt(rx * rx + ry * ry);
- var rotSin = Math.sin(halfRotAng * 0.5);
- var rotCos = Math.cos(halfRotAng * 0.5);
- var _this4 = rotVec.zero();
- var tx = _this4.x + x.x * rx;
- var ty = _this4.y + x.y * rx;
- var tz = _this4.z + x.z * rx;
- _this4.x = tx;
- _this4.y = ty;
- _this4.z = tz;
- var _this5 = _this4;
- var tx1 = _this5.x + y.x * ry;
- var ty1 = _this5.y + y.y * ry;
- var tz1 = _this5.z + y.z * ry;
- _this5.x = tx1;
- _this5.y = ty1;
- _this5.z = tz1;
- var s = 1 / halfRotAng * rotSin;
- var tx2 = rotVec.x * s;
- var ty2 = rotVec.y * s;
- var tz2 = rotVec.z * s;
- rotVec.x = tx2;
- rotVec.y = ty2;
- rotVec.z = tz2;
- rotQ.x = rotVec.x;
- rotQ.y = rotVec.y;
- rotQ.z = rotVec.z;
- rotQ.w = rotCos;
- var x1 = rotQ.x;
- var y1 = rotQ.y;
- var z = rotQ.z;
- var w = rotQ.w;
- var x2 = 2 * x1;
- var y2 = 2 * y1;
- var z2 = 2 * z;
- var xx = x1 * x2;
- var yy = y1 * y2;
- var zz = z * z2;
- var xy = x1 * y2;
- var yz = y1 * z2;
- var xz = x1 * z2;
- var wx = w * x2;
- var wy = w * y2;
- var wz = w * z2;
- rotM.e00 = 1 - yy - zz;
- rotM.e01 = xy - wz;
- rotM.e02 = xz + wy;
- rotM.e10 = xy + wz;
- rotM.e11 = 1 - xx - zz;
- rotM.e12 = yz - wx;
- rotM.e20 = xz - wy;
- rotM.e21 = yz + wx;
- rotM.e22 = 1 - xx - yy;
- var _this6 = this._pool;
- var _this7 = _this6.sizeVec3 == 0 ? new oimo.common.Vec3() : _this6.stackVec3[--_this6.sizeVec3];
- var tx3 = _this7.x + normal.x * radius;
- var ty3 = _this7.y + normal.y * radius;
- var tz3 = _this7.z + normal.z * radius;
- _this7.x = tx3;
- _this7.y = ty3;
- _this7.z = tz3;
- var v = _this7;
- var tx4 = v.x * rotM.e00 + v.y * rotM.e01 + v.z * rotM.e02;
- var ty4 = v.x * rotM.e10 + v.y * rotM.e11 + v.z * rotM.e12;
- var tz4 = v.x * rotM.e20 + v.y * rotM.e21 + v.z * rotM.e22;
- v.x = tx4;
- v.y = ty4;
- v.z = tz4;
- var _this8 = v;
- var tx5 = _this8.x + center.x;
- var ty5 = _this8.y + center.y;
- var tz5 = _this8.z + center.z;
- _this8.x = tx5;
- _this8.y = ty5;
- _this8.z = tz5;
- if(i >= 1) {
- d.line(prevV,v,color);
- }
- var _this9 = this._pool;
- var mat3 = null;
- var mat4 = null;
- var quat = null;
- if(prevV != null) {
- prevV.zero();
- if(_this9.sizeVec3 == _this9.stackVec3.length) {
- var newLength = _this9.sizeVec3 << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g2 = 0;
- var _g11 = _this9.sizeVec3;
- while(_g2 < _g11) {
- var i1 = _g2++;
- newArray[i1] = _this9.stackVec3[i1];
- _this9.stackVec3[i1] = null;
- }
- _this9.stackVec3 = newArray;
- }
- _this9.stackVec3[_this9.sizeVec3++] = prevV;
- }
- if(mat3 != null) {
- var t00 = 1;
- var t01 = 0;
- var t02 = 0;
- var t10 = 0;
- var t11 = 1;
- var t12 = 0;
- var t20 = 0;
- var t21 = 0;
- var t22 = 1;
- mat3.e00 = t00;
- mat3.e01 = t01;
- mat3.e02 = t02;
- mat3.e10 = t10;
- mat3.e11 = t11;
- mat3.e12 = t12;
- mat3.e20 = t20;
- mat3.e21 = t21;
- mat3.e22 = t22;
- if(_this9.sizeMat3 == _this9.stackMat3.length) {
- var newLength1 = _this9.sizeMat3 << 1;
- var this2 = new Array(newLength1);
- var newArray1 = this2;
- var _g3 = 0;
- var _g12 = _this9.sizeMat3;
- while(_g3 < _g12) {
- var i2 = _g3++;
- newArray1[i2] = _this9.stackMat3[i2];
- _this9.stackMat3[i2] = null;
- }
- _this9.stackMat3 = newArray1;
- }
- _this9.stackMat3[_this9.sizeMat3++] = mat3;
- }
- if(mat4 != null) {
- var t001 = 1;
- var t011 = 0;
- var t021 = 0;
- var t03 = 0;
- var t101 = 0;
- var t111 = 1;
- var t121 = 0;
- var t13 = 0;
- var t201 = 0;
- var t211 = 0;
- var t221 = 1;
- var t23 = 0;
- var t30 = 0;
- var t31 = 0;
- var t32 = 0;
- var t33 = 1;
- mat4.e00 = t001;
- mat4.e01 = t011;
- mat4.e02 = t021;
- mat4.e03 = t03;
- mat4.e10 = t101;
- mat4.e11 = t111;
- mat4.e12 = t121;
- mat4.e13 = t13;
- mat4.e20 = t201;
- mat4.e21 = t211;
- mat4.e22 = t221;
- mat4.e23 = t23;
- mat4.e30 = t30;
- mat4.e31 = t31;
- mat4.e32 = t32;
- mat4.e33 = t33;
- if(_this9.sizeMat4 == _this9.stackMat4.length) {
- var newLength2 = _this9.sizeMat4 << 1;
- var this3 = new Array(newLength2);
- var newArray2 = this3;
- var _g4 = 0;
- var _g13 = _this9.sizeMat4;
- while(_g4 < _g13) {
- var i3 = _g4++;
- newArray2[i3] = _this9.stackMat4[i3];
- _this9.stackMat4[i3] = null;
- }
- _this9.stackMat4 = newArray2;
- }
- _this9.stackMat4[_this9.sizeMat4++] = mat4;
- }
- if(quat != null) {
- var tx6 = 0;
- var ty6 = 0;
- var tz6 = 0;
- var tw = 1;
- quat.x = tx6;
- quat.y = ty6;
- quat.z = tz6;
- quat.w = tw;
- if(_this9.sizeQuat == _this9.stackQuat.length) {
- var newLength3 = _this9.sizeQuat << 1;
- var this4 = new Array(newLength3);
- var newArray3 = this4;
- var _g5 = 0;
- var _g14 = _this9.sizeQuat;
- while(_g5 < _g14) {
- var i4 = _g5++;
- newArray3[i4] = _this9.stackQuat[i4];
- _this9.stackQuat[i4] = null;
- }
- _this9.stackQuat = newArray3;
- }
- _this9.stackQuat[_this9.sizeQuat++] = quat;
- }
- prevV = v;
- theta += dTheta;
- }
- var _this10 = this._pool;
- var mat31 = null;
- var mat41 = null;
- var quat1 = null;
- if(rotVec != null) {
- rotVec.zero();
- if(_this10.sizeVec3 == _this10.stackVec3.length) {
- var newLength4 = _this10.sizeVec3 << 1;
- var this5 = new Array(newLength4);
- var newArray4 = this5;
- var _g6 = 0;
- var _g15 = _this10.sizeVec3;
- while(_g6 < _g15) {
- var i5 = _g6++;
- newArray4[i5] = _this10.stackVec3[i5];
- _this10.stackVec3[i5] = null;
- }
- _this10.stackVec3 = newArray4;
- }
- _this10.stackVec3[_this10.sizeVec3++] = rotVec;
- }
- if(mat31 != null) {
- var t002 = 1;
- var t012 = 0;
- var t022 = 0;
- var t102 = 0;
- var t112 = 1;
- var t122 = 0;
- var t202 = 0;
- var t212 = 0;
- var t222 = 1;
- mat31.e00 = t002;
- mat31.e01 = t012;
- mat31.e02 = t022;
- mat31.e10 = t102;
- mat31.e11 = t112;
- mat31.e12 = t122;
- mat31.e20 = t202;
- mat31.e21 = t212;
- mat31.e22 = t222;
- if(_this10.sizeMat3 == _this10.stackMat3.length) {
- var newLength5 = _this10.sizeMat3 << 1;
- var this6 = new Array(newLength5);
- var newArray5 = this6;
- var _g7 = 0;
- var _g16 = _this10.sizeMat3;
- while(_g7 < _g16) {
- var i6 = _g7++;
- newArray5[i6] = _this10.stackMat3[i6];
- _this10.stackMat3[i6] = null;
- }
- _this10.stackMat3 = newArray5;
- }
- _this10.stackMat3[_this10.sizeMat3++] = mat31;
- }
- if(mat41 != null) {
- var t003 = 1;
- var t013 = 0;
- var t023 = 0;
- var t031 = 0;
- var t103 = 0;
- var t113 = 1;
- var t123 = 0;
- var t131 = 0;
- var t203 = 0;
- var t213 = 0;
- var t223 = 1;
- var t231 = 0;
- var t301 = 0;
- var t311 = 0;
- var t321 = 0;
- var t331 = 1;
- mat41.e00 = t003;
- mat41.e01 = t013;
- mat41.e02 = t023;
- mat41.e03 = t031;
- mat41.e10 = t103;
- mat41.e11 = t113;
- mat41.e12 = t123;
- mat41.e13 = t131;
- mat41.e20 = t203;
- mat41.e21 = t213;
- mat41.e22 = t223;
- mat41.e23 = t231;
- mat41.e30 = t301;
- mat41.e31 = t311;
- mat41.e32 = t321;
- mat41.e33 = t331;
- if(_this10.sizeMat4 == _this10.stackMat4.length) {
- var newLength6 = _this10.sizeMat4 << 1;
- var this7 = new Array(newLength6);
- var newArray6 = this7;
- var _g8 = 0;
- var _g17 = _this10.sizeMat4;
- while(_g8 < _g17) {
- var i7 = _g8++;
- newArray6[i7] = _this10.stackMat4[i7];
- _this10.stackMat4[i7] = null;
- }
- _this10.stackMat4 = newArray6;
- }
- _this10.stackMat4[_this10.sizeMat4++] = mat41;
- }
- if(quat1 != null) {
- var tx7 = 0;
- var ty7 = 0;
- var tz7 = 0;
- var tw1 = 1;
- quat1.x = tx7;
- quat1.y = ty7;
- quat1.z = tz7;
- quat1.w = tw1;
- if(_this10.sizeQuat == _this10.stackQuat.length) {
- var newLength7 = _this10.sizeQuat << 1;
- var this8 = new Array(newLength7);
- var newArray7 = this8;
- var _g9 = 0;
- var _g18 = _this10.sizeQuat;
- while(_g9 < _g18) {
- var i8 = _g9++;
- newArray7[i8] = _this10.stackQuat[i8];
- _this10.stackQuat[i8] = null;
- }
- _this10.stackQuat = newArray7;
- }
- _this10.stackQuat[_this10.sizeQuat++] = quat1;
- }
- var _this11 = this._pool;
- var vec3 = null;
- var mat32 = null;
- var mat42 = null;
- if(vec3 != null) {
- vec3.zero();
- if(_this11.sizeVec3 == _this11.stackVec3.length) {
- var newLength8 = _this11.sizeVec3 << 1;
- var this9 = new Array(newLength8);
- var newArray8 = this9;
- var _g10 = 0;
- var _g19 = _this11.sizeVec3;
- while(_g10 < _g19) {
- var i9 = _g10++;
- newArray8[i9] = _this11.stackVec3[i9];
- _this11.stackVec3[i9] = null;
- }
- _this11.stackVec3 = newArray8;
- }
- _this11.stackVec3[_this11.sizeVec3++] = vec3;
- }
- if(mat32 != null) {
- var t004 = 1;
- var t014 = 0;
- var t024 = 0;
- var t104 = 0;
- var t114 = 1;
- var t124 = 0;
- var t204 = 0;
- var t214 = 0;
- var t224 = 1;
- mat32.e00 = t004;
- mat32.e01 = t014;
- mat32.e02 = t024;
- mat32.e10 = t104;
- mat32.e11 = t114;
- mat32.e12 = t124;
- mat32.e20 = t204;
- mat32.e21 = t214;
- mat32.e22 = t224;
- if(_this11.sizeMat3 == _this11.stackMat3.length) {
- var newLength9 = _this11.sizeMat3 << 1;
- var this10 = new Array(newLength9);
- var newArray9 = this10;
- var _g20 = 0;
- var _g110 = _this11.sizeMat3;
- while(_g20 < _g110) {
- var i10 = _g20++;
- newArray9[i10] = _this11.stackMat3[i10];
- _this11.stackMat3[i10] = null;
- }
- _this11.stackMat3 = newArray9;
- }
- _this11.stackMat3[_this11.sizeMat3++] = mat32;
- }
- if(mat42 != null) {
- var t005 = 1;
- var t015 = 0;
- var t025 = 0;
- var t032 = 0;
- var t105 = 0;
- var t115 = 1;
- var t125 = 0;
- var t132 = 0;
- var t205 = 0;
- var t215 = 0;
- var t225 = 1;
- var t232 = 0;
- var t302 = 0;
- var t312 = 0;
- var t322 = 0;
- var t332 = 1;
- mat42.e00 = t005;
- mat42.e01 = t015;
- mat42.e02 = t025;
- mat42.e03 = t032;
- mat42.e10 = t105;
- mat42.e11 = t115;
- mat42.e12 = t125;
- mat42.e13 = t132;
- mat42.e20 = t205;
- mat42.e21 = t215;
- mat42.e22 = t225;
- mat42.e23 = t232;
- mat42.e30 = t302;
- mat42.e31 = t312;
- mat42.e32 = t322;
- mat42.e33 = t332;
- if(_this11.sizeMat4 == _this11.stackMat4.length) {
- var newLength10 = _this11.sizeMat4 << 1;
- var this11 = new Array(newLength10);
- var newArray10 = this11;
- var _g21 = 0;
- var _g111 = _this11.sizeMat4;
- while(_g21 < _g111) {
- var i11 = _g21++;
- newArray10[i11] = _this11.stackMat4[i11];
- _this11.stackMat4[i11] = null;
- }
- _this11.stackMat4 = newArray10;
- }
- _this11.stackMat4[_this11.sizeMat4++] = mat42;
- }
- if(rotQ != null) {
- var tx8 = 0;
- var ty8 = 0;
- var tz8 = 0;
- var tw2 = 1;
- rotQ.x = tx8;
- rotQ.y = ty8;
- rotQ.z = tz8;
- rotQ.w = tw2;
- if(_this11.sizeQuat == _this11.stackQuat.length) {
- var newLength11 = _this11.sizeQuat << 1;
- var this12 = new Array(newLength11);
- var newArray11 = this12;
- var _g22 = 0;
- var _g112 = _this11.sizeQuat;
- while(_g22 < _g112) {
- var i12 = _g22++;
- newArray11[i12] = _this11.stackQuat[i12];
- _this11.stackQuat[i12] = null;
- }
- _this11.stackQuat = newArray11;
- }
- _this11.stackQuat[_this11.sizeQuat++] = rotQ;
- }
- var _this12 = this._pool;
- var vec31 = null;
- var mat43 = null;
- var quat2 = null;
- if(vec31 != null) {
- vec31.zero();
- if(_this12.sizeVec3 == _this12.stackVec3.length) {
- var newLength12 = _this12.sizeVec3 << 1;
- var this13 = new Array(newLength12);
- var newArray12 = this13;
- var _g23 = 0;
- var _g113 = _this12.sizeVec3;
- while(_g23 < _g113) {
- var i13 = _g23++;
- newArray12[i13] = _this12.stackVec3[i13];
- _this12.stackVec3[i13] = null;
- }
- _this12.stackVec3 = newArray12;
- }
- _this12.stackVec3[_this12.sizeVec3++] = vec31;
- }
- if(rotM != null) {
- var t006 = 1;
- var t016 = 0;
- var t026 = 0;
- var t106 = 0;
- var t116 = 1;
- var t126 = 0;
- var t206 = 0;
- var t216 = 0;
- var t226 = 1;
- rotM.e00 = t006;
- rotM.e01 = t016;
- rotM.e02 = t026;
- rotM.e10 = t106;
- rotM.e11 = t116;
- rotM.e12 = t126;
- rotM.e20 = t206;
- rotM.e21 = t216;
- rotM.e22 = t226;
- if(_this12.sizeMat3 == _this12.stackMat3.length) {
- var newLength13 = _this12.sizeMat3 << 1;
- var this14 = new Array(newLength13);
- var newArray13 = this14;
- var _g24 = 0;
- var _g114 = _this12.sizeMat3;
- while(_g24 < _g114) {
- var i14 = _g24++;
- newArray13[i14] = _this12.stackMat3[i14];
- _this12.stackMat3[i14] = null;
- }
- _this12.stackMat3 = newArray13;
- }
- _this12.stackMat3[_this12.sizeMat3++] = rotM;
- }
- if(mat43 != null) {
- var t007 = 1;
- var t017 = 0;
- var t027 = 0;
- var t033 = 0;
- var t107 = 0;
- var t117 = 1;
- var t127 = 0;
- var t133 = 0;
- var t207 = 0;
- var t217 = 0;
- var t227 = 1;
- var t233 = 0;
- var t303 = 0;
- var t313 = 0;
- var t323 = 0;
- var t333 = 1;
- mat43.e00 = t007;
- mat43.e01 = t017;
- mat43.e02 = t027;
- mat43.e03 = t033;
- mat43.e10 = t107;
- mat43.e11 = t117;
- mat43.e12 = t127;
- mat43.e13 = t133;
- mat43.e20 = t207;
- mat43.e21 = t217;
- mat43.e22 = t227;
- mat43.e23 = t233;
- mat43.e30 = t303;
- mat43.e31 = t313;
- mat43.e32 = t323;
- mat43.e33 = t333;
- if(_this12.sizeMat4 == _this12.stackMat4.length) {
- var newLength14 = _this12.sizeMat4 << 1;
- var this15 = new Array(newLength14);
- var newArray14 = this15;
- var _g25 = 0;
- var _g115 = _this12.sizeMat4;
- while(_g25 < _g115) {
- var i15 = _g25++;
- newArray14[i15] = _this12.stackMat4[i15];
- _this12.stackMat4[i15] = null;
- }
- _this12.stackMat4 = newArray14;
- }
- _this12.stackMat4[_this12.sizeMat4++] = mat43;
- }
- if(quat2 != null) {
- var tx9 = 0;
- var ty9 = 0;
- var tz9 = 0;
- var tw3 = 1;
- quat2.x = tx9;
- quat2.y = ty9;
- quat2.z = tz9;
- quat2.w = tw3;
- if(_this12.sizeQuat == _this12.stackQuat.length) {
- var newLength15 = _this12.sizeQuat << 1;
- var this16 = new Array(newLength15);
- var newArray15 = this16;
- var _g26 = 0;
- var _g116 = _this12.sizeQuat;
- while(_g26 < _g116) {
- var i16 = _g26++;
- newArray15[i16] = _this12.stackQuat[i16];
- _this12.stackQuat[i16] = null;
- }
- _this12.stackQuat = newArray15;
- }
- _this12.stackQuat[_this12.sizeQuat++] = quat2;
- }
- var _this13 = this._pool;
- var mat33 = null;
- var mat44 = null;
- var quat3 = null;
- if(prevV != null) {
- prevV.zero();
- if(_this13.sizeVec3 == _this13.stackVec3.length) {
- var newLength16 = _this13.sizeVec3 << 1;
- var this17 = new Array(newLength16);
- var newArray16 = this17;
- var _g27 = 0;
- var _g117 = _this13.sizeVec3;
- while(_g27 < _g117) {
- var i17 = _g27++;
- newArray16[i17] = _this13.stackVec3[i17];
- _this13.stackVec3[i17] = null;
- }
- _this13.stackVec3 = newArray16;
- }
- _this13.stackVec3[_this13.sizeVec3++] = prevV;
- }
- if(mat33 != null) {
- var t008 = 1;
- var t018 = 0;
- var t028 = 0;
- var t108 = 0;
- var t118 = 1;
- var t128 = 0;
- var t208 = 0;
- var t218 = 0;
- var t228 = 1;
- mat33.e00 = t008;
- mat33.e01 = t018;
- mat33.e02 = t028;
- mat33.e10 = t108;
- mat33.e11 = t118;
- mat33.e12 = t128;
- mat33.e20 = t208;
- mat33.e21 = t218;
- mat33.e22 = t228;
- if(_this13.sizeMat3 == _this13.stackMat3.length) {
- var newLength17 = _this13.sizeMat3 << 1;
- var this18 = new Array(newLength17);
- var newArray17 = this18;
- var _g28 = 0;
- var _g118 = _this13.sizeMat3;
- while(_g28 < _g118) {
- var i18 = _g28++;
- newArray17[i18] = _this13.stackMat3[i18];
- _this13.stackMat3[i18] = null;
- }
- _this13.stackMat3 = newArray17;
- }
- _this13.stackMat3[_this13.sizeMat3++] = mat33;
- }
- if(mat44 != null) {
- var t009 = 1;
- var t019 = 0;
- var t029 = 0;
- var t034 = 0;
- var t109 = 0;
- var t119 = 1;
- var t129 = 0;
- var t134 = 0;
- var t209 = 0;
- var t219 = 0;
- var t229 = 1;
- var t234 = 0;
- var t304 = 0;
- var t314 = 0;
- var t324 = 0;
- var t334 = 1;
- mat44.e00 = t009;
- mat44.e01 = t019;
- mat44.e02 = t029;
- mat44.e03 = t034;
- mat44.e10 = t109;
- mat44.e11 = t119;
- mat44.e12 = t129;
- mat44.e13 = t134;
- mat44.e20 = t209;
- mat44.e21 = t219;
- mat44.e22 = t229;
- mat44.e23 = t234;
- mat44.e30 = t304;
- mat44.e31 = t314;
- mat44.e32 = t324;
- mat44.e33 = t334;
- if(_this13.sizeMat4 == _this13.stackMat4.length) {
- var newLength18 = _this13.sizeMat4 << 1;
- var this19 = new Array(newLength18);
- var newArray18 = this19;
- var _g29 = 0;
- var _g119 = _this13.sizeMat4;
- while(_g29 < _g119) {
- var i19 = _g29++;
- newArray18[i19] = _this13.stackMat4[i19];
- _this13.stackMat4[i19] = null;
- }
- _this13.stackMat4 = newArray18;
- }
- _this13.stackMat4[_this13.sizeMat4++] = mat44;
- }
- if(quat3 != null) {
- var tx10 = 0;
- var ty10 = 0;
- var tz10 = 0;
- var tw4 = 1;
- quat3.x = tx10;
- quat3.y = ty10;
- quat3.z = tz10;
- quat3.w = tw4;
- if(_this13.sizeQuat == _this13.stackQuat.length) {
- var newLength19 = _this13.sizeQuat << 1;
- var this20 = new Array(newLength19);
- var newArray19 = this20;
- var _g30 = 0;
- var _g120 = _this13.sizeQuat;
- while(_g30 < _g120) {
- var i20 = _g30++;
- newArray19[i20] = _this13.stackQuat[i20];
- _this13.stackQuat[i20] = null;
- }
- _this13.stackQuat = newArray19;
- }
- _this13.stackQuat[_this13.sizeQuat++] = quat3;
- }
- }
- step(timeStep) {
- if(this._timeStep.dt > 0) {
- this._timeStep.dtRatio = timeStep / this._timeStep.dt;
- }
- this._timeStep.dt = timeStep;
- this._timeStep.invDt = 1 / timeStep;
- var st = Date.now() / 1000;
- this._updateContacts();
- this._solveIslands();
- var en = Date.now() / 1000;
- oimo.dynamics.common.Performance.totalTime = (en - st) * 1000;
- }
- addRigidBody(rigidBody) {
- if(rigidBody._world != null) {
- throw new Error("A rigid body cannot belong to multiple worlds.");
- }
- if(this._rigidBodyList == null) {
- this._rigidBodyList = rigidBody;
- this._rigidBodyListLast = rigidBody;
- } else {
- this._rigidBodyListLast._next = rigidBody;
- rigidBody._prev = this._rigidBodyListLast;
- this._rigidBodyListLast = rigidBody;
- }
- rigidBody._world = this;
- var s = rigidBody._shapeList;
- while(s != null) {
- var n = s._next;
- s._proxy = this._broadPhase.createProxy(s,s._aabb);
- s._id = this._shapeIdCount++;
- this._numShapes++;
- s = n;
- }
- this._numRigidBodies++;
- }
- removeRigidBody(rigidBody) {
- if(rigidBody._world != this) {
- throw new Error("The rigid body doesn't belong to the world.");
- }
- var prev = rigidBody._prev;
- var next = rigidBody._next;
- if(prev != null) {
- prev._next = next;
- }
- if(next != null) {
- next._prev = prev;
- }
- if(rigidBody == this._rigidBodyList) {
- this._rigidBodyList = this._rigidBodyList._next;
- }
- if(rigidBody == this._rigidBodyListLast) {
- this._rigidBodyListLast = this._rigidBodyListLast._prev;
- }
- rigidBody._next = null;
- rigidBody._prev = null;
- rigidBody._world = null;
- var s = rigidBody._shapeList;
- while(s != null) {
- var n = s._next;
- this._broadPhase.destroyProxy(s._proxy);
- s._proxy = null;
- s._id = -1;
- var cl = s._rigidBody._contactLinkList;
- while(cl != null) {
- var n1 = cl._next;
- var c = cl._contact;
- if(c._s1 == s || c._s2 == s) {
- var _this = cl._other;
- _this._sleeping = false;
- _this._sleepTime = 0;
- var _this1 = this._contactManager;
- var prev1 = c._prev;
- var next1 = c._next;
- if(prev1 != null) {
- prev1._next = next1;
- }
- if(next1 != null) {
- next1._prev = prev1;
- }
- if(c == _this1._contactList) {
- _this1._contactList = _this1._contactList._next;
- }
- if(c == _this1._contactListLast) {
- _this1._contactListLast = _this1._contactListLast._prev;
- }
- c._next = null;
- c._prev = null;
- if(c._touching) {
- var cc1 = c._s1._contactCallback;
- var cc2 = c._s2._contactCallback;
- if(cc1 == cc2) {
- cc2 = null;
- }
- if(cc1 != null) {
- cc1.endContact(c);
- }
- if(cc2 != null) {
- cc2.endContact(c);
- }
- }
- var prev2 = c._link1._prev;
- var next2 = c._link1._next;
- if(prev2 != null) {
- prev2._next = next2;
- }
- if(next2 != null) {
- next2._prev = prev2;
- }
- if(c._link1 == c._b1._contactLinkList) {
- c._b1._contactLinkList = c._b1._contactLinkList._next;
- }
- if(c._link1 == c._b1._contactLinkListLast) {
- c._b1._contactLinkListLast = c._b1._contactLinkListLast._prev;
- }
- c._link1._next = null;
- c._link1._prev = null;
- var prev3 = c._link2._prev;
- var next3 = c._link2._next;
- if(prev3 != null) {
- prev3._next = next3;
- }
- if(next3 != null) {
- next3._prev = prev3;
- }
- if(c._link2 == c._b2._contactLinkList) {
- c._b2._contactLinkList = c._b2._contactLinkList._next;
- }
- if(c._link2 == c._b2._contactLinkListLast) {
- c._b2._contactLinkListLast = c._b2._contactLinkListLast._prev;
- }
- c._link2._next = null;
- c._link2._prev = null;
- c._b1._numContactLinks--;
- c._b2._numContactLinks--;
- c._link1._other = null;
- c._link2._other = null;
- c._link1._contact = null;
- c._link2._contact = null;
- c._s1 = null;
- c._s2 = null;
- c._b1 = null;
- c._b2 = null;
- c._touching = false;
- c._cachedDetectorData._clear();
- c._manifold._clear();
- c._detector = null;
- var _this2 = c._contactConstraint;
- _this2._s1 = null;
- _this2._s2 = null;
- _this2._b1 = null;
- _this2._b2 = null;
- _this2._tf1 = null;
- _this2._tf2 = null;
- c._next = _this1._contactPool;
- _this1._contactPool = c;
- _this1._numContacts--;
- }
- cl = n1;
- }
- this._numShapes--;
- s = n;
- }
- this._numRigidBodies--;
- }
- addJoint(joint) {
- if(joint._world != null) {
- throw new Error("A joint cannot belong to multiple worlds.");
- }
- if(this._jointList == null) {
- this._jointList = joint;
- this._jointListLast = joint;
- } else {
- this._jointListLast._next = joint;
- joint._prev = this._jointListLast;
- this._jointListLast = joint;
- }
- joint._world = this;
- joint._link1._other = joint._b2;
- joint._link2._other = joint._b1;
- if(joint._b1._jointLinkList == null) {
- joint._b1._jointLinkList = joint._link1;
- joint._b1._jointLinkListLast = joint._link1;
- } else {
- joint._b1._jointLinkListLast._next = joint._link1;
- joint._link1._prev = joint._b1._jointLinkListLast;
- joint._b1._jointLinkListLast = joint._link1;
- }
- if(joint._b2._jointLinkList == null) {
- joint._b2._jointLinkList = joint._link2;
- joint._b2._jointLinkListLast = joint._link2;
- } else {
- joint._b2._jointLinkListLast._next = joint._link2;
- joint._link2._prev = joint._b2._jointLinkListLast;
- joint._b2._jointLinkListLast = joint._link2;
- }
- joint._b1._numJointLinks++;
- joint._b2._numJointLinks++;
- var _this = joint._b1;
- _this._sleeping = false;
- _this._sleepTime = 0;
- var _this1 = joint._b2;
- _this1._sleeping = false;
- _this1._sleepTime = 0;
- joint._syncAnchors();
- this._numJoints++;
- }
- removeJoint(joint) {
- if(joint._world != this) {
- throw new Error("The joint doesn't belong to the world.");
- }
- var prev = joint._prev;
- var next = joint._next;
- if(prev != null) {
- prev._next = next;
- }
- if(next != null) {
- next._prev = prev;
- }
- if(joint == this._jointList) {
- this._jointList = this._jointList._next;
- }
- if(joint == this._jointListLast) {
- this._jointListLast = this._jointListLast._prev;
- }
- joint._next = null;
- joint._prev = null;
- joint._world = null;
- var prev1 = joint._link1._prev;
- var next1 = joint._link1._next;
- if(prev1 != null) {
- prev1._next = next1;
- }
- if(next1 != null) {
- next1._prev = prev1;
- }
- if(joint._link1 == joint._b1._jointLinkList) {
- joint._b1._jointLinkList = joint._b1._jointLinkList._next;
- }
- if(joint._link1 == joint._b1._jointLinkListLast) {
- joint._b1._jointLinkListLast = joint._b1._jointLinkListLast._prev;
- }
- joint._link1._next = null;
- joint._link1._prev = null;
- var prev2 = joint._link2._prev;
- var next2 = joint._link2._next;
- if(prev2 != null) {
- prev2._next = next2;
- }
- if(next2 != null) {
- next2._prev = prev2;
- }
- if(joint._link2 == joint._b2._jointLinkList) {
- joint._b2._jointLinkList = joint._b2._jointLinkList._next;
- }
- if(joint._link2 == joint._b2._jointLinkListLast) {
- joint._b2._jointLinkListLast = joint._b2._jointLinkListLast._prev;
- }
- joint._link2._next = null;
- joint._link2._prev = null;
- joint._link1._other = null;
- joint._link2._other = null;
- joint._b1._numJointLinks--;
- joint._b2._numJointLinks--;
- var _this = joint._b1;
- _this._sleeping = false;
- _this._sleepTime = 0;
- var _this1 = joint._b2;
- _this1._sleeping = false;
- _this1._sleepTime = 0;
- this._numJoints--;
- }
- setDebugDraw(debugDraw) {
- this._debugDraw = debugDraw;
- }
- getDebugDraw() {
- return this._debugDraw;
- }
- debugDraw() {
- if(this._debugDraw != null) {
- if(this._broadPhase._type == 2) {
- var bvhBroadPhase = this._broadPhase;
- this._drawBvh(this._debugDraw,bvhBroadPhase._tree);
- }
- this._drawRigidBodies(this._debugDraw);
- this._drawConstraints(this._debugDraw);
- }
- }
- rayCast(begin,end,callback) {
- var _this = this._rayCastWrapper.begin;
- _this.x = begin.x;
- _this.y = begin.y;
- _this.z = begin.z;
- var _this1 = this._rayCastWrapper.end;
- _this1.x = end.x;
- _this1.y = end.y;
- _this1.z = end.z;
- this._rayCastWrapper.callback = callback;
- this._broadPhase.rayCast(begin,end,this._rayCastWrapper);
- }
- convexCast(convex,begin,translation,callback) {
- this._convexCastWrapper.convex = convex;
- var _this = this._convexCastWrapper.begin;
- _this._positionX = begin._positionX;
- _this._positionY = begin._positionY;
- _this._positionZ = begin._positionZ;
- _this._rotation00 = begin._rotation00;
- _this._rotation01 = begin._rotation01;
- _this._rotation02 = begin._rotation02;
- _this._rotation10 = begin._rotation10;
- _this._rotation11 = begin._rotation11;
- _this._rotation12 = begin._rotation12;
- _this._rotation20 = begin._rotation20;
- _this._rotation21 = begin._rotation21;
- _this._rotation22 = begin._rotation22;
- var _this1 = this._convexCastWrapper.translation;
- _this1.x = translation.x;
- _this1.y = translation.y;
- _this1.z = translation.z;
- this._convexCastWrapper.callback = callback;
- this._broadPhase.convexCast(convex,begin,translation,this._convexCastWrapper);
- }
- aabbTest(aabb,callback) {
- this._aabbTestWrapper._aabb.copyFrom(aabb);
- this._aabbTestWrapper._callback = callback;
- this._broadPhase.aabbTest(aabb,this._aabbTestWrapper);
- }
- getRigidBodyList() {
- return this._rigidBodyList;
- }
- getJointList() {
- return this._jointList;
- }
- getBroadPhase() {
- return this._broadPhase;
- }
- getContactManager() {
- return this._contactManager;
- }
- getNumRigidBodies() {
- return this._numRigidBodies;
- }
- getNumJoints() {
- return this._numJoints;
- }
- getNumShapes() {
- return this._numShapes;
- }
- getNumIslands() {
- return this._numIslands;
- }
- getNumVelocityIterations() {
- return this._numVelocityIterations;
- }
- setNumVelocityIterations(numVelocityIterations) {
- this._numVelocityIterations = numVelocityIterations;
- }
- getNumPositionIterations() {
- return this._numPositionIterations;
- }
- setNumPositionIterations(numPositionIterations) {
- this._numPositionIterations = numPositionIterations;
- }
- getGravity() {
- return this._gravity;
- }
- setGravity(gravity) {
- var _this = this._gravity;
- _this.x = gravity.x;
- _this.y = gravity.y;
- _this.z = gravity.z;
- }
- }
- if(!oimo.dynamics._World) oimo.dynamics._World = {};
- oimo.dynamics._World.RayCastWrapper = class oimo_dynamics__$World_RayCastWrapper extends oimo.collision.broadphase.BroadPhaseProxyCallback {
- constructor() {
- super();
- this.rayCastHit = new oimo.collision.geometry.RayCastHit();
- this.begin = new oimo.common.Vec3();
- this.end = new oimo.common.Vec3();
- this.callback = null;
- }
- process(proxy) {
- var shape = proxy.userData;
- if(shape._geom.rayCast(this.begin,this.end,shape._transform,this.rayCastHit)) {
- this.callback.process(shape,this.rayCastHit);
- }
- }
- }
- oimo.dynamics._World.ConvexCastWrapper = class oimo_dynamics__$World_ConvexCastWrapper extends oimo.collision.broadphase.BroadPhaseProxyCallback {
- constructor() {
- super();
- this.rayCastHit = new oimo.collision.geometry.RayCastHit();
- this.begin = new oimo.common.Transform();
- this.translation = new oimo.common.Vec3();
- this.zero = new oimo.common.Vec3();
- this.callback = null;
- this.convex = null;
- }
- process(proxy) {
- var shape = proxy.userData;
- var type = shape._geom._type;
- if(type < 0 || type > 5) {
- return;
- }
- var geom = shape._geom;
- if(oimo.collision.narrowphase.detector.gjkepa.GjkEpa.instance.convexCast(this.convex,geom,this.begin,shape._transform,this.translation,this.zero,this.rayCastHit)) {
- this.callback.process(shape,this.rayCastHit);
- }
- }
- }
- oimo.dynamics._World.AabbTestWrapper = class oimo_dynamics__$World_AabbTestWrapper extends oimo.collision.broadphase.BroadPhaseProxyCallback {
- constructor() {
- super();
- this._aabb = new oimo.collision.geometry.Aabb();
- this._callback = null;
- }
- process(proxy) {
- var shape = proxy.userData;
- var shapeAabb = shape._aabb;
- if(shapeAabb._minX < this._aabb._maxX && shapeAabb._maxX > this._aabb._minX && shapeAabb._minY < this._aabb._maxY && shapeAabb._maxY > this._aabb._minY && shapeAabb._minZ < this._aabb._maxZ && shapeAabb._maxZ > this._aabb._minZ) {
- this._callback.process(shape);
- }
- }
- }
- if(!oimo.dynamics.callback) oimo.dynamics.callback = {};
- oimo.dynamics.callback.AabbTestCallback = class oimo_dynamics_callback_AabbTestCallback {
- constructor() {
- }
- process(shape) {
- }
- }
- oimo.dynamics.callback.ContactCallback = class oimo_dynamics_callback_ContactCallback {
- constructor() {
- }
- beginContact(c) {
- }
- preSolve(c) {
- }
- postSolve(c) {
- }
- endContact(c) {
- }
- }
- oimo.dynamics.callback.RayCastCallback = class oimo_dynamics_callback_RayCastCallback {
- constructor() {
- }
- process(shape,hit) {
- }
- }
- oimo.dynamics.callback.RayCastClosest = class oimo_dynamics_callback_RayCastClosest extends oimo.dynamics.callback.RayCastCallback {
- constructor() {
- super();
- this.position = new oimo.common.Vec3();
- this.normal = new oimo.common.Vec3();
- this.shape = null;
- this.fraction = 1;
- this.position.zero();
- this.normal.zero();
- this.hit = false;
- }
- clear() {
- this.shape = null;
- this.fraction = 1;
- this.position.zero();
- this.normal.zero();
- this.hit = false;
- }
- process(shape,hit) {
- if(hit.fraction < this.fraction) {
- this.shape = shape;
- this.hit = true;
- this.fraction = hit.fraction;
- var _this = this.position;
- var v = hit.position;
- _this.x = v.x;
- _this.y = v.y;
- _this.z = v.z;
- var _this1 = this.normal;
- var v1 = hit.normal;
- _this1.x = v1.x;
- _this1.y = v1.y;
- _this1.z = v1.z;
- }
- }
- }
- if(!oimo.dynamics.common) oimo.dynamics.common = {};
- oimo.dynamics.common.DebugDraw = class oimo_dynamics_common_DebugDraw {
- constructor() {
- this.p = new oimo.common.Pool();
- this.wireframe = false;
- this.drawShapes = true;
- this.drawBvh = false;
- this.drawBvhMinLevel = 0;
- this.drawBvhMaxLevel = 65536;
- this.drawAabbs = false;
- this.drawBases = false;
- this.drawPairs = false;
- this.drawContacts = false;
- this.drawJoints = true;
- this.drawJointLimits = false;
- var nt = 4;
- var dt = 3.14159265358979 / nt;
- var np = 8;
- var dp = 6.28318530717958 / np;
- var this1 = new Array(nt + 1);
- this.sphereCoords = this1;
- var this2 = new Array(nt + 1);
- this.tmpSphereVerts = this2;
- var this3 = new Array(nt + 1);
- this.tmpSphereNorms = this3;
- var _g = 0;
- var _g1 = nt + 1;
- while(_g < _g1) {
- var i = _g++;
- var num = i == 0 || i == nt ? 1 : np;
- var this4 = this.sphereCoords;
- var this5 = new Array(num);
- this4[i] = this5;
- var this6 = this.tmpSphereVerts;
- var this7 = new Array(num);
- this6[i] = this7;
- var this8 = this.tmpSphereNorms;
- var this9 = new Array(num);
- this8[i] = this9;
- var _g2 = 0;
- var _g11 = np;
- while(_g2 < _g11) {
- var j = _g2++;
- var theta = i * dt;
- var phi = j * dp;
- this.sphereCoords[i][j] = new oimo.common.Vec3(Math.sin(theta) * Math.cos(phi),Math.cos(theta),-Math.sin(theta) * Math.sin(phi));
- this.tmpSphereVerts[i][j] = new oimo.common.Vec3();
- this.tmpSphereNorms[i][j] = new oimo.common.Vec3();
- }
- }
- var this10 = new Array(8);
- this.circleCoords = this10;
- var this11 = new Array(8);
- this.circleCoordsShift = this11;
- var this12 = new Array(8);
- this.tmpCircleVerts1 = this12;
- var this13 = new Array(8);
- this.tmpCircleVerts2 = this13;
- var this14 = new Array(8);
- this.tmpCircleNorms = this14;
- var td = 0.785398163397447502;
- var _g3 = 0;
- while(_g3 < 8) {
- var i1 = _g3++;
- this.circleCoords[i1] = new oimo.common.Vec3(Math.cos(i1 * td),0,-Math.sin(i1 * td));
- this.circleCoordsShift[i1] = new oimo.common.Vec3(Math.cos((i1 + 0.5) * td),0,-Math.sin((i1 + 0.5) * td));
- this.tmpCircleVerts1[i1] = new oimo.common.Vec3();
- this.tmpCircleVerts2[i1] = new oimo.common.Vec3();
- this.tmpCircleNorms[i1] = new oimo.common.Vec3();
- }
- this.style = new oimo.dynamics.common.DebugDrawStyle();
- }
- aabb(min,max,color) {
- var _this = this.p;
- var v1 = (_this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3]).init(min.x,min.y,min.z);
- var _this1 = this.p;
- var v2 = (_this1.sizeVec3 == 0 ? new oimo.common.Vec3() : _this1.stackVec3[--_this1.sizeVec3]).init(min.x,min.y,max.z);
- var _this2 = this.p;
- var v3 = (_this2.sizeVec3 == 0 ? new oimo.common.Vec3() : _this2.stackVec3[--_this2.sizeVec3]).init(min.x,max.y,min.z);
- var _this3 = this.p;
- var v4 = (_this3.sizeVec3 == 0 ? new oimo.common.Vec3() : _this3.stackVec3[--_this3.sizeVec3]).init(min.x,max.y,max.z);
- var _this4 = this.p;
- var v5 = (_this4.sizeVec3 == 0 ? new oimo.common.Vec3() : _this4.stackVec3[--_this4.sizeVec3]).init(max.x,min.y,min.z);
- var _this5 = this.p;
- var v6 = (_this5.sizeVec3 == 0 ? new oimo.common.Vec3() : _this5.stackVec3[--_this5.sizeVec3]).init(max.x,min.y,max.z);
- var _this6 = this.p;
- var v7 = (_this6.sizeVec3 == 0 ? new oimo.common.Vec3() : _this6.stackVec3[--_this6.sizeVec3]).init(max.x,max.y,min.z);
- var _this7 = this.p;
- var v8 = (_this7.sizeVec3 == 0 ? new oimo.common.Vec3() : _this7.stackVec3[--_this7.sizeVec3]).init(max.x,max.y,max.z);
- this.line(v1,v2,color);
- this.line(v3,v4,color);
- this.line(v5,v6,color);
- this.line(v7,v8,color);
- this.line(v1,v3,color);
- this.line(v2,v4,color);
- this.line(v5,v7,color);
- this.line(v6,v8,color);
- this.line(v1,v5,color);
- this.line(v2,v6,color);
- this.line(v3,v7,color);
- this.line(v4,v8,color);
- var _this8 = this.p;
- var mat3 = null;
- var mat4 = null;
- var quat = null;
- if(v1 != null) {
- v1.zero();
- if(_this8.sizeVec3 == _this8.stackVec3.length) {
- var newLength = _this8.sizeVec3 << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = _this8.sizeVec3;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = _this8.stackVec3[i];
- _this8.stackVec3[i] = null;
- }
- _this8.stackVec3 = newArray;
- }
- _this8.stackVec3[_this8.sizeVec3++] = v1;
- }
- if(mat3 != null) {
- var t00 = 1;
- var t01 = 0;
- var t02 = 0;
- var t10 = 0;
- var t11 = 1;
- var t12 = 0;
- var t20 = 0;
- var t21 = 0;
- var t22 = 1;
- mat3.e00 = t00;
- mat3.e01 = t01;
- mat3.e02 = t02;
- mat3.e10 = t10;
- mat3.e11 = t11;
- mat3.e12 = t12;
- mat3.e20 = t20;
- mat3.e21 = t21;
- mat3.e22 = t22;
- if(_this8.sizeMat3 == _this8.stackMat3.length) {
- var newLength1 = _this8.sizeMat3 << 1;
- var this2 = new Array(newLength1);
- var newArray1 = this2;
- var _g2 = 0;
- var _g11 = _this8.sizeMat3;
- while(_g2 < _g11) {
- var i1 = _g2++;
- newArray1[i1] = _this8.stackMat3[i1];
- _this8.stackMat3[i1] = null;
- }
- _this8.stackMat3 = newArray1;
- }
- _this8.stackMat3[_this8.sizeMat3++] = mat3;
- }
- if(mat4 != null) {
- var t001 = 1;
- var t011 = 0;
- var t021 = 0;
- var t03 = 0;
- var t101 = 0;
- var t111 = 1;
- var t121 = 0;
- var t13 = 0;
- var t201 = 0;
- var t211 = 0;
- var t221 = 1;
- var t23 = 0;
- var t30 = 0;
- var t31 = 0;
- var t32 = 0;
- var t33 = 1;
- mat4.e00 = t001;
- mat4.e01 = t011;
- mat4.e02 = t021;
- mat4.e03 = t03;
- mat4.e10 = t101;
- mat4.e11 = t111;
- mat4.e12 = t121;
- mat4.e13 = t13;
- mat4.e20 = t201;
- mat4.e21 = t211;
- mat4.e22 = t221;
- mat4.e23 = t23;
- mat4.e30 = t30;
- mat4.e31 = t31;
- mat4.e32 = t32;
- mat4.e33 = t33;
- if(_this8.sizeMat4 == _this8.stackMat4.length) {
- var newLength2 = _this8.sizeMat4 << 1;
- var this3 = new Array(newLength2);
- var newArray2 = this3;
- var _g3 = 0;
- var _g12 = _this8.sizeMat4;
- while(_g3 < _g12) {
- var i2 = _g3++;
- newArray2[i2] = _this8.stackMat4[i2];
- _this8.stackMat4[i2] = null;
- }
- _this8.stackMat4 = newArray2;
- }
- _this8.stackMat4[_this8.sizeMat4++] = mat4;
- }
- if(quat != null) {
- var tx = 0;
- var ty = 0;
- var tz = 0;
- var tw = 1;
- quat.x = tx;
- quat.y = ty;
- quat.z = tz;
- quat.w = tw;
- if(_this8.sizeQuat == _this8.stackQuat.length) {
- var newLength3 = _this8.sizeQuat << 1;
- var this4 = new Array(newLength3);
- var newArray3 = this4;
- var _g4 = 0;
- var _g13 = _this8.sizeQuat;
- while(_g4 < _g13) {
- var i3 = _g4++;
- newArray3[i3] = _this8.stackQuat[i3];
- _this8.stackQuat[i3] = null;
- }
- _this8.stackQuat = newArray3;
- }
- _this8.stackQuat[_this8.sizeQuat++] = quat;
- }
- var _this9 = this.p;
- var mat31 = null;
- var mat41 = null;
- var quat1 = null;
- if(v2 != null) {
- v2.zero();
- if(_this9.sizeVec3 == _this9.stackVec3.length) {
- var newLength4 = _this9.sizeVec3 << 1;
- var this5 = new Array(newLength4);
- var newArray4 = this5;
- var _g5 = 0;
- var _g14 = _this9.sizeVec3;
- while(_g5 < _g14) {
- var i4 = _g5++;
- newArray4[i4] = _this9.stackVec3[i4];
- _this9.stackVec3[i4] = null;
- }
- _this9.stackVec3 = newArray4;
- }
- _this9.stackVec3[_this9.sizeVec3++] = v2;
- }
- if(mat31 != null) {
- var t002 = 1;
- var t012 = 0;
- var t022 = 0;
- var t102 = 0;
- var t112 = 1;
- var t122 = 0;
- var t202 = 0;
- var t212 = 0;
- var t222 = 1;
- mat31.e00 = t002;
- mat31.e01 = t012;
- mat31.e02 = t022;
- mat31.e10 = t102;
- mat31.e11 = t112;
- mat31.e12 = t122;
- mat31.e20 = t202;
- mat31.e21 = t212;
- mat31.e22 = t222;
- if(_this9.sizeMat3 == _this9.stackMat3.length) {
- var newLength5 = _this9.sizeMat3 << 1;
- var this6 = new Array(newLength5);
- var newArray5 = this6;
- var _g6 = 0;
- var _g15 = _this9.sizeMat3;
- while(_g6 < _g15) {
- var i5 = _g6++;
- newArray5[i5] = _this9.stackMat3[i5];
- _this9.stackMat3[i5] = null;
- }
- _this9.stackMat3 = newArray5;
- }
- _this9.stackMat3[_this9.sizeMat3++] = mat31;
- }
- if(mat41 != null) {
- var t003 = 1;
- var t013 = 0;
- var t023 = 0;
- var t031 = 0;
- var t103 = 0;
- var t113 = 1;
- var t123 = 0;
- var t131 = 0;
- var t203 = 0;
- var t213 = 0;
- var t223 = 1;
- var t231 = 0;
- var t301 = 0;
- var t311 = 0;
- var t321 = 0;
- var t331 = 1;
- mat41.e00 = t003;
- mat41.e01 = t013;
- mat41.e02 = t023;
- mat41.e03 = t031;
- mat41.e10 = t103;
- mat41.e11 = t113;
- mat41.e12 = t123;
- mat41.e13 = t131;
- mat41.e20 = t203;
- mat41.e21 = t213;
- mat41.e22 = t223;
- mat41.e23 = t231;
- mat41.e30 = t301;
- mat41.e31 = t311;
- mat41.e32 = t321;
- mat41.e33 = t331;
- if(_this9.sizeMat4 == _this9.stackMat4.length) {
- var newLength6 = _this9.sizeMat4 << 1;
- var this7 = new Array(newLength6);
- var newArray6 = this7;
- var _g7 = 0;
- var _g16 = _this9.sizeMat4;
- while(_g7 < _g16) {
- var i6 = _g7++;
- newArray6[i6] = _this9.stackMat4[i6];
- _this9.stackMat4[i6] = null;
- }
- _this9.stackMat4 = newArray6;
- }
- _this9.stackMat4[_this9.sizeMat4++] = mat41;
- }
- if(quat1 != null) {
- var tx1 = 0;
- var ty1 = 0;
- var tz1 = 0;
- var tw1 = 1;
- quat1.x = tx1;
- quat1.y = ty1;
- quat1.z = tz1;
- quat1.w = tw1;
- if(_this9.sizeQuat == _this9.stackQuat.length) {
- var newLength7 = _this9.sizeQuat << 1;
- var this8 = new Array(newLength7);
- var newArray7 = this8;
- var _g8 = 0;
- var _g17 = _this9.sizeQuat;
- while(_g8 < _g17) {
- var i7 = _g8++;
- newArray7[i7] = _this9.stackQuat[i7];
- _this9.stackQuat[i7] = null;
- }
- _this9.stackQuat = newArray7;
- }
- _this9.stackQuat[_this9.sizeQuat++] = quat1;
- }
- var _this10 = this.p;
- var mat32 = null;
- var mat42 = null;
- var quat2 = null;
- if(v3 != null) {
- v3.zero();
- if(_this10.sizeVec3 == _this10.stackVec3.length) {
- var newLength8 = _this10.sizeVec3 << 1;
- var this9 = new Array(newLength8);
- var newArray8 = this9;
- var _g9 = 0;
- var _g18 = _this10.sizeVec3;
- while(_g9 < _g18) {
- var i8 = _g9++;
- newArray8[i8] = _this10.stackVec3[i8];
- _this10.stackVec3[i8] = null;
- }
- _this10.stackVec3 = newArray8;
- }
- _this10.stackVec3[_this10.sizeVec3++] = v3;
- }
- if(mat32 != null) {
- var t004 = 1;
- var t014 = 0;
- var t024 = 0;
- var t104 = 0;
- var t114 = 1;
- var t124 = 0;
- var t204 = 0;
- var t214 = 0;
- var t224 = 1;
- mat32.e00 = t004;
- mat32.e01 = t014;
- mat32.e02 = t024;
- mat32.e10 = t104;
- mat32.e11 = t114;
- mat32.e12 = t124;
- mat32.e20 = t204;
- mat32.e21 = t214;
- mat32.e22 = t224;
- if(_this10.sizeMat3 == _this10.stackMat3.length) {
- var newLength9 = _this10.sizeMat3 << 1;
- var this10 = new Array(newLength9);
- var newArray9 = this10;
- var _g10 = 0;
- var _g19 = _this10.sizeMat3;
- while(_g10 < _g19) {
- var i9 = _g10++;
- newArray9[i9] = _this10.stackMat3[i9];
- _this10.stackMat3[i9] = null;
- }
- _this10.stackMat3 = newArray9;
- }
- _this10.stackMat3[_this10.sizeMat3++] = mat32;
- }
- if(mat42 != null) {
- var t005 = 1;
- var t015 = 0;
- var t025 = 0;
- var t032 = 0;
- var t105 = 0;
- var t115 = 1;
- var t125 = 0;
- var t132 = 0;
- var t205 = 0;
- var t215 = 0;
- var t225 = 1;
- var t232 = 0;
- var t302 = 0;
- var t312 = 0;
- var t322 = 0;
- var t332 = 1;
- mat42.e00 = t005;
- mat42.e01 = t015;
- mat42.e02 = t025;
- mat42.e03 = t032;
- mat42.e10 = t105;
- mat42.e11 = t115;
- mat42.e12 = t125;
- mat42.e13 = t132;
- mat42.e20 = t205;
- mat42.e21 = t215;
- mat42.e22 = t225;
- mat42.e23 = t232;
- mat42.e30 = t302;
- mat42.e31 = t312;
- mat42.e32 = t322;
- mat42.e33 = t332;
- if(_this10.sizeMat4 == _this10.stackMat4.length) {
- var newLength10 = _this10.sizeMat4 << 1;
- var this11 = new Array(newLength10);
- var newArray10 = this11;
- var _g20 = 0;
- var _g110 = _this10.sizeMat4;
- while(_g20 < _g110) {
- var i10 = _g20++;
- newArray10[i10] = _this10.stackMat4[i10];
- _this10.stackMat4[i10] = null;
- }
- _this10.stackMat4 = newArray10;
- }
- _this10.stackMat4[_this10.sizeMat4++] = mat42;
- }
- if(quat2 != null) {
- var tx2 = 0;
- var ty2 = 0;
- var tz2 = 0;
- var tw2 = 1;
- quat2.x = tx2;
- quat2.y = ty2;
- quat2.z = tz2;
- quat2.w = tw2;
- if(_this10.sizeQuat == _this10.stackQuat.length) {
- var newLength11 = _this10.sizeQuat << 1;
- var this12 = new Array(newLength11);
- var newArray11 = this12;
- var _g21 = 0;
- var _g111 = _this10.sizeQuat;
- while(_g21 < _g111) {
- var i11 = _g21++;
- newArray11[i11] = _this10.stackQuat[i11];
- _this10.stackQuat[i11] = null;
- }
- _this10.stackQuat = newArray11;
- }
- _this10.stackQuat[_this10.sizeQuat++] = quat2;
- }
- var _this11 = this.p;
- var mat33 = null;
- var mat43 = null;
- var quat3 = null;
- if(v4 != null) {
- v4.zero();
- if(_this11.sizeVec3 == _this11.stackVec3.length) {
- var newLength12 = _this11.sizeVec3 << 1;
- var this13 = new Array(newLength12);
- var newArray12 = this13;
- var _g22 = 0;
- var _g112 = _this11.sizeVec3;
- while(_g22 < _g112) {
- var i12 = _g22++;
- newArray12[i12] = _this11.stackVec3[i12];
- _this11.stackVec3[i12] = null;
- }
- _this11.stackVec3 = newArray12;
- }
- _this11.stackVec3[_this11.sizeVec3++] = v4;
- }
- if(mat33 != null) {
- var t006 = 1;
- var t016 = 0;
- var t026 = 0;
- var t106 = 0;
- var t116 = 1;
- var t126 = 0;
- var t206 = 0;
- var t216 = 0;
- var t226 = 1;
- mat33.e00 = t006;
- mat33.e01 = t016;
- mat33.e02 = t026;
- mat33.e10 = t106;
- mat33.e11 = t116;
- mat33.e12 = t126;
- mat33.e20 = t206;
- mat33.e21 = t216;
- mat33.e22 = t226;
- if(_this11.sizeMat3 == _this11.stackMat3.length) {
- var newLength13 = _this11.sizeMat3 << 1;
- var this14 = new Array(newLength13);
- var newArray13 = this14;
- var _g23 = 0;
- var _g113 = _this11.sizeMat3;
- while(_g23 < _g113) {
- var i13 = _g23++;
- newArray13[i13] = _this11.stackMat3[i13];
- _this11.stackMat3[i13] = null;
- }
- _this11.stackMat3 = newArray13;
- }
- _this11.stackMat3[_this11.sizeMat3++] = mat33;
- }
- if(mat43 != null) {
- var t007 = 1;
- var t017 = 0;
- var t027 = 0;
- var t033 = 0;
- var t107 = 0;
- var t117 = 1;
- var t127 = 0;
- var t133 = 0;
- var t207 = 0;
- var t217 = 0;
- var t227 = 1;
- var t233 = 0;
- var t303 = 0;
- var t313 = 0;
- var t323 = 0;
- var t333 = 1;
- mat43.e00 = t007;
- mat43.e01 = t017;
- mat43.e02 = t027;
- mat43.e03 = t033;
- mat43.e10 = t107;
- mat43.e11 = t117;
- mat43.e12 = t127;
- mat43.e13 = t133;
- mat43.e20 = t207;
- mat43.e21 = t217;
- mat43.e22 = t227;
- mat43.e23 = t233;
- mat43.e30 = t303;
- mat43.e31 = t313;
- mat43.e32 = t323;
- mat43.e33 = t333;
- if(_this11.sizeMat4 == _this11.stackMat4.length) {
- var newLength14 = _this11.sizeMat4 << 1;
- var this15 = new Array(newLength14);
- var newArray14 = this15;
- var _g24 = 0;
- var _g114 = _this11.sizeMat4;
- while(_g24 < _g114) {
- var i14 = _g24++;
- newArray14[i14] = _this11.stackMat4[i14];
- _this11.stackMat4[i14] = null;
- }
- _this11.stackMat4 = newArray14;
- }
- _this11.stackMat4[_this11.sizeMat4++] = mat43;
- }
- if(quat3 != null) {
- var tx3 = 0;
- var ty3 = 0;
- var tz3 = 0;
- var tw3 = 1;
- quat3.x = tx3;
- quat3.y = ty3;
- quat3.z = tz3;
- quat3.w = tw3;
- if(_this11.sizeQuat == _this11.stackQuat.length) {
- var newLength15 = _this11.sizeQuat << 1;
- var this16 = new Array(newLength15);
- var newArray15 = this16;
- var _g25 = 0;
- var _g115 = _this11.sizeQuat;
- while(_g25 < _g115) {
- var i15 = _g25++;
- newArray15[i15] = _this11.stackQuat[i15];
- _this11.stackQuat[i15] = null;
- }
- _this11.stackQuat = newArray15;
- }
- _this11.stackQuat[_this11.sizeQuat++] = quat3;
- }
- var _this12 = this.p;
- var mat34 = null;
- var mat44 = null;
- var quat4 = null;
- if(v5 != null) {
- v5.zero();
- if(_this12.sizeVec3 == _this12.stackVec3.length) {
- var newLength16 = _this12.sizeVec3 << 1;
- var this17 = new Array(newLength16);
- var newArray16 = this17;
- var _g26 = 0;
- var _g116 = _this12.sizeVec3;
- while(_g26 < _g116) {
- var i16 = _g26++;
- newArray16[i16] = _this12.stackVec3[i16];
- _this12.stackVec3[i16] = null;
- }
- _this12.stackVec3 = newArray16;
- }
- _this12.stackVec3[_this12.sizeVec3++] = v5;
- }
- if(mat34 != null) {
- var t008 = 1;
- var t018 = 0;
- var t028 = 0;
- var t108 = 0;
- var t118 = 1;
- var t128 = 0;
- var t208 = 0;
- var t218 = 0;
- var t228 = 1;
- mat34.e00 = t008;
- mat34.e01 = t018;
- mat34.e02 = t028;
- mat34.e10 = t108;
- mat34.e11 = t118;
- mat34.e12 = t128;
- mat34.e20 = t208;
- mat34.e21 = t218;
- mat34.e22 = t228;
- if(_this12.sizeMat3 == _this12.stackMat3.length) {
- var newLength17 = _this12.sizeMat3 << 1;
- var this18 = new Array(newLength17);
- var newArray17 = this18;
- var _g27 = 0;
- var _g117 = _this12.sizeMat3;
- while(_g27 < _g117) {
- var i17 = _g27++;
- newArray17[i17] = _this12.stackMat3[i17];
- _this12.stackMat3[i17] = null;
- }
- _this12.stackMat3 = newArray17;
- }
- _this12.stackMat3[_this12.sizeMat3++] = mat34;
- }
- if(mat44 != null) {
- var t009 = 1;
- var t019 = 0;
- var t029 = 0;
- var t034 = 0;
- var t109 = 0;
- var t119 = 1;
- var t129 = 0;
- var t134 = 0;
- var t209 = 0;
- var t219 = 0;
- var t229 = 1;
- var t234 = 0;
- var t304 = 0;
- var t314 = 0;
- var t324 = 0;
- var t334 = 1;
- mat44.e00 = t009;
- mat44.e01 = t019;
- mat44.e02 = t029;
- mat44.e03 = t034;
- mat44.e10 = t109;
- mat44.e11 = t119;
- mat44.e12 = t129;
- mat44.e13 = t134;
- mat44.e20 = t209;
- mat44.e21 = t219;
- mat44.e22 = t229;
- mat44.e23 = t234;
- mat44.e30 = t304;
- mat44.e31 = t314;
- mat44.e32 = t324;
- mat44.e33 = t334;
- if(_this12.sizeMat4 == _this12.stackMat4.length) {
- var newLength18 = _this12.sizeMat4 << 1;
- var this19 = new Array(newLength18);
- var newArray18 = this19;
- var _g28 = 0;
- var _g118 = _this12.sizeMat4;
- while(_g28 < _g118) {
- var i18 = _g28++;
- newArray18[i18] = _this12.stackMat4[i18];
- _this12.stackMat4[i18] = null;
- }
- _this12.stackMat4 = newArray18;
- }
- _this12.stackMat4[_this12.sizeMat4++] = mat44;
- }
- if(quat4 != null) {
- var tx4 = 0;
- var ty4 = 0;
- var tz4 = 0;
- var tw4 = 1;
- quat4.x = tx4;
- quat4.y = ty4;
- quat4.z = tz4;
- quat4.w = tw4;
- if(_this12.sizeQuat == _this12.stackQuat.length) {
- var newLength19 = _this12.sizeQuat << 1;
- var this20 = new Array(newLength19);
- var newArray19 = this20;
- var _g29 = 0;
- var _g119 = _this12.sizeQuat;
- while(_g29 < _g119) {
- var i19 = _g29++;
- newArray19[i19] = _this12.stackQuat[i19];
- _this12.stackQuat[i19] = null;
- }
- _this12.stackQuat = newArray19;
- }
- _this12.stackQuat[_this12.sizeQuat++] = quat4;
- }
- var _this13 = this.p;
- var mat35 = null;
- var mat45 = null;
- var quat5 = null;
- if(v6 != null) {
- v6.zero();
- if(_this13.sizeVec3 == _this13.stackVec3.length) {
- var newLength20 = _this13.sizeVec3 << 1;
- var this21 = new Array(newLength20);
- var newArray20 = this21;
- var _g30 = 0;
- var _g120 = _this13.sizeVec3;
- while(_g30 < _g120) {
- var i20 = _g30++;
- newArray20[i20] = _this13.stackVec3[i20];
- _this13.stackVec3[i20] = null;
- }
- _this13.stackVec3 = newArray20;
- }
- _this13.stackVec3[_this13.sizeVec3++] = v6;
- }
- if(mat35 != null) {
- var t0010 = 1;
- var t0110 = 0;
- var t0210 = 0;
- var t1010 = 0;
- var t1110 = 1;
- var t1210 = 0;
- var t2010 = 0;
- var t2110 = 0;
- var t2210 = 1;
- mat35.e00 = t0010;
- mat35.e01 = t0110;
- mat35.e02 = t0210;
- mat35.e10 = t1010;
- mat35.e11 = t1110;
- mat35.e12 = t1210;
- mat35.e20 = t2010;
- mat35.e21 = t2110;
- mat35.e22 = t2210;
- if(_this13.sizeMat3 == _this13.stackMat3.length) {
- var newLength21 = _this13.sizeMat3 << 1;
- var this22 = new Array(newLength21);
- var newArray21 = this22;
- var _g31 = 0;
- var _g121 = _this13.sizeMat3;
- while(_g31 < _g121) {
- var i21 = _g31++;
- newArray21[i21] = _this13.stackMat3[i21];
- _this13.stackMat3[i21] = null;
- }
- _this13.stackMat3 = newArray21;
- }
- _this13.stackMat3[_this13.sizeMat3++] = mat35;
- }
- if(mat45 != null) {
- var t0011 = 1;
- var t0111 = 0;
- var t0211 = 0;
- var t035 = 0;
- var t1011 = 0;
- var t1111 = 1;
- var t1211 = 0;
- var t135 = 0;
- var t2011 = 0;
- var t2111 = 0;
- var t2211 = 1;
- var t235 = 0;
- var t305 = 0;
- var t315 = 0;
- var t325 = 0;
- var t335 = 1;
- mat45.e00 = t0011;
- mat45.e01 = t0111;
- mat45.e02 = t0211;
- mat45.e03 = t035;
- mat45.e10 = t1011;
- mat45.e11 = t1111;
- mat45.e12 = t1211;
- mat45.e13 = t135;
- mat45.e20 = t2011;
- mat45.e21 = t2111;
- mat45.e22 = t2211;
- mat45.e23 = t235;
- mat45.e30 = t305;
- mat45.e31 = t315;
- mat45.e32 = t325;
- mat45.e33 = t335;
- if(_this13.sizeMat4 == _this13.stackMat4.length) {
- var newLength22 = _this13.sizeMat4 << 1;
- var this23 = new Array(newLength22);
- var newArray22 = this23;
- var _g32 = 0;
- var _g122 = _this13.sizeMat4;
- while(_g32 < _g122) {
- var i22 = _g32++;
- newArray22[i22] = _this13.stackMat4[i22];
- _this13.stackMat4[i22] = null;
- }
- _this13.stackMat4 = newArray22;
- }
- _this13.stackMat4[_this13.sizeMat4++] = mat45;
- }
- if(quat5 != null) {
- var tx5 = 0;
- var ty5 = 0;
- var tz5 = 0;
- var tw5 = 1;
- quat5.x = tx5;
- quat5.y = ty5;
- quat5.z = tz5;
- quat5.w = tw5;
- if(_this13.sizeQuat == _this13.stackQuat.length) {
- var newLength23 = _this13.sizeQuat << 1;
- var this24 = new Array(newLength23);
- var newArray23 = this24;
- var _g33 = 0;
- var _g123 = _this13.sizeQuat;
- while(_g33 < _g123) {
- var i23 = _g33++;
- newArray23[i23] = _this13.stackQuat[i23];
- _this13.stackQuat[i23] = null;
- }
- _this13.stackQuat = newArray23;
- }
- _this13.stackQuat[_this13.sizeQuat++] = quat5;
- }
- var _this14 = this.p;
- var mat36 = null;
- var mat46 = null;
- var quat6 = null;
- if(v7 != null) {
- v7.zero();
- if(_this14.sizeVec3 == _this14.stackVec3.length) {
- var newLength24 = _this14.sizeVec3 << 1;
- var this25 = new Array(newLength24);
- var newArray24 = this25;
- var _g34 = 0;
- var _g124 = _this14.sizeVec3;
- while(_g34 < _g124) {
- var i24 = _g34++;
- newArray24[i24] = _this14.stackVec3[i24];
- _this14.stackVec3[i24] = null;
- }
- _this14.stackVec3 = newArray24;
- }
- _this14.stackVec3[_this14.sizeVec3++] = v7;
- }
- if(mat36 != null) {
- var t0012 = 1;
- var t0112 = 0;
- var t0212 = 0;
- var t1012 = 0;
- var t1112 = 1;
- var t1212 = 0;
- var t2012 = 0;
- var t2112 = 0;
- var t2212 = 1;
- mat36.e00 = t0012;
- mat36.e01 = t0112;
- mat36.e02 = t0212;
- mat36.e10 = t1012;
- mat36.e11 = t1112;
- mat36.e12 = t1212;
- mat36.e20 = t2012;
- mat36.e21 = t2112;
- mat36.e22 = t2212;
- if(_this14.sizeMat3 == _this14.stackMat3.length) {
- var newLength25 = _this14.sizeMat3 << 1;
- var this26 = new Array(newLength25);
- var newArray25 = this26;
- var _g35 = 0;
- var _g125 = _this14.sizeMat3;
- while(_g35 < _g125) {
- var i25 = _g35++;
- newArray25[i25] = _this14.stackMat3[i25];
- _this14.stackMat3[i25] = null;
- }
- _this14.stackMat3 = newArray25;
- }
- _this14.stackMat3[_this14.sizeMat3++] = mat36;
- }
- if(mat46 != null) {
- var t0013 = 1;
- var t0113 = 0;
- var t0213 = 0;
- var t036 = 0;
- var t1013 = 0;
- var t1113 = 1;
- var t1213 = 0;
- var t136 = 0;
- var t2013 = 0;
- var t2113 = 0;
- var t2213 = 1;
- var t236 = 0;
- var t306 = 0;
- var t316 = 0;
- var t326 = 0;
- var t336 = 1;
- mat46.e00 = t0013;
- mat46.e01 = t0113;
- mat46.e02 = t0213;
- mat46.e03 = t036;
- mat46.e10 = t1013;
- mat46.e11 = t1113;
- mat46.e12 = t1213;
- mat46.e13 = t136;
- mat46.e20 = t2013;
- mat46.e21 = t2113;
- mat46.e22 = t2213;
- mat46.e23 = t236;
- mat46.e30 = t306;
- mat46.e31 = t316;
- mat46.e32 = t326;
- mat46.e33 = t336;
- if(_this14.sizeMat4 == _this14.stackMat4.length) {
- var newLength26 = _this14.sizeMat4 << 1;
- var this27 = new Array(newLength26);
- var newArray26 = this27;
- var _g36 = 0;
- var _g126 = _this14.sizeMat4;
- while(_g36 < _g126) {
- var i26 = _g36++;
- newArray26[i26] = _this14.stackMat4[i26];
- _this14.stackMat4[i26] = null;
- }
- _this14.stackMat4 = newArray26;
- }
- _this14.stackMat4[_this14.sizeMat4++] = mat46;
- }
- if(quat6 != null) {
- var tx6 = 0;
- var ty6 = 0;
- var tz6 = 0;
- var tw6 = 1;
- quat6.x = tx6;
- quat6.y = ty6;
- quat6.z = tz6;
- quat6.w = tw6;
- if(_this14.sizeQuat == _this14.stackQuat.length) {
- var newLength27 = _this14.sizeQuat << 1;
- var this28 = new Array(newLength27);
- var newArray27 = this28;
- var _g37 = 0;
- var _g127 = _this14.sizeQuat;
- while(_g37 < _g127) {
- var i27 = _g37++;
- newArray27[i27] = _this14.stackQuat[i27];
- _this14.stackQuat[i27] = null;
- }
- _this14.stackQuat = newArray27;
- }
- _this14.stackQuat[_this14.sizeQuat++] = quat6;
- }
- var _this15 = this.p;
- var mat37 = null;
- var mat47 = null;
- var quat7 = null;
- if(v8 != null) {
- v8.zero();
- if(_this15.sizeVec3 == _this15.stackVec3.length) {
- var newLength28 = _this15.sizeVec3 << 1;
- var this29 = new Array(newLength28);
- var newArray28 = this29;
- var _g38 = 0;
- var _g128 = _this15.sizeVec3;
- while(_g38 < _g128) {
- var i28 = _g38++;
- newArray28[i28] = _this15.stackVec3[i28];
- _this15.stackVec3[i28] = null;
- }
- _this15.stackVec3 = newArray28;
- }
- _this15.stackVec3[_this15.sizeVec3++] = v8;
- }
- if(mat37 != null) {
- var t0014 = 1;
- var t0114 = 0;
- var t0214 = 0;
- var t1014 = 0;
- var t1114 = 1;
- var t1214 = 0;
- var t2014 = 0;
- var t2114 = 0;
- var t2214 = 1;
- mat37.e00 = t0014;
- mat37.e01 = t0114;
- mat37.e02 = t0214;
- mat37.e10 = t1014;
- mat37.e11 = t1114;
- mat37.e12 = t1214;
- mat37.e20 = t2014;
- mat37.e21 = t2114;
- mat37.e22 = t2214;
- if(_this15.sizeMat3 == _this15.stackMat3.length) {
- var newLength29 = _this15.sizeMat3 << 1;
- var this30 = new Array(newLength29);
- var newArray29 = this30;
- var _g39 = 0;
- var _g129 = _this15.sizeMat3;
- while(_g39 < _g129) {
- var i29 = _g39++;
- newArray29[i29] = _this15.stackMat3[i29];
- _this15.stackMat3[i29] = null;
- }
- _this15.stackMat3 = newArray29;
- }
- _this15.stackMat3[_this15.sizeMat3++] = mat37;
- }
- if(mat47 != null) {
- var t0015 = 1;
- var t0115 = 0;
- var t0215 = 0;
- var t037 = 0;
- var t1015 = 0;
- var t1115 = 1;
- var t1215 = 0;
- var t137 = 0;
- var t2015 = 0;
- var t2115 = 0;
- var t2215 = 1;
- var t237 = 0;
- var t307 = 0;
- var t317 = 0;
- var t327 = 0;
- var t337 = 1;
- mat47.e00 = t0015;
- mat47.e01 = t0115;
- mat47.e02 = t0215;
- mat47.e03 = t037;
- mat47.e10 = t1015;
- mat47.e11 = t1115;
- mat47.e12 = t1215;
- mat47.e13 = t137;
- mat47.e20 = t2015;
- mat47.e21 = t2115;
- mat47.e22 = t2215;
- mat47.e23 = t237;
- mat47.e30 = t307;
- mat47.e31 = t317;
- mat47.e32 = t327;
- mat47.e33 = t337;
- if(_this15.sizeMat4 == _this15.stackMat4.length) {
- var newLength30 = _this15.sizeMat4 << 1;
- var this31 = new Array(newLength30);
- var newArray30 = this31;
- var _g40 = 0;
- var _g130 = _this15.sizeMat4;
- while(_g40 < _g130) {
- var i30 = _g40++;
- newArray30[i30] = _this15.stackMat4[i30];
- _this15.stackMat4[i30] = null;
- }
- _this15.stackMat4 = newArray30;
- }
- _this15.stackMat4[_this15.sizeMat4++] = mat47;
- }
- if(quat7 != null) {
- var tx7 = 0;
- var ty7 = 0;
- var tz7 = 0;
- var tw7 = 1;
- quat7.x = tx7;
- quat7.y = ty7;
- quat7.z = tz7;
- quat7.w = tw7;
- if(_this15.sizeQuat == _this15.stackQuat.length) {
- var newLength31 = _this15.sizeQuat << 1;
- var this32 = new Array(newLength31);
- var newArray31 = this32;
- var _g41 = 0;
- var _g131 = _this15.sizeQuat;
- while(_g41 < _g131) {
- var i31 = _g41++;
- newArray31[i31] = _this15.stackQuat[i31];
- _this15.stackQuat[i31] = null;
- }
- _this15.stackQuat = newArray31;
- }
- _this15.stackQuat[_this15.sizeQuat++] = quat7;
- }
- }
- basis(transform,length,colorX,colorY,colorZ) {
- var _this = this.p;
- var pos = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
- var _this1 = this.p;
- var rot = _this1.sizeMat3 == 0 ? new oimo.common.Mat3() : _this1.stackMat3[--_this1.sizeMat3];
- var _this2 = this.p;
- var ex = _this2.sizeVec3 == 0 ? new oimo.common.Vec3() : _this2.stackVec3[--_this2.sizeVec3];
- var _this3 = this.p;
- var ey = _this3.sizeVec3 == 0 ? new oimo.common.Vec3() : _this3.stackVec3[--_this3.sizeVec3];
- var _this4 = this.p;
- var ez = _this4.sizeVec3 == 0 ? new oimo.common.Vec3() : _this4.stackVec3[--_this4.sizeVec3];
- var v = pos;
- v.x = transform._positionX;
- v.y = transform._positionY;
- v.z = transform._positionZ;
- var m = rot;
- m.e00 = transform._rotation00;
- m.e01 = transform._rotation01;
- m.e02 = transform._rotation02;
- m.e10 = transform._rotation10;
- m.e11 = transform._rotation11;
- m.e12 = transform._rotation12;
- m.e20 = transform._rotation20;
- m.e21 = transform._rotation21;
- m.e22 = transform._rotation22;
- ex.init(rot.e00,rot.e10,rot.e20);
- ey.init(rot.e01,rot.e11,rot.e21);
- ez.init(rot.e02,rot.e12,rot.e22);
- var tx = ex.x * length;
- var ty = ex.y * length;
- var tz = ex.z * length;
- ex.x = tx;
- ex.y = ty;
- ex.z = tz;
- var _this5 = ex;
- var tx1 = _this5.x + pos.x;
- var ty1 = _this5.y + pos.y;
- var tz1 = _this5.z + pos.z;
- _this5.x = tx1;
- _this5.y = ty1;
- _this5.z = tz1;
- var tx2 = ey.x * length;
- var ty2 = ey.y * length;
- var tz2 = ey.z * length;
- ey.x = tx2;
- ey.y = ty2;
- ey.z = tz2;
- var _this6 = ey;
- var tx3 = _this6.x + pos.x;
- var ty3 = _this6.y + pos.y;
- var tz3 = _this6.z + pos.z;
- _this6.x = tx3;
- _this6.y = ty3;
- _this6.z = tz3;
- var tx4 = ez.x * length;
- var ty4 = ez.y * length;
- var tz4 = ez.z * length;
- ez.x = tx4;
- ez.y = ty4;
- ez.z = tz4;
- var _this7 = ez;
- var tx5 = _this7.x + pos.x;
- var ty5 = _this7.y + pos.y;
- var tz5 = _this7.z + pos.z;
- _this7.x = tx5;
- _this7.y = ty5;
- _this7.z = tz5;
- this.line(pos,ex,colorX);
- this.line(pos,ey,colorY);
- this.line(pos,ez,colorZ);
- var _this8 = this.p;
- var mat3 = null;
- var mat4 = null;
- var quat = null;
- if(pos != null) {
- pos.zero();
- if(_this8.sizeVec3 == _this8.stackVec3.length) {
- var newLength = _this8.sizeVec3 << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = _this8.sizeVec3;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = _this8.stackVec3[i];
- _this8.stackVec3[i] = null;
- }
- _this8.stackVec3 = newArray;
- }
- _this8.stackVec3[_this8.sizeVec3++] = pos;
- }
- if(mat3 != null) {
- var t00 = 1;
- var t01 = 0;
- var t02 = 0;
- var t10 = 0;
- var t11 = 1;
- var t12 = 0;
- var t20 = 0;
- var t21 = 0;
- var t22 = 1;
- mat3.e00 = t00;
- mat3.e01 = t01;
- mat3.e02 = t02;
- mat3.e10 = t10;
- mat3.e11 = t11;
- mat3.e12 = t12;
- mat3.e20 = t20;
- mat3.e21 = t21;
- mat3.e22 = t22;
- if(_this8.sizeMat3 == _this8.stackMat3.length) {
- var newLength1 = _this8.sizeMat3 << 1;
- var this2 = new Array(newLength1);
- var newArray1 = this2;
- var _g2 = 0;
- var _g11 = _this8.sizeMat3;
- while(_g2 < _g11) {
- var i1 = _g2++;
- newArray1[i1] = _this8.stackMat3[i1];
- _this8.stackMat3[i1] = null;
- }
- _this8.stackMat3 = newArray1;
- }
- _this8.stackMat3[_this8.sizeMat3++] = mat3;
- }
- if(mat4 != null) {
- var t001 = 1;
- var t011 = 0;
- var t021 = 0;
- var t03 = 0;
- var t101 = 0;
- var t111 = 1;
- var t121 = 0;
- var t13 = 0;
- var t201 = 0;
- var t211 = 0;
- var t221 = 1;
- var t23 = 0;
- var t30 = 0;
- var t31 = 0;
- var t32 = 0;
- var t33 = 1;
- mat4.e00 = t001;
- mat4.e01 = t011;
- mat4.e02 = t021;
- mat4.e03 = t03;
- mat4.e10 = t101;
- mat4.e11 = t111;
- mat4.e12 = t121;
- mat4.e13 = t13;
- mat4.e20 = t201;
- mat4.e21 = t211;
- mat4.e22 = t221;
- mat4.e23 = t23;
- mat4.e30 = t30;
- mat4.e31 = t31;
- mat4.e32 = t32;
- mat4.e33 = t33;
- if(_this8.sizeMat4 == _this8.stackMat4.length) {
- var newLength2 = _this8.sizeMat4 << 1;
- var this3 = new Array(newLength2);
- var newArray2 = this3;
- var _g3 = 0;
- var _g12 = _this8.sizeMat4;
- while(_g3 < _g12) {
- var i2 = _g3++;
- newArray2[i2] = _this8.stackMat4[i2];
- _this8.stackMat4[i2] = null;
- }
- _this8.stackMat4 = newArray2;
- }
- _this8.stackMat4[_this8.sizeMat4++] = mat4;
- }
- if(quat != null) {
- var tx6 = 0;
- var ty6 = 0;
- var tz6 = 0;
- var tw = 1;
- quat.x = tx6;
- quat.y = ty6;
- quat.z = tz6;
- quat.w = tw;
- if(_this8.sizeQuat == _this8.stackQuat.length) {
- var newLength3 = _this8.sizeQuat << 1;
- var this4 = new Array(newLength3);
- var newArray3 = this4;
- var _g4 = 0;
- var _g13 = _this8.sizeQuat;
- while(_g4 < _g13) {
- var i3 = _g4++;
- newArray3[i3] = _this8.stackQuat[i3];
- _this8.stackQuat[i3] = null;
- }
- _this8.stackQuat = newArray3;
- }
- _this8.stackQuat[_this8.sizeQuat++] = quat;
- }
- var _this9 = this.p;
- var vec3 = null;
- var mat41 = null;
- var quat1 = null;
- if(vec3 != null) {
- vec3.zero();
- if(_this9.sizeVec3 == _this9.stackVec3.length) {
- var newLength4 = _this9.sizeVec3 << 1;
- var this5 = new Array(newLength4);
- var newArray4 = this5;
- var _g5 = 0;
- var _g14 = _this9.sizeVec3;
- while(_g5 < _g14) {
- var i4 = _g5++;
- newArray4[i4] = _this9.stackVec3[i4];
- _this9.stackVec3[i4] = null;
- }
- _this9.stackVec3 = newArray4;
- }
- _this9.stackVec3[_this9.sizeVec3++] = vec3;
- }
- if(rot != null) {
- var t002 = 1;
- var t012 = 0;
- var t022 = 0;
- var t102 = 0;
- var t112 = 1;
- var t122 = 0;
- var t202 = 0;
- var t212 = 0;
- var t222 = 1;
- rot.e00 = t002;
- rot.e01 = t012;
- rot.e02 = t022;
- rot.e10 = t102;
- rot.e11 = t112;
- rot.e12 = t122;
- rot.e20 = t202;
- rot.e21 = t212;
- rot.e22 = t222;
- if(_this9.sizeMat3 == _this9.stackMat3.length) {
- var newLength5 = _this9.sizeMat3 << 1;
- var this6 = new Array(newLength5);
- var newArray5 = this6;
- var _g6 = 0;
- var _g15 = _this9.sizeMat3;
- while(_g6 < _g15) {
- var i5 = _g6++;
- newArray5[i5] = _this9.stackMat3[i5];
- _this9.stackMat3[i5] = null;
- }
- _this9.stackMat3 = newArray5;
- }
- _this9.stackMat3[_this9.sizeMat3++] = rot;
- }
- if(mat41 != null) {
- var t003 = 1;
- var t013 = 0;
- var t023 = 0;
- var t031 = 0;
- var t103 = 0;
- var t113 = 1;
- var t123 = 0;
- var t131 = 0;
- var t203 = 0;
- var t213 = 0;
- var t223 = 1;
- var t231 = 0;
- var t301 = 0;
- var t311 = 0;
- var t321 = 0;
- var t331 = 1;
- mat41.e00 = t003;
- mat41.e01 = t013;
- mat41.e02 = t023;
- mat41.e03 = t031;
- mat41.e10 = t103;
- mat41.e11 = t113;
- mat41.e12 = t123;
- mat41.e13 = t131;
- mat41.e20 = t203;
- mat41.e21 = t213;
- mat41.e22 = t223;
- mat41.e23 = t231;
- mat41.e30 = t301;
- mat41.e31 = t311;
- mat41.e32 = t321;
- mat41.e33 = t331;
- if(_this9.sizeMat4 == _this9.stackMat4.length) {
- var newLength6 = _this9.sizeMat4 << 1;
- var this7 = new Array(newLength6);
- var newArray6 = this7;
- var _g7 = 0;
- var _g16 = _this9.sizeMat4;
- while(_g7 < _g16) {
- var i6 = _g7++;
- newArray6[i6] = _this9.stackMat4[i6];
- _this9.stackMat4[i6] = null;
- }
- _this9.stackMat4 = newArray6;
- }
- _this9.stackMat4[_this9.sizeMat4++] = mat41;
- }
- if(quat1 != null) {
- var tx7 = 0;
- var ty7 = 0;
- var tz7 = 0;
- var tw1 = 1;
- quat1.x = tx7;
- quat1.y = ty7;
- quat1.z = tz7;
- quat1.w = tw1;
- if(_this9.sizeQuat == _this9.stackQuat.length) {
- var newLength7 = _this9.sizeQuat << 1;
- var this8 = new Array(newLength7);
- var newArray7 = this8;
- var _g8 = 0;
- var _g17 = _this9.sizeQuat;
- while(_g8 < _g17) {
- var i7 = _g8++;
- newArray7[i7] = _this9.stackQuat[i7];
- _this9.stackQuat[i7] = null;
- }
- _this9.stackQuat = newArray7;
- }
- _this9.stackQuat[_this9.sizeQuat++] = quat1;
- }
- var _this10 = this.p;
- var mat31 = null;
- var mat42 = null;
- var quat2 = null;
- if(ex != null) {
- ex.zero();
- if(_this10.sizeVec3 == _this10.stackVec3.length) {
- var newLength8 = _this10.sizeVec3 << 1;
- var this9 = new Array(newLength8);
- var newArray8 = this9;
- var _g9 = 0;
- var _g18 = _this10.sizeVec3;
- while(_g9 < _g18) {
- var i8 = _g9++;
- newArray8[i8] = _this10.stackVec3[i8];
- _this10.stackVec3[i8] = null;
- }
- _this10.stackVec3 = newArray8;
- }
- _this10.stackVec3[_this10.sizeVec3++] = ex;
- }
- if(mat31 != null) {
- var t004 = 1;
- var t014 = 0;
- var t024 = 0;
- var t104 = 0;
- var t114 = 1;
- var t124 = 0;
- var t204 = 0;
- var t214 = 0;
- var t224 = 1;
- mat31.e00 = t004;
- mat31.e01 = t014;
- mat31.e02 = t024;
- mat31.e10 = t104;
- mat31.e11 = t114;
- mat31.e12 = t124;
- mat31.e20 = t204;
- mat31.e21 = t214;
- mat31.e22 = t224;
- if(_this10.sizeMat3 == _this10.stackMat3.length) {
- var newLength9 = _this10.sizeMat3 << 1;
- var this10 = new Array(newLength9);
- var newArray9 = this10;
- var _g10 = 0;
- var _g19 = _this10.sizeMat3;
- while(_g10 < _g19) {
- var i9 = _g10++;
- newArray9[i9] = _this10.stackMat3[i9];
- _this10.stackMat3[i9] = null;
- }
- _this10.stackMat3 = newArray9;
- }
- _this10.stackMat3[_this10.sizeMat3++] = mat31;
- }
- if(mat42 != null) {
- var t005 = 1;
- var t015 = 0;
- var t025 = 0;
- var t032 = 0;
- var t105 = 0;
- var t115 = 1;
- var t125 = 0;
- var t132 = 0;
- var t205 = 0;
- var t215 = 0;
- var t225 = 1;
- var t232 = 0;
- var t302 = 0;
- var t312 = 0;
- var t322 = 0;
- var t332 = 1;
- mat42.e00 = t005;
- mat42.e01 = t015;
- mat42.e02 = t025;
- mat42.e03 = t032;
- mat42.e10 = t105;
- mat42.e11 = t115;
- mat42.e12 = t125;
- mat42.e13 = t132;
- mat42.e20 = t205;
- mat42.e21 = t215;
- mat42.e22 = t225;
- mat42.e23 = t232;
- mat42.e30 = t302;
- mat42.e31 = t312;
- mat42.e32 = t322;
- mat42.e33 = t332;
- if(_this10.sizeMat4 == _this10.stackMat4.length) {
- var newLength10 = _this10.sizeMat4 << 1;
- var this11 = new Array(newLength10);
- var newArray10 = this11;
- var _g20 = 0;
- var _g110 = _this10.sizeMat4;
- while(_g20 < _g110) {
- var i10 = _g20++;
- newArray10[i10] = _this10.stackMat4[i10];
- _this10.stackMat4[i10] = null;
- }
- _this10.stackMat4 = newArray10;
- }
- _this10.stackMat4[_this10.sizeMat4++] = mat42;
- }
- if(quat2 != null) {
- var tx8 = 0;
- var ty8 = 0;
- var tz8 = 0;
- var tw2 = 1;
- quat2.x = tx8;
- quat2.y = ty8;
- quat2.z = tz8;
- quat2.w = tw2;
- if(_this10.sizeQuat == _this10.stackQuat.length) {
- var newLength11 = _this10.sizeQuat << 1;
- var this12 = new Array(newLength11);
- var newArray11 = this12;
- var _g21 = 0;
- var _g111 = _this10.sizeQuat;
- while(_g21 < _g111) {
- var i11 = _g21++;
- newArray11[i11] = _this10.stackQuat[i11];
- _this10.stackQuat[i11] = null;
- }
- _this10.stackQuat = newArray11;
- }
- _this10.stackQuat[_this10.sizeQuat++] = quat2;
- }
- var _this11 = this.p;
- var mat32 = null;
- var mat43 = null;
- var quat3 = null;
- if(ey != null) {
- ey.zero();
- if(_this11.sizeVec3 == _this11.stackVec3.length) {
- var newLength12 = _this11.sizeVec3 << 1;
- var this13 = new Array(newLength12);
- var newArray12 = this13;
- var _g22 = 0;
- var _g112 = _this11.sizeVec3;
- while(_g22 < _g112) {
- var i12 = _g22++;
- newArray12[i12] = _this11.stackVec3[i12];
- _this11.stackVec3[i12] = null;
- }
- _this11.stackVec3 = newArray12;
- }
- _this11.stackVec3[_this11.sizeVec3++] = ey;
- }
- if(mat32 != null) {
- var t006 = 1;
- var t016 = 0;
- var t026 = 0;
- var t106 = 0;
- var t116 = 1;
- var t126 = 0;
- var t206 = 0;
- var t216 = 0;
- var t226 = 1;
- mat32.e00 = t006;
- mat32.e01 = t016;
- mat32.e02 = t026;
- mat32.e10 = t106;
- mat32.e11 = t116;
- mat32.e12 = t126;
- mat32.e20 = t206;
- mat32.e21 = t216;
- mat32.e22 = t226;
- if(_this11.sizeMat3 == _this11.stackMat3.length) {
- var newLength13 = _this11.sizeMat3 << 1;
- var this14 = new Array(newLength13);
- var newArray13 = this14;
- var _g23 = 0;
- var _g113 = _this11.sizeMat3;
- while(_g23 < _g113) {
- var i13 = _g23++;
- newArray13[i13] = _this11.stackMat3[i13];
- _this11.stackMat3[i13] = null;
- }
- _this11.stackMat3 = newArray13;
- }
- _this11.stackMat3[_this11.sizeMat3++] = mat32;
- }
- if(mat43 != null) {
- var t007 = 1;
- var t017 = 0;
- var t027 = 0;
- var t033 = 0;
- var t107 = 0;
- var t117 = 1;
- var t127 = 0;
- var t133 = 0;
- var t207 = 0;
- var t217 = 0;
- var t227 = 1;
- var t233 = 0;
- var t303 = 0;
- var t313 = 0;
- var t323 = 0;
- var t333 = 1;
- mat43.e00 = t007;
- mat43.e01 = t017;
- mat43.e02 = t027;
- mat43.e03 = t033;
- mat43.e10 = t107;
- mat43.e11 = t117;
- mat43.e12 = t127;
- mat43.e13 = t133;
- mat43.e20 = t207;
- mat43.e21 = t217;
- mat43.e22 = t227;
- mat43.e23 = t233;
- mat43.e30 = t303;
- mat43.e31 = t313;
- mat43.e32 = t323;
- mat43.e33 = t333;
- if(_this11.sizeMat4 == _this11.stackMat4.length) {
- var newLength14 = _this11.sizeMat4 << 1;
- var this15 = new Array(newLength14);
- var newArray14 = this15;
- var _g24 = 0;
- var _g114 = _this11.sizeMat4;
- while(_g24 < _g114) {
- var i14 = _g24++;
- newArray14[i14] = _this11.stackMat4[i14];
- _this11.stackMat4[i14] = null;
- }
- _this11.stackMat4 = newArray14;
- }
- _this11.stackMat4[_this11.sizeMat4++] = mat43;
- }
- if(quat3 != null) {
- var tx9 = 0;
- var ty9 = 0;
- var tz9 = 0;
- var tw3 = 1;
- quat3.x = tx9;
- quat3.y = ty9;
- quat3.z = tz9;
- quat3.w = tw3;
- if(_this11.sizeQuat == _this11.stackQuat.length) {
- var newLength15 = _this11.sizeQuat << 1;
- var this16 = new Array(newLength15);
- var newArray15 = this16;
- var _g25 = 0;
- var _g115 = _this11.sizeQuat;
- while(_g25 < _g115) {
- var i15 = _g25++;
- newArray15[i15] = _this11.stackQuat[i15];
- _this11.stackQuat[i15] = null;
- }
- _this11.stackQuat = newArray15;
- }
- _this11.stackQuat[_this11.sizeQuat++] = quat3;
- }
- var _this12 = this.p;
- var mat33 = null;
- var mat44 = null;
- var quat4 = null;
- if(ez != null) {
- ez.zero();
- if(_this12.sizeVec3 == _this12.stackVec3.length) {
- var newLength16 = _this12.sizeVec3 << 1;
- var this17 = new Array(newLength16);
- var newArray16 = this17;
- var _g26 = 0;
- var _g116 = _this12.sizeVec3;
- while(_g26 < _g116) {
- var i16 = _g26++;
- newArray16[i16] = _this12.stackVec3[i16];
- _this12.stackVec3[i16] = null;
- }
- _this12.stackVec3 = newArray16;
- }
- _this12.stackVec3[_this12.sizeVec3++] = ez;
- }
- if(mat33 != null) {
- var t008 = 1;
- var t018 = 0;
- var t028 = 0;
- var t108 = 0;
- var t118 = 1;
- var t128 = 0;
- var t208 = 0;
- var t218 = 0;
- var t228 = 1;
- mat33.e00 = t008;
- mat33.e01 = t018;
- mat33.e02 = t028;
- mat33.e10 = t108;
- mat33.e11 = t118;
- mat33.e12 = t128;
- mat33.e20 = t208;
- mat33.e21 = t218;
- mat33.e22 = t228;
- if(_this12.sizeMat3 == _this12.stackMat3.length) {
- var newLength17 = _this12.sizeMat3 << 1;
- var this18 = new Array(newLength17);
- var newArray17 = this18;
- var _g27 = 0;
- var _g117 = _this12.sizeMat3;
- while(_g27 < _g117) {
- var i17 = _g27++;
- newArray17[i17] = _this12.stackMat3[i17];
- _this12.stackMat3[i17] = null;
- }
- _this12.stackMat3 = newArray17;
- }
- _this12.stackMat3[_this12.sizeMat3++] = mat33;
- }
- if(mat44 != null) {
- var t009 = 1;
- var t019 = 0;
- var t029 = 0;
- var t034 = 0;
- var t109 = 0;
- var t119 = 1;
- var t129 = 0;
- var t134 = 0;
- var t209 = 0;
- var t219 = 0;
- var t229 = 1;
- var t234 = 0;
- var t304 = 0;
- var t314 = 0;
- var t324 = 0;
- var t334 = 1;
- mat44.e00 = t009;
- mat44.e01 = t019;
- mat44.e02 = t029;
- mat44.e03 = t034;
- mat44.e10 = t109;
- mat44.e11 = t119;
- mat44.e12 = t129;
- mat44.e13 = t134;
- mat44.e20 = t209;
- mat44.e21 = t219;
- mat44.e22 = t229;
- mat44.e23 = t234;
- mat44.e30 = t304;
- mat44.e31 = t314;
- mat44.e32 = t324;
- mat44.e33 = t334;
- if(_this12.sizeMat4 == _this12.stackMat4.length) {
- var newLength18 = _this12.sizeMat4 << 1;
- var this19 = new Array(newLength18);
- var newArray18 = this19;
- var _g28 = 0;
- var _g118 = _this12.sizeMat4;
- while(_g28 < _g118) {
- var i18 = _g28++;
- newArray18[i18] = _this12.stackMat4[i18];
- _this12.stackMat4[i18] = null;
- }
- _this12.stackMat4 = newArray18;
- }
- _this12.stackMat4[_this12.sizeMat4++] = mat44;
- }
- if(quat4 != null) {
- var tx10 = 0;
- var ty10 = 0;
- var tz10 = 0;
- var tw4 = 1;
- quat4.x = tx10;
- quat4.y = ty10;
- quat4.z = tz10;
- quat4.w = tw4;
- if(_this12.sizeQuat == _this12.stackQuat.length) {
- var newLength19 = _this12.sizeQuat << 1;
- var this20 = new Array(newLength19);
- var newArray19 = this20;
- var _g29 = 0;
- var _g119 = _this12.sizeQuat;
- while(_g29 < _g119) {
- var i19 = _g29++;
- newArray19[i19] = _this12.stackQuat[i19];
- _this12.stackQuat[i19] = null;
- }
- _this12.stackQuat = newArray19;
- }
- _this12.stackQuat[_this12.sizeQuat++] = quat4;
- }
- }
- ellipse(center,ex,ey,radiusX,radiusY,color) {
- this.arc(center,ex,ey,radiusX,radiusY,0,6.28318530717958,false,color);
- }
- arc(center,ex,ey,radiusX,radiusY,startAngle,endAngle,drawSector,color) {
- var _this = this.p;
- var _this1 = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
- _this1.x = ex.x;
- _this1.y = ex.y;
- _this1.z = ex.z;
- var _this2 = _this1;
- var tx = _this2.x * radiusX;
- var ty = _this2.y * radiusX;
- var tz = _this2.z * radiusX;
- _this2.x = tx;
- _this2.y = ty;
- _this2.z = tz;
- ex = _this2;
- var _this3 = this.p;
- var _this4 = _this3.sizeVec3 == 0 ? new oimo.common.Vec3() : _this3.stackVec3[--_this3.sizeVec3];
- _this4.x = ey.x;
- _this4.y = ey.y;
- _this4.z = ey.z;
- var _this5 = _this4;
- var tx1 = _this5.x * radiusY;
- var ty1 = _this5.y * radiusY;
- var tz1 = _this5.z * radiusY;
- _this5.x = tx1;
- _this5.y = ty1;
- _this5.z = tz1;
- ey = _this5;
- var step = 0.523598775598298372;
- var angDiff = endAngle - startAngle;
- if(angDiff < 0) {
- angDiff = -angDiff;
- }
- var n = angDiff / step + 0.5 | 0;
- if(n == 0) {
- n = 1;
- }
- var theta = startAngle;
- var dt = (endAngle - startAngle) / n;
- var _this6 = this.p;
- var _this7 = _this6.sizeVec3 == 0 ? new oimo.common.Vec3() : _this6.stackVec3[--_this6.sizeVec3];
- _this7.x = center.x;
- _this7.y = center.y;
- _this7.z = center.z;
- var _this8 = _this7;
- var s = Math.cos(theta);
- var tx2 = _this8.x + ex.x * s;
- var ty2 = _this8.y + ex.y * s;
- var tz2 = _this8.z + ex.z * s;
- _this8.x = tx2;
- _this8.y = ty2;
- _this8.z = tz2;
- var _this9 = _this8;
- var s1 = Math.sin(theta);
- var tx3 = _this9.x + ey.x * s1;
- var ty3 = _this9.y + ey.y * s1;
- var tz3 = _this9.z + ey.z * s1;
- _this9.x = tx3;
- _this9.y = ty3;
- _this9.z = tz3;
- var v = _this9;
- var prevV = v;
- if(drawSector) {
- this.line(center,prevV,color);
- }
- var _g = 0;
- var _g1 = n;
- while(_g < _g1) {
- var i = _g++;
- theta += dt;
- var _this10 = this.p;
- var _this11 = _this10.sizeVec3 == 0 ? new oimo.common.Vec3() : _this10.stackVec3[--_this10.sizeVec3];
- _this11.x = center.x;
- _this11.y = center.y;
- _this11.z = center.z;
- var _this12 = _this11;
- var s2 = Math.cos(theta);
- var tx4 = _this12.x + ex.x * s2;
- var ty4 = _this12.y + ex.y * s2;
- var tz4 = _this12.z + ex.z * s2;
- _this12.x = tx4;
- _this12.y = ty4;
- _this12.z = tz4;
- var _this13 = _this12;
- var s3 = Math.sin(theta);
- var tx5 = _this13.x + ey.x * s3;
- var ty5 = _this13.y + ey.y * s3;
- var tz5 = _this13.z + ey.z * s3;
- _this13.x = tx5;
- _this13.y = ty5;
- _this13.z = tz5;
- var v1 = _this13;
- var v2 = v1;
- this.line(prevV,v2,color);
- var _this14 = this.p;
- var mat3 = null;
- var mat4 = null;
- var quat = null;
- if(prevV != null) {
- prevV.zero();
- if(_this14.sizeVec3 == _this14.stackVec3.length) {
- var newLength = _this14.sizeVec3 << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g2 = 0;
- var _g11 = _this14.sizeVec3;
- while(_g2 < _g11) {
- var i1 = _g2++;
- newArray[i1] = _this14.stackVec3[i1];
- _this14.stackVec3[i1] = null;
- }
- _this14.stackVec3 = newArray;
- }
- _this14.stackVec3[_this14.sizeVec3++] = prevV;
- }
- if(mat3 != null) {
- var t00 = 1;
- var t01 = 0;
- var t02 = 0;
- var t10 = 0;
- var t11 = 1;
- var t12 = 0;
- var t20 = 0;
- var t21 = 0;
- var t22 = 1;
- mat3.e00 = t00;
- mat3.e01 = t01;
- mat3.e02 = t02;
- mat3.e10 = t10;
- mat3.e11 = t11;
- mat3.e12 = t12;
- mat3.e20 = t20;
- mat3.e21 = t21;
- mat3.e22 = t22;
- if(_this14.sizeMat3 == _this14.stackMat3.length) {
- var newLength1 = _this14.sizeMat3 << 1;
- var this2 = new Array(newLength1);
- var newArray1 = this2;
- var _g3 = 0;
- var _g12 = _this14.sizeMat3;
- while(_g3 < _g12) {
- var i2 = _g3++;
- newArray1[i2] = _this14.stackMat3[i2];
- _this14.stackMat3[i2] = null;
- }
- _this14.stackMat3 = newArray1;
- }
- _this14.stackMat3[_this14.sizeMat3++] = mat3;
- }
- if(mat4 != null) {
- var t001 = 1;
- var t011 = 0;
- var t021 = 0;
- var t03 = 0;
- var t101 = 0;
- var t111 = 1;
- var t121 = 0;
- var t13 = 0;
- var t201 = 0;
- var t211 = 0;
- var t221 = 1;
- var t23 = 0;
- var t30 = 0;
- var t31 = 0;
- var t32 = 0;
- var t33 = 1;
- mat4.e00 = t001;
- mat4.e01 = t011;
- mat4.e02 = t021;
- mat4.e03 = t03;
- mat4.e10 = t101;
- mat4.e11 = t111;
- mat4.e12 = t121;
- mat4.e13 = t13;
- mat4.e20 = t201;
- mat4.e21 = t211;
- mat4.e22 = t221;
- mat4.e23 = t23;
- mat4.e30 = t30;
- mat4.e31 = t31;
- mat4.e32 = t32;
- mat4.e33 = t33;
- if(_this14.sizeMat4 == _this14.stackMat4.length) {
- var newLength2 = _this14.sizeMat4 << 1;
- var this3 = new Array(newLength2);
- var newArray2 = this3;
- var _g4 = 0;
- var _g13 = _this14.sizeMat4;
- while(_g4 < _g13) {
- var i3 = _g4++;
- newArray2[i3] = _this14.stackMat4[i3];
- _this14.stackMat4[i3] = null;
- }
- _this14.stackMat4 = newArray2;
- }
- _this14.stackMat4[_this14.sizeMat4++] = mat4;
- }
- if(quat != null) {
- var tx6 = 0;
- var ty6 = 0;
- var tz6 = 0;
- var tw = 1;
- quat.x = tx6;
- quat.y = ty6;
- quat.z = tz6;
- quat.w = tw;
- if(_this14.sizeQuat == _this14.stackQuat.length) {
- var newLength3 = _this14.sizeQuat << 1;
- var this4 = new Array(newLength3);
- var newArray3 = this4;
- var _g5 = 0;
- var _g14 = _this14.sizeQuat;
- while(_g5 < _g14) {
- var i4 = _g5++;
- newArray3[i4] = _this14.stackQuat[i4];
- _this14.stackQuat[i4] = null;
- }
- _this14.stackQuat = newArray3;
- }
- _this14.stackQuat[_this14.sizeQuat++] = quat;
- }
- prevV = v2;
- }
- if(drawSector) {
- this.line(center,prevV,color);
- }
- var _this15 = this.p;
- var mat31 = null;
- var mat41 = null;
- var quat1 = null;
- if(prevV != null) {
- prevV.zero();
- if(_this15.sizeVec3 == _this15.stackVec3.length) {
- var newLength4 = _this15.sizeVec3 << 1;
- var this5 = new Array(newLength4);
- var newArray4 = this5;
- var _g6 = 0;
- var _g15 = _this15.sizeVec3;
- while(_g6 < _g15) {
- var i5 = _g6++;
- newArray4[i5] = _this15.stackVec3[i5];
- _this15.stackVec3[i5] = null;
- }
- _this15.stackVec3 = newArray4;
- }
- _this15.stackVec3[_this15.sizeVec3++] = prevV;
- }
- if(mat31 != null) {
- var t002 = 1;
- var t012 = 0;
- var t022 = 0;
- var t102 = 0;
- var t112 = 1;
- var t122 = 0;
- var t202 = 0;
- var t212 = 0;
- var t222 = 1;
- mat31.e00 = t002;
- mat31.e01 = t012;
- mat31.e02 = t022;
- mat31.e10 = t102;
- mat31.e11 = t112;
- mat31.e12 = t122;
- mat31.e20 = t202;
- mat31.e21 = t212;
- mat31.e22 = t222;
- if(_this15.sizeMat3 == _this15.stackMat3.length) {
- var newLength5 = _this15.sizeMat3 << 1;
- var this6 = new Array(newLength5);
- var newArray5 = this6;
- var _g7 = 0;
- var _g16 = _this15.sizeMat3;
- while(_g7 < _g16) {
- var i6 = _g7++;
- newArray5[i6] = _this15.stackMat3[i6];
- _this15.stackMat3[i6] = null;
- }
- _this15.stackMat3 = newArray5;
- }
- _this15.stackMat3[_this15.sizeMat3++] = mat31;
- }
- if(mat41 != null) {
- var t003 = 1;
- var t013 = 0;
- var t023 = 0;
- var t031 = 0;
- var t103 = 0;
- var t113 = 1;
- var t123 = 0;
- var t131 = 0;
- var t203 = 0;
- var t213 = 0;
- var t223 = 1;
- var t231 = 0;
- var t301 = 0;
- var t311 = 0;
- var t321 = 0;
- var t331 = 1;
- mat41.e00 = t003;
- mat41.e01 = t013;
- mat41.e02 = t023;
- mat41.e03 = t031;
- mat41.e10 = t103;
- mat41.e11 = t113;
- mat41.e12 = t123;
- mat41.e13 = t131;
- mat41.e20 = t203;
- mat41.e21 = t213;
- mat41.e22 = t223;
- mat41.e23 = t231;
- mat41.e30 = t301;
- mat41.e31 = t311;
- mat41.e32 = t321;
- mat41.e33 = t331;
- if(_this15.sizeMat4 == _this15.stackMat4.length) {
- var newLength6 = _this15.sizeMat4 << 1;
- var this7 = new Array(newLength6);
- var newArray6 = this7;
- var _g8 = 0;
- var _g17 = _this15.sizeMat4;
- while(_g8 < _g17) {
- var i7 = _g8++;
- newArray6[i7] = _this15.stackMat4[i7];
- _this15.stackMat4[i7] = null;
- }
- _this15.stackMat4 = newArray6;
- }
- _this15.stackMat4[_this15.sizeMat4++] = mat41;
- }
- if(quat1 != null) {
- var tx7 = 0;
- var ty7 = 0;
- var tz7 = 0;
- var tw1 = 1;
- quat1.x = tx7;
- quat1.y = ty7;
- quat1.z = tz7;
- quat1.w = tw1;
- if(_this15.sizeQuat == _this15.stackQuat.length) {
- var newLength7 = _this15.sizeQuat << 1;
- var this8 = new Array(newLength7);
- var newArray7 = this8;
- var _g9 = 0;
- var _g18 = _this15.sizeQuat;
- while(_g9 < _g18) {
- var i8 = _g9++;
- newArray7[i8] = _this15.stackQuat[i8];
- _this15.stackQuat[i8] = null;
- }
- _this15.stackQuat = newArray7;
- }
- _this15.stackQuat[_this15.sizeQuat++] = quat1;
- }
- var _this16 = this.p;
- var mat32 = null;
- var mat42 = null;
- var quat2 = null;
- if(ex != null) {
- ex.zero();
- if(_this16.sizeVec3 == _this16.stackVec3.length) {
- var newLength8 = _this16.sizeVec3 << 1;
- var this9 = new Array(newLength8);
- var newArray8 = this9;
- var _g10 = 0;
- var _g19 = _this16.sizeVec3;
- while(_g10 < _g19) {
- var i9 = _g10++;
- newArray8[i9] = _this16.stackVec3[i9];
- _this16.stackVec3[i9] = null;
- }
- _this16.stackVec3 = newArray8;
- }
- _this16.stackVec3[_this16.sizeVec3++] = ex;
- }
- if(mat32 != null) {
- var t004 = 1;
- var t014 = 0;
- var t024 = 0;
- var t104 = 0;
- var t114 = 1;
- var t124 = 0;
- var t204 = 0;
- var t214 = 0;
- var t224 = 1;
- mat32.e00 = t004;
- mat32.e01 = t014;
- mat32.e02 = t024;
- mat32.e10 = t104;
- mat32.e11 = t114;
- mat32.e12 = t124;
- mat32.e20 = t204;
- mat32.e21 = t214;
- mat32.e22 = t224;
- if(_this16.sizeMat3 == _this16.stackMat3.length) {
- var newLength9 = _this16.sizeMat3 << 1;
- var this10 = new Array(newLength9);
- var newArray9 = this10;
- var _g20 = 0;
- var _g110 = _this16.sizeMat3;
- while(_g20 < _g110) {
- var i10 = _g20++;
- newArray9[i10] = _this16.stackMat3[i10];
- _this16.stackMat3[i10] = null;
- }
- _this16.stackMat3 = newArray9;
- }
- _this16.stackMat3[_this16.sizeMat3++] = mat32;
- }
- if(mat42 != null) {
- var t005 = 1;
- var t015 = 0;
- var t025 = 0;
- var t032 = 0;
- var t105 = 0;
- var t115 = 1;
- var t125 = 0;
- var t132 = 0;
- var t205 = 0;
- var t215 = 0;
- var t225 = 1;
- var t232 = 0;
- var t302 = 0;
- var t312 = 0;
- var t322 = 0;
- var t332 = 1;
- mat42.e00 = t005;
- mat42.e01 = t015;
- mat42.e02 = t025;
- mat42.e03 = t032;
- mat42.e10 = t105;
- mat42.e11 = t115;
- mat42.e12 = t125;
- mat42.e13 = t132;
- mat42.e20 = t205;
- mat42.e21 = t215;
- mat42.e22 = t225;
- mat42.e23 = t232;
- mat42.e30 = t302;
- mat42.e31 = t312;
- mat42.e32 = t322;
- mat42.e33 = t332;
- if(_this16.sizeMat4 == _this16.stackMat4.length) {
- var newLength10 = _this16.sizeMat4 << 1;
- var this11 = new Array(newLength10);
- var newArray10 = this11;
- var _g21 = 0;
- var _g111 = _this16.sizeMat4;
- while(_g21 < _g111) {
- var i11 = _g21++;
- newArray10[i11] = _this16.stackMat4[i11];
- _this16.stackMat4[i11] = null;
- }
- _this16.stackMat4 = newArray10;
- }
- _this16.stackMat4[_this16.sizeMat4++] = mat42;
- }
- if(quat2 != null) {
- var tx8 = 0;
- var ty8 = 0;
- var tz8 = 0;
- var tw2 = 1;
- quat2.x = tx8;
- quat2.y = ty8;
- quat2.z = tz8;
- quat2.w = tw2;
- if(_this16.sizeQuat == _this16.stackQuat.length) {
- var newLength11 = _this16.sizeQuat << 1;
- var this12 = new Array(newLength11);
- var newArray11 = this12;
- var _g22 = 0;
- var _g112 = _this16.sizeQuat;
- while(_g22 < _g112) {
- var i12 = _g22++;
- newArray11[i12] = _this16.stackQuat[i12];
- _this16.stackQuat[i12] = null;
- }
- _this16.stackQuat = newArray11;
- }
- _this16.stackQuat[_this16.sizeQuat++] = quat2;
- }
- var _this17 = this.p;
- var mat33 = null;
- var mat43 = null;
- var quat3 = null;
- if(ey != null) {
- ey.zero();
- if(_this17.sizeVec3 == _this17.stackVec3.length) {
- var newLength12 = _this17.sizeVec3 << 1;
- var this13 = new Array(newLength12);
- var newArray12 = this13;
- var _g23 = 0;
- var _g113 = _this17.sizeVec3;
- while(_g23 < _g113) {
- var i13 = _g23++;
- newArray12[i13] = _this17.stackVec3[i13];
- _this17.stackVec3[i13] = null;
- }
- _this17.stackVec3 = newArray12;
- }
- _this17.stackVec3[_this17.sizeVec3++] = ey;
- }
- if(mat33 != null) {
- var t006 = 1;
- var t016 = 0;
- var t026 = 0;
- var t106 = 0;
- var t116 = 1;
- var t126 = 0;
- var t206 = 0;
- var t216 = 0;
- var t226 = 1;
- mat33.e00 = t006;
- mat33.e01 = t016;
- mat33.e02 = t026;
- mat33.e10 = t106;
- mat33.e11 = t116;
- mat33.e12 = t126;
- mat33.e20 = t206;
- mat33.e21 = t216;
- mat33.e22 = t226;
- if(_this17.sizeMat3 == _this17.stackMat3.length) {
- var newLength13 = _this17.sizeMat3 << 1;
- var this14 = new Array(newLength13);
- var newArray13 = this14;
- var _g24 = 0;
- var _g114 = _this17.sizeMat3;
- while(_g24 < _g114) {
- var i14 = _g24++;
- newArray13[i14] = _this17.stackMat3[i14];
- _this17.stackMat3[i14] = null;
- }
- _this17.stackMat3 = newArray13;
- }
- _this17.stackMat3[_this17.sizeMat3++] = mat33;
- }
- if(mat43 != null) {
- var t007 = 1;
- var t017 = 0;
- var t027 = 0;
- var t033 = 0;
- var t107 = 0;
- var t117 = 1;
- var t127 = 0;
- var t133 = 0;
- var t207 = 0;
- var t217 = 0;
- var t227 = 1;
- var t233 = 0;
- var t303 = 0;
- var t313 = 0;
- var t323 = 0;
- var t333 = 1;
- mat43.e00 = t007;
- mat43.e01 = t017;
- mat43.e02 = t027;
- mat43.e03 = t033;
- mat43.e10 = t107;
- mat43.e11 = t117;
- mat43.e12 = t127;
- mat43.e13 = t133;
- mat43.e20 = t207;
- mat43.e21 = t217;
- mat43.e22 = t227;
- mat43.e23 = t233;
- mat43.e30 = t303;
- mat43.e31 = t313;
- mat43.e32 = t323;
- mat43.e33 = t333;
- if(_this17.sizeMat4 == _this17.stackMat4.length) {
- var newLength14 = _this17.sizeMat4 << 1;
- var this15 = new Array(newLength14);
- var newArray14 = this15;
- var _g25 = 0;
- var _g115 = _this17.sizeMat4;
- while(_g25 < _g115) {
- var i15 = _g25++;
- newArray14[i15] = _this17.stackMat4[i15];
- _this17.stackMat4[i15] = null;
- }
- _this17.stackMat4 = newArray14;
- }
- _this17.stackMat4[_this17.sizeMat4++] = mat43;
- }
- if(quat3 != null) {
- var tx9 = 0;
- var ty9 = 0;
- var tz9 = 0;
- var tw3 = 1;
- quat3.x = tx9;
- quat3.y = ty9;
- quat3.z = tz9;
- quat3.w = tw3;
- if(_this17.sizeQuat == _this17.stackQuat.length) {
- var newLength15 = _this17.sizeQuat << 1;
- var this16 = new Array(newLength15);
- var newArray15 = this16;
- var _g26 = 0;
- var _g116 = _this17.sizeQuat;
- while(_g26 < _g116) {
- var i16 = _g26++;
- newArray15[i16] = _this17.stackQuat[i16];
- _this17.stackQuat[i16] = null;
- }
- _this17.stackQuat = newArray15;
- }
- _this17.stackQuat[_this17.sizeQuat++] = quat3;
- }
- }
- cone(tf,radius,halfHeight,color) {
- var _this = this.p;
- var ex = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
- var _this1 = this.p;
- var ey = _this1.sizeVec3 == 0 ? new oimo.common.Vec3() : _this1.stackVec3[--_this1.sizeVec3];
- var _this2 = this.p;
- var ez = _this2.sizeVec3 == 0 ? new oimo.common.Vec3() : _this2.stackVec3[--_this2.sizeVec3];
- var _this3 = this.p;
- var o = _this3.sizeVec3 == 0 ? new oimo.common.Vec3() : _this3.stackVec3[--_this3.sizeVec3];
- var _this4 = this.p;
- var m = _this4.sizeMat3 == 0 ? new oimo.common.Mat3() : _this4.stackMat3[--_this4.sizeMat3];
- var v = o;
- v.x = tf._positionX;
- v.y = tf._positionY;
- v.z = tf._positionZ;
- var m1 = m;
- m1.e00 = tf._rotation00;
- m1.e01 = tf._rotation01;
- m1.e02 = tf._rotation02;
- m1.e10 = tf._rotation10;
- m1.e11 = tf._rotation11;
- m1.e12 = tf._rotation12;
- m1.e20 = tf._rotation20;
- m1.e21 = tf._rotation21;
- m1.e22 = tf._rotation22;
- ex.init(m.e00,m.e10,m.e20);
- ey.init(m.e01,m.e11,m.e21);
- ez.init(m.e02,m.e12,m.e22);
- var _this5 = this.p;
- var _this6 = _this5.sizeVec3 == 0 ? new oimo.common.Vec3() : _this5.stackVec3[--_this5.sizeVec3];
- _this6.x = o.x;
- _this6.y = o.y;
- _this6.z = o.z;
- var _this7 = _this6;
- var tx = _this7.x + ey.x * halfHeight;
- var ty = _this7.y + ey.y * halfHeight;
- var tz = _this7.z + ey.z * halfHeight;
- _this7.x = tx;
- _this7.y = ty;
- _this7.z = tz;
- var top = _this7;
- var _this8 = this.p;
- var _this9 = _this8.sizeVec3 == 0 ? new oimo.common.Vec3() : _this8.stackVec3[--_this8.sizeVec3];
- _this9.x = o.x;
- _this9.y = o.y;
- _this9.z = o.z;
- var _this10 = _this9;
- var s = -halfHeight;
- var tx1 = _this10.x + ey.x * s;
- var ty1 = _this10.y + ey.y * s;
- var tz1 = _this10.z + ey.z * s;
- _this10.x = tx1;
- _this10.y = ty1;
- _this10.z = tz1;
- var bottom = _this10;
- if(this.wireframe) {
- var _this11 = this.p;
- var _this12 = _this11.sizeVec3 == 0 ? new oimo.common.Vec3() : _this11.stackVec3[--_this11.sizeVec3];
- _this12.x = bottom.x;
- _this12.y = bottom.y;
- _this12.z = bottom.z;
- var _this13 = _this12;
- var s1 = -radius;
- var tx2 = _this13.x + ex.x * s1;
- var ty2 = _this13.y + ex.y * s1;
- var tz2 = _this13.z + ex.z * s1;
- _this13.x = tx2;
- _this13.y = ty2;
- _this13.z = tz2;
- var _this14 = _this13;
- var tx3 = _this14.x + ez.x * 0;
- var ty3 = _this14.y + ez.y * 0;
- var tz3 = _this14.z + ez.z * 0;
- _this14.x = tx3;
- _this14.y = ty3;
- _this14.z = tz3;
- var bottom1 = _this14;
- var _this15 = this.p;
- var _this16 = _this15.sizeVec3 == 0 ? new oimo.common.Vec3() : _this15.stackVec3[--_this15.sizeVec3];
- _this16.x = bottom.x;
- _this16.y = bottom.y;
- _this16.z = bottom.z;
- var _this17 = _this16;
- var tx4 = _this17.x + ex.x * radius;
- var ty4 = _this17.y + ex.y * radius;
- var tz4 = _this17.z + ex.z * radius;
- _this17.x = tx4;
- _this17.y = ty4;
- _this17.z = tz4;
- var _this18 = _this17;
- var tx5 = _this18.x + ez.x * 0;
- var ty5 = _this18.y + ez.y * 0;
- var tz5 = _this18.z + ez.z * 0;
- _this18.x = tx5;
- _this18.y = ty5;
- _this18.z = tz5;
- var bottom2 = _this18;
- var _this19 = this.p;
- var _this20 = _this19.sizeVec3 == 0 ? new oimo.common.Vec3() : _this19.stackVec3[--_this19.sizeVec3];
- _this20.x = bottom.x;
- _this20.y = bottom.y;
- _this20.z = bottom.z;
- var _this21 = _this20;
- var tx6 = _this21.x + ex.x * 0;
- var ty6 = _this21.y + ex.y * 0;
- var tz6 = _this21.z + ex.z * 0;
- _this21.x = tx6;
- _this21.y = ty6;
- _this21.z = tz6;
- var _this22 = _this21;
- var s2 = -radius;
- var tx7 = _this22.x + ez.x * s2;
- var ty7 = _this22.y + ez.y * s2;
- var tz7 = _this22.z + ez.z * s2;
- _this22.x = tx7;
- _this22.y = ty7;
- _this22.z = tz7;
- var bottom3 = _this22;
- var _this23 = this.p;
- var _this24 = _this23.sizeVec3 == 0 ? new oimo.common.Vec3() : _this23.stackVec3[--_this23.sizeVec3];
- _this24.x = bottom.x;
- _this24.y = bottom.y;
- _this24.z = bottom.z;
- var _this25 = _this24;
- var tx8 = _this25.x + ex.x * 0;
- var ty8 = _this25.y + ex.y * 0;
- var tz8 = _this25.z + ex.z * 0;
- _this25.x = tx8;
- _this25.y = ty8;
- _this25.z = tz8;
- var _this26 = _this25;
- var tx9 = _this26.x + ez.x * radius;
- var ty9 = _this26.y + ez.y * radius;
- var tz9 = _this26.z + ez.z * radius;
- _this26.x = tx9;
- _this26.y = ty9;
- _this26.z = tz9;
- var bottom4 = _this26;
- this.ellipse(bottom,ex,ez,radius,radius,color);
- this.line(top,bottom1,color);
- this.line(top,bottom2,color);
- this.line(top,bottom3,color);
- this.line(top,bottom4,color);
- var _this27 = this.p;
- var mat3 = null;
- var mat4 = null;
- var quat = null;
- if(bottom1 != null) {
- bottom1.zero();
- if(_this27.sizeVec3 == _this27.stackVec3.length) {
- var newLength = _this27.sizeVec3 << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = _this27.sizeVec3;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = _this27.stackVec3[i];
- _this27.stackVec3[i] = null;
- }
- _this27.stackVec3 = newArray;
- }
- _this27.stackVec3[_this27.sizeVec3++] = bottom1;
- }
- if(mat3 != null) {
- var t00 = 1;
- var t01 = 0;
- var t02 = 0;
- var t10 = 0;
- var t11 = 1;
- var t12 = 0;
- var t20 = 0;
- var t21 = 0;
- var t22 = 1;
- mat3.e00 = t00;
- mat3.e01 = t01;
- mat3.e02 = t02;
- mat3.e10 = t10;
- mat3.e11 = t11;
- mat3.e12 = t12;
- mat3.e20 = t20;
- mat3.e21 = t21;
- mat3.e22 = t22;
- if(_this27.sizeMat3 == _this27.stackMat3.length) {
- var newLength1 = _this27.sizeMat3 << 1;
- var this2 = new Array(newLength1);
- var newArray1 = this2;
- var _g2 = 0;
- var _g11 = _this27.sizeMat3;
- while(_g2 < _g11) {
- var i1 = _g2++;
- newArray1[i1] = _this27.stackMat3[i1];
- _this27.stackMat3[i1] = null;
- }
- _this27.stackMat3 = newArray1;
- }
- _this27.stackMat3[_this27.sizeMat3++] = mat3;
- }
- if(mat4 != null) {
- var t001 = 1;
- var t011 = 0;
- var t021 = 0;
- var t03 = 0;
- var t101 = 0;
- var t111 = 1;
- var t121 = 0;
- var t13 = 0;
- var t201 = 0;
- var t211 = 0;
- var t221 = 1;
- var t23 = 0;
- var t30 = 0;
- var t31 = 0;
- var t32 = 0;
- var t33 = 1;
- mat4.e00 = t001;
- mat4.e01 = t011;
- mat4.e02 = t021;
- mat4.e03 = t03;
- mat4.e10 = t101;
- mat4.e11 = t111;
- mat4.e12 = t121;
- mat4.e13 = t13;
- mat4.e20 = t201;
- mat4.e21 = t211;
- mat4.e22 = t221;
- mat4.e23 = t23;
- mat4.e30 = t30;
- mat4.e31 = t31;
- mat4.e32 = t32;
- mat4.e33 = t33;
- if(_this27.sizeMat4 == _this27.stackMat4.length) {
- var newLength2 = _this27.sizeMat4 << 1;
- var this3 = new Array(newLength2);
- var newArray2 = this3;
- var _g3 = 0;
- var _g12 = _this27.sizeMat4;
- while(_g3 < _g12) {
- var i2 = _g3++;
- newArray2[i2] = _this27.stackMat4[i2];
- _this27.stackMat4[i2] = null;
- }
- _this27.stackMat4 = newArray2;
- }
- _this27.stackMat4[_this27.sizeMat4++] = mat4;
- }
- if(quat != null) {
- var tx10 = 0;
- var ty10 = 0;
- var tz10 = 0;
- var tw = 1;
- quat.x = tx10;
- quat.y = ty10;
- quat.z = tz10;
- quat.w = tw;
- if(_this27.sizeQuat == _this27.stackQuat.length) {
- var newLength3 = _this27.sizeQuat << 1;
- var this4 = new Array(newLength3);
- var newArray3 = this4;
- var _g4 = 0;
- var _g13 = _this27.sizeQuat;
- while(_g4 < _g13) {
- var i3 = _g4++;
- newArray3[i3] = _this27.stackQuat[i3];
- _this27.stackQuat[i3] = null;
- }
- _this27.stackQuat = newArray3;
- }
- _this27.stackQuat[_this27.sizeQuat++] = quat;
- }
- var _this28 = this.p;
- var mat31 = null;
- var mat41 = null;
- var quat1 = null;
- if(bottom2 != null) {
- bottom2.zero();
- if(_this28.sizeVec3 == _this28.stackVec3.length) {
- var newLength4 = _this28.sizeVec3 << 1;
- var this5 = new Array(newLength4);
- var newArray4 = this5;
- var _g5 = 0;
- var _g14 = _this28.sizeVec3;
- while(_g5 < _g14) {
- var i4 = _g5++;
- newArray4[i4] = _this28.stackVec3[i4];
- _this28.stackVec3[i4] = null;
- }
- _this28.stackVec3 = newArray4;
- }
- _this28.stackVec3[_this28.sizeVec3++] = bottom2;
- }
- if(mat31 != null) {
- var t002 = 1;
- var t012 = 0;
- var t022 = 0;
- var t102 = 0;
- var t112 = 1;
- var t122 = 0;
- var t202 = 0;
- var t212 = 0;
- var t222 = 1;
- mat31.e00 = t002;
- mat31.e01 = t012;
- mat31.e02 = t022;
- mat31.e10 = t102;
- mat31.e11 = t112;
- mat31.e12 = t122;
- mat31.e20 = t202;
- mat31.e21 = t212;
- mat31.e22 = t222;
- if(_this28.sizeMat3 == _this28.stackMat3.length) {
- var newLength5 = _this28.sizeMat3 << 1;
- var this6 = new Array(newLength5);
- var newArray5 = this6;
- var _g6 = 0;
- var _g15 = _this28.sizeMat3;
- while(_g6 < _g15) {
- var i5 = _g6++;
- newArray5[i5] = _this28.stackMat3[i5];
- _this28.stackMat3[i5] = null;
- }
- _this28.stackMat3 = newArray5;
- }
- _this28.stackMat3[_this28.sizeMat3++] = mat31;
- }
- if(mat41 != null) {
- var t003 = 1;
- var t013 = 0;
- var t023 = 0;
- var t031 = 0;
- var t103 = 0;
- var t113 = 1;
- var t123 = 0;
- var t131 = 0;
- var t203 = 0;
- var t213 = 0;
- var t223 = 1;
- var t231 = 0;
- var t301 = 0;
- var t311 = 0;
- var t321 = 0;
- var t331 = 1;
- mat41.e00 = t003;
- mat41.e01 = t013;
- mat41.e02 = t023;
- mat41.e03 = t031;
- mat41.e10 = t103;
- mat41.e11 = t113;
- mat41.e12 = t123;
- mat41.e13 = t131;
- mat41.e20 = t203;
- mat41.e21 = t213;
- mat41.e22 = t223;
- mat41.e23 = t231;
- mat41.e30 = t301;
- mat41.e31 = t311;
- mat41.e32 = t321;
- mat41.e33 = t331;
- if(_this28.sizeMat4 == _this28.stackMat4.length) {
- var newLength6 = _this28.sizeMat4 << 1;
- var this7 = new Array(newLength6);
- var newArray6 = this7;
- var _g7 = 0;
- var _g16 = _this28.sizeMat4;
- while(_g7 < _g16) {
- var i6 = _g7++;
- newArray6[i6] = _this28.stackMat4[i6];
- _this28.stackMat4[i6] = null;
- }
- _this28.stackMat4 = newArray6;
- }
- _this28.stackMat4[_this28.sizeMat4++] = mat41;
- }
- if(quat1 != null) {
- var tx11 = 0;
- var ty11 = 0;
- var tz11 = 0;
- var tw1 = 1;
- quat1.x = tx11;
- quat1.y = ty11;
- quat1.z = tz11;
- quat1.w = tw1;
- if(_this28.sizeQuat == _this28.stackQuat.length) {
- var newLength7 = _this28.sizeQuat << 1;
- var this8 = new Array(newLength7);
- var newArray7 = this8;
- var _g8 = 0;
- var _g17 = _this28.sizeQuat;
- while(_g8 < _g17) {
- var i7 = _g8++;
- newArray7[i7] = _this28.stackQuat[i7];
- _this28.stackQuat[i7] = null;
- }
- _this28.stackQuat = newArray7;
- }
- _this28.stackQuat[_this28.sizeQuat++] = quat1;
- }
- var _this29 = this.p;
- var mat32 = null;
- var mat42 = null;
- var quat2 = null;
- if(bottom3 != null) {
- bottom3.zero();
- if(_this29.sizeVec3 == _this29.stackVec3.length) {
- var newLength8 = _this29.sizeVec3 << 1;
- var this9 = new Array(newLength8);
- var newArray8 = this9;
- var _g9 = 0;
- var _g18 = _this29.sizeVec3;
- while(_g9 < _g18) {
- var i8 = _g9++;
- newArray8[i8] = _this29.stackVec3[i8];
- _this29.stackVec3[i8] = null;
- }
- _this29.stackVec3 = newArray8;
- }
- _this29.stackVec3[_this29.sizeVec3++] = bottom3;
- }
- if(mat32 != null) {
- var t004 = 1;
- var t014 = 0;
- var t024 = 0;
- var t104 = 0;
- var t114 = 1;
- var t124 = 0;
- var t204 = 0;
- var t214 = 0;
- var t224 = 1;
- mat32.e00 = t004;
- mat32.e01 = t014;
- mat32.e02 = t024;
- mat32.e10 = t104;
- mat32.e11 = t114;
- mat32.e12 = t124;
- mat32.e20 = t204;
- mat32.e21 = t214;
- mat32.e22 = t224;
- if(_this29.sizeMat3 == _this29.stackMat3.length) {
- var newLength9 = _this29.sizeMat3 << 1;
- var this10 = new Array(newLength9);
- var newArray9 = this10;
- var _g10 = 0;
- var _g19 = _this29.sizeMat3;
- while(_g10 < _g19) {
- var i9 = _g10++;
- newArray9[i9] = _this29.stackMat3[i9];
- _this29.stackMat3[i9] = null;
- }
- _this29.stackMat3 = newArray9;
- }
- _this29.stackMat3[_this29.sizeMat3++] = mat32;
- }
- if(mat42 != null) {
- var t005 = 1;
- var t015 = 0;
- var t025 = 0;
- var t032 = 0;
- var t105 = 0;
- var t115 = 1;
- var t125 = 0;
- var t132 = 0;
- var t205 = 0;
- var t215 = 0;
- var t225 = 1;
- var t232 = 0;
- var t302 = 0;
- var t312 = 0;
- var t322 = 0;
- var t332 = 1;
- mat42.e00 = t005;
- mat42.e01 = t015;
- mat42.e02 = t025;
- mat42.e03 = t032;
- mat42.e10 = t105;
- mat42.e11 = t115;
- mat42.e12 = t125;
- mat42.e13 = t132;
- mat42.e20 = t205;
- mat42.e21 = t215;
- mat42.e22 = t225;
- mat42.e23 = t232;
- mat42.e30 = t302;
- mat42.e31 = t312;
- mat42.e32 = t322;
- mat42.e33 = t332;
- if(_this29.sizeMat4 == _this29.stackMat4.length) {
- var newLength10 = _this29.sizeMat4 << 1;
- var this11 = new Array(newLength10);
- var newArray10 = this11;
- var _g20 = 0;
- var _g110 = _this29.sizeMat4;
- while(_g20 < _g110) {
- var i10 = _g20++;
- newArray10[i10] = _this29.stackMat4[i10];
- _this29.stackMat4[i10] = null;
- }
- _this29.stackMat4 = newArray10;
- }
- _this29.stackMat4[_this29.sizeMat4++] = mat42;
- }
- if(quat2 != null) {
- var tx12 = 0;
- var ty12 = 0;
- var tz12 = 0;
- var tw2 = 1;
- quat2.x = tx12;
- quat2.y = ty12;
- quat2.z = tz12;
- quat2.w = tw2;
- if(_this29.sizeQuat == _this29.stackQuat.length) {
- var newLength11 = _this29.sizeQuat << 1;
- var this12 = new Array(newLength11);
- var newArray11 = this12;
- var _g21 = 0;
- var _g111 = _this29.sizeQuat;
- while(_g21 < _g111) {
- var i11 = _g21++;
- newArray11[i11] = _this29.stackQuat[i11];
- _this29.stackQuat[i11] = null;
- }
- _this29.stackQuat = newArray11;
- }
- _this29.stackQuat[_this29.sizeQuat++] = quat2;
- }
- var _this30 = this.p;
- var mat33 = null;
- var mat43 = null;
- var quat3 = null;
- if(bottom4 != null) {
- bottom4.zero();
- if(_this30.sizeVec3 == _this30.stackVec3.length) {
- var newLength12 = _this30.sizeVec3 << 1;
- var this13 = new Array(newLength12);
- var newArray12 = this13;
- var _g22 = 0;
- var _g112 = _this30.sizeVec3;
- while(_g22 < _g112) {
- var i12 = _g22++;
- newArray12[i12] = _this30.stackVec3[i12];
- _this30.stackVec3[i12] = null;
- }
- _this30.stackVec3 = newArray12;
- }
- _this30.stackVec3[_this30.sizeVec3++] = bottom4;
- }
- if(mat33 != null) {
- var t006 = 1;
- var t016 = 0;
- var t026 = 0;
- var t106 = 0;
- var t116 = 1;
- var t126 = 0;
- var t206 = 0;
- var t216 = 0;
- var t226 = 1;
- mat33.e00 = t006;
- mat33.e01 = t016;
- mat33.e02 = t026;
- mat33.e10 = t106;
- mat33.e11 = t116;
- mat33.e12 = t126;
- mat33.e20 = t206;
- mat33.e21 = t216;
- mat33.e22 = t226;
- if(_this30.sizeMat3 == _this30.stackMat3.length) {
- var newLength13 = _this30.sizeMat3 << 1;
- var this14 = new Array(newLength13);
- var newArray13 = this14;
- var _g23 = 0;
- var _g113 = _this30.sizeMat3;
- while(_g23 < _g113) {
- var i13 = _g23++;
- newArray13[i13] = _this30.stackMat3[i13];
- _this30.stackMat3[i13] = null;
- }
- _this30.stackMat3 = newArray13;
- }
- _this30.stackMat3[_this30.sizeMat3++] = mat33;
- }
- if(mat43 != null) {
- var t007 = 1;
- var t017 = 0;
- var t027 = 0;
- var t033 = 0;
- var t107 = 0;
- var t117 = 1;
- var t127 = 0;
- var t133 = 0;
- var t207 = 0;
- var t217 = 0;
- var t227 = 1;
- var t233 = 0;
- var t303 = 0;
- var t313 = 0;
- var t323 = 0;
- var t333 = 1;
- mat43.e00 = t007;
- mat43.e01 = t017;
- mat43.e02 = t027;
- mat43.e03 = t033;
- mat43.e10 = t107;
- mat43.e11 = t117;
- mat43.e12 = t127;
- mat43.e13 = t133;
- mat43.e20 = t207;
- mat43.e21 = t217;
- mat43.e22 = t227;
- mat43.e23 = t233;
- mat43.e30 = t303;
- mat43.e31 = t313;
- mat43.e32 = t323;
- mat43.e33 = t333;
- if(_this30.sizeMat4 == _this30.stackMat4.length) {
- var newLength14 = _this30.sizeMat4 << 1;
- var this15 = new Array(newLength14);
- var newArray14 = this15;
- var _g24 = 0;
- var _g114 = _this30.sizeMat4;
- while(_g24 < _g114) {
- var i14 = _g24++;
- newArray14[i14] = _this30.stackMat4[i14];
- _this30.stackMat4[i14] = null;
- }
- _this30.stackMat4 = newArray14;
- }
- _this30.stackMat4[_this30.sizeMat4++] = mat43;
- }
- if(quat3 != null) {
- var tx13 = 0;
- var ty13 = 0;
- var tz13 = 0;
- var tw3 = 1;
- quat3.x = tx13;
- quat3.y = ty13;
- quat3.z = tz13;
- quat3.w = tw3;
- if(_this30.sizeQuat == _this30.stackQuat.length) {
- var newLength15 = _this30.sizeQuat << 1;
- var this16 = new Array(newLength15);
- var newArray15 = this16;
- var _g25 = 0;
- var _g115 = _this30.sizeQuat;
- while(_g25 < _g115) {
- var i15 = _g25++;
- newArray15[i15] = _this30.stackQuat[i15];
- _this30.stackQuat[i15] = null;
- }
- _this30.stackQuat = newArray15;
- }
- _this30.stackQuat[_this30.sizeQuat++] = quat3;
- }
- } else {
- var invDenom = 1 / Math.sqrt(radius * radius + 4 * halfHeight * halfHeight);
- var cos = 2 * halfHeight * invDenom;
- var sin = radius * invDenom;
- var invDenom2 = 1 / Math.sqrt(2 * (1 + cos));
- var _g26 = 0;
- while(_g26 < 8) {
- var i16 = _g26++;
- var _this31 = this.tmpCircleNorms[i16];
- var v1 = this.circleCoords[i16];
- _this31.x = v1.x;
- _this31.y = v1.y;
- _this31.z = v1.z;
- var _this32 = _this31;
- var tx14 = _this32.x * cos;
- var ty14 = _this32.y * cos;
- var tz14 = _this32.z * cos;
- _this32.x = tx14;
- _this32.y = ty14;
- _this32.z = tz14;
- _this32.y += sin;
- var _this33 = this.tmpCircleNorms[i16];
- var tx15 = _this33.x * m.e00 + _this33.y * m.e01 + _this33.z * m.e02;
- var ty15 = _this33.x * m.e10 + _this33.y * m.e11 + _this33.z * m.e12;
- var tz15 = _this33.x * m.e20 + _this33.y * m.e21 + _this33.z * m.e22;
- _this33.x = tx15;
- _this33.y = ty15;
- _this33.z = tz15;
- var _this34 = this.tmpCircleVerts1[i16];
- var v2 = this.circleCoordsShift[i16];
- _this34.x = v2.x;
- _this34.y = v2.y;
- _this34.z = v2.z;
- var _this35 = _this34;
- var tx16 = _this35.x * cos;
- var ty16 = _this35.y * cos;
- var tz16 = _this35.z * cos;
- _this35.x = tx16;
- _this35.y = ty16;
- _this35.z = tz16;
- _this35.y += sin;
- var _this36 = this.tmpCircleVerts1[i16];
- var tx17 = _this36.x * m.e00 + _this36.y * m.e01 + _this36.z * m.e02;
- var ty17 = _this36.x * m.e10 + _this36.y * m.e11 + _this36.z * m.e12;
- var tz17 = _this36.x * m.e20 + _this36.y * m.e21 + _this36.z * m.e22;
- _this36.x = tx17;
- _this36.y = ty17;
- _this36.z = tz17;
- var _this37 = this.tmpCircleVerts2[i16];
- var v3 = this.circleCoords[i16];
- _this37.x = v3.x;
- _this37.y = v3.y;
- _this37.z = v3.z;
- var _this38 = _this37;
- var tx18 = _this38.x * m.e00 + _this38.y * m.e01 + _this38.z * m.e02;
- var ty18 = _this38.x * m.e10 + _this38.y * m.e11 + _this38.z * m.e12;
- var tz18 = _this38.x * m.e20 + _this38.y * m.e21 + _this38.z * m.e22;
- _this38.x = tx18;
- _this38.y = ty18;
- _this38.z = tz18;
- var _this39 = _this38;
- var tx19 = _this39.x * radius;
- var ty19 = _this39.y * radius;
- var tz19 = _this39.z * radius;
- _this39.x = tx19;
- _this39.y = ty19;
- _this39.z = tz19;
- var _this40 = _this39;
- var tx20 = _this40.x + o.x;
- var ty20 = _this40.y + o.y;
- var tz20 = _this40.z + o.z;
- _this40.x = tx20;
- _this40.y = ty20;
- _this40.z = tz20;
- var _this41 = this.tmpCircleVerts2[i16];
- var s3 = -halfHeight;
- var tx21 = _this41.x + ey.x * s3;
- var ty21 = _this41.y + ey.y * s3;
- var tz21 = _this41.z + ey.z * s3;
- _this41.x = tx21;
- _this41.y = ty21;
- _this41.z = tz21;
- }
- var _g116 = 0;
- while(_g116 < 8) {
- var i17 = _g116++;
- var v11 = top;
- var v21 = this.tmpCircleVerts2[i17];
- var v31 = this.tmpCircleVerts2[(i17 + 1) % 8];
- var n1 = this.tmpCircleVerts1[i17];
- var n2 = this.tmpCircleNorms[i17];
- var n3 = this.tmpCircleNorms[(i17 + 1) % 8];
- this.triangle(v11,v21,v31,n1,n2,n3,color);
- v11 = bottom;
- v21 = this.tmpCircleVerts2[(i17 + 1) % 8];
- v31 = this.tmpCircleVerts2[i17];
- var _this42 = this.p;
- var _this43 = _this42.sizeVec3 == 0 ? new oimo.common.Vec3() : _this42.stackVec3[--_this42.sizeVec3];
- _this43.x = ey.x;
- _this43.y = ey.y;
- _this43.z = ey.z;
- var _this44 = _this43;
- var tx22 = -_this44.x;
- var ty22 = -_this44.y;
- var tz22 = -_this44.z;
- _this44.x = tx22;
- _this44.y = ty22;
- _this44.z = tz22;
- n1 = _this44;
- this.triangle(v11,v21,v31,n1,n1,n1,color);
- var _this45 = this.p;
- var mat34 = null;
- var mat44 = null;
- var quat4 = null;
- if(n1 != null) {
- n1.zero();
- if(_this45.sizeVec3 == _this45.stackVec3.length) {
- var newLength16 = _this45.sizeVec3 << 1;
- var this17 = new Array(newLength16);
- var newArray16 = this17;
- var _g27 = 0;
- var _g117 = _this45.sizeVec3;
- while(_g27 < _g117) {
- var i18 = _g27++;
- newArray16[i18] = _this45.stackVec3[i18];
- _this45.stackVec3[i18] = null;
- }
- _this45.stackVec3 = newArray16;
- }
- _this45.stackVec3[_this45.sizeVec3++] = n1;
- }
- if(mat34 != null) {
- var t008 = 1;
- var t018 = 0;
- var t028 = 0;
- var t108 = 0;
- var t118 = 1;
- var t128 = 0;
- var t208 = 0;
- var t218 = 0;
- var t228 = 1;
- mat34.e00 = t008;
- mat34.e01 = t018;
- mat34.e02 = t028;
- mat34.e10 = t108;
- mat34.e11 = t118;
- mat34.e12 = t128;
- mat34.e20 = t208;
- mat34.e21 = t218;
- mat34.e22 = t228;
- if(_this45.sizeMat3 == _this45.stackMat3.length) {
- var newLength17 = _this45.sizeMat3 << 1;
- var this18 = new Array(newLength17);
- var newArray17 = this18;
- var _g28 = 0;
- var _g118 = _this45.sizeMat3;
- while(_g28 < _g118) {
- var i19 = _g28++;
- newArray17[i19] = _this45.stackMat3[i19];
- _this45.stackMat3[i19] = null;
- }
- _this45.stackMat3 = newArray17;
- }
- _this45.stackMat3[_this45.sizeMat3++] = mat34;
- }
- if(mat44 != null) {
- var t009 = 1;
- var t019 = 0;
- var t029 = 0;
- var t034 = 0;
- var t109 = 0;
- var t119 = 1;
- var t129 = 0;
- var t134 = 0;
- var t209 = 0;
- var t219 = 0;
- var t229 = 1;
- var t234 = 0;
- var t304 = 0;
- var t314 = 0;
- var t324 = 0;
- var t334 = 1;
- mat44.e00 = t009;
- mat44.e01 = t019;
- mat44.e02 = t029;
- mat44.e03 = t034;
- mat44.e10 = t109;
- mat44.e11 = t119;
- mat44.e12 = t129;
- mat44.e13 = t134;
- mat44.e20 = t209;
- mat44.e21 = t219;
- mat44.e22 = t229;
- mat44.e23 = t234;
- mat44.e30 = t304;
- mat44.e31 = t314;
- mat44.e32 = t324;
- mat44.e33 = t334;
- if(_this45.sizeMat4 == _this45.stackMat4.length) {
- var newLength18 = _this45.sizeMat4 << 1;
- var this19 = new Array(newLength18);
- var newArray18 = this19;
- var _g29 = 0;
- var _g119 = _this45.sizeMat4;
- while(_g29 < _g119) {
- var i20 = _g29++;
- newArray18[i20] = _this45.stackMat4[i20];
- _this45.stackMat4[i20] = null;
- }
- _this45.stackMat4 = newArray18;
- }
- _this45.stackMat4[_this45.sizeMat4++] = mat44;
- }
- if(quat4 != null) {
- var tx23 = 0;
- var ty23 = 0;
- var tz23 = 0;
- var tw4 = 1;
- quat4.x = tx23;
- quat4.y = ty23;
- quat4.z = tz23;
- quat4.w = tw4;
- if(_this45.sizeQuat == _this45.stackQuat.length) {
- var newLength19 = _this45.sizeQuat << 1;
- var this20 = new Array(newLength19);
- var newArray19 = this20;
- var _g30 = 0;
- var _g120 = _this45.sizeQuat;
- while(_g30 < _g120) {
- var i21 = _g30++;
- newArray19[i21] = _this45.stackQuat[i21];
- _this45.stackQuat[i21] = null;
- }
- _this45.stackQuat = newArray19;
- }
- _this45.stackQuat[_this45.sizeQuat++] = quat4;
- }
- }
- }
- var _this46 = this.p;
- var mat35 = null;
- var mat45 = null;
- var quat5 = null;
- if(top != null) {
- top.zero();
- if(_this46.sizeVec3 == _this46.stackVec3.length) {
- var newLength20 = _this46.sizeVec3 << 1;
- var this21 = new Array(newLength20);
- var newArray20 = this21;
- var _g31 = 0;
- var _g121 = _this46.sizeVec3;
- while(_g31 < _g121) {
- var i22 = _g31++;
- newArray20[i22] = _this46.stackVec3[i22];
- _this46.stackVec3[i22] = null;
- }
- _this46.stackVec3 = newArray20;
- }
- _this46.stackVec3[_this46.sizeVec3++] = top;
- }
- if(mat35 != null) {
- var t0010 = 1;
- var t0110 = 0;
- var t0210 = 0;
- var t1010 = 0;
- var t1110 = 1;
- var t1210 = 0;
- var t2010 = 0;
- var t2110 = 0;
- var t2210 = 1;
- mat35.e00 = t0010;
- mat35.e01 = t0110;
- mat35.e02 = t0210;
- mat35.e10 = t1010;
- mat35.e11 = t1110;
- mat35.e12 = t1210;
- mat35.e20 = t2010;
- mat35.e21 = t2110;
- mat35.e22 = t2210;
- if(_this46.sizeMat3 == _this46.stackMat3.length) {
- var newLength21 = _this46.sizeMat3 << 1;
- var this22 = new Array(newLength21);
- var newArray21 = this22;
- var _g32 = 0;
- var _g122 = _this46.sizeMat3;
- while(_g32 < _g122) {
- var i23 = _g32++;
- newArray21[i23] = _this46.stackMat3[i23];
- _this46.stackMat3[i23] = null;
- }
- _this46.stackMat3 = newArray21;
- }
- _this46.stackMat3[_this46.sizeMat3++] = mat35;
- }
- if(mat45 != null) {
- var t0011 = 1;
- var t0111 = 0;
- var t0211 = 0;
- var t035 = 0;
- var t1011 = 0;
- var t1111 = 1;
- var t1211 = 0;
- var t135 = 0;
- var t2011 = 0;
- var t2111 = 0;
- var t2211 = 1;
- var t235 = 0;
- var t305 = 0;
- var t315 = 0;
- var t325 = 0;
- var t335 = 1;
- mat45.e00 = t0011;
- mat45.e01 = t0111;
- mat45.e02 = t0211;
- mat45.e03 = t035;
- mat45.e10 = t1011;
- mat45.e11 = t1111;
- mat45.e12 = t1211;
- mat45.e13 = t135;
- mat45.e20 = t2011;
- mat45.e21 = t2111;
- mat45.e22 = t2211;
- mat45.e23 = t235;
- mat45.e30 = t305;
- mat45.e31 = t315;
- mat45.e32 = t325;
- mat45.e33 = t335;
- if(_this46.sizeMat4 == _this46.stackMat4.length) {
- var newLength22 = _this46.sizeMat4 << 1;
- var this23 = new Array(newLength22);
- var newArray22 = this23;
- var _g33 = 0;
- var _g123 = _this46.sizeMat4;
- while(_g33 < _g123) {
- var i24 = _g33++;
- newArray22[i24] = _this46.stackMat4[i24];
- _this46.stackMat4[i24] = null;
- }
- _this46.stackMat4 = newArray22;
- }
- _this46.stackMat4[_this46.sizeMat4++] = mat45;
- }
- if(quat5 != null) {
- var tx24 = 0;
- var ty24 = 0;
- var tz24 = 0;
- var tw5 = 1;
- quat5.x = tx24;
- quat5.y = ty24;
- quat5.z = tz24;
- quat5.w = tw5;
- if(_this46.sizeQuat == _this46.stackQuat.length) {
- var newLength23 = _this46.sizeQuat << 1;
- var this24 = new Array(newLength23);
- var newArray23 = this24;
- var _g34 = 0;
- var _g124 = _this46.sizeQuat;
- while(_g34 < _g124) {
- var i25 = _g34++;
- newArray23[i25] = _this46.stackQuat[i25];
- _this46.stackQuat[i25] = null;
- }
- _this46.stackQuat = newArray23;
- }
- _this46.stackQuat[_this46.sizeQuat++] = quat5;
- }
- var _this47 = this.p;
- var mat36 = null;
- var mat46 = null;
- var quat6 = null;
- if(bottom != null) {
- bottom.zero();
- if(_this47.sizeVec3 == _this47.stackVec3.length) {
- var newLength24 = _this47.sizeVec3 << 1;
- var this25 = new Array(newLength24);
- var newArray24 = this25;
- var _g35 = 0;
- var _g125 = _this47.sizeVec3;
- while(_g35 < _g125) {
- var i26 = _g35++;
- newArray24[i26] = _this47.stackVec3[i26];
- _this47.stackVec3[i26] = null;
- }
- _this47.stackVec3 = newArray24;
- }
- _this47.stackVec3[_this47.sizeVec3++] = bottom;
- }
- if(mat36 != null) {
- var t0012 = 1;
- var t0112 = 0;
- var t0212 = 0;
- var t1012 = 0;
- var t1112 = 1;
- var t1212 = 0;
- var t2012 = 0;
- var t2112 = 0;
- var t2212 = 1;
- mat36.e00 = t0012;
- mat36.e01 = t0112;
- mat36.e02 = t0212;
- mat36.e10 = t1012;
- mat36.e11 = t1112;
- mat36.e12 = t1212;
- mat36.e20 = t2012;
- mat36.e21 = t2112;
- mat36.e22 = t2212;
- if(_this47.sizeMat3 == _this47.stackMat3.length) {
- var newLength25 = _this47.sizeMat3 << 1;
- var this26 = new Array(newLength25);
- var newArray25 = this26;
- var _g36 = 0;
- var _g126 = _this47.sizeMat3;
- while(_g36 < _g126) {
- var i27 = _g36++;
- newArray25[i27] = _this47.stackMat3[i27];
- _this47.stackMat3[i27] = null;
- }
- _this47.stackMat3 = newArray25;
- }
- _this47.stackMat3[_this47.sizeMat3++] = mat36;
- }
- if(mat46 != null) {
- var t0013 = 1;
- var t0113 = 0;
- var t0213 = 0;
- var t036 = 0;
- var t1013 = 0;
- var t1113 = 1;
- var t1213 = 0;
- var t136 = 0;
- var t2013 = 0;
- var t2113 = 0;
- var t2213 = 1;
- var t236 = 0;
- var t306 = 0;
- var t316 = 0;
- var t326 = 0;
- var t336 = 1;
- mat46.e00 = t0013;
- mat46.e01 = t0113;
- mat46.e02 = t0213;
- mat46.e03 = t036;
- mat46.e10 = t1013;
- mat46.e11 = t1113;
- mat46.e12 = t1213;
- mat46.e13 = t136;
- mat46.e20 = t2013;
- mat46.e21 = t2113;
- mat46.e22 = t2213;
- mat46.e23 = t236;
- mat46.e30 = t306;
- mat46.e31 = t316;
- mat46.e32 = t326;
- mat46.e33 = t336;
- if(_this47.sizeMat4 == _this47.stackMat4.length) {
- var newLength26 = _this47.sizeMat4 << 1;
- var this27 = new Array(newLength26);
- var newArray26 = this27;
- var _g37 = 0;
- var _g127 = _this47.sizeMat4;
- while(_g37 < _g127) {
- var i28 = _g37++;
- newArray26[i28] = _this47.stackMat4[i28];
- _this47.stackMat4[i28] = null;
- }
- _this47.stackMat4 = newArray26;
- }
- _this47.stackMat4[_this47.sizeMat4++] = mat46;
- }
- if(quat6 != null) {
- var tx25 = 0;
- var ty25 = 0;
- var tz25 = 0;
- var tw6 = 1;
- quat6.x = tx25;
- quat6.y = ty25;
- quat6.z = tz25;
- quat6.w = tw6;
- if(_this47.sizeQuat == _this47.stackQuat.length) {
- var newLength27 = _this47.sizeQuat << 1;
- var this28 = new Array(newLength27);
- var newArray27 = this28;
- var _g38 = 0;
- var _g128 = _this47.sizeQuat;
- while(_g38 < _g128) {
- var i29 = _g38++;
- newArray27[i29] = _this47.stackQuat[i29];
- _this47.stackQuat[i29] = null;
- }
- _this47.stackQuat = newArray27;
- }
- _this47.stackQuat[_this47.sizeQuat++] = quat6;
- }
- var _this48 = this.p;
- var mat37 = null;
- var mat47 = null;
- var quat7 = null;
- if(o != null) {
- o.zero();
- if(_this48.sizeVec3 == _this48.stackVec3.length) {
- var newLength28 = _this48.sizeVec3 << 1;
- var this29 = new Array(newLength28);
- var newArray28 = this29;
- var _g39 = 0;
- var _g129 = _this48.sizeVec3;
- while(_g39 < _g129) {
- var i30 = _g39++;
- newArray28[i30] = _this48.stackVec3[i30];
- _this48.stackVec3[i30] = null;
- }
- _this48.stackVec3 = newArray28;
- }
- _this48.stackVec3[_this48.sizeVec3++] = o;
- }
- if(mat37 != null) {
- var t0014 = 1;
- var t0114 = 0;
- var t0214 = 0;
- var t1014 = 0;
- var t1114 = 1;
- var t1214 = 0;
- var t2014 = 0;
- var t2114 = 0;
- var t2214 = 1;
- mat37.e00 = t0014;
- mat37.e01 = t0114;
- mat37.e02 = t0214;
- mat37.e10 = t1014;
- mat37.e11 = t1114;
- mat37.e12 = t1214;
- mat37.e20 = t2014;
- mat37.e21 = t2114;
- mat37.e22 = t2214;
- if(_this48.sizeMat3 == _this48.stackMat3.length) {
- var newLength29 = _this48.sizeMat3 << 1;
- var this30 = new Array(newLength29);
- var newArray29 = this30;
- var _g40 = 0;
- var _g130 = _this48.sizeMat3;
- while(_g40 < _g130) {
- var i31 = _g40++;
- newArray29[i31] = _this48.stackMat3[i31];
- _this48.stackMat3[i31] = null;
- }
- _this48.stackMat3 = newArray29;
- }
- _this48.stackMat3[_this48.sizeMat3++] = mat37;
- }
- if(mat47 != null) {
- var t0015 = 1;
- var t0115 = 0;
- var t0215 = 0;
- var t037 = 0;
- var t1015 = 0;
- var t1115 = 1;
- var t1215 = 0;
- var t137 = 0;
- var t2015 = 0;
- var t2115 = 0;
- var t2215 = 1;
- var t237 = 0;
- var t307 = 0;
- var t317 = 0;
- var t327 = 0;
- var t337 = 1;
- mat47.e00 = t0015;
- mat47.e01 = t0115;
- mat47.e02 = t0215;
- mat47.e03 = t037;
- mat47.e10 = t1015;
- mat47.e11 = t1115;
- mat47.e12 = t1215;
- mat47.e13 = t137;
- mat47.e20 = t2015;
- mat47.e21 = t2115;
- mat47.e22 = t2215;
- mat47.e23 = t237;
- mat47.e30 = t307;
- mat47.e31 = t317;
- mat47.e32 = t327;
- mat47.e33 = t337;
- if(_this48.sizeMat4 == _this48.stackMat4.length) {
- var newLength30 = _this48.sizeMat4 << 1;
- var this31 = new Array(newLength30);
- var newArray30 = this31;
- var _g41 = 0;
- var _g131 = _this48.sizeMat4;
- while(_g41 < _g131) {
- var i32 = _g41++;
- newArray30[i32] = _this48.stackMat4[i32];
- _this48.stackMat4[i32] = null;
- }
- _this48.stackMat4 = newArray30;
- }
- _this48.stackMat4[_this48.sizeMat4++] = mat47;
- }
- if(quat7 != null) {
- var tx26 = 0;
- var ty26 = 0;
- var tz26 = 0;
- var tw7 = 1;
- quat7.x = tx26;
- quat7.y = ty26;
- quat7.z = tz26;
- quat7.w = tw7;
- if(_this48.sizeQuat == _this48.stackQuat.length) {
- var newLength31 = _this48.sizeQuat << 1;
- var this32 = new Array(newLength31);
- var newArray31 = this32;
- var _g42 = 0;
- var _g132 = _this48.sizeQuat;
- while(_g42 < _g132) {
- var i33 = _g42++;
- newArray31[i33] = _this48.stackQuat[i33];
- _this48.stackQuat[i33] = null;
- }
- _this48.stackQuat = newArray31;
- }
- _this48.stackQuat[_this48.sizeQuat++] = quat7;
- }
- var _this49 = this.p;
- var vec3 = null;
- var mat48 = null;
- var quat8 = null;
- if(vec3 != null) {
- vec3.zero();
- if(_this49.sizeVec3 == _this49.stackVec3.length) {
- var newLength32 = _this49.sizeVec3 << 1;
- var this33 = new Array(newLength32);
- var newArray32 = this33;
- var _g43 = 0;
- var _g133 = _this49.sizeVec3;
- while(_g43 < _g133) {
- var i34 = _g43++;
- newArray32[i34] = _this49.stackVec3[i34];
- _this49.stackVec3[i34] = null;
- }
- _this49.stackVec3 = newArray32;
- }
- _this49.stackVec3[_this49.sizeVec3++] = vec3;
- }
- if(m != null) {
- var t0016 = 1;
- var t0116 = 0;
- var t0216 = 0;
- var t1016 = 0;
- var t1116 = 1;
- var t1216 = 0;
- var t2016 = 0;
- var t2116 = 0;
- var t2216 = 1;
- m.e00 = t0016;
- m.e01 = t0116;
- m.e02 = t0216;
- m.e10 = t1016;
- m.e11 = t1116;
- m.e12 = t1216;
- m.e20 = t2016;
- m.e21 = t2116;
- m.e22 = t2216;
- if(_this49.sizeMat3 == _this49.stackMat3.length) {
- var newLength33 = _this49.sizeMat3 << 1;
- var this34 = new Array(newLength33);
- var newArray33 = this34;
- var _g44 = 0;
- var _g134 = _this49.sizeMat3;
- while(_g44 < _g134) {
- var i35 = _g44++;
- newArray33[i35] = _this49.stackMat3[i35];
- _this49.stackMat3[i35] = null;
- }
- _this49.stackMat3 = newArray33;
- }
- _this49.stackMat3[_this49.sizeMat3++] = m;
- }
- if(mat48 != null) {
- var t0017 = 1;
- var t0117 = 0;
- var t0217 = 0;
- var t038 = 0;
- var t1017 = 0;
- var t1117 = 1;
- var t1217 = 0;
- var t138 = 0;
- var t2017 = 0;
- var t2117 = 0;
- var t2217 = 1;
- var t238 = 0;
- var t308 = 0;
- var t318 = 0;
- var t328 = 0;
- var t338 = 1;
- mat48.e00 = t0017;
- mat48.e01 = t0117;
- mat48.e02 = t0217;
- mat48.e03 = t038;
- mat48.e10 = t1017;
- mat48.e11 = t1117;
- mat48.e12 = t1217;
- mat48.e13 = t138;
- mat48.e20 = t2017;
- mat48.e21 = t2117;
- mat48.e22 = t2217;
- mat48.e23 = t238;
- mat48.e30 = t308;
- mat48.e31 = t318;
- mat48.e32 = t328;
- mat48.e33 = t338;
- if(_this49.sizeMat4 == _this49.stackMat4.length) {
- var newLength34 = _this49.sizeMat4 << 1;
- var this35 = new Array(newLength34);
- var newArray34 = this35;
- var _g45 = 0;
- var _g135 = _this49.sizeMat4;
- while(_g45 < _g135) {
- var i36 = _g45++;
- newArray34[i36] = _this49.stackMat4[i36];
- _this49.stackMat4[i36] = null;
- }
- _this49.stackMat4 = newArray34;
- }
- _this49.stackMat4[_this49.sizeMat4++] = mat48;
- }
- if(quat8 != null) {
- var tx27 = 0;
- var ty27 = 0;
- var tz27 = 0;
- var tw8 = 1;
- quat8.x = tx27;
- quat8.y = ty27;
- quat8.z = tz27;
- quat8.w = tw8;
- if(_this49.sizeQuat == _this49.stackQuat.length) {
- var newLength35 = _this49.sizeQuat << 1;
- var this36 = new Array(newLength35);
- var newArray35 = this36;
- var _g46 = 0;
- var _g136 = _this49.sizeQuat;
- while(_g46 < _g136) {
- var i37 = _g46++;
- newArray35[i37] = _this49.stackQuat[i37];
- _this49.stackQuat[i37] = null;
- }
- _this49.stackQuat = newArray35;
- }
- _this49.stackQuat[_this49.sizeQuat++] = quat8;
- }
- var _this50 = this.p;
- var mat38 = null;
- var mat49 = null;
- var quat9 = null;
- if(ex != null) {
- ex.zero();
- if(_this50.sizeVec3 == _this50.stackVec3.length) {
- var newLength36 = _this50.sizeVec3 << 1;
- var this37 = new Array(newLength36);
- var newArray36 = this37;
- var _g47 = 0;
- var _g137 = _this50.sizeVec3;
- while(_g47 < _g137) {
- var i38 = _g47++;
- newArray36[i38] = _this50.stackVec3[i38];
- _this50.stackVec3[i38] = null;
- }
- _this50.stackVec3 = newArray36;
- }
- _this50.stackVec3[_this50.sizeVec3++] = ex;
- }
- if(mat38 != null) {
- var t0018 = 1;
- var t0118 = 0;
- var t0218 = 0;
- var t1018 = 0;
- var t1118 = 1;
- var t1218 = 0;
- var t2018 = 0;
- var t2118 = 0;
- var t2218 = 1;
- mat38.e00 = t0018;
- mat38.e01 = t0118;
- mat38.e02 = t0218;
- mat38.e10 = t1018;
- mat38.e11 = t1118;
- mat38.e12 = t1218;
- mat38.e20 = t2018;
- mat38.e21 = t2118;
- mat38.e22 = t2218;
- if(_this50.sizeMat3 == _this50.stackMat3.length) {
- var newLength37 = _this50.sizeMat3 << 1;
- var this38 = new Array(newLength37);
- var newArray37 = this38;
- var _g48 = 0;
- var _g138 = _this50.sizeMat3;
- while(_g48 < _g138) {
- var i39 = _g48++;
- newArray37[i39] = _this50.stackMat3[i39];
- _this50.stackMat3[i39] = null;
- }
- _this50.stackMat3 = newArray37;
- }
- _this50.stackMat3[_this50.sizeMat3++] = mat38;
- }
- if(mat49 != null) {
- var t0019 = 1;
- var t0119 = 0;
- var t0219 = 0;
- var t039 = 0;
- var t1019 = 0;
- var t1119 = 1;
- var t1219 = 0;
- var t139 = 0;
- var t2019 = 0;
- var t2119 = 0;
- var t2219 = 1;
- var t239 = 0;
- var t309 = 0;
- var t319 = 0;
- var t329 = 0;
- var t339 = 1;
- mat49.e00 = t0019;
- mat49.e01 = t0119;
- mat49.e02 = t0219;
- mat49.e03 = t039;
- mat49.e10 = t1019;
- mat49.e11 = t1119;
- mat49.e12 = t1219;
- mat49.e13 = t139;
- mat49.e20 = t2019;
- mat49.e21 = t2119;
- mat49.e22 = t2219;
- mat49.e23 = t239;
- mat49.e30 = t309;
- mat49.e31 = t319;
- mat49.e32 = t329;
- mat49.e33 = t339;
- if(_this50.sizeMat4 == _this50.stackMat4.length) {
- var newLength38 = _this50.sizeMat4 << 1;
- var this39 = new Array(newLength38);
- var newArray38 = this39;
- var _g49 = 0;
- var _g139 = _this50.sizeMat4;
- while(_g49 < _g139) {
- var i40 = _g49++;
- newArray38[i40] = _this50.stackMat4[i40];
- _this50.stackMat4[i40] = null;
- }
- _this50.stackMat4 = newArray38;
- }
- _this50.stackMat4[_this50.sizeMat4++] = mat49;
- }
- if(quat9 != null) {
- var tx28 = 0;
- var ty28 = 0;
- var tz28 = 0;
- var tw9 = 1;
- quat9.x = tx28;
- quat9.y = ty28;
- quat9.z = tz28;
- quat9.w = tw9;
- if(_this50.sizeQuat == _this50.stackQuat.length) {
- var newLength39 = _this50.sizeQuat << 1;
- var this40 = new Array(newLength39);
- var newArray39 = this40;
- var _g50 = 0;
- var _g140 = _this50.sizeQuat;
- while(_g50 < _g140) {
- var i41 = _g50++;
- newArray39[i41] = _this50.stackQuat[i41];
- _this50.stackQuat[i41] = null;
- }
- _this50.stackQuat = newArray39;
- }
- _this50.stackQuat[_this50.sizeQuat++] = quat9;
- }
- var _this51 = this.p;
- var mat39 = null;
- var mat410 = null;
- var quat10 = null;
- if(ey != null) {
- ey.zero();
- if(_this51.sizeVec3 == _this51.stackVec3.length) {
- var newLength40 = _this51.sizeVec3 << 1;
- var this41 = new Array(newLength40);
- var newArray40 = this41;
- var _g51 = 0;
- var _g141 = _this51.sizeVec3;
- while(_g51 < _g141) {
- var i42 = _g51++;
- newArray40[i42] = _this51.stackVec3[i42];
- _this51.stackVec3[i42] = null;
- }
- _this51.stackVec3 = newArray40;
- }
- _this51.stackVec3[_this51.sizeVec3++] = ey;
- }
- if(mat39 != null) {
- var t0020 = 1;
- var t0120 = 0;
- var t0220 = 0;
- var t1020 = 0;
- var t1120 = 1;
- var t1220 = 0;
- var t2020 = 0;
- var t2120 = 0;
- var t2220 = 1;
- mat39.e00 = t0020;
- mat39.e01 = t0120;
- mat39.e02 = t0220;
- mat39.e10 = t1020;
- mat39.e11 = t1120;
- mat39.e12 = t1220;
- mat39.e20 = t2020;
- mat39.e21 = t2120;
- mat39.e22 = t2220;
- if(_this51.sizeMat3 == _this51.stackMat3.length) {
- var newLength41 = _this51.sizeMat3 << 1;
- var this42 = new Array(newLength41);
- var newArray41 = this42;
- var _g52 = 0;
- var _g142 = _this51.sizeMat3;
- while(_g52 < _g142) {
- var i43 = _g52++;
- newArray41[i43] = _this51.stackMat3[i43];
- _this51.stackMat3[i43] = null;
- }
- _this51.stackMat3 = newArray41;
- }
- _this51.stackMat3[_this51.sizeMat3++] = mat39;
- }
- if(mat410 != null) {
- var t0021 = 1;
- var t0121 = 0;
- var t0221 = 0;
- var t0310 = 0;
- var t1021 = 0;
- var t1121 = 1;
- var t1221 = 0;
- var t1310 = 0;
- var t2021 = 0;
- var t2121 = 0;
- var t2221 = 1;
- var t2310 = 0;
- var t3010 = 0;
- var t3110 = 0;
- var t3210 = 0;
- var t3310 = 1;
- mat410.e00 = t0021;
- mat410.e01 = t0121;
- mat410.e02 = t0221;
- mat410.e03 = t0310;
- mat410.e10 = t1021;
- mat410.e11 = t1121;
- mat410.e12 = t1221;
- mat410.e13 = t1310;
- mat410.e20 = t2021;
- mat410.e21 = t2121;
- mat410.e22 = t2221;
- mat410.e23 = t2310;
- mat410.e30 = t3010;
- mat410.e31 = t3110;
- mat410.e32 = t3210;
- mat410.e33 = t3310;
- if(_this51.sizeMat4 == _this51.stackMat4.length) {
- var newLength42 = _this51.sizeMat4 << 1;
- var this43 = new Array(newLength42);
- var newArray42 = this43;
- var _g53 = 0;
- var _g143 = _this51.sizeMat4;
- while(_g53 < _g143) {
- var i44 = _g53++;
- newArray42[i44] = _this51.stackMat4[i44];
- _this51.stackMat4[i44] = null;
- }
- _this51.stackMat4 = newArray42;
- }
- _this51.stackMat4[_this51.sizeMat4++] = mat410;
- }
- if(quat10 != null) {
- var tx29 = 0;
- var ty29 = 0;
- var tz29 = 0;
- var tw10 = 1;
- quat10.x = tx29;
- quat10.y = ty29;
- quat10.z = tz29;
- quat10.w = tw10;
- if(_this51.sizeQuat == _this51.stackQuat.length) {
- var newLength43 = _this51.sizeQuat << 1;
- var this44 = new Array(newLength43);
- var newArray43 = this44;
- var _g54 = 0;
- var _g144 = _this51.sizeQuat;
- while(_g54 < _g144) {
- var i45 = _g54++;
- newArray43[i45] = _this51.stackQuat[i45];
- _this51.stackQuat[i45] = null;
- }
- _this51.stackQuat = newArray43;
- }
- _this51.stackQuat[_this51.sizeQuat++] = quat10;
- }
- var _this52 = this.p;
- var mat310 = null;
- var mat411 = null;
- var quat11 = null;
- if(ez != null) {
- ez.zero();
- if(_this52.sizeVec3 == _this52.stackVec3.length) {
- var newLength44 = _this52.sizeVec3 << 1;
- var this45 = new Array(newLength44);
- var newArray44 = this45;
- var _g55 = 0;
- var _g145 = _this52.sizeVec3;
- while(_g55 < _g145) {
- var i46 = _g55++;
- newArray44[i46] = _this52.stackVec3[i46];
- _this52.stackVec3[i46] = null;
- }
- _this52.stackVec3 = newArray44;
- }
- _this52.stackVec3[_this52.sizeVec3++] = ez;
- }
- if(mat310 != null) {
- var t0022 = 1;
- var t0122 = 0;
- var t0222 = 0;
- var t1022 = 0;
- var t1122 = 1;
- var t1222 = 0;
- var t2022 = 0;
- var t2122 = 0;
- var t2222 = 1;
- mat310.e00 = t0022;
- mat310.e01 = t0122;
- mat310.e02 = t0222;
- mat310.e10 = t1022;
- mat310.e11 = t1122;
- mat310.e12 = t1222;
- mat310.e20 = t2022;
- mat310.e21 = t2122;
- mat310.e22 = t2222;
- if(_this52.sizeMat3 == _this52.stackMat3.length) {
- var newLength45 = _this52.sizeMat3 << 1;
- var this46 = new Array(newLength45);
- var newArray45 = this46;
- var _g56 = 0;
- var _g146 = _this52.sizeMat3;
- while(_g56 < _g146) {
- var i47 = _g56++;
- newArray45[i47] = _this52.stackMat3[i47];
- _this52.stackMat3[i47] = null;
- }
- _this52.stackMat3 = newArray45;
- }
- _this52.stackMat3[_this52.sizeMat3++] = mat310;
- }
- if(mat411 != null) {
- var t0023 = 1;
- var t0123 = 0;
- var t0223 = 0;
- var t0311 = 0;
- var t1023 = 0;
- var t1123 = 1;
- var t1223 = 0;
- var t1311 = 0;
- var t2023 = 0;
- var t2123 = 0;
- var t2223 = 1;
- var t2311 = 0;
- var t3011 = 0;
- var t3111 = 0;
- var t3211 = 0;
- var t3311 = 1;
- mat411.e00 = t0023;
- mat411.e01 = t0123;
- mat411.e02 = t0223;
- mat411.e03 = t0311;
- mat411.e10 = t1023;
- mat411.e11 = t1123;
- mat411.e12 = t1223;
- mat411.e13 = t1311;
- mat411.e20 = t2023;
- mat411.e21 = t2123;
- mat411.e22 = t2223;
- mat411.e23 = t2311;
- mat411.e30 = t3011;
- mat411.e31 = t3111;
- mat411.e32 = t3211;
- mat411.e33 = t3311;
- if(_this52.sizeMat4 == _this52.stackMat4.length) {
- var newLength46 = _this52.sizeMat4 << 1;
- var this47 = new Array(newLength46);
- var newArray46 = this47;
- var _g57 = 0;
- var _g147 = _this52.sizeMat4;
- while(_g57 < _g147) {
- var i48 = _g57++;
- newArray46[i48] = _this52.stackMat4[i48];
- _this52.stackMat4[i48] = null;
- }
- _this52.stackMat4 = newArray46;
- }
- _this52.stackMat4[_this52.sizeMat4++] = mat411;
- }
- if(quat11 != null) {
- var tx30 = 0;
- var ty30 = 0;
- var tz30 = 0;
- var tw11 = 1;
- quat11.x = tx30;
- quat11.y = ty30;
- quat11.z = tz30;
- quat11.w = tw11;
- if(_this52.sizeQuat == _this52.stackQuat.length) {
- var newLength47 = _this52.sizeQuat << 1;
- var this48 = new Array(newLength47);
- var newArray47 = this48;
- var _g58 = 0;
- var _g148 = _this52.sizeQuat;
- while(_g58 < _g148) {
- var i49 = _g58++;
- newArray47[i49] = _this52.stackQuat[i49];
- _this52.stackQuat[i49] = null;
- }
- _this52.stackQuat = newArray47;
- }
- _this52.stackQuat[_this52.sizeQuat++] = quat11;
- }
- }
- cylinder(tf,radius,halfHeight,color) {
- var _this = this.p;
- var ex = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
- var _this1 = this.p;
- var ey = _this1.sizeVec3 == 0 ? new oimo.common.Vec3() : _this1.stackVec3[--_this1.sizeVec3];
- var _this2 = this.p;
- var ez = _this2.sizeVec3 == 0 ? new oimo.common.Vec3() : _this2.stackVec3[--_this2.sizeVec3];
- var _this3 = this.p;
- var o = _this3.sizeVec3 == 0 ? new oimo.common.Vec3() : _this3.stackVec3[--_this3.sizeVec3];
- var _this4 = this.p;
- var m = _this4.sizeMat3 == 0 ? new oimo.common.Mat3() : _this4.stackMat3[--_this4.sizeMat3];
- var v = o;
- v.x = tf._positionX;
- v.y = tf._positionY;
- v.z = tf._positionZ;
- var m1 = m;
- m1.e00 = tf._rotation00;
- m1.e01 = tf._rotation01;
- m1.e02 = tf._rotation02;
- m1.e10 = tf._rotation10;
- m1.e11 = tf._rotation11;
- m1.e12 = tf._rotation12;
- m1.e20 = tf._rotation20;
- m1.e21 = tf._rotation21;
- m1.e22 = tf._rotation22;
- ex.init(m.e00,m.e10,m.e20);
- ey.init(m.e01,m.e11,m.e21);
- ez.init(m.e02,m.e12,m.e22);
- var _this5 = this.p;
- var _this6 = _this5.sizeVec3 == 0 ? new oimo.common.Vec3() : _this5.stackVec3[--_this5.sizeVec3];
- _this6.x = o.x;
- _this6.y = o.y;
- _this6.z = o.z;
- var _this7 = _this6;
- var tx = _this7.x + ey.x * halfHeight;
- var ty = _this7.y + ey.y * halfHeight;
- var tz = _this7.z + ey.z * halfHeight;
- _this7.x = tx;
- _this7.y = ty;
- _this7.z = tz;
- var top = _this7;
- var _this8 = this.p;
- var _this9 = _this8.sizeVec3 == 0 ? new oimo.common.Vec3() : _this8.stackVec3[--_this8.sizeVec3];
- _this9.x = o.x;
- _this9.y = o.y;
- _this9.z = o.z;
- var _this10 = _this9;
- var s = -halfHeight;
- var tx1 = _this10.x + ey.x * s;
- var ty1 = _this10.y + ey.y * s;
- var tz1 = _this10.z + ey.z * s;
- _this10.x = tx1;
- _this10.y = ty1;
- _this10.z = tz1;
- var bottom = _this10;
- if(this.wireframe) {
- var _this11 = this.p;
- var _this12 = _this11.sizeVec3 == 0 ? new oimo.common.Vec3() : _this11.stackVec3[--_this11.sizeVec3];
- _this12.x = top.x;
- _this12.y = top.y;
- _this12.z = top.z;
- var _this13 = _this12;
- var s1 = -radius;
- var tx2 = _this13.x + ex.x * s1;
- var ty2 = _this13.y + ex.y * s1;
- var tz2 = _this13.z + ex.z * s1;
- _this13.x = tx2;
- _this13.y = ty2;
- _this13.z = tz2;
- var _this14 = _this13;
- var tx3 = _this14.x + ez.x * 0;
- var ty3 = _this14.y + ez.y * 0;
- var tz3 = _this14.z + ez.z * 0;
- _this14.x = tx3;
- _this14.y = ty3;
- _this14.z = tz3;
- var top1 = _this14;
- var _this15 = this.p;
- var _this16 = _this15.sizeVec3 == 0 ? new oimo.common.Vec3() : _this15.stackVec3[--_this15.sizeVec3];
- _this16.x = top.x;
- _this16.y = top.y;
- _this16.z = top.z;
- var _this17 = _this16;
- var tx4 = _this17.x + ex.x * radius;
- var ty4 = _this17.y + ex.y * radius;
- var tz4 = _this17.z + ex.z * radius;
- _this17.x = tx4;
- _this17.y = ty4;
- _this17.z = tz4;
- var _this18 = _this17;
- var tx5 = _this18.x + ez.x * 0;
- var ty5 = _this18.y + ez.y * 0;
- var tz5 = _this18.z + ez.z * 0;
- _this18.x = tx5;
- _this18.y = ty5;
- _this18.z = tz5;
- var top2 = _this18;
- var _this19 = this.p;
- var _this20 = _this19.sizeVec3 == 0 ? new oimo.common.Vec3() : _this19.stackVec3[--_this19.sizeVec3];
- _this20.x = top.x;
- _this20.y = top.y;
- _this20.z = top.z;
- var _this21 = _this20;
- var tx6 = _this21.x + ex.x * 0;
- var ty6 = _this21.y + ex.y * 0;
- var tz6 = _this21.z + ex.z * 0;
- _this21.x = tx6;
- _this21.y = ty6;
- _this21.z = tz6;
- var _this22 = _this21;
- var s2 = -radius;
- var tx7 = _this22.x + ez.x * s2;
- var ty7 = _this22.y + ez.y * s2;
- var tz7 = _this22.z + ez.z * s2;
- _this22.x = tx7;
- _this22.y = ty7;
- _this22.z = tz7;
- var top3 = _this22;
- var _this23 = this.p;
- var _this24 = _this23.sizeVec3 == 0 ? new oimo.common.Vec3() : _this23.stackVec3[--_this23.sizeVec3];
- _this24.x = top.x;
- _this24.y = top.y;
- _this24.z = top.z;
- var _this25 = _this24;
- var tx8 = _this25.x + ex.x * 0;
- var ty8 = _this25.y + ex.y * 0;
- var tz8 = _this25.z + ex.z * 0;
- _this25.x = tx8;
- _this25.y = ty8;
- _this25.z = tz8;
- var _this26 = _this25;
- var tx9 = _this26.x + ez.x * radius;
- var ty9 = _this26.y + ez.y * radius;
- var tz9 = _this26.z + ez.z * radius;
- _this26.x = tx9;
- _this26.y = ty9;
- _this26.z = tz9;
- var top4 = _this26;
- var _this27 = this.p;
- var _this28 = _this27.sizeVec3 == 0 ? new oimo.common.Vec3() : _this27.stackVec3[--_this27.sizeVec3];
- _this28.x = bottom.x;
- _this28.y = bottom.y;
- _this28.z = bottom.z;
- var _this29 = _this28;
- var s3 = -radius;
- var tx10 = _this29.x + ex.x * s3;
- var ty10 = _this29.y + ex.y * s3;
- var tz10 = _this29.z + ex.z * s3;
- _this29.x = tx10;
- _this29.y = ty10;
- _this29.z = tz10;
- var _this30 = _this29;
- var tx11 = _this30.x + ez.x * 0;
- var ty11 = _this30.y + ez.y * 0;
- var tz11 = _this30.z + ez.z * 0;
- _this30.x = tx11;
- _this30.y = ty11;
- _this30.z = tz11;
- var bottom1 = _this30;
- var _this31 = this.p;
- var _this32 = _this31.sizeVec3 == 0 ? new oimo.common.Vec3() : _this31.stackVec3[--_this31.sizeVec3];
- _this32.x = bottom.x;
- _this32.y = bottom.y;
- _this32.z = bottom.z;
- var _this33 = _this32;
- var tx12 = _this33.x + ex.x * radius;
- var ty12 = _this33.y + ex.y * radius;
- var tz12 = _this33.z + ex.z * radius;
- _this33.x = tx12;
- _this33.y = ty12;
- _this33.z = tz12;
- var _this34 = _this33;
- var tx13 = _this34.x + ez.x * 0;
- var ty13 = _this34.y + ez.y * 0;
- var tz13 = _this34.z + ez.z * 0;
- _this34.x = tx13;
- _this34.y = ty13;
- _this34.z = tz13;
- var bottom2 = _this34;
- var _this35 = this.p;
- var _this36 = _this35.sizeVec3 == 0 ? new oimo.common.Vec3() : _this35.stackVec3[--_this35.sizeVec3];
- _this36.x = bottom.x;
- _this36.y = bottom.y;
- _this36.z = bottom.z;
- var _this37 = _this36;
- var tx14 = _this37.x + ex.x * 0;
- var ty14 = _this37.y + ex.y * 0;
- var tz14 = _this37.z + ex.z * 0;
- _this37.x = tx14;
- _this37.y = ty14;
- _this37.z = tz14;
- var _this38 = _this37;
- var s4 = -radius;
- var tx15 = _this38.x + ez.x * s4;
- var ty15 = _this38.y + ez.y * s4;
- var tz15 = _this38.z + ez.z * s4;
- _this38.x = tx15;
- _this38.y = ty15;
- _this38.z = tz15;
- var bottom3 = _this38;
- var _this39 = this.p;
- var _this40 = _this39.sizeVec3 == 0 ? new oimo.common.Vec3() : _this39.stackVec3[--_this39.sizeVec3];
- _this40.x = bottom.x;
- _this40.y = bottom.y;
- _this40.z = bottom.z;
- var _this41 = _this40;
- var tx16 = _this41.x + ex.x * 0;
- var ty16 = _this41.y + ex.y * 0;
- var tz16 = _this41.z + ex.z * 0;
- _this41.x = tx16;
- _this41.y = ty16;
- _this41.z = tz16;
- var _this42 = _this41;
- var tx17 = _this42.x + ez.x * radius;
- var ty17 = _this42.y + ez.y * radius;
- var tz17 = _this42.z + ez.z * radius;
- _this42.x = tx17;
- _this42.y = ty17;
- _this42.z = tz17;
- var bottom4 = _this42;
- this.ellipse(top,ex,ez,radius,radius,color);
- this.ellipse(bottom,ex,ez,radius,radius,color);
- this.line(top1,bottom1,color);
- this.line(top2,bottom2,color);
- this.line(top3,bottom3,color);
- this.line(top4,bottom4,color);
- var _this43 = this.p;
- var mat3 = null;
- var mat4 = null;
- var quat = null;
- if(top1 != null) {
- top1.zero();
- if(_this43.sizeVec3 == _this43.stackVec3.length) {
- var newLength = _this43.sizeVec3 << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = _this43.sizeVec3;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = _this43.stackVec3[i];
- _this43.stackVec3[i] = null;
- }
- _this43.stackVec3 = newArray;
- }
- _this43.stackVec3[_this43.sizeVec3++] = top1;
- }
- if(mat3 != null) {
- var t00 = 1;
- var t01 = 0;
- var t02 = 0;
- var t10 = 0;
- var t11 = 1;
- var t12 = 0;
- var t20 = 0;
- var t21 = 0;
- var t22 = 1;
- mat3.e00 = t00;
- mat3.e01 = t01;
- mat3.e02 = t02;
- mat3.e10 = t10;
- mat3.e11 = t11;
- mat3.e12 = t12;
- mat3.e20 = t20;
- mat3.e21 = t21;
- mat3.e22 = t22;
- if(_this43.sizeMat3 == _this43.stackMat3.length) {
- var newLength1 = _this43.sizeMat3 << 1;
- var this2 = new Array(newLength1);
- var newArray1 = this2;
- var _g2 = 0;
- var _g11 = _this43.sizeMat3;
- while(_g2 < _g11) {
- var i1 = _g2++;
- newArray1[i1] = _this43.stackMat3[i1];
- _this43.stackMat3[i1] = null;
- }
- _this43.stackMat3 = newArray1;
- }
- _this43.stackMat3[_this43.sizeMat3++] = mat3;
- }
- if(mat4 != null) {
- var t001 = 1;
- var t011 = 0;
- var t021 = 0;
- var t03 = 0;
- var t101 = 0;
- var t111 = 1;
- var t121 = 0;
- var t13 = 0;
- var t201 = 0;
- var t211 = 0;
- var t221 = 1;
- var t23 = 0;
- var t30 = 0;
- var t31 = 0;
- var t32 = 0;
- var t33 = 1;
- mat4.e00 = t001;
- mat4.e01 = t011;
- mat4.e02 = t021;
- mat4.e03 = t03;
- mat4.e10 = t101;
- mat4.e11 = t111;
- mat4.e12 = t121;
- mat4.e13 = t13;
- mat4.e20 = t201;
- mat4.e21 = t211;
- mat4.e22 = t221;
- mat4.e23 = t23;
- mat4.e30 = t30;
- mat4.e31 = t31;
- mat4.e32 = t32;
- mat4.e33 = t33;
- if(_this43.sizeMat4 == _this43.stackMat4.length) {
- var newLength2 = _this43.sizeMat4 << 1;
- var this3 = new Array(newLength2);
- var newArray2 = this3;
- var _g3 = 0;
- var _g12 = _this43.sizeMat4;
- while(_g3 < _g12) {
- var i2 = _g3++;
- newArray2[i2] = _this43.stackMat4[i2];
- _this43.stackMat4[i2] = null;
- }
- _this43.stackMat4 = newArray2;
- }
- _this43.stackMat4[_this43.sizeMat4++] = mat4;
- }
- if(quat != null) {
- var tx18 = 0;
- var ty18 = 0;
- var tz18 = 0;
- var tw = 1;
- quat.x = tx18;
- quat.y = ty18;
- quat.z = tz18;
- quat.w = tw;
- if(_this43.sizeQuat == _this43.stackQuat.length) {
- var newLength3 = _this43.sizeQuat << 1;
- var this4 = new Array(newLength3);
- var newArray3 = this4;
- var _g4 = 0;
- var _g13 = _this43.sizeQuat;
- while(_g4 < _g13) {
- var i3 = _g4++;
- newArray3[i3] = _this43.stackQuat[i3];
- _this43.stackQuat[i3] = null;
- }
- _this43.stackQuat = newArray3;
- }
- _this43.stackQuat[_this43.sizeQuat++] = quat;
- }
- var _this44 = this.p;
- var mat31 = null;
- var mat41 = null;
- var quat1 = null;
- if(top2 != null) {
- top2.zero();
- if(_this44.sizeVec3 == _this44.stackVec3.length) {
- var newLength4 = _this44.sizeVec3 << 1;
- var this5 = new Array(newLength4);
- var newArray4 = this5;
- var _g5 = 0;
- var _g14 = _this44.sizeVec3;
- while(_g5 < _g14) {
- var i4 = _g5++;
- newArray4[i4] = _this44.stackVec3[i4];
- _this44.stackVec3[i4] = null;
- }
- _this44.stackVec3 = newArray4;
- }
- _this44.stackVec3[_this44.sizeVec3++] = top2;
- }
- if(mat31 != null) {
- var t002 = 1;
- var t012 = 0;
- var t022 = 0;
- var t102 = 0;
- var t112 = 1;
- var t122 = 0;
- var t202 = 0;
- var t212 = 0;
- var t222 = 1;
- mat31.e00 = t002;
- mat31.e01 = t012;
- mat31.e02 = t022;
- mat31.e10 = t102;
- mat31.e11 = t112;
- mat31.e12 = t122;
- mat31.e20 = t202;
- mat31.e21 = t212;
- mat31.e22 = t222;
- if(_this44.sizeMat3 == _this44.stackMat3.length) {
- var newLength5 = _this44.sizeMat3 << 1;
- var this6 = new Array(newLength5);
- var newArray5 = this6;
- var _g6 = 0;
- var _g15 = _this44.sizeMat3;
- while(_g6 < _g15) {
- var i5 = _g6++;
- newArray5[i5] = _this44.stackMat3[i5];
- _this44.stackMat3[i5] = null;
- }
- _this44.stackMat3 = newArray5;
- }
- _this44.stackMat3[_this44.sizeMat3++] = mat31;
- }
- if(mat41 != null) {
- var t003 = 1;
- var t013 = 0;
- var t023 = 0;
- var t031 = 0;
- var t103 = 0;
- var t113 = 1;
- var t123 = 0;
- var t131 = 0;
- var t203 = 0;
- var t213 = 0;
- var t223 = 1;
- var t231 = 0;
- var t301 = 0;
- var t311 = 0;
- var t321 = 0;
- var t331 = 1;
- mat41.e00 = t003;
- mat41.e01 = t013;
- mat41.e02 = t023;
- mat41.e03 = t031;
- mat41.e10 = t103;
- mat41.e11 = t113;
- mat41.e12 = t123;
- mat41.e13 = t131;
- mat41.e20 = t203;
- mat41.e21 = t213;
- mat41.e22 = t223;
- mat41.e23 = t231;
- mat41.e30 = t301;
- mat41.e31 = t311;
- mat41.e32 = t321;
- mat41.e33 = t331;
- if(_this44.sizeMat4 == _this44.stackMat4.length) {
- var newLength6 = _this44.sizeMat4 << 1;
- var this7 = new Array(newLength6);
- var newArray6 = this7;
- var _g7 = 0;
- var _g16 = _this44.sizeMat4;
- while(_g7 < _g16) {
- var i6 = _g7++;
- newArray6[i6] = _this44.stackMat4[i6];
- _this44.stackMat4[i6] = null;
- }
- _this44.stackMat4 = newArray6;
- }
- _this44.stackMat4[_this44.sizeMat4++] = mat41;
- }
- if(quat1 != null) {
- var tx19 = 0;
- var ty19 = 0;
- var tz19 = 0;
- var tw1 = 1;
- quat1.x = tx19;
- quat1.y = ty19;
- quat1.z = tz19;
- quat1.w = tw1;
- if(_this44.sizeQuat == _this44.stackQuat.length) {
- var newLength7 = _this44.sizeQuat << 1;
- var this8 = new Array(newLength7);
- var newArray7 = this8;
- var _g8 = 0;
- var _g17 = _this44.sizeQuat;
- while(_g8 < _g17) {
- var i7 = _g8++;
- newArray7[i7] = _this44.stackQuat[i7];
- _this44.stackQuat[i7] = null;
- }
- _this44.stackQuat = newArray7;
- }
- _this44.stackQuat[_this44.sizeQuat++] = quat1;
- }
- var _this45 = this.p;
- var mat32 = null;
- var mat42 = null;
- var quat2 = null;
- if(top3 != null) {
- top3.zero();
- if(_this45.sizeVec3 == _this45.stackVec3.length) {
- var newLength8 = _this45.sizeVec3 << 1;
- var this9 = new Array(newLength8);
- var newArray8 = this9;
- var _g9 = 0;
- var _g18 = _this45.sizeVec3;
- while(_g9 < _g18) {
- var i8 = _g9++;
- newArray8[i8] = _this45.stackVec3[i8];
- _this45.stackVec3[i8] = null;
- }
- _this45.stackVec3 = newArray8;
- }
- _this45.stackVec3[_this45.sizeVec3++] = top3;
- }
- if(mat32 != null) {
- var t004 = 1;
- var t014 = 0;
- var t024 = 0;
- var t104 = 0;
- var t114 = 1;
- var t124 = 0;
- var t204 = 0;
- var t214 = 0;
- var t224 = 1;
- mat32.e00 = t004;
- mat32.e01 = t014;
- mat32.e02 = t024;
- mat32.e10 = t104;
- mat32.e11 = t114;
- mat32.e12 = t124;
- mat32.e20 = t204;
- mat32.e21 = t214;
- mat32.e22 = t224;
- if(_this45.sizeMat3 == _this45.stackMat3.length) {
- var newLength9 = _this45.sizeMat3 << 1;
- var this10 = new Array(newLength9);
- var newArray9 = this10;
- var _g10 = 0;
- var _g19 = _this45.sizeMat3;
- while(_g10 < _g19) {
- var i9 = _g10++;
- newArray9[i9] = _this45.stackMat3[i9];
- _this45.stackMat3[i9] = null;
- }
- _this45.stackMat3 = newArray9;
- }
- _this45.stackMat3[_this45.sizeMat3++] = mat32;
- }
- if(mat42 != null) {
- var t005 = 1;
- var t015 = 0;
- var t025 = 0;
- var t032 = 0;
- var t105 = 0;
- var t115 = 1;
- var t125 = 0;
- var t132 = 0;
- var t205 = 0;
- var t215 = 0;
- var t225 = 1;
- var t232 = 0;
- var t302 = 0;
- var t312 = 0;
- var t322 = 0;
- var t332 = 1;
- mat42.e00 = t005;
- mat42.e01 = t015;
- mat42.e02 = t025;
- mat42.e03 = t032;
- mat42.e10 = t105;
- mat42.e11 = t115;
- mat42.e12 = t125;
- mat42.e13 = t132;
- mat42.e20 = t205;
- mat42.e21 = t215;
- mat42.e22 = t225;
- mat42.e23 = t232;
- mat42.e30 = t302;
- mat42.e31 = t312;
- mat42.e32 = t322;
- mat42.e33 = t332;
- if(_this45.sizeMat4 == _this45.stackMat4.length) {
- var newLength10 = _this45.sizeMat4 << 1;
- var this11 = new Array(newLength10);
- var newArray10 = this11;
- var _g20 = 0;
- var _g110 = _this45.sizeMat4;
- while(_g20 < _g110) {
- var i10 = _g20++;
- newArray10[i10] = _this45.stackMat4[i10];
- _this45.stackMat4[i10] = null;
- }
- _this45.stackMat4 = newArray10;
- }
- _this45.stackMat4[_this45.sizeMat4++] = mat42;
- }
- if(quat2 != null) {
- var tx20 = 0;
- var ty20 = 0;
- var tz20 = 0;
- var tw2 = 1;
- quat2.x = tx20;
- quat2.y = ty20;
- quat2.z = tz20;
- quat2.w = tw2;
- if(_this45.sizeQuat == _this45.stackQuat.length) {
- var newLength11 = _this45.sizeQuat << 1;
- var this12 = new Array(newLength11);
- var newArray11 = this12;
- var _g21 = 0;
- var _g111 = _this45.sizeQuat;
- while(_g21 < _g111) {
- var i11 = _g21++;
- newArray11[i11] = _this45.stackQuat[i11];
- _this45.stackQuat[i11] = null;
- }
- _this45.stackQuat = newArray11;
- }
- _this45.stackQuat[_this45.sizeQuat++] = quat2;
- }
- var _this46 = this.p;
- var mat33 = null;
- var mat43 = null;
- var quat3 = null;
- if(top4 != null) {
- top4.zero();
- if(_this46.sizeVec3 == _this46.stackVec3.length) {
- var newLength12 = _this46.sizeVec3 << 1;
- var this13 = new Array(newLength12);
- var newArray12 = this13;
- var _g22 = 0;
- var _g112 = _this46.sizeVec3;
- while(_g22 < _g112) {
- var i12 = _g22++;
- newArray12[i12] = _this46.stackVec3[i12];
- _this46.stackVec3[i12] = null;
- }
- _this46.stackVec3 = newArray12;
- }
- _this46.stackVec3[_this46.sizeVec3++] = top4;
- }
- if(mat33 != null) {
- var t006 = 1;
- var t016 = 0;
- var t026 = 0;
- var t106 = 0;
- var t116 = 1;
- var t126 = 0;
- var t206 = 0;
- var t216 = 0;
- var t226 = 1;
- mat33.e00 = t006;
- mat33.e01 = t016;
- mat33.e02 = t026;
- mat33.e10 = t106;
- mat33.e11 = t116;
- mat33.e12 = t126;
- mat33.e20 = t206;
- mat33.e21 = t216;
- mat33.e22 = t226;
- if(_this46.sizeMat3 == _this46.stackMat3.length) {
- var newLength13 = _this46.sizeMat3 << 1;
- var this14 = new Array(newLength13);
- var newArray13 = this14;
- var _g23 = 0;
- var _g113 = _this46.sizeMat3;
- while(_g23 < _g113) {
- var i13 = _g23++;
- newArray13[i13] = _this46.stackMat3[i13];
- _this46.stackMat3[i13] = null;
- }
- _this46.stackMat3 = newArray13;
- }
- _this46.stackMat3[_this46.sizeMat3++] = mat33;
- }
- if(mat43 != null) {
- var t007 = 1;
- var t017 = 0;
- var t027 = 0;
- var t033 = 0;
- var t107 = 0;
- var t117 = 1;
- var t127 = 0;
- var t133 = 0;
- var t207 = 0;
- var t217 = 0;
- var t227 = 1;
- var t233 = 0;
- var t303 = 0;
- var t313 = 0;
- var t323 = 0;
- var t333 = 1;
- mat43.e00 = t007;
- mat43.e01 = t017;
- mat43.e02 = t027;
- mat43.e03 = t033;
- mat43.e10 = t107;
- mat43.e11 = t117;
- mat43.e12 = t127;
- mat43.e13 = t133;
- mat43.e20 = t207;
- mat43.e21 = t217;
- mat43.e22 = t227;
- mat43.e23 = t233;
- mat43.e30 = t303;
- mat43.e31 = t313;
- mat43.e32 = t323;
- mat43.e33 = t333;
- if(_this46.sizeMat4 == _this46.stackMat4.length) {
- var newLength14 = _this46.sizeMat4 << 1;
- var this15 = new Array(newLength14);
- var newArray14 = this15;
- var _g24 = 0;
- var _g114 = _this46.sizeMat4;
- while(_g24 < _g114) {
- var i14 = _g24++;
- newArray14[i14] = _this46.stackMat4[i14];
- _this46.stackMat4[i14] = null;
- }
- _this46.stackMat4 = newArray14;
- }
- _this46.stackMat4[_this46.sizeMat4++] = mat43;
- }
- if(quat3 != null) {
- var tx21 = 0;
- var ty21 = 0;
- var tz21 = 0;
- var tw3 = 1;
- quat3.x = tx21;
- quat3.y = ty21;
- quat3.z = tz21;
- quat3.w = tw3;
- if(_this46.sizeQuat == _this46.stackQuat.length) {
- var newLength15 = _this46.sizeQuat << 1;
- var this16 = new Array(newLength15);
- var newArray15 = this16;
- var _g25 = 0;
- var _g115 = _this46.sizeQuat;
- while(_g25 < _g115) {
- var i15 = _g25++;
- newArray15[i15] = _this46.stackQuat[i15];
- _this46.stackQuat[i15] = null;
- }
- _this46.stackQuat = newArray15;
- }
- _this46.stackQuat[_this46.sizeQuat++] = quat3;
- }
- var _this47 = this.p;
- var mat34 = null;
- var mat44 = null;
- var quat4 = null;
- if(bottom1 != null) {
- bottom1.zero();
- if(_this47.sizeVec3 == _this47.stackVec3.length) {
- var newLength16 = _this47.sizeVec3 << 1;
- var this17 = new Array(newLength16);
- var newArray16 = this17;
- var _g26 = 0;
- var _g116 = _this47.sizeVec3;
- while(_g26 < _g116) {
- var i16 = _g26++;
- newArray16[i16] = _this47.stackVec3[i16];
- _this47.stackVec3[i16] = null;
- }
- _this47.stackVec3 = newArray16;
- }
- _this47.stackVec3[_this47.sizeVec3++] = bottom1;
- }
- if(mat34 != null) {
- var t008 = 1;
- var t018 = 0;
- var t028 = 0;
- var t108 = 0;
- var t118 = 1;
- var t128 = 0;
- var t208 = 0;
- var t218 = 0;
- var t228 = 1;
- mat34.e00 = t008;
- mat34.e01 = t018;
- mat34.e02 = t028;
- mat34.e10 = t108;
- mat34.e11 = t118;
- mat34.e12 = t128;
- mat34.e20 = t208;
- mat34.e21 = t218;
- mat34.e22 = t228;
- if(_this47.sizeMat3 == _this47.stackMat3.length) {
- var newLength17 = _this47.sizeMat3 << 1;
- var this18 = new Array(newLength17);
- var newArray17 = this18;
- var _g27 = 0;
- var _g117 = _this47.sizeMat3;
- while(_g27 < _g117) {
- var i17 = _g27++;
- newArray17[i17] = _this47.stackMat3[i17];
- _this47.stackMat3[i17] = null;
- }
- _this47.stackMat3 = newArray17;
- }
- _this47.stackMat3[_this47.sizeMat3++] = mat34;
- }
- if(mat44 != null) {
- var t009 = 1;
- var t019 = 0;
- var t029 = 0;
- var t034 = 0;
- var t109 = 0;
- var t119 = 1;
- var t129 = 0;
- var t134 = 0;
- var t209 = 0;
- var t219 = 0;
- var t229 = 1;
- var t234 = 0;
- var t304 = 0;
- var t314 = 0;
- var t324 = 0;
- var t334 = 1;
- mat44.e00 = t009;
- mat44.e01 = t019;
- mat44.e02 = t029;
- mat44.e03 = t034;
- mat44.e10 = t109;
- mat44.e11 = t119;
- mat44.e12 = t129;
- mat44.e13 = t134;
- mat44.e20 = t209;
- mat44.e21 = t219;
- mat44.e22 = t229;
- mat44.e23 = t234;
- mat44.e30 = t304;
- mat44.e31 = t314;
- mat44.e32 = t324;
- mat44.e33 = t334;
- if(_this47.sizeMat4 == _this47.stackMat4.length) {
- var newLength18 = _this47.sizeMat4 << 1;
- var this19 = new Array(newLength18);
- var newArray18 = this19;
- var _g28 = 0;
- var _g118 = _this47.sizeMat4;
- while(_g28 < _g118) {
- var i18 = _g28++;
- newArray18[i18] = _this47.stackMat4[i18];
- _this47.stackMat4[i18] = null;
- }
- _this47.stackMat4 = newArray18;
- }
- _this47.stackMat4[_this47.sizeMat4++] = mat44;
- }
- if(quat4 != null) {
- var tx22 = 0;
- var ty22 = 0;
- var tz22 = 0;
- var tw4 = 1;
- quat4.x = tx22;
- quat4.y = ty22;
- quat4.z = tz22;
- quat4.w = tw4;
- if(_this47.sizeQuat == _this47.stackQuat.length) {
- var newLength19 = _this47.sizeQuat << 1;
- var this20 = new Array(newLength19);
- var newArray19 = this20;
- var _g29 = 0;
- var _g119 = _this47.sizeQuat;
- while(_g29 < _g119) {
- var i19 = _g29++;
- newArray19[i19] = _this47.stackQuat[i19];
- _this47.stackQuat[i19] = null;
- }
- _this47.stackQuat = newArray19;
- }
- _this47.stackQuat[_this47.sizeQuat++] = quat4;
- }
- var _this48 = this.p;
- var mat35 = null;
- var mat45 = null;
- var quat5 = null;
- if(bottom2 != null) {
- bottom2.zero();
- if(_this48.sizeVec3 == _this48.stackVec3.length) {
- var newLength20 = _this48.sizeVec3 << 1;
- var this21 = new Array(newLength20);
- var newArray20 = this21;
- var _g30 = 0;
- var _g120 = _this48.sizeVec3;
- while(_g30 < _g120) {
- var i20 = _g30++;
- newArray20[i20] = _this48.stackVec3[i20];
- _this48.stackVec3[i20] = null;
- }
- _this48.stackVec3 = newArray20;
- }
- _this48.stackVec3[_this48.sizeVec3++] = bottom2;
- }
- if(mat35 != null) {
- var t0010 = 1;
- var t0110 = 0;
- var t0210 = 0;
- var t1010 = 0;
- var t1110 = 1;
- var t1210 = 0;
- var t2010 = 0;
- var t2110 = 0;
- var t2210 = 1;
- mat35.e00 = t0010;
- mat35.e01 = t0110;
- mat35.e02 = t0210;
- mat35.e10 = t1010;
- mat35.e11 = t1110;
- mat35.e12 = t1210;
- mat35.e20 = t2010;
- mat35.e21 = t2110;
- mat35.e22 = t2210;
- if(_this48.sizeMat3 == _this48.stackMat3.length) {
- var newLength21 = _this48.sizeMat3 << 1;
- var this22 = new Array(newLength21);
- var newArray21 = this22;
- var _g31 = 0;
- var _g121 = _this48.sizeMat3;
- while(_g31 < _g121) {
- var i21 = _g31++;
- newArray21[i21] = _this48.stackMat3[i21];
- _this48.stackMat3[i21] = null;
- }
- _this48.stackMat3 = newArray21;
- }
- _this48.stackMat3[_this48.sizeMat3++] = mat35;
- }
- if(mat45 != null) {
- var t0011 = 1;
- var t0111 = 0;
- var t0211 = 0;
- var t035 = 0;
- var t1011 = 0;
- var t1111 = 1;
- var t1211 = 0;
- var t135 = 0;
- var t2011 = 0;
- var t2111 = 0;
- var t2211 = 1;
- var t235 = 0;
- var t305 = 0;
- var t315 = 0;
- var t325 = 0;
- var t335 = 1;
- mat45.e00 = t0011;
- mat45.e01 = t0111;
- mat45.e02 = t0211;
- mat45.e03 = t035;
- mat45.e10 = t1011;
- mat45.e11 = t1111;
- mat45.e12 = t1211;
- mat45.e13 = t135;
- mat45.e20 = t2011;
- mat45.e21 = t2111;
- mat45.e22 = t2211;
- mat45.e23 = t235;
- mat45.e30 = t305;
- mat45.e31 = t315;
- mat45.e32 = t325;
- mat45.e33 = t335;
- if(_this48.sizeMat4 == _this48.stackMat4.length) {
- var newLength22 = _this48.sizeMat4 << 1;
- var this23 = new Array(newLength22);
- var newArray22 = this23;
- var _g32 = 0;
- var _g122 = _this48.sizeMat4;
- while(_g32 < _g122) {
- var i22 = _g32++;
- newArray22[i22] = _this48.stackMat4[i22];
- _this48.stackMat4[i22] = null;
- }
- _this48.stackMat4 = newArray22;
- }
- _this48.stackMat4[_this48.sizeMat4++] = mat45;
- }
- if(quat5 != null) {
- var tx23 = 0;
- var ty23 = 0;
- var tz23 = 0;
- var tw5 = 1;
- quat5.x = tx23;
- quat5.y = ty23;
- quat5.z = tz23;
- quat5.w = tw5;
- if(_this48.sizeQuat == _this48.stackQuat.length) {
- var newLength23 = _this48.sizeQuat << 1;
- var this24 = new Array(newLength23);
- var newArray23 = this24;
- var _g33 = 0;
- var _g123 = _this48.sizeQuat;
- while(_g33 < _g123) {
- var i23 = _g33++;
- newArray23[i23] = _this48.stackQuat[i23];
- _this48.stackQuat[i23] = null;
- }
- _this48.stackQuat = newArray23;
- }
- _this48.stackQuat[_this48.sizeQuat++] = quat5;
- }
- var _this49 = this.p;
- var mat36 = null;
- var mat46 = null;
- var quat6 = null;
- if(bottom3 != null) {
- bottom3.zero();
- if(_this49.sizeVec3 == _this49.stackVec3.length) {
- var newLength24 = _this49.sizeVec3 << 1;
- var this25 = new Array(newLength24);
- var newArray24 = this25;
- var _g34 = 0;
- var _g124 = _this49.sizeVec3;
- while(_g34 < _g124) {
- var i24 = _g34++;
- newArray24[i24] = _this49.stackVec3[i24];
- _this49.stackVec3[i24] = null;
- }
- _this49.stackVec3 = newArray24;
- }
- _this49.stackVec3[_this49.sizeVec3++] = bottom3;
- }
- if(mat36 != null) {
- var t0012 = 1;
- var t0112 = 0;
- var t0212 = 0;
- var t1012 = 0;
- var t1112 = 1;
- var t1212 = 0;
- var t2012 = 0;
- var t2112 = 0;
- var t2212 = 1;
- mat36.e00 = t0012;
- mat36.e01 = t0112;
- mat36.e02 = t0212;
- mat36.e10 = t1012;
- mat36.e11 = t1112;
- mat36.e12 = t1212;
- mat36.e20 = t2012;
- mat36.e21 = t2112;
- mat36.e22 = t2212;
- if(_this49.sizeMat3 == _this49.stackMat3.length) {
- var newLength25 = _this49.sizeMat3 << 1;
- var this26 = new Array(newLength25);
- var newArray25 = this26;
- var _g35 = 0;
- var _g125 = _this49.sizeMat3;
- while(_g35 < _g125) {
- var i25 = _g35++;
- newArray25[i25] = _this49.stackMat3[i25];
- _this49.stackMat3[i25] = null;
- }
- _this49.stackMat3 = newArray25;
- }
- _this49.stackMat3[_this49.sizeMat3++] = mat36;
- }
- if(mat46 != null) {
- var t0013 = 1;
- var t0113 = 0;
- var t0213 = 0;
- var t036 = 0;
- var t1013 = 0;
- var t1113 = 1;
- var t1213 = 0;
- var t136 = 0;
- var t2013 = 0;
- var t2113 = 0;
- var t2213 = 1;
- var t236 = 0;
- var t306 = 0;
- var t316 = 0;
- var t326 = 0;
- var t336 = 1;
- mat46.e00 = t0013;
- mat46.e01 = t0113;
- mat46.e02 = t0213;
- mat46.e03 = t036;
- mat46.e10 = t1013;
- mat46.e11 = t1113;
- mat46.e12 = t1213;
- mat46.e13 = t136;
- mat46.e20 = t2013;
- mat46.e21 = t2113;
- mat46.e22 = t2213;
- mat46.e23 = t236;
- mat46.e30 = t306;
- mat46.e31 = t316;
- mat46.e32 = t326;
- mat46.e33 = t336;
- if(_this49.sizeMat4 == _this49.stackMat4.length) {
- var newLength26 = _this49.sizeMat4 << 1;
- var this27 = new Array(newLength26);
- var newArray26 = this27;
- var _g36 = 0;
- var _g126 = _this49.sizeMat4;
- while(_g36 < _g126) {
- var i26 = _g36++;
- newArray26[i26] = _this49.stackMat4[i26];
- _this49.stackMat4[i26] = null;
- }
- _this49.stackMat4 = newArray26;
- }
- _this49.stackMat4[_this49.sizeMat4++] = mat46;
- }
- if(quat6 != null) {
- var tx24 = 0;
- var ty24 = 0;
- var tz24 = 0;
- var tw6 = 1;
- quat6.x = tx24;
- quat6.y = ty24;
- quat6.z = tz24;
- quat6.w = tw6;
- if(_this49.sizeQuat == _this49.stackQuat.length) {
- var newLength27 = _this49.sizeQuat << 1;
- var this28 = new Array(newLength27);
- var newArray27 = this28;
- var _g37 = 0;
- var _g127 = _this49.sizeQuat;
- while(_g37 < _g127) {
- var i27 = _g37++;
- newArray27[i27] = _this49.stackQuat[i27];
- _this49.stackQuat[i27] = null;
- }
- _this49.stackQuat = newArray27;
- }
- _this49.stackQuat[_this49.sizeQuat++] = quat6;
- }
- var _this50 = this.p;
- var mat37 = null;
- var mat47 = null;
- var quat7 = null;
- if(bottom4 != null) {
- bottom4.zero();
- if(_this50.sizeVec3 == _this50.stackVec3.length) {
- var newLength28 = _this50.sizeVec3 << 1;
- var this29 = new Array(newLength28);
- var newArray28 = this29;
- var _g38 = 0;
- var _g128 = _this50.sizeVec3;
- while(_g38 < _g128) {
- var i28 = _g38++;
- newArray28[i28] = _this50.stackVec3[i28];
- _this50.stackVec3[i28] = null;
- }
- _this50.stackVec3 = newArray28;
- }
- _this50.stackVec3[_this50.sizeVec3++] = bottom4;
- }
- if(mat37 != null) {
- var t0014 = 1;
- var t0114 = 0;
- var t0214 = 0;
- var t1014 = 0;
- var t1114 = 1;
- var t1214 = 0;
- var t2014 = 0;
- var t2114 = 0;
- var t2214 = 1;
- mat37.e00 = t0014;
- mat37.e01 = t0114;
- mat37.e02 = t0214;
- mat37.e10 = t1014;
- mat37.e11 = t1114;
- mat37.e12 = t1214;
- mat37.e20 = t2014;
- mat37.e21 = t2114;
- mat37.e22 = t2214;
- if(_this50.sizeMat3 == _this50.stackMat3.length) {
- var newLength29 = _this50.sizeMat3 << 1;
- var this30 = new Array(newLength29);
- var newArray29 = this30;
- var _g39 = 0;
- var _g129 = _this50.sizeMat3;
- while(_g39 < _g129) {
- var i29 = _g39++;
- newArray29[i29] = _this50.stackMat3[i29];
- _this50.stackMat3[i29] = null;
- }
- _this50.stackMat3 = newArray29;
- }
- _this50.stackMat3[_this50.sizeMat3++] = mat37;
- }
- if(mat47 != null) {
- var t0015 = 1;
- var t0115 = 0;
- var t0215 = 0;
- var t037 = 0;
- var t1015 = 0;
- var t1115 = 1;
- var t1215 = 0;
- var t137 = 0;
- var t2015 = 0;
- var t2115 = 0;
- var t2215 = 1;
- var t237 = 0;
- var t307 = 0;
- var t317 = 0;
- var t327 = 0;
- var t337 = 1;
- mat47.e00 = t0015;
- mat47.e01 = t0115;
- mat47.e02 = t0215;
- mat47.e03 = t037;
- mat47.e10 = t1015;
- mat47.e11 = t1115;
- mat47.e12 = t1215;
- mat47.e13 = t137;
- mat47.e20 = t2015;
- mat47.e21 = t2115;
- mat47.e22 = t2215;
- mat47.e23 = t237;
- mat47.e30 = t307;
- mat47.e31 = t317;
- mat47.e32 = t327;
- mat47.e33 = t337;
- if(_this50.sizeMat4 == _this50.stackMat4.length) {
- var newLength30 = _this50.sizeMat4 << 1;
- var this31 = new Array(newLength30);
- var newArray30 = this31;
- var _g40 = 0;
- var _g130 = _this50.sizeMat4;
- while(_g40 < _g130) {
- var i30 = _g40++;
- newArray30[i30] = _this50.stackMat4[i30];
- _this50.stackMat4[i30] = null;
- }
- _this50.stackMat4 = newArray30;
- }
- _this50.stackMat4[_this50.sizeMat4++] = mat47;
- }
- if(quat7 != null) {
- var tx25 = 0;
- var ty25 = 0;
- var tz25 = 0;
- var tw7 = 1;
- quat7.x = tx25;
- quat7.y = ty25;
- quat7.z = tz25;
- quat7.w = tw7;
- if(_this50.sizeQuat == _this50.stackQuat.length) {
- var newLength31 = _this50.sizeQuat << 1;
- var this32 = new Array(newLength31);
- var newArray31 = this32;
- var _g41 = 0;
- var _g131 = _this50.sizeQuat;
- while(_g41 < _g131) {
- var i31 = _g41++;
- newArray31[i31] = _this50.stackQuat[i31];
- _this50.stackQuat[i31] = null;
- }
- _this50.stackQuat = newArray31;
- }
- _this50.stackQuat[_this50.sizeQuat++] = quat7;
- }
- } else {
- var _g42 = 0;
- while(_g42 < 8) {
- var i32 = _g42++;
- var _this51 = this.tmpCircleNorms[i32];
- var v1 = this.circleCoords[i32];
- _this51.x = v1.x;
- _this51.y = v1.y;
- _this51.z = v1.z;
- var _this52 = _this51;
- var tx26 = _this52.x * m.e00 + _this52.y * m.e01 + _this52.z * m.e02;
- var ty26 = _this52.x * m.e10 + _this52.y * m.e11 + _this52.z * m.e12;
- var tz26 = _this52.x * m.e20 + _this52.y * m.e21 + _this52.z * m.e22;
- _this52.x = tx26;
- _this52.y = ty26;
- _this52.z = tz26;
- var _this53 = this.tmpCircleVerts1[i32];
- var v2 = this.tmpCircleNorms[i32];
- _this53.x = v2.x;
- _this53.y = v2.y;
- _this53.z = v2.z;
- var _this54 = _this53;
- var tx27 = _this54.x * radius;
- var ty27 = _this54.y * radius;
- var tz27 = _this54.z * radius;
- _this54.x = tx27;
- _this54.y = ty27;
- _this54.z = tz27;
- var _this55 = _this54;
- var tx28 = _this55.x + o.x;
- var ty28 = _this55.y + o.y;
- var tz28 = _this55.z + o.z;
- _this55.x = tx28;
- _this55.y = ty28;
- _this55.z = tz28;
- var _this56 = this.tmpCircleVerts2[i32];
- var v3 = this.tmpCircleVerts1[i32];
- _this56.x = v3.x;
- _this56.y = v3.y;
- _this56.z = v3.z;
- var _this57 = this.tmpCircleVerts1[i32];
- var tx29 = _this57.x + ey.x * halfHeight;
- var ty29 = _this57.y + ey.y * halfHeight;
- var tz29 = _this57.z + ey.z * halfHeight;
- _this57.x = tx29;
- _this57.y = ty29;
- _this57.z = tz29;
- var _this58 = this.tmpCircleVerts2[i32];
- var s5 = -halfHeight;
- var tx30 = _this58.x + ey.x * s5;
- var ty30 = _this58.y + ey.y * s5;
- var tz30 = _this58.z + ey.z * s5;
- _this58.x = tx30;
- _this58.y = ty30;
- _this58.z = tz30;
- }
- var _g132 = 0;
- while(_g132 < 8) {
- var i33 = _g132++;
- var n3;
- var n4;
- var v11 = top;
- var v21 = this.tmpCircleVerts1[i33];
- var v31 = this.tmpCircleVerts1[(i33 + 1) % 8];
- var n1 = ey;
- this.triangle(v11,v21,v31,n1,n1,n1,color);
- v11 = bottom;
- v21 = this.tmpCircleVerts2[(i33 + 1) % 8];
- v31 = this.tmpCircleVerts2[i33];
- var _this59 = this.p;
- var _this60 = _this59.sizeVec3 == 0 ? new oimo.common.Vec3() : _this59.stackVec3[--_this59.sizeVec3];
- _this60.x = ey.x;
- _this60.y = ey.y;
- _this60.z = ey.z;
- var _this61 = _this60;
- var tx31 = -_this61.x;
- var ty31 = -_this61.y;
- var tz31 = -_this61.z;
- _this61.x = tx31;
- _this61.y = ty31;
- _this61.z = tz31;
- n1 = _this61;
- this.triangle(v11,v21,v31,n1,n1,n1,color);
- var _this62 = this.p;
- var mat38 = null;
- var mat48 = null;
- var quat8 = null;
- if(n1 != null) {
- n1.zero();
- if(_this62.sizeVec3 == _this62.stackVec3.length) {
- var newLength32 = _this62.sizeVec3 << 1;
- var this33 = new Array(newLength32);
- var newArray32 = this33;
- var _g43 = 0;
- var _g133 = _this62.sizeVec3;
- while(_g43 < _g133) {
- var i34 = _g43++;
- newArray32[i34] = _this62.stackVec3[i34];
- _this62.stackVec3[i34] = null;
- }
- _this62.stackVec3 = newArray32;
- }
- _this62.stackVec3[_this62.sizeVec3++] = n1;
- }
- if(mat38 != null) {
- var t0016 = 1;
- var t0116 = 0;
- var t0216 = 0;
- var t1016 = 0;
- var t1116 = 1;
- var t1216 = 0;
- var t2016 = 0;
- var t2116 = 0;
- var t2216 = 1;
- mat38.e00 = t0016;
- mat38.e01 = t0116;
- mat38.e02 = t0216;
- mat38.e10 = t1016;
- mat38.e11 = t1116;
- mat38.e12 = t1216;
- mat38.e20 = t2016;
- mat38.e21 = t2116;
- mat38.e22 = t2216;
- if(_this62.sizeMat3 == _this62.stackMat3.length) {
- var newLength33 = _this62.sizeMat3 << 1;
- var this34 = new Array(newLength33);
- var newArray33 = this34;
- var _g44 = 0;
- var _g134 = _this62.sizeMat3;
- while(_g44 < _g134) {
- var i35 = _g44++;
- newArray33[i35] = _this62.stackMat3[i35];
- _this62.stackMat3[i35] = null;
- }
- _this62.stackMat3 = newArray33;
- }
- _this62.stackMat3[_this62.sizeMat3++] = mat38;
- }
- if(mat48 != null) {
- var t0017 = 1;
- var t0117 = 0;
- var t0217 = 0;
- var t038 = 0;
- var t1017 = 0;
- var t1117 = 1;
- var t1217 = 0;
- var t138 = 0;
- var t2017 = 0;
- var t2117 = 0;
- var t2217 = 1;
- var t238 = 0;
- var t308 = 0;
- var t318 = 0;
- var t328 = 0;
- var t338 = 1;
- mat48.e00 = t0017;
- mat48.e01 = t0117;
- mat48.e02 = t0217;
- mat48.e03 = t038;
- mat48.e10 = t1017;
- mat48.e11 = t1117;
- mat48.e12 = t1217;
- mat48.e13 = t138;
- mat48.e20 = t2017;
- mat48.e21 = t2117;
- mat48.e22 = t2217;
- mat48.e23 = t238;
- mat48.e30 = t308;
- mat48.e31 = t318;
- mat48.e32 = t328;
- mat48.e33 = t338;
- if(_this62.sizeMat4 == _this62.stackMat4.length) {
- var newLength34 = _this62.sizeMat4 << 1;
- var this35 = new Array(newLength34);
- var newArray34 = this35;
- var _g45 = 0;
- var _g135 = _this62.sizeMat4;
- while(_g45 < _g135) {
- var i36 = _g45++;
- newArray34[i36] = _this62.stackMat4[i36];
- _this62.stackMat4[i36] = null;
- }
- _this62.stackMat4 = newArray34;
- }
- _this62.stackMat4[_this62.sizeMat4++] = mat48;
- }
- if(quat8 != null) {
- var tx32 = 0;
- var ty32 = 0;
- var tz32 = 0;
- var tw8 = 1;
- quat8.x = tx32;
- quat8.y = ty32;
- quat8.z = tz32;
- quat8.w = tw8;
- if(_this62.sizeQuat == _this62.stackQuat.length) {
- var newLength35 = _this62.sizeQuat << 1;
- var this36 = new Array(newLength35);
- var newArray35 = this36;
- var _g46 = 0;
- var _g136 = _this62.sizeQuat;
- while(_g46 < _g136) {
- var i37 = _g46++;
- newArray35[i37] = _this62.stackQuat[i37];
- _this62.stackQuat[i37] = null;
- }
- _this62.stackQuat = newArray35;
- }
- _this62.stackQuat[_this62.sizeQuat++] = quat8;
- }
- v11 = this.tmpCircleVerts1[i33];
- v21 = this.tmpCircleVerts2[i33];
- v31 = this.tmpCircleVerts2[(i33 + 1) % 8];
- var v4 = this.tmpCircleVerts1[(i33 + 1) % 8];
- n1 = this.tmpCircleNorms[i33];
- var n2 = this.tmpCircleNorms[(i33 + 1) % 8];
- this.rect(v11,v21,v31,v4,n1,n1,n2,n2,color);
- }
- }
- var _this63 = this.p;
- var mat39 = null;
- var mat49 = null;
- var quat9 = null;
- if(top != null) {
- top.zero();
- if(_this63.sizeVec3 == _this63.stackVec3.length) {
- var newLength36 = _this63.sizeVec3 << 1;
- var this37 = new Array(newLength36);
- var newArray36 = this37;
- var _g47 = 0;
- var _g137 = _this63.sizeVec3;
- while(_g47 < _g137) {
- var i38 = _g47++;
- newArray36[i38] = _this63.stackVec3[i38];
- _this63.stackVec3[i38] = null;
- }
- _this63.stackVec3 = newArray36;
- }
- _this63.stackVec3[_this63.sizeVec3++] = top;
- }
- if(mat39 != null) {
- var t0018 = 1;
- var t0118 = 0;
- var t0218 = 0;
- var t1018 = 0;
- var t1118 = 1;
- var t1218 = 0;
- var t2018 = 0;
- var t2118 = 0;
- var t2218 = 1;
- mat39.e00 = t0018;
- mat39.e01 = t0118;
- mat39.e02 = t0218;
- mat39.e10 = t1018;
- mat39.e11 = t1118;
- mat39.e12 = t1218;
- mat39.e20 = t2018;
- mat39.e21 = t2118;
- mat39.e22 = t2218;
- if(_this63.sizeMat3 == _this63.stackMat3.length) {
- var newLength37 = _this63.sizeMat3 << 1;
- var this38 = new Array(newLength37);
- var newArray37 = this38;
- var _g48 = 0;
- var _g138 = _this63.sizeMat3;
- while(_g48 < _g138) {
- var i39 = _g48++;
- newArray37[i39] = _this63.stackMat3[i39];
- _this63.stackMat3[i39] = null;
- }
- _this63.stackMat3 = newArray37;
- }
- _this63.stackMat3[_this63.sizeMat3++] = mat39;
- }
- if(mat49 != null) {
- var t0019 = 1;
- var t0119 = 0;
- var t0219 = 0;
- var t039 = 0;
- var t1019 = 0;
- var t1119 = 1;
- var t1219 = 0;
- var t139 = 0;
- var t2019 = 0;
- var t2119 = 0;
- var t2219 = 1;
- var t239 = 0;
- var t309 = 0;
- var t319 = 0;
- var t329 = 0;
- var t339 = 1;
- mat49.e00 = t0019;
- mat49.e01 = t0119;
- mat49.e02 = t0219;
- mat49.e03 = t039;
- mat49.e10 = t1019;
- mat49.e11 = t1119;
- mat49.e12 = t1219;
- mat49.e13 = t139;
- mat49.e20 = t2019;
- mat49.e21 = t2119;
- mat49.e22 = t2219;
- mat49.e23 = t239;
- mat49.e30 = t309;
- mat49.e31 = t319;
- mat49.e32 = t329;
- mat49.e33 = t339;
- if(_this63.sizeMat4 == _this63.stackMat4.length) {
- var newLength38 = _this63.sizeMat4 << 1;
- var this39 = new Array(newLength38);
- var newArray38 = this39;
- var _g49 = 0;
- var _g139 = _this63.sizeMat4;
- while(_g49 < _g139) {
- var i40 = _g49++;
- newArray38[i40] = _this63.stackMat4[i40];
- _this63.stackMat4[i40] = null;
- }
- _this63.stackMat4 = newArray38;
- }
- _this63.stackMat4[_this63.sizeMat4++] = mat49;
- }
- if(quat9 != null) {
- var tx33 = 0;
- var ty33 = 0;
- var tz33 = 0;
- var tw9 = 1;
- quat9.x = tx33;
- quat9.y = ty33;
- quat9.z = tz33;
- quat9.w = tw9;
- if(_this63.sizeQuat == _this63.stackQuat.length) {
- var newLength39 = _this63.sizeQuat << 1;
- var this40 = new Array(newLength39);
- var newArray39 = this40;
- var _g50 = 0;
- var _g140 = _this63.sizeQuat;
- while(_g50 < _g140) {
- var i41 = _g50++;
- newArray39[i41] = _this63.stackQuat[i41];
- _this63.stackQuat[i41] = null;
- }
- _this63.stackQuat = newArray39;
- }
- _this63.stackQuat[_this63.sizeQuat++] = quat9;
- }
- var _this64 = this.p;
- var mat310 = null;
- var mat410 = null;
- var quat10 = null;
- if(bottom != null) {
- bottom.zero();
- if(_this64.sizeVec3 == _this64.stackVec3.length) {
- var newLength40 = _this64.sizeVec3 << 1;
- var this41 = new Array(newLength40);
- var newArray40 = this41;
- var _g51 = 0;
- var _g141 = _this64.sizeVec3;
- while(_g51 < _g141) {
- var i42 = _g51++;
- newArray40[i42] = _this64.stackVec3[i42];
- _this64.stackVec3[i42] = null;
- }
- _this64.stackVec3 = newArray40;
- }
- _this64.stackVec3[_this64.sizeVec3++] = bottom;
- }
- if(mat310 != null) {
- var t0020 = 1;
- var t0120 = 0;
- var t0220 = 0;
- var t1020 = 0;
- var t1120 = 1;
- var t1220 = 0;
- var t2020 = 0;
- var t2120 = 0;
- var t2220 = 1;
- mat310.e00 = t0020;
- mat310.e01 = t0120;
- mat310.e02 = t0220;
- mat310.e10 = t1020;
- mat310.e11 = t1120;
- mat310.e12 = t1220;
- mat310.e20 = t2020;
- mat310.e21 = t2120;
- mat310.e22 = t2220;
- if(_this64.sizeMat3 == _this64.stackMat3.length) {
- var newLength41 = _this64.sizeMat3 << 1;
- var this42 = new Array(newLength41);
- var newArray41 = this42;
- var _g52 = 0;
- var _g142 = _this64.sizeMat3;
- while(_g52 < _g142) {
- var i43 = _g52++;
- newArray41[i43] = _this64.stackMat3[i43];
- _this64.stackMat3[i43] = null;
- }
- _this64.stackMat3 = newArray41;
- }
- _this64.stackMat3[_this64.sizeMat3++] = mat310;
- }
- if(mat410 != null) {
- var t0021 = 1;
- var t0121 = 0;
- var t0221 = 0;
- var t0310 = 0;
- var t1021 = 0;
- var t1121 = 1;
- var t1221 = 0;
- var t1310 = 0;
- var t2021 = 0;
- var t2121 = 0;
- var t2221 = 1;
- var t2310 = 0;
- var t3010 = 0;
- var t3110 = 0;
- var t3210 = 0;
- var t3310 = 1;
- mat410.e00 = t0021;
- mat410.e01 = t0121;
- mat410.e02 = t0221;
- mat410.e03 = t0310;
- mat410.e10 = t1021;
- mat410.e11 = t1121;
- mat410.e12 = t1221;
- mat410.e13 = t1310;
- mat410.e20 = t2021;
- mat410.e21 = t2121;
- mat410.e22 = t2221;
- mat410.e23 = t2310;
- mat410.e30 = t3010;
- mat410.e31 = t3110;
- mat410.e32 = t3210;
- mat410.e33 = t3310;
- if(_this64.sizeMat4 == _this64.stackMat4.length) {
- var newLength42 = _this64.sizeMat4 << 1;
- var this43 = new Array(newLength42);
- var newArray42 = this43;
- var _g53 = 0;
- var _g143 = _this64.sizeMat4;
- while(_g53 < _g143) {
- var i44 = _g53++;
- newArray42[i44] = _this64.stackMat4[i44];
- _this64.stackMat4[i44] = null;
- }
- _this64.stackMat4 = newArray42;
- }
- _this64.stackMat4[_this64.sizeMat4++] = mat410;
- }
- if(quat10 != null) {
- var tx34 = 0;
- var ty34 = 0;
- var tz34 = 0;
- var tw10 = 1;
- quat10.x = tx34;
- quat10.y = ty34;
- quat10.z = tz34;
- quat10.w = tw10;
- if(_this64.sizeQuat == _this64.stackQuat.length) {
- var newLength43 = _this64.sizeQuat << 1;
- var this44 = new Array(newLength43);
- var newArray43 = this44;
- var _g54 = 0;
- var _g144 = _this64.sizeQuat;
- while(_g54 < _g144) {
- var i45 = _g54++;
- newArray43[i45] = _this64.stackQuat[i45];
- _this64.stackQuat[i45] = null;
- }
- _this64.stackQuat = newArray43;
- }
- _this64.stackQuat[_this64.sizeQuat++] = quat10;
- }
- var _this65 = this.p;
- var mat311 = null;
- var mat411 = null;
- var quat11 = null;
- if(o != null) {
- o.zero();
- if(_this65.sizeVec3 == _this65.stackVec3.length) {
- var newLength44 = _this65.sizeVec3 << 1;
- var this45 = new Array(newLength44);
- var newArray44 = this45;
- var _g55 = 0;
- var _g145 = _this65.sizeVec3;
- while(_g55 < _g145) {
- var i46 = _g55++;
- newArray44[i46] = _this65.stackVec3[i46];
- _this65.stackVec3[i46] = null;
- }
- _this65.stackVec3 = newArray44;
- }
- _this65.stackVec3[_this65.sizeVec3++] = o;
- }
- if(mat311 != null) {
- var t0022 = 1;
- var t0122 = 0;
- var t0222 = 0;
- var t1022 = 0;
- var t1122 = 1;
- var t1222 = 0;
- var t2022 = 0;
- var t2122 = 0;
- var t2222 = 1;
- mat311.e00 = t0022;
- mat311.e01 = t0122;
- mat311.e02 = t0222;
- mat311.e10 = t1022;
- mat311.e11 = t1122;
- mat311.e12 = t1222;
- mat311.e20 = t2022;
- mat311.e21 = t2122;
- mat311.e22 = t2222;
- if(_this65.sizeMat3 == _this65.stackMat3.length) {
- var newLength45 = _this65.sizeMat3 << 1;
- var this46 = new Array(newLength45);
- var newArray45 = this46;
- var _g56 = 0;
- var _g146 = _this65.sizeMat3;
- while(_g56 < _g146) {
- var i47 = _g56++;
- newArray45[i47] = _this65.stackMat3[i47];
- _this65.stackMat3[i47] = null;
- }
- _this65.stackMat3 = newArray45;
- }
- _this65.stackMat3[_this65.sizeMat3++] = mat311;
- }
- if(mat411 != null) {
- var t0023 = 1;
- var t0123 = 0;
- var t0223 = 0;
- var t0311 = 0;
- var t1023 = 0;
- var t1123 = 1;
- var t1223 = 0;
- var t1311 = 0;
- var t2023 = 0;
- var t2123 = 0;
- var t2223 = 1;
- var t2311 = 0;
- var t3011 = 0;
- var t3111 = 0;
- var t3211 = 0;
- var t3311 = 1;
- mat411.e00 = t0023;
- mat411.e01 = t0123;
- mat411.e02 = t0223;
- mat411.e03 = t0311;
- mat411.e10 = t1023;
- mat411.e11 = t1123;
- mat411.e12 = t1223;
- mat411.e13 = t1311;
- mat411.e20 = t2023;
- mat411.e21 = t2123;
- mat411.e22 = t2223;
- mat411.e23 = t2311;
- mat411.e30 = t3011;
- mat411.e31 = t3111;
- mat411.e32 = t3211;
- mat411.e33 = t3311;
- if(_this65.sizeMat4 == _this65.stackMat4.length) {
- var newLength46 = _this65.sizeMat4 << 1;
- var this47 = new Array(newLength46);
- var newArray46 = this47;
- var _g57 = 0;
- var _g147 = _this65.sizeMat4;
- while(_g57 < _g147) {
- var i48 = _g57++;
- newArray46[i48] = _this65.stackMat4[i48];
- _this65.stackMat4[i48] = null;
- }
- _this65.stackMat4 = newArray46;
- }
- _this65.stackMat4[_this65.sizeMat4++] = mat411;
- }
- if(quat11 != null) {
- var tx35 = 0;
- var ty35 = 0;
- var tz35 = 0;
- var tw11 = 1;
- quat11.x = tx35;
- quat11.y = ty35;
- quat11.z = tz35;
- quat11.w = tw11;
- if(_this65.sizeQuat == _this65.stackQuat.length) {
- var newLength47 = _this65.sizeQuat << 1;
- var this48 = new Array(newLength47);
- var newArray47 = this48;
- var _g58 = 0;
- var _g148 = _this65.sizeQuat;
- while(_g58 < _g148) {
- var i49 = _g58++;
- newArray47[i49] = _this65.stackQuat[i49];
- _this65.stackQuat[i49] = null;
- }
- _this65.stackQuat = newArray47;
- }
- _this65.stackQuat[_this65.sizeQuat++] = quat11;
- }
- var _this66 = this.p;
- var vec3 = null;
- var mat412 = null;
- var quat12 = null;
- if(vec3 != null) {
- vec3.zero();
- if(_this66.sizeVec3 == _this66.stackVec3.length) {
- var newLength48 = _this66.sizeVec3 << 1;
- var this49 = new Array(newLength48);
- var newArray48 = this49;
- var _g59 = 0;
- var _g149 = _this66.sizeVec3;
- while(_g59 < _g149) {
- var i50 = _g59++;
- newArray48[i50] = _this66.stackVec3[i50];
- _this66.stackVec3[i50] = null;
- }
- _this66.stackVec3 = newArray48;
- }
- _this66.stackVec3[_this66.sizeVec3++] = vec3;
- }
- if(m != null) {
- var t0024 = 1;
- var t0124 = 0;
- var t0224 = 0;
- var t1024 = 0;
- var t1124 = 1;
- var t1224 = 0;
- var t2024 = 0;
- var t2124 = 0;
- var t2224 = 1;
- m.e00 = t0024;
- m.e01 = t0124;
- m.e02 = t0224;
- m.e10 = t1024;
- m.e11 = t1124;
- m.e12 = t1224;
- m.e20 = t2024;
- m.e21 = t2124;
- m.e22 = t2224;
- if(_this66.sizeMat3 == _this66.stackMat3.length) {
- var newLength49 = _this66.sizeMat3 << 1;
- var this50 = new Array(newLength49);
- var newArray49 = this50;
- var _g60 = 0;
- var _g150 = _this66.sizeMat3;
- while(_g60 < _g150) {
- var i51 = _g60++;
- newArray49[i51] = _this66.stackMat3[i51];
- _this66.stackMat3[i51] = null;
- }
- _this66.stackMat3 = newArray49;
- }
- _this66.stackMat3[_this66.sizeMat3++] = m;
- }
- if(mat412 != null) {
- var t0025 = 1;
- var t0125 = 0;
- var t0225 = 0;
- var t0312 = 0;
- var t1025 = 0;
- var t1125 = 1;
- var t1225 = 0;
- var t1312 = 0;
- var t2025 = 0;
- var t2125 = 0;
- var t2225 = 1;
- var t2312 = 0;
- var t3012 = 0;
- var t3112 = 0;
- var t3212 = 0;
- var t3312 = 1;
- mat412.e00 = t0025;
- mat412.e01 = t0125;
- mat412.e02 = t0225;
- mat412.e03 = t0312;
- mat412.e10 = t1025;
- mat412.e11 = t1125;
- mat412.e12 = t1225;
- mat412.e13 = t1312;
- mat412.e20 = t2025;
- mat412.e21 = t2125;
- mat412.e22 = t2225;
- mat412.e23 = t2312;
- mat412.e30 = t3012;
- mat412.e31 = t3112;
- mat412.e32 = t3212;
- mat412.e33 = t3312;
- if(_this66.sizeMat4 == _this66.stackMat4.length) {
- var newLength50 = _this66.sizeMat4 << 1;
- var this51 = new Array(newLength50);
- var newArray50 = this51;
- var _g61 = 0;
- var _g151 = _this66.sizeMat4;
- while(_g61 < _g151) {
- var i52 = _g61++;
- newArray50[i52] = _this66.stackMat4[i52];
- _this66.stackMat4[i52] = null;
- }
- _this66.stackMat4 = newArray50;
- }
- _this66.stackMat4[_this66.sizeMat4++] = mat412;
- }
- if(quat12 != null) {
- var tx36 = 0;
- var ty36 = 0;
- var tz36 = 0;
- var tw12 = 1;
- quat12.x = tx36;
- quat12.y = ty36;
- quat12.z = tz36;
- quat12.w = tw12;
- if(_this66.sizeQuat == _this66.stackQuat.length) {
- var newLength51 = _this66.sizeQuat << 1;
- var this52 = new Array(newLength51);
- var newArray51 = this52;
- var _g62 = 0;
- var _g152 = _this66.sizeQuat;
- while(_g62 < _g152) {
- var i53 = _g62++;
- newArray51[i53] = _this66.stackQuat[i53];
- _this66.stackQuat[i53] = null;
- }
- _this66.stackQuat = newArray51;
- }
- _this66.stackQuat[_this66.sizeQuat++] = quat12;
- }
- var _this67 = this.p;
- var mat312 = null;
- var mat413 = null;
- var quat13 = null;
- if(ex != null) {
- ex.zero();
- if(_this67.sizeVec3 == _this67.stackVec3.length) {
- var newLength52 = _this67.sizeVec3 << 1;
- var this53 = new Array(newLength52);
- var newArray52 = this53;
- var _g63 = 0;
- var _g153 = _this67.sizeVec3;
- while(_g63 < _g153) {
- var i54 = _g63++;
- newArray52[i54] = _this67.stackVec3[i54];
- _this67.stackVec3[i54] = null;
- }
- _this67.stackVec3 = newArray52;
- }
- _this67.stackVec3[_this67.sizeVec3++] = ex;
- }
- if(mat312 != null) {
- var t0026 = 1;
- var t0126 = 0;
- var t0226 = 0;
- var t1026 = 0;
- var t1126 = 1;
- var t1226 = 0;
- var t2026 = 0;
- var t2126 = 0;
- var t2226 = 1;
- mat312.e00 = t0026;
- mat312.e01 = t0126;
- mat312.e02 = t0226;
- mat312.e10 = t1026;
- mat312.e11 = t1126;
- mat312.e12 = t1226;
- mat312.e20 = t2026;
- mat312.e21 = t2126;
- mat312.e22 = t2226;
- if(_this67.sizeMat3 == _this67.stackMat3.length) {
- var newLength53 = _this67.sizeMat3 << 1;
- var this54 = new Array(newLength53);
- var newArray53 = this54;
- var _g64 = 0;
- var _g154 = _this67.sizeMat3;
- while(_g64 < _g154) {
- var i55 = _g64++;
- newArray53[i55] = _this67.stackMat3[i55];
- _this67.stackMat3[i55] = null;
- }
- _this67.stackMat3 = newArray53;
- }
- _this67.stackMat3[_this67.sizeMat3++] = mat312;
- }
- if(mat413 != null) {
- var t0027 = 1;
- var t0127 = 0;
- var t0227 = 0;
- var t0313 = 0;
- var t1027 = 0;
- var t1127 = 1;
- var t1227 = 0;
- var t1313 = 0;
- var t2027 = 0;
- var t2127 = 0;
- var t2227 = 1;
- var t2313 = 0;
- var t3013 = 0;
- var t3113 = 0;
- var t3213 = 0;
- var t3313 = 1;
- mat413.e00 = t0027;
- mat413.e01 = t0127;
- mat413.e02 = t0227;
- mat413.e03 = t0313;
- mat413.e10 = t1027;
- mat413.e11 = t1127;
- mat413.e12 = t1227;
- mat413.e13 = t1313;
- mat413.e20 = t2027;
- mat413.e21 = t2127;
- mat413.e22 = t2227;
- mat413.e23 = t2313;
- mat413.e30 = t3013;
- mat413.e31 = t3113;
- mat413.e32 = t3213;
- mat413.e33 = t3313;
- if(_this67.sizeMat4 == _this67.stackMat4.length) {
- var newLength54 = _this67.sizeMat4 << 1;
- var this55 = new Array(newLength54);
- var newArray54 = this55;
- var _g65 = 0;
- var _g155 = _this67.sizeMat4;
- while(_g65 < _g155) {
- var i56 = _g65++;
- newArray54[i56] = _this67.stackMat4[i56];
- _this67.stackMat4[i56] = null;
- }
- _this67.stackMat4 = newArray54;
- }
- _this67.stackMat4[_this67.sizeMat4++] = mat413;
- }
- if(quat13 != null) {
- var tx37 = 0;
- var ty37 = 0;
- var tz37 = 0;
- var tw13 = 1;
- quat13.x = tx37;
- quat13.y = ty37;
- quat13.z = tz37;
- quat13.w = tw13;
- if(_this67.sizeQuat == _this67.stackQuat.length) {
- var newLength55 = _this67.sizeQuat << 1;
- var this56 = new Array(newLength55);
- var newArray55 = this56;
- var _g66 = 0;
- var _g156 = _this67.sizeQuat;
- while(_g66 < _g156) {
- var i57 = _g66++;
- newArray55[i57] = _this67.stackQuat[i57];
- _this67.stackQuat[i57] = null;
- }
- _this67.stackQuat = newArray55;
- }
- _this67.stackQuat[_this67.sizeQuat++] = quat13;
- }
- var _this68 = this.p;
- var mat313 = null;
- var mat414 = null;
- var quat14 = null;
- if(ey != null) {
- ey.zero();
- if(_this68.sizeVec3 == _this68.stackVec3.length) {
- var newLength56 = _this68.sizeVec3 << 1;
- var this57 = new Array(newLength56);
- var newArray56 = this57;
- var _g67 = 0;
- var _g157 = _this68.sizeVec3;
- while(_g67 < _g157) {
- var i58 = _g67++;
- newArray56[i58] = _this68.stackVec3[i58];
- _this68.stackVec3[i58] = null;
- }
- _this68.stackVec3 = newArray56;
- }
- _this68.stackVec3[_this68.sizeVec3++] = ey;
- }
- if(mat313 != null) {
- var t0028 = 1;
- var t0128 = 0;
- var t0228 = 0;
- var t1028 = 0;
- var t1128 = 1;
- var t1228 = 0;
- var t2028 = 0;
- var t2128 = 0;
- var t2228 = 1;
- mat313.e00 = t0028;
- mat313.e01 = t0128;
- mat313.e02 = t0228;
- mat313.e10 = t1028;
- mat313.e11 = t1128;
- mat313.e12 = t1228;
- mat313.e20 = t2028;
- mat313.e21 = t2128;
- mat313.e22 = t2228;
- if(_this68.sizeMat3 == _this68.stackMat3.length) {
- var newLength57 = _this68.sizeMat3 << 1;
- var this58 = new Array(newLength57);
- var newArray57 = this58;
- var _g68 = 0;
- var _g158 = _this68.sizeMat3;
- while(_g68 < _g158) {
- var i59 = _g68++;
- newArray57[i59] = _this68.stackMat3[i59];
- _this68.stackMat3[i59] = null;
- }
- _this68.stackMat3 = newArray57;
- }
- _this68.stackMat3[_this68.sizeMat3++] = mat313;
- }
- if(mat414 != null) {
- var t0029 = 1;
- var t0129 = 0;
- var t0229 = 0;
- var t0314 = 0;
- var t1029 = 0;
- var t1129 = 1;
- var t1229 = 0;
- var t1314 = 0;
- var t2029 = 0;
- var t2129 = 0;
- var t2229 = 1;
- var t2314 = 0;
- var t3014 = 0;
- var t3114 = 0;
- var t3214 = 0;
- var t3314 = 1;
- mat414.e00 = t0029;
- mat414.e01 = t0129;
- mat414.e02 = t0229;
- mat414.e03 = t0314;
- mat414.e10 = t1029;
- mat414.e11 = t1129;
- mat414.e12 = t1229;
- mat414.e13 = t1314;
- mat414.e20 = t2029;
- mat414.e21 = t2129;
- mat414.e22 = t2229;
- mat414.e23 = t2314;
- mat414.e30 = t3014;
- mat414.e31 = t3114;
- mat414.e32 = t3214;
- mat414.e33 = t3314;
- if(_this68.sizeMat4 == _this68.stackMat4.length) {
- var newLength58 = _this68.sizeMat4 << 1;
- var this59 = new Array(newLength58);
- var newArray58 = this59;
- var _g69 = 0;
- var _g159 = _this68.sizeMat4;
- while(_g69 < _g159) {
- var i60 = _g69++;
- newArray58[i60] = _this68.stackMat4[i60];
- _this68.stackMat4[i60] = null;
- }
- _this68.stackMat4 = newArray58;
- }
- _this68.stackMat4[_this68.sizeMat4++] = mat414;
- }
- if(quat14 != null) {
- var tx38 = 0;
- var ty38 = 0;
- var tz38 = 0;
- var tw14 = 1;
- quat14.x = tx38;
- quat14.y = ty38;
- quat14.z = tz38;
- quat14.w = tw14;
- if(_this68.sizeQuat == _this68.stackQuat.length) {
- var newLength59 = _this68.sizeQuat << 1;
- var this60 = new Array(newLength59);
- var newArray59 = this60;
- var _g70 = 0;
- var _g160 = _this68.sizeQuat;
- while(_g70 < _g160) {
- var i61 = _g70++;
- newArray59[i61] = _this68.stackQuat[i61];
- _this68.stackQuat[i61] = null;
- }
- _this68.stackQuat = newArray59;
- }
- _this68.stackQuat[_this68.sizeQuat++] = quat14;
- }
- var _this69 = this.p;
- var mat314 = null;
- var mat415 = null;
- var quat15 = null;
- if(ez != null) {
- ez.zero();
- if(_this69.sizeVec3 == _this69.stackVec3.length) {
- var newLength60 = _this69.sizeVec3 << 1;
- var this61 = new Array(newLength60);
- var newArray60 = this61;
- var _g71 = 0;
- var _g161 = _this69.sizeVec3;
- while(_g71 < _g161) {
- var i62 = _g71++;
- newArray60[i62] = _this69.stackVec3[i62];
- _this69.stackVec3[i62] = null;
- }
- _this69.stackVec3 = newArray60;
- }
- _this69.stackVec3[_this69.sizeVec3++] = ez;
- }
- if(mat314 != null) {
- var t0030 = 1;
- var t0130 = 0;
- var t0230 = 0;
- var t1030 = 0;
- var t1130 = 1;
- var t1230 = 0;
- var t2030 = 0;
- var t2130 = 0;
- var t2230 = 1;
- mat314.e00 = t0030;
- mat314.e01 = t0130;
- mat314.e02 = t0230;
- mat314.e10 = t1030;
- mat314.e11 = t1130;
- mat314.e12 = t1230;
- mat314.e20 = t2030;
- mat314.e21 = t2130;
- mat314.e22 = t2230;
- if(_this69.sizeMat3 == _this69.stackMat3.length) {
- var newLength61 = _this69.sizeMat3 << 1;
- var this62 = new Array(newLength61);
- var newArray61 = this62;
- var _g72 = 0;
- var _g162 = _this69.sizeMat3;
- while(_g72 < _g162) {
- var i63 = _g72++;
- newArray61[i63] = _this69.stackMat3[i63];
- _this69.stackMat3[i63] = null;
- }
- _this69.stackMat3 = newArray61;
- }
- _this69.stackMat3[_this69.sizeMat3++] = mat314;
- }
- if(mat415 != null) {
- var t0031 = 1;
- var t0131 = 0;
- var t0231 = 0;
- var t0315 = 0;
- var t1031 = 0;
- var t1131 = 1;
- var t1231 = 0;
- var t1315 = 0;
- var t2031 = 0;
- var t2131 = 0;
- var t2231 = 1;
- var t2315 = 0;
- var t3015 = 0;
- var t3115 = 0;
- var t3215 = 0;
- var t3315 = 1;
- mat415.e00 = t0031;
- mat415.e01 = t0131;
- mat415.e02 = t0231;
- mat415.e03 = t0315;
- mat415.e10 = t1031;
- mat415.e11 = t1131;
- mat415.e12 = t1231;
- mat415.e13 = t1315;
- mat415.e20 = t2031;
- mat415.e21 = t2131;
- mat415.e22 = t2231;
- mat415.e23 = t2315;
- mat415.e30 = t3015;
- mat415.e31 = t3115;
- mat415.e32 = t3215;
- mat415.e33 = t3315;
- if(_this69.sizeMat4 == _this69.stackMat4.length) {
- var newLength62 = _this69.sizeMat4 << 1;
- var this63 = new Array(newLength62);
- var newArray62 = this63;
- var _g73 = 0;
- var _g163 = _this69.sizeMat4;
- while(_g73 < _g163) {
- var i64 = _g73++;
- newArray62[i64] = _this69.stackMat4[i64];
- _this69.stackMat4[i64] = null;
- }
- _this69.stackMat4 = newArray62;
- }
- _this69.stackMat4[_this69.sizeMat4++] = mat415;
- }
- if(quat15 != null) {
- var tx39 = 0;
- var ty39 = 0;
- var tz39 = 0;
- var tw15 = 1;
- quat15.x = tx39;
- quat15.y = ty39;
- quat15.z = tz39;
- quat15.w = tw15;
- if(_this69.sizeQuat == _this69.stackQuat.length) {
- var newLength63 = _this69.sizeQuat << 1;
- var this64 = new Array(newLength63);
- var newArray63 = this64;
- var _g74 = 0;
- var _g164 = _this69.sizeQuat;
- while(_g74 < _g164) {
- var i65 = _g74++;
- newArray63[i65] = _this69.stackQuat[i65];
- _this69.stackQuat[i65] = null;
- }
- _this69.stackQuat = newArray63;
- }
- _this69.stackQuat[_this69.sizeQuat++] = quat15;
- }
- }
- capsule(tf,radius,halfHeight,color) {
- var _this = this.p;
- var ex = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
- var _this1 = this.p;
- var ey = _this1.sizeVec3 == 0 ? new oimo.common.Vec3() : _this1.stackVec3[--_this1.sizeVec3];
- var _this2 = this.p;
- var ez = _this2.sizeVec3 == 0 ? new oimo.common.Vec3() : _this2.stackVec3[--_this2.sizeVec3];
- var _this3 = this.p;
- var o = _this3.sizeVec3 == 0 ? new oimo.common.Vec3() : _this3.stackVec3[--_this3.sizeVec3];
- var _this4 = this.p;
- var m = _this4.sizeMat3 == 0 ? new oimo.common.Mat3() : _this4.stackMat3[--_this4.sizeMat3];
- var v = o;
- v.x = tf._positionX;
- v.y = tf._positionY;
- v.z = tf._positionZ;
- var m1 = m;
- m1.e00 = tf._rotation00;
- m1.e01 = tf._rotation01;
- m1.e02 = tf._rotation02;
- m1.e10 = tf._rotation10;
- m1.e11 = tf._rotation11;
- m1.e12 = tf._rotation12;
- m1.e20 = tf._rotation20;
- m1.e21 = tf._rotation21;
- m1.e22 = tf._rotation22;
- ex.init(m.e00,m.e10,m.e20);
- ey.init(m.e01,m.e11,m.e21);
- ez.init(m.e02,m.e12,m.e22);
- var nt = 4;
- var np = 8;
- var vs = this.tmpSphereVerts;
- var ns = this.tmpSphereNorms;
- var _g = 0;
- var _g1 = nt + 1;
- while(_g < _g1) {
- var i2 = _g++;
- var n = this.tmpSphereVerts[i2].length;
- var _g2 = 0;
- var _g11 = n;
- while(_g2 < _g11) {
- var j2 = _g2++;
- var _this5 = ns[i2][j2];
- var v1 = this.sphereCoords[i2][j2];
- _this5.x = v1.x;
- _this5.y = v1.y;
- _this5.z = v1.z;
- var _this6 = _this5;
- var tx = _this6.x * m.e00 + _this6.y * m.e01 + _this6.z * m.e02;
- var ty = _this6.x * m.e10 + _this6.y * m.e11 + _this6.z * m.e12;
- var tz = _this6.x * m.e20 + _this6.y * m.e21 + _this6.z * m.e22;
- _this6.x = tx;
- _this6.y = ty;
- _this6.z = tz;
- }
- }
- var _g21 = 0;
- var _g3 = nt;
- while(_g21 < _g3) {
- var i = _g21++;
- if(i == 0) {
- var half = nt >> 1;
- var _g22 = 0;
- var _g31 = half + 1;
- while(_g22 < _g31) {
- var i21 = _g22++;
- var n1 = this.tmpSphereVerts[i21].length;
- var _g23 = 0;
- var _g32 = n1;
- while(_g23 < _g32) {
- var j21 = _g23++;
- var _this7 = vs[i21][j21];
- var v2 = ns[i21][j21];
- _this7.x = v2.x;
- _this7.y = v2.y;
- _this7.z = v2.z;
- var _this8 = _this7;
- var tx1 = _this8.x * radius;
- var ty1 = _this8.y * radius;
- var tz1 = _this8.z * radius;
- _this8.x = tx1;
- _this8.y = ty1;
- _this8.z = tz1;
- var _this9 = _this8;
- var tx2 = _this9.x + o.x;
- var ty2 = _this9.y + o.y;
- var tz2 = _this9.z + o.z;
- _this9.x = tx2;
- _this9.y = ty2;
- _this9.z = tz2;
- var _this10 = _this9;
- var tx3 = _this10.x + ey.x * halfHeight;
- var ty3 = _this10.y + ey.y * halfHeight;
- var tz3 = _this10.z + ey.z * halfHeight;
- _this10.x = tx3;
- _this10.y = ty3;
- _this10.z = tz3;
- }
- }
- }
- if(i == nt >> 1) {
- var half1 = nt >> 1;
- var _g24 = half1;
- var _g33 = nt + 1;
- while(_g24 < _g33) {
- var i22 = _g24++;
- var n2 = this.tmpSphereVerts[i22].length;
- var _g25 = 0;
- var _g34 = n2;
- while(_g25 < _g34) {
- var j22 = _g25++;
- var _this11 = vs[i22][j22];
- var v3 = ns[i22][j22];
- _this11.x = v3.x;
- _this11.y = v3.y;
- _this11.z = v3.z;
- var _this12 = _this11;
- var tx4 = _this12.x * radius;
- var ty4 = _this12.y * radius;
- var tz4 = _this12.z * radius;
- _this12.x = tx4;
- _this12.y = ty4;
- _this12.z = tz4;
- var _this13 = _this12;
- var tx5 = _this13.x + o.x;
- var ty5 = _this13.y + o.y;
- var tz5 = _this13.z + o.z;
- _this13.x = tx5;
- _this13.y = ty5;
- _this13.z = tz5;
- var _this14 = _this13;
- var s = -halfHeight;
- var tx6 = _this14.x + ey.x * s;
- var ty6 = _this14.y + ey.y * s;
- var tz6 = _this14.z + ey.z * s;
- _this14.x = tx6;
- _this14.y = ty6;
- _this14.z = tz6;
- }
- }
- }
- var _g26 = 0;
- var _g35 = np;
- while(_g26 < _g35) {
- var j = _g26++;
- var v11;
- var v21;
- var v31;
- var v4;
- var n11;
- var n21;
- var n3;
- var n4;
- if(i == 0) {
- if(this.wireframe) {
- v11 = vs[0][0];
- v21 = vs[1][j];
- this.line(v11,v21,color);
- } else {
- v11 = vs[0][0];
- v21 = vs[1][j];
- v31 = vs[1][(j + 1) % np];
- n11 = ns[0][0];
- n21 = ns[1][j];
- n3 = ns[1][(j + 1) % np];
- this.triangle(v11,v21,v31,n11,n21,n3,color);
- }
- } else if(i == nt - 1) {
- if(this.wireframe) {
- v11 = vs[nt][0];
- v21 = vs[i][(j + 1) % np];
- v31 = vs[i][j];
- this.line(v11,v21,color);
- this.line(v21,v31,color);
- } else {
- v11 = vs[nt][0];
- v21 = vs[i][(j + 1) % np];
- v31 = vs[i][j];
- n11 = ns[nt][0];
- n21 = ns[i][(j + 1) % np];
- n3 = ns[i][j];
- this.triangle(v11,v21,v31,n11,n21,n3,color);
- }
- } else if(this.wireframe) {
- v11 = vs[i][j];
- v21 = vs[i][(j + 1) % np];
- v31 = vs[i + 1][j];
- this.line(v11,v21,color);
- this.line(v11,v31,color);
- } else {
- v11 = vs[i][j];
- v21 = vs[i][(j + 1) % np];
- v31 = vs[i + 1][j];
- v4 = vs[i + 1][(j + 1) % np];
- n11 = ns[i][j];
- n21 = ns[i][(j + 1) % np];
- n3 = ns[i + 1][j];
- n4 = ns[i + 1][(j + 1) % np];
- this.rect(v11,v31,v4,v21,n11,n3,n4,n21,color);
- }
- }
- }
- var _this15 = this.p;
- var _this16 = _this15.sizeVec3 == 0 ? new oimo.common.Vec3() : _this15.stackVec3[--_this15.sizeVec3];
- _this16.x = o.x;
- _this16.y = o.y;
- _this16.z = o.z;
- var _this17 = _this16;
- var tx7 = _this17.x + ey.x * halfHeight;
- var ty7 = _this17.y + ey.y * halfHeight;
- var tz7 = _this17.z + ey.z * halfHeight;
- _this17.x = tx7;
- _this17.y = ty7;
- _this17.z = tz7;
- var top = _this17;
- var _this18 = this.p;
- var _this19 = _this18.sizeVec3 == 0 ? new oimo.common.Vec3() : _this18.stackVec3[--_this18.sizeVec3];
- _this19.x = o.x;
- _this19.y = o.y;
- _this19.z = o.z;
- var _this20 = _this19;
- var s1 = -halfHeight;
- var tx8 = _this20.x + ey.x * s1;
- var ty8 = _this20.y + ey.y * s1;
- var tz8 = _this20.z + ey.z * s1;
- _this20.x = tx8;
- _this20.y = ty8;
- _this20.z = tz8;
- var bottom = _this20;
- if(this.wireframe) {
- var _this21 = this.p;
- var _this22 = _this21.sizeVec3 == 0 ? new oimo.common.Vec3() : _this21.stackVec3[--_this21.sizeVec3];
- _this22.x = top.x;
- _this22.y = top.y;
- _this22.z = top.z;
- var _this23 = _this22;
- var s2 = -radius;
- var tx9 = _this23.x + ex.x * s2;
- var ty9 = _this23.y + ex.y * s2;
- var tz9 = _this23.z + ex.z * s2;
- _this23.x = tx9;
- _this23.y = ty9;
- _this23.z = tz9;
- var _this24 = _this23;
- var tx10 = _this24.x + ez.x * 0;
- var ty10 = _this24.y + ez.y * 0;
- var tz10 = _this24.z + ez.z * 0;
- _this24.x = tx10;
- _this24.y = ty10;
- _this24.z = tz10;
- var top1 = _this24;
- var _this25 = this.p;
- var _this26 = _this25.sizeVec3 == 0 ? new oimo.common.Vec3() : _this25.stackVec3[--_this25.sizeVec3];
- _this26.x = top.x;
- _this26.y = top.y;
- _this26.z = top.z;
- var _this27 = _this26;
- var tx11 = _this27.x + ex.x * radius;
- var ty11 = _this27.y + ex.y * radius;
- var tz11 = _this27.z + ex.z * radius;
- _this27.x = tx11;
- _this27.y = ty11;
- _this27.z = tz11;
- var _this28 = _this27;
- var tx12 = _this28.x + ez.x * 0;
- var ty12 = _this28.y + ez.y * 0;
- var tz12 = _this28.z + ez.z * 0;
- _this28.x = tx12;
- _this28.y = ty12;
- _this28.z = tz12;
- var top2 = _this28;
- var _this29 = this.p;
- var _this30 = _this29.sizeVec3 == 0 ? new oimo.common.Vec3() : _this29.stackVec3[--_this29.sizeVec3];
- _this30.x = top.x;
- _this30.y = top.y;
- _this30.z = top.z;
- var _this31 = _this30;
- var tx13 = _this31.x + ex.x * 0;
- var ty13 = _this31.y + ex.y * 0;
- var tz13 = _this31.z + ex.z * 0;
- _this31.x = tx13;
- _this31.y = ty13;
- _this31.z = tz13;
- var _this32 = _this31;
- var s3 = -radius;
- var tx14 = _this32.x + ez.x * s3;
- var ty14 = _this32.y + ez.y * s3;
- var tz14 = _this32.z + ez.z * s3;
- _this32.x = tx14;
- _this32.y = ty14;
- _this32.z = tz14;
- var top3 = _this32;
- var _this33 = this.p;
- var _this34 = _this33.sizeVec3 == 0 ? new oimo.common.Vec3() : _this33.stackVec3[--_this33.sizeVec3];
- _this34.x = top.x;
- _this34.y = top.y;
- _this34.z = top.z;
- var _this35 = _this34;
- var tx15 = _this35.x + ex.x * 0;
- var ty15 = _this35.y + ex.y * 0;
- var tz15 = _this35.z + ex.z * 0;
- _this35.x = tx15;
- _this35.y = ty15;
- _this35.z = tz15;
- var _this36 = _this35;
- var tx16 = _this36.x + ez.x * radius;
- var ty16 = _this36.y + ez.y * radius;
- var tz16 = _this36.z + ez.z * radius;
- _this36.x = tx16;
- _this36.y = ty16;
- _this36.z = tz16;
- var top4 = _this36;
- var _this37 = this.p;
- var _this38 = _this37.sizeVec3 == 0 ? new oimo.common.Vec3() : _this37.stackVec3[--_this37.sizeVec3];
- _this38.x = bottom.x;
- _this38.y = bottom.y;
- _this38.z = bottom.z;
- var _this39 = _this38;
- var s4 = -radius;
- var tx17 = _this39.x + ex.x * s4;
- var ty17 = _this39.y + ex.y * s4;
- var tz17 = _this39.z + ex.z * s4;
- _this39.x = tx17;
- _this39.y = ty17;
- _this39.z = tz17;
- var _this40 = _this39;
- var tx18 = _this40.x + ez.x * 0;
- var ty18 = _this40.y + ez.y * 0;
- var tz18 = _this40.z + ez.z * 0;
- _this40.x = tx18;
- _this40.y = ty18;
- _this40.z = tz18;
- var bottom1 = _this40;
- var _this41 = this.p;
- var _this42 = _this41.sizeVec3 == 0 ? new oimo.common.Vec3() : _this41.stackVec3[--_this41.sizeVec3];
- _this42.x = bottom.x;
- _this42.y = bottom.y;
- _this42.z = bottom.z;
- var _this43 = _this42;
- var tx19 = _this43.x + ex.x * radius;
- var ty19 = _this43.y + ex.y * radius;
- var tz19 = _this43.z + ex.z * radius;
- _this43.x = tx19;
- _this43.y = ty19;
- _this43.z = tz19;
- var _this44 = _this43;
- var tx20 = _this44.x + ez.x * 0;
- var ty20 = _this44.y + ez.y * 0;
- var tz20 = _this44.z + ez.z * 0;
- _this44.x = tx20;
- _this44.y = ty20;
- _this44.z = tz20;
- var bottom2 = _this44;
- var _this45 = this.p;
- var _this46 = _this45.sizeVec3 == 0 ? new oimo.common.Vec3() : _this45.stackVec3[--_this45.sizeVec3];
- _this46.x = bottom.x;
- _this46.y = bottom.y;
- _this46.z = bottom.z;
- var _this47 = _this46;
- var tx21 = _this47.x + ex.x * 0;
- var ty21 = _this47.y + ex.y * 0;
- var tz21 = _this47.z + ex.z * 0;
- _this47.x = tx21;
- _this47.y = ty21;
- _this47.z = tz21;
- var _this48 = _this47;
- var s5 = -radius;
- var tx22 = _this48.x + ez.x * s5;
- var ty22 = _this48.y + ez.y * s5;
- var tz22 = _this48.z + ez.z * s5;
- _this48.x = tx22;
- _this48.y = ty22;
- _this48.z = tz22;
- var bottom3 = _this48;
- var _this49 = this.p;
- var _this50 = _this49.sizeVec3 == 0 ? new oimo.common.Vec3() : _this49.stackVec3[--_this49.sizeVec3];
- _this50.x = bottom.x;
- _this50.y = bottom.y;
- _this50.z = bottom.z;
- var _this51 = _this50;
- var tx23 = _this51.x + ex.x * 0;
- var ty23 = _this51.y + ex.y * 0;
- var tz23 = _this51.z + ex.z * 0;
- _this51.x = tx23;
- _this51.y = ty23;
- _this51.z = tz23;
- var _this52 = _this51;
- var tx24 = _this52.x + ez.x * radius;
- var ty24 = _this52.y + ez.y * radius;
- var tz24 = _this52.z + ez.z * radius;
- _this52.x = tx24;
- _this52.y = ty24;
- _this52.z = tz24;
- var bottom4 = _this52;
- this.ellipse(top,ex,ez,radius,radius,color);
- this.ellipse(bottom,ex,ez,radius,radius,color);
- this.line(top1,bottom1,color);
- this.line(top2,bottom2,color);
- this.line(top3,bottom3,color);
- this.line(top4,bottom4,color);
- var _this53 = this.p;
- var mat3 = null;
- var mat4 = null;
- var quat = null;
- if(top1 != null) {
- top1.zero();
- if(_this53.sizeVec3 == _this53.stackVec3.length) {
- var newLength = _this53.sizeVec3 << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g4 = 0;
- var _g12 = _this53.sizeVec3;
- while(_g4 < _g12) {
- var i1 = _g4++;
- newArray[i1] = _this53.stackVec3[i1];
- _this53.stackVec3[i1] = null;
- }
- _this53.stackVec3 = newArray;
- }
- _this53.stackVec3[_this53.sizeVec3++] = top1;
- }
- if(mat3 != null) {
- var t00 = 1;
- var t01 = 0;
- var t02 = 0;
- var t10 = 0;
- var t11 = 1;
- var t12 = 0;
- var t20 = 0;
- var t21 = 0;
- var t22 = 1;
- mat3.e00 = t00;
- mat3.e01 = t01;
- mat3.e02 = t02;
- mat3.e10 = t10;
- mat3.e11 = t11;
- mat3.e12 = t12;
- mat3.e20 = t20;
- mat3.e21 = t21;
- mat3.e22 = t22;
- if(_this53.sizeMat3 == _this53.stackMat3.length) {
- var newLength1 = _this53.sizeMat3 << 1;
- var this2 = new Array(newLength1);
- var newArray1 = this2;
- var _g5 = 0;
- var _g13 = _this53.sizeMat3;
- while(_g5 < _g13) {
- var i3 = _g5++;
- newArray1[i3] = _this53.stackMat3[i3];
- _this53.stackMat3[i3] = null;
- }
- _this53.stackMat3 = newArray1;
- }
- _this53.stackMat3[_this53.sizeMat3++] = mat3;
- }
- if(mat4 != null) {
- var t001 = 1;
- var t011 = 0;
- var t021 = 0;
- var t03 = 0;
- var t101 = 0;
- var t111 = 1;
- var t121 = 0;
- var t13 = 0;
- var t201 = 0;
- var t211 = 0;
- var t221 = 1;
- var t23 = 0;
- var t30 = 0;
- var t31 = 0;
- var t32 = 0;
- var t33 = 1;
- mat4.e00 = t001;
- mat4.e01 = t011;
- mat4.e02 = t021;
- mat4.e03 = t03;
- mat4.e10 = t101;
- mat4.e11 = t111;
- mat4.e12 = t121;
- mat4.e13 = t13;
- mat4.e20 = t201;
- mat4.e21 = t211;
- mat4.e22 = t221;
- mat4.e23 = t23;
- mat4.e30 = t30;
- mat4.e31 = t31;
- mat4.e32 = t32;
- mat4.e33 = t33;
- if(_this53.sizeMat4 == _this53.stackMat4.length) {
- var newLength2 = _this53.sizeMat4 << 1;
- var this3 = new Array(newLength2);
- var newArray2 = this3;
- var _g6 = 0;
- var _g14 = _this53.sizeMat4;
- while(_g6 < _g14) {
- var i4 = _g6++;
- newArray2[i4] = _this53.stackMat4[i4];
- _this53.stackMat4[i4] = null;
- }
- _this53.stackMat4 = newArray2;
- }
- _this53.stackMat4[_this53.sizeMat4++] = mat4;
- }
- if(quat != null) {
- var tx25 = 0;
- var ty25 = 0;
- var tz25 = 0;
- var tw = 1;
- quat.x = tx25;
- quat.y = ty25;
- quat.z = tz25;
- quat.w = tw;
- if(_this53.sizeQuat == _this53.stackQuat.length) {
- var newLength3 = _this53.sizeQuat << 1;
- var this4 = new Array(newLength3);
- var newArray3 = this4;
- var _g7 = 0;
- var _g15 = _this53.sizeQuat;
- while(_g7 < _g15) {
- var i5 = _g7++;
- newArray3[i5] = _this53.stackQuat[i5];
- _this53.stackQuat[i5] = null;
- }
- _this53.stackQuat = newArray3;
- }
- _this53.stackQuat[_this53.sizeQuat++] = quat;
- }
- var _this54 = this.p;
- var mat31 = null;
- var mat41 = null;
- var quat1 = null;
- if(top2 != null) {
- top2.zero();
- if(_this54.sizeVec3 == _this54.stackVec3.length) {
- var newLength4 = _this54.sizeVec3 << 1;
- var this5 = new Array(newLength4);
- var newArray4 = this5;
- var _g8 = 0;
- var _g16 = _this54.sizeVec3;
- while(_g8 < _g16) {
- var i6 = _g8++;
- newArray4[i6] = _this54.stackVec3[i6];
- _this54.stackVec3[i6] = null;
- }
- _this54.stackVec3 = newArray4;
- }
- _this54.stackVec3[_this54.sizeVec3++] = top2;
- }
- if(mat31 != null) {
- var t002 = 1;
- var t012 = 0;
- var t022 = 0;
- var t102 = 0;
- var t112 = 1;
- var t122 = 0;
- var t202 = 0;
- var t212 = 0;
- var t222 = 1;
- mat31.e00 = t002;
- mat31.e01 = t012;
- mat31.e02 = t022;
- mat31.e10 = t102;
- mat31.e11 = t112;
- mat31.e12 = t122;
- mat31.e20 = t202;
- mat31.e21 = t212;
- mat31.e22 = t222;
- if(_this54.sizeMat3 == _this54.stackMat3.length) {
- var newLength5 = _this54.sizeMat3 << 1;
- var this6 = new Array(newLength5);
- var newArray5 = this6;
- var _g9 = 0;
- var _g17 = _this54.sizeMat3;
- while(_g9 < _g17) {
- var i7 = _g9++;
- newArray5[i7] = _this54.stackMat3[i7];
- _this54.stackMat3[i7] = null;
- }
- _this54.stackMat3 = newArray5;
- }
- _this54.stackMat3[_this54.sizeMat3++] = mat31;
- }
- if(mat41 != null) {
- var t003 = 1;
- var t013 = 0;
- var t023 = 0;
- var t031 = 0;
- var t103 = 0;
- var t113 = 1;
- var t123 = 0;
- var t131 = 0;
- var t203 = 0;
- var t213 = 0;
- var t223 = 1;
- var t231 = 0;
- var t301 = 0;
- var t311 = 0;
- var t321 = 0;
- var t331 = 1;
- mat41.e00 = t003;
- mat41.e01 = t013;
- mat41.e02 = t023;
- mat41.e03 = t031;
- mat41.e10 = t103;
- mat41.e11 = t113;
- mat41.e12 = t123;
- mat41.e13 = t131;
- mat41.e20 = t203;
- mat41.e21 = t213;
- mat41.e22 = t223;
- mat41.e23 = t231;
- mat41.e30 = t301;
- mat41.e31 = t311;
- mat41.e32 = t321;
- mat41.e33 = t331;
- if(_this54.sizeMat4 == _this54.stackMat4.length) {
- var newLength6 = _this54.sizeMat4 << 1;
- var this7 = new Array(newLength6);
- var newArray6 = this7;
- var _g10 = 0;
- var _g18 = _this54.sizeMat4;
- while(_g10 < _g18) {
- var i8 = _g10++;
- newArray6[i8] = _this54.stackMat4[i8];
- _this54.stackMat4[i8] = null;
- }
- _this54.stackMat4 = newArray6;
- }
- _this54.stackMat4[_this54.sizeMat4++] = mat41;
- }
- if(quat1 != null) {
- var tx26 = 0;
- var ty26 = 0;
- var tz26 = 0;
- var tw1 = 1;
- quat1.x = tx26;
- quat1.y = ty26;
- quat1.z = tz26;
- quat1.w = tw1;
- if(_this54.sizeQuat == _this54.stackQuat.length) {
- var newLength7 = _this54.sizeQuat << 1;
- var this8 = new Array(newLength7);
- var newArray7 = this8;
- var _g19 = 0;
- var _g110 = _this54.sizeQuat;
- while(_g19 < _g110) {
- var i9 = _g19++;
- newArray7[i9] = _this54.stackQuat[i9];
- _this54.stackQuat[i9] = null;
- }
- _this54.stackQuat = newArray7;
- }
- _this54.stackQuat[_this54.sizeQuat++] = quat1;
- }
- var _this55 = this.p;
- var mat32 = null;
- var mat42 = null;
- var quat2 = null;
- if(top3 != null) {
- top3.zero();
- if(_this55.sizeVec3 == _this55.stackVec3.length) {
- var newLength8 = _this55.sizeVec3 << 1;
- var this9 = new Array(newLength8);
- var newArray8 = this9;
- var _g20 = 0;
- var _g111 = _this55.sizeVec3;
- while(_g20 < _g111) {
- var i10 = _g20++;
- newArray8[i10] = _this55.stackVec3[i10];
- _this55.stackVec3[i10] = null;
- }
- _this55.stackVec3 = newArray8;
- }
- _this55.stackVec3[_this55.sizeVec3++] = top3;
- }
- if(mat32 != null) {
- var t004 = 1;
- var t014 = 0;
- var t024 = 0;
- var t104 = 0;
- var t114 = 1;
- var t124 = 0;
- var t204 = 0;
- var t214 = 0;
- var t224 = 1;
- mat32.e00 = t004;
- mat32.e01 = t014;
- mat32.e02 = t024;
- mat32.e10 = t104;
- mat32.e11 = t114;
- mat32.e12 = t124;
- mat32.e20 = t204;
- mat32.e21 = t214;
- mat32.e22 = t224;
- if(_this55.sizeMat3 == _this55.stackMat3.length) {
- var newLength9 = _this55.sizeMat3 << 1;
- var this10 = new Array(newLength9);
- var newArray9 = this10;
- var _g27 = 0;
- var _g112 = _this55.sizeMat3;
- while(_g27 < _g112) {
- var i11 = _g27++;
- newArray9[i11] = _this55.stackMat3[i11];
- _this55.stackMat3[i11] = null;
- }
- _this55.stackMat3 = newArray9;
- }
- _this55.stackMat3[_this55.sizeMat3++] = mat32;
- }
- if(mat42 != null) {
- var t005 = 1;
- var t015 = 0;
- var t025 = 0;
- var t032 = 0;
- var t105 = 0;
- var t115 = 1;
- var t125 = 0;
- var t132 = 0;
- var t205 = 0;
- var t215 = 0;
- var t225 = 1;
- var t232 = 0;
- var t302 = 0;
- var t312 = 0;
- var t322 = 0;
- var t332 = 1;
- mat42.e00 = t005;
- mat42.e01 = t015;
- mat42.e02 = t025;
- mat42.e03 = t032;
- mat42.e10 = t105;
- mat42.e11 = t115;
- mat42.e12 = t125;
- mat42.e13 = t132;
- mat42.e20 = t205;
- mat42.e21 = t215;
- mat42.e22 = t225;
- mat42.e23 = t232;
- mat42.e30 = t302;
- mat42.e31 = t312;
- mat42.e32 = t322;
- mat42.e33 = t332;
- if(_this55.sizeMat4 == _this55.stackMat4.length) {
- var newLength10 = _this55.sizeMat4 << 1;
- var this11 = new Array(newLength10);
- var newArray10 = this11;
- var _g28 = 0;
- var _g113 = _this55.sizeMat4;
- while(_g28 < _g113) {
- var i12 = _g28++;
- newArray10[i12] = _this55.stackMat4[i12];
- _this55.stackMat4[i12] = null;
- }
- _this55.stackMat4 = newArray10;
- }
- _this55.stackMat4[_this55.sizeMat4++] = mat42;
- }
- if(quat2 != null) {
- var tx27 = 0;
- var ty27 = 0;
- var tz27 = 0;
- var tw2 = 1;
- quat2.x = tx27;
- quat2.y = ty27;
- quat2.z = tz27;
- quat2.w = tw2;
- if(_this55.sizeQuat == _this55.stackQuat.length) {
- var newLength11 = _this55.sizeQuat << 1;
- var this12 = new Array(newLength11);
- var newArray11 = this12;
- var _g29 = 0;
- var _g114 = _this55.sizeQuat;
- while(_g29 < _g114) {
- var i13 = _g29++;
- newArray11[i13] = _this55.stackQuat[i13];
- _this55.stackQuat[i13] = null;
- }
- _this55.stackQuat = newArray11;
- }
- _this55.stackQuat[_this55.sizeQuat++] = quat2;
- }
- var _this56 = this.p;
- var mat33 = null;
- var mat43 = null;
- var quat3 = null;
- if(top4 != null) {
- top4.zero();
- if(_this56.sizeVec3 == _this56.stackVec3.length) {
- var newLength12 = _this56.sizeVec3 << 1;
- var this13 = new Array(newLength12);
- var newArray12 = this13;
- var _g30 = 0;
- var _g115 = _this56.sizeVec3;
- while(_g30 < _g115) {
- var i14 = _g30++;
- newArray12[i14] = _this56.stackVec3[i14];
- _this56.stackVec3[i14] = null;
- }
- _this56.stackVec3 = newArray12;
- }
- _this56.stackVec3[_this56.sizeVec3++] = top4;
- }
- if(mat33 != null) {
- var t006 = 1;
- var t016 = 0;
- var t026 = 0;
- var t106 = 0;
- var t116 = 1;
- var t126 = 0;
- var t206 = 0;
- var t216 = 0;
- var t226 = 1;
- mat33.e00 = t006;
- mat33.e01 = t016;
- mat33.e02 = t026;
- mat33.e10 = t106;
- mat33.e11 = t116;
- mat33.e12 = t126;
- mat33.e20 = t206;
- mat33.e21 = t216;
- mat33.e22 = t226;
- if(_this56.sizeMat3 == _this56.stackMat3.length) {
- var newLength13 = _this56.sizeMat3 << 1;
- var this14 = new Array(newLength13);
- var newArray13 = this14;
- var _g36 = 0;
- var _g116 = _this56.sizeMat3;
- while(_g36 < _g116) {
- var i15 = _g36++;
- newArray13[i15] = _this56.stackMat3[i15];
- _this56.stackMat3[i15] = null;
- }
- _this56.stackMat3 = newArray13;
- }
- _this56.stackMat3[_this56.sizeMat3++] = mat33;
- }
- if(mat43 != null) {
- var t007 = 1;
- var t017 = 0;
- var t027 = 0;
- var t033 = 0;
- var t107 = 0;
- var t117 = 1;
- var t127 = 0;
- var t133 = 0;
- var t207 = 0;
- var t217 = 0;
- var t227 = 1;
- var t233 = 0;
- var t303 = 0;
- var t313 = 0;
- var t323 = 0;
- var t333 = 1;
- mat43.e00 = t007;
- mat43.e01 = t017;
- mat43.e02 = t027;
- mat43.e03 = t033;
- mat43.e10 = t107;
- mat43.e11 = t117;
- mat43.e12 = t127;
- mat43.e13 = t133;
- mat43.e20 = t207;
- mat43.e21 = t217;
- mat43.e22 = t227;
- mat43.e23 = t233;
- mat43.e30 = t303;
- mat43.e31 = t313;
- mat43.e32 = t323;
- mat43.e33 = t333;
- if(_this56.sizeMat4 == _this56.stackMat4.length) {
- var newLength14 = _this56.sizeMat4 << 1;
- var this15 = new Array(newLength14);
- var newArray14 = this15;
- var _g37 = 0;
- var _g117 = _this56.sizeMat4;
- while(_g37 < _g117) {
- var i16 = _g37++;
- newArray14[i16] = _this56.stackMat4[i16];
- _this56.stackMat4[i16] = null;
- }
- _this56.stackMat4 = newArray14;
- }
- _this56.stackMat4[_this56.sizeMat4++] = mat43;
- }
- if(quat3 != null) {
- var tx28 = 0;
- var ty28 = 0;
- var tz28 = 0;
- var tw3 = 1;
- quat3.x = tx28;
- quat3.y = ty28;
- quat3.z = tz28;
- quat3.w = tw3;
- if(_this56.sizeQuat == _this56.stackQuat.length) {
- var newLength15 = _this56.sizeQuat << 1;
- var this16 = new Array(newLength15);
- var newArray15 = this16;
- var _g38 = 0;
- var _g118 = _this56.sizeQuat;
- while(_g38 < _g118) {
- var i17 = _g38++;
- newArray15[i17] = _this56.stackQuat[i17];
- _this56.stackQuat[i17] = null;
- }
- _this56.stackQuat = newArray15;
- }
- _this56.stackQuat[_this56.sizeQuat++] = quat3;
- }
- var _this57 = this.p;
- var mat34 = null;
- var mat44 = null;
- var quat4 = null;
- if(bottom1 != null) {
- bottom1.zero();
- if(_this57.sizeVec3 == _this57.stackVec3.length) {
- var newLength16 = _this57.sizeVec3 << 1;
- var this17 = new Array(newLength16);
- var newArray16 = this17;
- var _g39 = 0;
- var _g119 = _this57.sizeVec3;
- while(_g39 < _g119) {
- var i18 = _g39++;
- newArray16[i18] = _this57.stackVec3[i18];
- _this57.stackVec3[i18] = null;
- }
- _this57.stackVec3 = newArray16;
- }
- _this57.stackVec3[_this57.sizeVec3++] = bottom1;
- }
- if(mat34 != null) {
- var t008 = 1;
- var t018 = 0;
- var t028 = 0;
- var t108 = 0;
- var t118 = 1;
- var t128 = 0;
- var t208 = 0;
- var t218 = 0;
- var t228 = 1;
- mat34.e00 = t008;
- mat34.e01 = t018;
- mat34.e02 = t028;
- mat34.e10 = t108;
- mat34.e11 = t118;
- mat34.e12 = t128;
- mat34.e20 = t208;
- mat34.e21 = t218;
- mat34.e22 = t228;
- if(_this57.sizeMat3 == _this57.stackMat3.length) {
- var newLength17 = _this57.sizeMat3 << 1;
- var this18 = new Array(newLength17);
- var newArray17 = this18;
- var _g40 = 0;
- var _g120 = _this57.sizeMat3;
- while(_g40 < _g120) {
- var i19 = _g40++;
- newArray17[i19] = _this57.stackMat3[i19];
- _this57.stackMat3[i19] = null;
- }
- _this57.stackMat3 = newArray17;
- }
- _this57.stackMat3[_this57.sizeMat3++] = mat34;
- }
- if(mat44 != null) {
- var t009 = 1;
- var t019 = 0;
- var t029 = 0;
- var t034 = 0;
- var t109 = 0;
- var t119 = 1;
- var t129 = 0;
- var t134 = 0;
- var t209 = 0;
- var t219 = 0;
- var t229 = 1;
- var t234 = 0;
- var t304 = 0;
- var t314 = 0;
- var t324 = 0;
- var t334 = 1;
- mat44.e00 = t009;
- mat44.e01 = t019;
- mat44.e02 = t029;
- mat44.e03 = t034;
- mat44.e10 = t109;
- mat44.e11 = t119;
- mat44.e12 = t129;
- mat44.e13 = t134;
- mat44.e20 = t209;
- mat44.e21 = t219;
- mat44.e22 = t229;
- mat44.e23 = t234;
- mat44.e30 = t304;
- mat44.e31 = t314;
- mat44.e32 = t324;
- mat44.e33 = t334;
- if(_this57.sizeMat4 == _this57.stackMat4.length) {
- var newLength18 = _this57.sizeMat4 << 1;
- var this19 = new Array(newLength18);
- var newArray18 = this19;
- var _g41 = 0;
- var _g121 = _this57.sizeMat4;
- while(_g41 < _g121) {
- var i20 = _g41++;
- newArray18[i20] = _this57.stackMat4[i20];
- _this57.stackMat4[i20] = null;
- }
- _this57.stackMat4 = newArray18;
- }
- _this57.stackMat4[_this57.sizeMat4++] = mat44;
- }
- if(quat4 != null) {
- var tx29 = 0;
- var ty29 = 0;
- var tz29 = 0;
- var tw4 = 1;
- quat4.x = tx29;
- quat4.y = ty29;
- quat4.z = tz29;
- quat4.w = tw4;
- if(_this57.sizeQuat == _this57.stackQuat.length) {
- var newLength19 = _this57.sizeQuat << 1;
- var this20 = new Array(newLength19);
- var newArray19 = this20;
- var _g42 = 0;
- var _g122 = _this57.sizeQuat;
- while(_g42 < _g122) {
- var i23 = _g42++;
- newArray19[i23] = _this57.stackQuat[i23];
- _this57.stackQuat[i23] = null;
- }
- _this57.stackQuat = newArray19;
- }
- _this57.stackQuat[_this57.sizeQuat++] = quat4;
- }
- var _this58 = this.p;
- var mat35 = null;
- var mat45 = null;
- var quat5 = null;
- if(bottom2 != null) {
- bottom2.zero();
- if(_this58.sizeVec3 == _this58.stackVec3.length) {
- var newLength20 = _this58.sizeVec3 << 1;
- var this21 = new Array(newLength20);
- var newArray20 = this21;
- var _g43 = 0;
- var _g123 = _this58.sizeVec3;
- while(_g43 < _g123) {
- var i24 = _g43++;
- newArray20[i24] = _this58.stackVec3[i24];
- _this58.stackVec3[i24] = null;
- }
- _this58.stackVec3 = newArray20;
- }
- _this58.stackVec3[_this58.sizeVec3++] = bottom2;
- }
- if(mat35 != null) {
- var t0010 = 1;
- var t0110 = 0;
- var t0210 = 0;
- var t1010 = 0;
- var t1110 = 1;
- var t1210 = 0;
- var t2010 = 0;
- var t2110 = 0;
- var t2210 = 1;
- mat35.e00 = t0010;
- mat35.e01 = t0110;
- mat35.e02 = t0210;
- mat35.e10 = t1010;
- mat35.e11 = t1110;
- mat35.e12 = t1210;
- mat35.e20 = t2010;
- mat35.e21 = t2110;
- mat35.e22 = t2210;
- if(_this58.sizeMat3 == _this58.stackMat3.length) {
- var newLength21 = _this58.sizeMat3 << 1;
- var this22 = new Array(newLength21);
- var newArray21 = this22;
- var _g44 = 0;
- var _g124 = _this58.sizeMat3;
- while(_g44 < _g124) {
- var i25 = _g44++;
- newArray21[i25] = _this58.stackMat3[i25];
- _this58.stackMat3[i25] = null;
- }
- _this58.stackMat3 = newArray21;
- }
- _this58.stackMat3[_this58.sizeMat3++] = mat35;
- }
- if(mat45 != null) {
- var t0011 = 1;
- var t0111 = 0;
- var t0211 = 0;
- var t035 = 0;
- var t1011 = 0;
- var t1111 = 1;
- var t1211 = 0;
- var t135 = 0;
- var t2011 = 0;
- var t2111 = 0;
- var t2211 = 1;
- var t235 = 0;
- var t305 = 0;
- var t315 = 0;
- var t325 = 0;
- var t335 = 1;
- mat45.e00 = t0011;
- mat45.e01 = t0111;
- mat45.e02 = t0211;
- mat45.e03 = t035;
- mat45.e10 = t1011;
- mat45.e11 = t1111;
- mat45.e12 = t1211;
- mat45.e13 = t135;
- mat45.e20 = t2011;
- mat45.e21 = t2111;
- mat45.e22 = t2211;
- mat45.e23 = t235;
- mat45.e30 = t305;
- mat45.e31 = t315;
- mat45.e32 = t325;
- mat45.e33 = t335;
- if(_this58.sizeMat4 == _this58.stackMat4.length) {
- var newLength22 = _this58.sizeMat4 << 1;
- var this23 = new Array(newLength22);
- var newArray22 = this23;
- var _g45 = 0;
- var _g125 = _this58.sizeMat4;
- while(_g45 < _g125) {
- var i26 = _g45++;
- newArray22[i26] = _this58.stackMat4[i26];
- _this58.stackMat4[i26] = null;
- }
- _this58.stackMat4 = newArray22;
- }
- _this58.stackMat4[_this58.sizeMat4++] = mat45;
- }
- if(quat5 != null) {
- var tx30 = 0;
- var ty30 = 0;
- var tz30 = 0;
- var tw5 = 1;
- quat5.x = tx30;
- quat5.y = ty30;
- quat5.z = tz30;
- quat5.w = tw5;
- if(_this58.sizeQuat == _this58.stackQuat.length) {
- var newLength23 = _this58.sizeQuat << 1;
- var this24 = new Array(newLength23);
- var newArray23 = this24;
- var _g46 = 0;
- var _g126 = _this58.sizeQuat;
- while(_g46 < _g126) {
- var i27 = _g46++;
- newArray23[i27] = _this58.stackQuat[i27];
- _this58.stackQuat[i27] = null;
- }
- _this58.stackQuat = newArray23;
- }
- _this58.stackQuat[_this58.sizeQuat++] = quat5;
- }
- var _this59 = this.p;
- var mat36 = null;
- var mat46 = null;
- var quat6 = null;
- if(bottom3 != null) {
- bottom3.zero();
- if(_this59.sizeVec3 == _this59.stackVec3.length) {
- var newLength24 = _this59.sizeVec3 << 1;
- var this25 = new Array(newLength24);
- var newArray24 = this25;
- var _g47 = 0;
- var _g127 = _this59.sizeVec3;
- while(_g47 < _g127) {
- var i28 = _g47++;
- newArray24[i28] = _this59.stackVec3[i28];
- _this59.stackVec3[i28] = null;
- }
- _this59.stackVec3 = newArray24;
- }
- _this59.stackVec3[_this59.sizeVec3++] = bottom3;
- }
- if(mat36 != null) {
- var t0012 = 1;
- var t0112 = 0;
- var t0212 = 0;
- var t1012 = 0;
- var t1112 = 1;
- var t1212 = 0;
- var t2012 = 0;
- var t2112 = 0;
- var t2212 = 1;
- mat36.e00 = t0012;
- mat36.e01 = t0112;
- mat36.e02 = t0212;
- mat36.e10 = t1012;
- mat36.e11 = t1112;
- mat36.e12 = t1212;
- mat36.e20 = t2012;
- mat36.e21 = t2112;
- mat36.e22 = t2212;
- if(_this59.sizeMat3 == _this59.stackMat3.length) {
- var newLength25 = _this59.sizeMat3 << 1;
- var this26 = new Array(newLength25);
- var newArray25 = this26;
- var _g48 = 0;
- var _g128 = _this59.sizeMat3;
- while(_g48 < _g128) {
- var i29 = _g48++;
- newArray25[i29] = _this59.stackMat3[i29];
- _this59.stackMat3[i29] = null;
- }
- _this59.stackMat3 = newArray25;
- }
- _this59.stackMat3[_this59.sizeMat3++] = mat36;
- }
- if(mat46 != null) {
- var t0013 = 1;
- var t0113 = 0;
- var t0213 = 0;
- var t036 = 0;
- var t1013 = 0;
- var t1113 = 1;
- var t1213 = 0;
- var t136 = 0;
- var t2013 = 0;
- var t2113 = 0;
- var t2213 = 1;
- var t236 = 0;
- var t306 = 0;
- var t316 = 0;
- var t326 = 0;
- var t336 = 1;
- mat46.e00 = t0013;
- mat46.e01 = t0113;
- mat46.e02 = t0213;
- mat46.e03 = t036;
- mat46.e10 = t1013;
- mat46.e11 = t1113;
- mat46.e12 = t1213;
- mat46.e13 = t136;
- mat46.e20 = t2013;
- mat46.e21 = t2113;
- mat46.e22 = t2213;
- mat46.e23 = t236;
- mat46.e30 = t306;
- mat46.e31 = t316;
- mat46.e32 = t326;
- mat46.e33 = t336;
- if(_this59.sizeMat4 == _this59.stackMat4.length) {
- var newLength26 = _this59.sizeMat4 << 1;
- var this27 = new Array(newLength26);
- var newArray26 = this27;
- var _g49 = 0;
- var _g129 = _this59.sizeMat4;
- while(_g49 < _g129) {
- var i30 = _g49++;
- newArray26[i30] = _this59.stackMat4[i30];
- _this59.stackMat4[i30] = null;
- }
- _this59.stackMat4 = newArray26;
- }
- _this59.stackMat4[_this59.sizeMat4++] = mat46;
- }
- if(quat6 != null) {
- var tx31 = 0;
- var ty31 = 0;
- var tz31 = 0;
- var tw6 = 1;
- quat6.x = tx31;
- quat6.y = ty31;
- quat6.z = tz31;
- quat6.w = tw6;
- if(_this59.sizeQuat == _this59.stackQuat.length) {
- var newLength27 = _this59.sizeQuat << 1;
- var this28 = new Array(newLength27);
- var newArray27 = this28;
- var _g50 = 0;
- var _g130 = _this59.sizeQuat;
- while(_g50 < _g130) {
- var i31 = _g50++;
- newArray27[i31] = _this59.stackQuat[i31];
- _this59.stackQuat[i31] = null;
- }
- _this59.stackQuat = newArray27;
- }
- _this59.stackQuat[_this59.sizeQuat++] = quat6;
- }
- var _this60 = this.p;
- var mat37 = null;
- var mat47 = null;
- var quat7 = null;
- if(bottom4 != null) {
- bottom4.zero();
- if(_this60.sizeVec3 == _this60.stackVec3.length) {
- var newLength28 = _this60.sizeVec3 << 1;
- var this29 = new Array(newLength28);
- var newArray28 = this29;
- var _g51 = 0;
- var _g131 = _this60.sizeVec3;
- while(_g51 < _g131) {
- var i32 = _g51++;
- newArray28[i32] = _this60.stackVec3[i32];
- _this60.stackVec3[i32] = null;
- }
- _this60.stackVec3 = newArray28;
- }
- _this60.stackVec3[_this60.sizeVec3++] = bottom4;
- }
- if(mat37 != null) {
- var t0014 = 1;
- var t0114 = 0;
- var t0214 = 0;
- var t1014 = 0;
- var t1114 = 1;
- var t1214 = 0;
- var t2014 = 0;
- var t2114 = 0;
- var t2214 = 1;
- mat37.e00 = t0014;
- mat37.e01 = t0114;
- mat37.e02 = t0214;
- mat37.e10 = t1014;
- mat37.e11 = t1114;
- mat37.e12 = t1214;
- mat37.e20 = t2014;
- mat37.e21 = t2114;
- mat37.e22 = t2214;
- if(_this60.sizeMat3 == _this60.stackMat3.length) {
- var newLength29 = _this60.sizeMat3 << 1;
- var this30 = new Array(newLength29);
- var newArray29 = this30;
- var _g52 = 0;
- var _g132 = _this60.sizeMat3;
- while(_g52 < _g132) {
- var i33 = _g52++;
- newArray29[i33] = _this60.stackMat3[i33];
- _this60.stackMat3[i33] = null;
- }
- _this60.stackMat3 = newArray29;
- }
- _this60.stackMat3[_this60.sizeMat3++] = mat37;
- }
- if(mat47 != null) {
- var t0015 = 1;
- var t0115 = 0;
- var t0215 = 0;
- var t037 = 0;
- var t1015 = 0;
- var t1115 = 1;
- var t1215 = 0;
- var t137 = 0;
- var t2015 = 0;
- var t2115 = 0;
- var t2215 = 1;
- var t237 = 0;
- var t307 = 0;
- var t317 = 0;
- var t327 = 0;
- var t337 = 1;
- mat47.e00 = t0015;
- mat47.e01 = t0115;
- mat47.e02 = t0215;
- mat47.e03 = t037;
- mat47.e10 = t1015;
- mat47.e11 = t1115;
- mat47.e12 = t1215;
- mat47.e13 = t137;
- mat47.e20 = t2015;
- mat47.e21 = t2115;
- mat47.e22 = t2215;
- mat47.e23 = t237;
- mat47.e30 = t307;
- mat47.e31 = t317;
- mat47.e32 = t327;
- mat47.e33 = t337;
- if(_this60.sizeMat4 == _this60.stackMat4.length) {
- var newLength30 = _this60.sizeMat4 << 1;
- var this31 = new Array(newLength30);
- var newArray30 = this31;
- var _g53 = 0;
- var _g133 = _this60.sizeMat4;
- while(_g53 < _g133) {
- var i34 = _g53++;
- newArray30[i34] = _this60.stackMat4[i34];
- _this60.stackMat4[i34] = null;
- }
- _this60.stackMat4 = newArray30;
- }
- _this60.stackMat4[_this60.sizeMat4++] = mat47;
- }
- if(quat7 != null) {
- var tx32 = 0;
- var ty32 = 0;
- var tz32 = 0;
- var tw7 = 1;
- quat7.x = tx32;
- quat7.y = ty32;
- quat7.z = tz32;
- quat7.w = tw7;
- if(_this60.sizeQuat == _this60.stackQuat.length) {
- var newLength31 = _this60.sizeQuat << 1;
- var this32 = new Array(newLength31);
- var newArray31 = this32;
- var _g54 = 0;
- var _g134 = _this60.sizeQuat;
- while(_g54 < _g134) {
- var i35 = _g54++;
- newArray31[i35] = _this60.stackQuat[i35];
- _this60.stackQuat[i35] = null;
- }
- _this60.stackQuat = newArray31;
- }
- _this60.stackQuat[_this60.sizeQuat++] = quat7;
- }
- } else {
- var _g410 = 0;
- while(_g410 < 8) {
- var i36 = _g410++;
- var _this61 = this.tmpCircleNorms[i36];
- var v5 = this.circleCoords[i36];
- _this61.x = v5.x;
- _this61.y = v5.y;
- _this61.z = v5.z;
- var _this62 = _this61;
- var tx33 = _this62.x * m.e00 + _this62.y * m.e01 + _this62.z * m.e02;
- var ty33 = _this62.x * m.e10 + _this62.y * m.e11 + _this62.z * m.e12;
- var tz33 = _this62.x * m.e20 + _this62.y * m.e21 + _this62.z * m.e22;
- _this62.x = tx33;
- _this62.y = ty33;
- _this62.z = tz33;
- var _this63 = this.tmpCircleVerts1[i36];
- var v6 = this.tmpCircleNorms[i36];
- _this63.x = v6.x;
- _this63.y = v6.y;
- _this63.z = v6.z;
- var _this64 = _this63;
- var tx34 = _this64.x * radius;
- var ty34 = _this64.y * radius;
- var tz34 = _this64.z * radius;
- _this64.x = tx34;
- _this64.y = ty34;
- _this64.z = tz34;
- var _this65 = _this64;
- var tx35 = _this65.x + o.x;
- var ty35 = _this65.y + o.y;
- var tz35 = _this65.z + o.z;
- _this65.x = tx35;
- _this65.y = ty35;
- _this65.z = tz35;
- var _this66 = this.tmpCircleVerts2[i36];
- var v7 = this.tmpCircleVerts1[i36];
- _this66.x = v7.x;
- _this66.y = v7.y;
- _this66.z = v7.z;
- var _this67 = this.tmpCircleVerts1[i36];
- var tx36 = _this67.x + ey.x * halfHeight;
- var ty36 = _this67.y + ey.y * halfHeight;
- var tz36 = _this67.z + ey.z * halfHeight;
- _this67.x = tx36;
- _this67.y = ty36;
- _this67.z = tz36;
- var _this68 = this.tmpCircleVerts2[i36];
- var s6 = -halfHeight;
- var tx37 = _this68.x + ey.x * s6;
- var ty37 = _this68.y + ey.y * s6;
- var tz37 = _this68.z + ey.z * s6;
- _this68.x = tx37;
- _this68.y = ty37;
- _this68.z = tz37;
- }
- var _g55 = 0;
- while(_g55 < 8) {
- var i37 = _g55++;
- var v12 = this.tmpCircleVerts1[i37];
- var v22 = this.tmpCircleVerts2[i37];
- var v32 = this.tmpCircleVerts2[(i37 + 1) % 8];
- var v41 = this.tmpCircleVerts1[(i37 + 1) % 8];
- var n12 = this.tmpCircleNorms[i37];
- var n22 = this.tmpCircleNorms[(i37 + 1) % 8];
- this.rect(v12,v22,v32,v41,n12,n12,n22,n22,color);
- }
- }
- var _this69 = this.p;
- var mat38 = null;
- var mat48 = null;
- var quat8 = null;
- if(top != null) {
- top.zero();
- if(_this69.sizeVec3 == _this69.stackVec3.length) {
- var newLength32 = _this69.sizeVec3 << 1;
- var this33 = new Array(newLength32);
- var newArray32 = this33;
- var _g56 = 0;
- var _g135 = _this69.sizeVec3;
- while(_g56 < _g135) {
- var i38 = _g56++;
- newArray32[i38] = _this69.stackVec3[i38];
- _this69.stackVec3[i38] = null;
- }
- _this69.stackVec3 = newArray32;
- }
- _this69.stackVec3[_this69.sizeVec3++] = top;
- }
- if(mat38 != null) {
- var t0016 = 1;
- var t0116 = 0;
- var t0216 = 0;
- var t1016 = 0;
- var t1116 = 1;
- var t1216 = 0;
- var t2016 = 0;
- var t2116 = 0;
- var t2216 = 1;
- mat38.e00 = t0016;
- mat38.e01 = t0116;
- mat38.e02 = t0216;
- mat38.e10 = t1016;
- mat38.e11 = t1116;
- mat38.e12 = t1216;
- mat38.e20 = t2016;
- mat38.e21 = t2116;
- mat38.e22 = t2216;
- if(_this69.sizeMat3 == _this69.stackMat3.length) {
- var newLength33 = _this69.sizeMat3 << 1;
- var this34 = new Array(newLength33);
- var newArray33 = this34;
- var _g57 = 0;
- var _g136 = _this69.sizeMat3;
- while(_g57 < _g136) {
- var i39 = _g57++;
- newArray33[i39] = _this69.stackMat3[i39];
- _this69.stackMat3[i39] = null;
- }
- _this69.stackMat3 = newArray33;
- }
- _this69.stackMat3[_this69.sizeMat3++] = mat38;
- }
- if(mat48 != null) {
- var t0017 = 1;
- var t0117 = 0;
- var t0217 = 0;
- var t038 = 0;
- var t1017 = 0;
- var t1117 = 1;
- var t1217 = 0;
- var t138 = 0;
- var t2017 = 0;
- var t2117 = 0;
- var t2217 = 1;
- var t238 = 0;
- var t308 = 0;
- var t318 = 0;
- var t328 = 0;
- var t338 = 1;
- mat48.e00 = t0017;
- mat48.e01 = t0117;
- mat48.e02 = t0217;
- mat48.e03 = t038;
- mat48.e10 = t1017;
- mat48.e11 = t1117;
- mat48.e12 = t1217;
- mat48.e13 = t138;
- mat48.e20 = t2017;
- mat48.e21 = t2117;
- mat48.e22 = t2217;
- mat48.e23 = t238;
- mat48.e30 = t308;
- mat48.e31 = t318;
- mat48.e32 = t328;
- mat48.e33 = t338;
- if(_this69.sizeMat4 == _this69.stackMat4.length) {
- var newLength34 = _this69.sizeMat4 << 1;
- var this35 = new Array(newLength34);
- var newArray34 = this35;
- var _g58 = 0;
- var _g137 = _this69.sizeMat4;
- while(_g58 < _g137) {
- var i40 = _g58++;
- newArray34[i40] = _this69.stackMat4[i40];
- _this69.stackMat4[i40] = null;
- }
- _this69.stackMat4 = newArray34;
- }
- _this69.stackMat4[_this69.sizeMat4++] = mat48;
- }
- if(quat8 != null) {
- var tx38 = 0;
- var ty38 = 0;
- var tz38 = 0;
- var tw8 = 1;
- quat8.x = tx38;
- quat8.y = ty38;
- quat8.z = tz38;
- quat8.w = tw8;
- if(_this69.sizeQuat == _this69.stackQuat.length) {
- var newLength35 = _this69.sizeQuat << 1;
- var this36 = new Array(newLength35);
- var newArray35 = this36;
- var _g59 = 0;
- var _g138 = _this69.sizeQuat;
- while(_g59 < _g138) {
- var i41 = _g59++;
- newArray35[i41] = _this69.stackQuat[i41];
- _this69.stackQuat[i41] = null;
- }
- _this69.stackQuat = newArray35;
- }
- _this69.stackQuat[_this69.sizeQuat++] = quat8;
- }
- var _this70 = this.p;
- var mat39 = null;
- var mat49 = null;
- var quat9 = null;
- if(bottom != null) {
- bottom.zero();
- if(_this70.sizeVec3 == _this70.stackVec3.length) {
- var newLength36 = _this70.sizeVec3 << 1;
- var this37 = new Array(newLength36);
- var newArray36 = this37;
- var _g60 = 0;
- var _g139 = _this70.sizeVec3;
- while(_g60 < _g139) {
- var i42 = _g60++;
- newArray36[i42] = _this70.stackVec3[i42];
- _this70.stackVec3[i42] = null;
- }
- _this70.stackVec3 = newArray36;
- }
- _this70.stackVec3[_this70.sizeVec3++] = bottom;
- }
- if(mat39 != null) {
- var t0018 = 1;
- var t0118 = 0;
- var t0218 = 0;
- var t1018 = 0;
- var t1118 = 1;
- var t1218 = 0;
- var t2018 = 0;
- var t2118 = 0;
- var t2218 = 1;
- mat39.e00 = t0018;
- mat39.e01 = t0118;
- mat39.e02 = t0218;
- mat39.e10 = t1018;
- mat39.e11 = t1118;
- mat39.e12 = t1218;
- mat39.e20 = t2018;
- mat39.e21 = t2118;
- mat39.e22 = t2218;
- if(_this70.sizeMat3 == _this70.stackMat3.length) {
- var newLength37 = _this70.sizeMat3 << 1;
- var this38 = new Array(newLength37);
- var newArray37 = this38;
- var _g61 = 0;
- var _g140 = _this70.sizeMat3;
- while(_g61 < _g140) {
- var i43 = _g61++;
- newArray37[i43] = _this70.stackMat3[i43];
- _this70.stackMat3[i43] = null;
- }
- _this70.stackMat3 = newArray37;
- }
- _this70.stackMat3[_this70.sizeMat3++] = mat39;
- }
- if(mat49 != null) {
- var t0019 = 1;
- var t0119 = 0;
- var t0219 = 0;
- var t039 = 0;
- var t1019 = 0;
- var t1119 = 1;
- var t1219 = 0;
- var t139 = 0;
- var t2019 = 0;
- var t2119 = 0;
- var t2219 = 1;
- var t239 = 0;
- var t309 = 0;
- var t319 = 0;
- var t329 = 0;
- var t339 = 1;
- mat49.e00 = t0019;
- mat49.e01 = t0119;
- mat49.e02 = t0219;
- mat49.e03 = t039;
- mat49.e10 = t1019;
- mat49.e11 = t1119;
- mat49.e12 = t1219;
- mat49.e13 = t139;
- mat49.e20 = t2019;
- mat49.e21 = t2119;
- mat49.e22 = t2219;
- mat49.e23 = t239;
- mat49.e30 = t309;
- mat49.e31 = t319;
- mat49.e32 = t329;
- mat49.e33 = t339;
- if(_this70.sizeMat4 == _this70.stackMat4.length) {
- var newLength38 = _this70.sizeMat4 << 1;
- var this39 = new Array(newLength38);
- var newArray38 = this39;
- var _g62 = 0;
- var _g141 = _this70.sizeMat4;
- while(_g62 < _g141) {
- var i44 = _g62++;
- newArray38[i44] = _this70.stackMat4[i44];
- _this70.stackMat4[i44] = null;
- }
- _this70.stackMat4 = newArray38;
- }
- _this70.stackMat4[_this70.sizeMat4++] = mat49;
- }
- if(quat9 != null) {
- var tx39 = 0;
- var ty39 = 0;
- var tz39 = 0;
- var tw9 = 1;
- quat9.x = tx39;
- quat9.y = ty39;
- quat9.z = tz39;
- quat9.w = tw9;
- if(_this70.sizeQuat == _this70.stackQuat.length) {
- var newLength39 = _this70.sizeQuat << 1;
- var this40 = new Array(newLength39);
- var newArray39 = this40;
- var _g63 = 0;
- var _g142 = _this70.sizeQuat;
- while(_g63 < _g142) {
- var i45 = _g63++;
- newArray39[i45] = _this70.stackQuat[i45];
- _this70.stackQuat[i45] = null;
- }
- _this70.stackQuat = newArray39;
- }
- _this70.stackQuat[_this70.sizeQuat++] = quat9;
- }
- var _this71 = this.p;
- var mat310 = null;
- var mat410 = null;
- var quat10 = null;
- if(o != null) {
- o.zero();
- if(_this71.sizeVec3 == _this71.stackVec3.length) {
- var newLength40 = _this71.sizeVec3 << 1;
- var this41 = new Array(newLength40);
- var newArray40 = this41;
- var _g64 = 0;
- var _g143 = _this71.sizeVec3;
- while(_g64 < _g143) {
- var i46 = _g64++;
- newArray40[i46] = _this71.stackVec3[i46];
- _this71.stackVec3[i46] = null;
- }
- _this71.stackVec3 = newArray40;
- }
- _this71.stackVec3[_this71.sizeVec3++] = o;
- }
- if(mat310 != null) {
- var t0020 = 1;
- var t0120 = 0;
- var t0220 = 0;
- var t1020 = 0;
- var t1120 = 1;
- var t1220 = 0;
- var t2020 = 0;
- var t2120 = 0;
- var t2220 = 1;
- mat310.e00 = t0020;
- mat310.e01 = t0120;
- mat310.e02 = t0220;
- mat310.e10 = t1020;
- mat310.e11 = t1120;
- mat310.e12 = t1220;
- mat310.e20 = t2020;
- mat310.e21 = t2120;
- mat310.e22 = t2220;
- if(_this71.sizeMat3 == _this71.stackMat3.length) {
- var newLength41 = _this71.sizeMat3 << 1;
- var this42 = new Array(newLength41);
- var newArray41 = this42;
- var _g65 = 0;
- var _g144 = _this71.sizeMat3;
- while(_g65 < _g144) {
- var i47 = _g65++;
- newArray41[i47] = _this71.stackMat3[i47];
- _this71.stackMat3[i47] = null;
- }
- _this71.stackMat3 = newArray41;
- }
- _this71.stackMat3[_this71.sizeMat3++] = mat310;
- }
- if(mat410 != null) {
- var t0021 = 1;
- var t0121 = 0;
- var t0221 = 0;
- var t0310 = 0;
- var t1021 = 0;
- var t1121 = 1;
- var t1221 = 0;
- var t1310 = 0;
- var t2021 = 0;
- var t2121 = 0;
- var t2221 = 1;
- var t2310 = 0;
- var t3010 = 0;
- var t3110 = 0;
- var t3210 = 0;
- var t3310 = 1;
- mat410.e00 = t0021;
- mat410.e01 = t0121;
- mat410.e02 = t0221;
- mat410.e03 = t0310;
- mat410.e10 = t1021;
- mat410.e11 = t1121;
- mat410.e12 = t1221;
- mat410.e13 = t1310;
- mat410.e20 = t2021;
- mat410.e21 = t2121;
- mat410.e22 = t2221;
- mat410.e23 = t2310;
- mat410.e30 = t3010;
- mat410.e31 = t3110;
- mat410.e32 = t3210;
- mat410.e33 = t3310;
- if(_this71.sizeMat4 == _this71.stackMat4.length) {
- var newLength42 = _this71.sizeMat4 << 1;
- var this43 = new Array(newLength42);
- var newArray42 = this43;
- var _g66 = 0;
- var _g145 = _this71.sizeMat4;
- while(_g66 < _g145) {
- var i48 = _g66++;
- newArray42[i48] = _this71.stackMat4[i48];
- _this71.stackMat4[i48] = null;
- }
- _this71.stackMat4 = newArray42;
- }
- _this71.stackMat4[_this71.sizeMat4++] = mat410;
- }
- if(quat10 != null) {
- var tx40 = 0;
- var ty40 = 0;
- var tz40 = 0;
- var tw10 = 1;
- quat10.x = tx40;
- quat10.y = ty40;
- quat10.z = tz40;
- quat10.w = tw10;
- if(_this71.sizeQuat == _this71.stackQuat.length) {
- var newLength43 = _this71.sizeQuat << 1;
- var this44 = new Array(newLength43);
- var newArray43 = this44;
- var _g67 = 0;
- var _g146 = _this71.sizeQuat;
- while(_g67 < _g146) {
- var i49 = _g67++;
- newArray43[i49] = _this71.stackQuat[i49];
- _this71.stackQuat[i49] = null;
- }
- _this71.stackQuat = newArray43;
- }
- _this71.stackQuat[_this71.sizeQuat++] = quat10;
- }
- var _this72 = this.p;
- var vec3 = null;
- var mat411 = null;
- var quat11 = null;
- if(vec3 != null) {
- vec3.zero();
- if(_this72.sizeVec3 == _this72.stackVec3.length) {
- var newLength44 = _this72.sizeVec3 << 1;
- var this45 = new Array(newLength44);
- var newArray44 = this45;
- var _g68 = 0;
- var _g147 = _this72.sizeVec3;
- while(_g68 < _g147) {
- var i50 = _g68++;
- newArray44[i50] = _this72.stackVec3[i50];
- _this72.stackVec3[i50] = null;
- }
- _this72.stackVec3 = newArray44;
- }
- _this72.stackVec3[_this72.sizeVec3++] = vec3;
- }
- if(m != null) {
- var t0022 = 1;
- var t0122 = 0;
- var t0222 = 0;
- var t1022 = 0;
- var t1122 = 1;
- var t1222 = 0;
- var t2022 = 0;
- var t2122 = 0;
- var t2222 = 1;
- m.e00 = t0022;
- m.e01 = t0122;
- m.e02 = t0222;
- m.e10 = t1022;
- m.e11 = t1122;
- m.e12 = t1222;
- m.e20 = t2022;
- m.e21 = t2122;
- m.e22 = t2222;
- if(_this72.sizeMat3 == _this72.stackMat3.length) {
- var newLength45 = _this72.sizeMat3 << 1;
- var this46 = new Array(newLength45);
- var newArray45 = this46;
- var _g69 = 0;
- var _g148 = _this72.sizeMat3;
- while(_g69 < _g148) {
- var i51 = _g69++;
- newArray45[i51] = _this72.stackMat3[i51];
- _this72.stackMat3[i51] = null;
- }
- _this72.stackMat3 = newArray45;
- }
- _this72.stackMat3[_this72.sizeMat3++] = m;
- }
- if(mat411 != null) {
- var t0023 = 1;
- var t0123 = 0;
- var t0223 = 0;
- var t0311 = 0;
- var t1023 = 0;
- var t1123 = 1;
- var t1223 = 0;
- var t1311 = 0;
- var t2023 = 0;
- var t2123 = 0;
- var t2223 = 1;
- var t2311 = 0;
- var t3011 = 0;
- var t3111 = 0;
- var t3211 = 0;
- var t3311 = 1;
- mat411.e00 = t0023;
- mat411.e01 = t0123;
- mat411.e02 = t0223;
- mat411.e03 = t0311;
- mat411.e10 = t1023;
- mat411.e11 = t1123;
- mat411.e12 = t1223;
- mat411.e13 = t1311;
- mat411.e20 = t2023;
- mat411.e21 = t2123;
- mat411.e22 = t2223;
- mat411.e23 = t2311;
- mat411.e30 = t3011;
- mat411.e31 = t3111;
- mat411.e32 = t3211;
- mat411.e33 = t3311;
- if(_this72.sizeMat4 == _this72.stackMat4.length) {
- var newLength46 = _this72.sizeMat4 << 1;
- var this47 = new Array(newLength46);
- var newArray46 = this47;
- var _g70 = 0;
- var _g149 = _this72.sizeMat4;
- while(_g70 < _g149) {
- var i52 = _g70++;
- newArray46[i52] = _this72.stackMat4[i52];
- _this72.stackMat4[i52] = null;
- }
- _this72.stackMat4 = newArray46;
- }
- _this72.stackMat4[_this72.sizeMat4++] = mat411;
- }
- if(quat11 != null) {
- var tx41 = 0;
- var ty41 = 0;
- var tz41 = 0;
- var tw11 = 1;
- quat11.x = tx41;
- quat11.y = ty41;
- quat11.z = tz41;
- quat11.w = tw11;
- if(_this72.sizeQuat == _this72.stackQuat.length) {
- var newLength47 = _this72.sizeQuat << 1;
- var this48 = new Array(newLength47);
- var newArray47 = this48;
- var _g71 = 0;
- var _g150 = _this72.sizeQuat;
- while(_g71 < _g150) {
- var i53 = _g71++;
- newArray47[i53] = _this72.stackQuat[i53];
- _this72.stackQuat[i53] = null;
- }
- _this72.stackQuat = newArray47;
- }
- _this72.stackQuat[_this72.sizeQuat++] = quat11;
- }
- var _this73 = this.p;
- var mat311 = null;
- var mat412 = null;
- var quat12 = null;
- if(ex != null) {
- ex.zero();
- if(_this73.sizeVec3 == _this73.stackVec3.length) {
- var newLength48 = _this73.sizeVec3 << 1;
- var this49 = new Array(newLength48);
- var newArray48 = this49;
- var _g72 = 0;
- var _g151 = _this73.sizeVec3;
- while(_g72 < _g151) {
- var i54 = _g72++;
- newArray48[i54] = _this73.stackVec3[i54];
- _this73.stackVec3[i54] = null;
- }
- _this73.stackVec3 = newArray48;
- }
- _this73.stackVec3[_this73.sizeVec3++] = ex;
- }
- if(mat311 != null) {
- var t0024 = 1;
- var t0124 = 0;
- var t0224 = 0;
- var t1024 = 0;
- var t1124 = 1;
- var t1224 = 0;
- var t2024 = 0;
- var t2124 = 0;
- var t2224 = 1;
- mat311.e00 = t0024;
- mat311.e01 = t0124;
- mat311.e02 = t0224;
- mat311.e10 = t1024;
- mat311.e11 = t1124;
- mat311.e12 = t1224;
- mat311.e20 = t2024;
- mat311.e21 = t2124;
- mat311.e22 = t2224;
- if(_this73.sizeMat3 == _this73.stackMat3.length) {
- var newLength49 = _this73.sizeMat3 << 1;
- var this50 = new Array(newLength49);
- var newArray49 = this50;
- var _g73 = 0;
- var _g152 = _this73.sizeMat3;
- while(_g73 < _g152) {
- var i55 = _g73++;
- newArray49[i55] = _this73.stackMat3[i55];
- _this73.stackMat3[i55] = null;
- }
- _this73.stackMat3 = newArray49;
- }
- _this73.stackMat3[_this73.sizeMat3++] = mat311;
- }
- if(mat412 != null) {
- var t0025 = 1;
- var t0125 = 0;
- var t0225 = 0;
- var t0312 = 0;
- var t1025 = 0;
- var t1125 = 1;
- var t1225 = 0;
- var t1312 = 0;
- var t2025 = 0;
- var t2125 = 0;
- var t2225 = 1;
- var t2312 = 0;
- var t3012 = 0;
- var t3112 = 0;
- var t3212 = 0;
- var t3312 = 1;
- mat412.e00 = t0025;
- mat412.e01 = t0125;
- mat412.e02 = t0225;
- mat412.e03 = t0312;
- mat412.e10 = t1025;
- mat412.e11 = t1125;
- mat412.e12 = t1225;
- mat412.e13 = t1312;
- mat412.e20 = t2025;
- mat412.e21 = t2125;
- mat412.e22 = t2225;
- mat412.e23 = t2312;
- mat412.e30 = t3012;
- mat412.e31 = t3112;
- mat412.e32 = t3212;
- mat412.e33 = t3312;
- if(_this73.sizeMat4 == _this73.stackMat4.length) {
- var newLength50 = _this73.sizeMat4 << 1;
- var this51 = new Array(newLength50);
- var newArray50 = this51;
- var _g74 = 0;
- var _g153 = _this73.sizeMat4;
- while(_g74 < _g153) {
- var i56 = _g74++;
- newArray50[i56] = _this73.stackMat4[i56];
- _this73.stackMat4[i56] = null;
- }
- _this73.stackMat4 = newArray50;
- }
- _this73.stackMat4[_this73.sizeMat4++] = mat412;
- }
- if(quat12 != null) {
- var tx42 = 0;
- var ty42 = 0;
- var tz42 = 0;
- var tw12 = 1;
- quat12.x = tx42;
- quat12.y = ty42;
- quat12.z = tz42;
- quat12.w = tw12;
- if(_this73.sizeQuat == _this73.stackQuat.length) {
- var newLength51 = _this73.sizeQuat << 1;
- var this52 = new Array(newLength51);
- var newArray51 = this52;
- var _g75 = 0;
- var _g154 = _this73.sizeQuat;
- while(_g75 < _g154) {
- var i57 = _g75++;
- newArray51[i57] = _this73.stackQuat[i57];
- _this73.stackQuat[i57] = null;
- }
- _this73.stackQuat = newArray51;
- }
- _this73.stackQuat[_this73.sizeQuat++] = quat12;
- }
- var _this74 = this.p;
- var mat312 = null;
- var mat413 = null;
- var quat13 = null;
- if(ey != null) {
- ey.zero();
- if(_this74.sizeVec3 == _this74.stackVec3.length) {
- var newLength52 = _this74.sizeVec3 << 1;
- var this53 = new Array(newLength52);
- var newArray52 = this53;
- var _g76 = 0;
- var _g155 = _this74.sizeVec3;
- while(_g76 < _g155) {
- var i58 = _g76++;
- newArray52[i58] = _this74.stackVec3[i58];
- _this74.stackVec3[i58] = null;
- }
- _this74.stackVec3 = newArray52;
- }
- _this74.stackVec3[_this74.sizeVec3++] = ey;
- }
- if(mat312 != null) {
- var t0026 = 1;
- var t0126 = 0;
- var t0226 = 0;
- var t1026 = 0;
- var t1126 = 1;
- var t1226 = 0;
- var t2026 = 0;
- var t2126 = 0;
- var t2226 = 1;
- mat312.e00 = t0026;
- mat312.e01 = t0126;
- mat312.e02 = t0226;
- mat312.e10 = t1026;
- mat312.e11 = t1126;
- mat312.e12 = t1226;
- mat312.e20 = t2026;
- mat312.e21 = t2126;
- mat312.e22 = t2226;
- if(_this74.sizeMat3 == _this74.stackMat3.length) {
- var newLength53 = _this74.sizeMat3 << 1;
- var this54 = new Array(newLength53);
- var newArray53 = this54;
- var _g77 = 0;
- var _g156 = _this74.sizeMat3;
- while(_g77 < _g156) {
- var i59 = _g77++;
- newArray53[i59] = _this74.stackMat3[i59];
- _this74.stackMat3[i59] = null;
- }
- _this74.stackMat3 = newArray53;
- }
- _this74.stackMat3[_this74.sizeMat3++] = mat312;
- }
- if(mat413 != null) {
- var t0027 = 1;
- var t0127 = 0;
- var t0227 = 0;
- var t0313 = 0;
- var t1027 = 0;
- var t1127 = 1;
- var t1227 = 0;
- var t1313 = 0;
- var t2027 = 0;
- var t2127 = 0;
- var t2227 = 1;
- var t2313 = 0;
- var t3013 = 0;
- var t3113 = 0;
- var t3213 = 0;
- var t3313 = 1;
- mat413.e00 = t0027;
- mat413.e01 = t0127;
- mat413.e02 = t0227;
- mat413.e03 = t0313;
- mat413.e10 = t1027;
- mat413.e11 = t1127;
- mat413.e12 = t1227;
- mat413.e13 = t1313;
- mat413.e20 = t2027;
- mat413.e21 = t2127;
- mat413.e22 = t2227;
- mat413.e23 = t2313;
- mat413.e30 = t3013;
- mat413.e31 = t3113;
- mat413.e32 = t3213;
- mat413.e33 = t3313;
- if(_this74.sizeMat4 == _this74.stackMat4.length) {
- var newLength54 = _this74.sizeMat4 << 1;
- var this55 = new Array(newLength54);
- var newArray54 = this55;
- var _g78 = 0;
- var _g157 = _this74.sizeMat4;
- while(_g78 < _g157) {
- var i60 = _g78++;
- newArray54[i60] = _this74.stackMat4[i60];
- _this74.stackMat4[i60] = null;
- }
- _this74.stackMat4 = newArray54;
- }
- _this74.stackMat4[_this74.sizeMat4++] = mat413;
- }
- if(quat13 != null) {
- var tx43 = 0;
- var ty43 = 0;
- var tz43 = 0;
- var tw13 = 1;
- quat13.x = tx43;
- quat13.y = ty43;
- quat13.z = tz43;
- quat13.w = tw13;
- if(_this74.sizeQuat == _this74.stackQuat.length) {
- var newLength55 = _this74.sizeQuat << 1;
- var this56 = new Array(newLength55);
- var newArray55 = this56;
- var _g79 = 0;
- var _g158 = _this74.sizeQuat;
- while(_g79 < _g158) {
- var i61 = _g79++;
- newArray55[i61] = _this74.stackQuat[i61];
- _this74.stackQuat[i61] = null;
- }
- _this74.stackQuat = newArray55;
- }
- _this74.stackQuat[_this74.sizeQuat++] = quat13;
- }
- var _this75 = this.p;
- var mat313 = null;
- var mat414 = null;
- var quat14 = null;
- if(ez != null) {
- ez.zero();
- if(_this75.sizeVec3 == _this75.stackVec3.length) {
- var newLength56 = _this75.sizeVec3 << 1;
- var this57 = new Array(newLength56);
- var newArray56 = this57;
- var _g80 = 0;
- var _g159 = _this75.sizeVec3;
- while(_g80 < _g159) {
- var i62 = _g80++;
- newArray56[i62] = _this75.stackVec3[i62];
- _this75.stackVec3[i62] = null;
- }
- _this75.stackVec3 = newArray56;
- }
- _this75.stackVec3[_this75.sizeVec3++] = ez;
- }
- if(mat313 != null) {
- var t0028 = 1;
- var t0128 = 0;
- var t0228 = 0;
- var t1028 = 0;
- var t1128 = 1;
- var t1228 = 0;
- var t2028 = 0;
- var t2128 = 0;
- var t2228 = 1;
- mat313.e00 = t0028;
- mat313.e01 = t0128;
- mat313.e02 = t0228;
- mat313.e10 = t1028;
- mat313.e11 = t1128;
- mat313.e12 = t1228;
- mat313.e20 = t2028;
- mat313.e21 = t2128;
- mat313.e22 = t2228;
- if(_this75.sizeMat3 == _this75.stackMat3.length) {
- var newLength57 = _this75.sizeMat3 << 1;
- var this58 = new Array(newLength57);
- var newArray57 = this58;
- var _g81 = 0;
- var _g160 = _this75.sizeMat3;
- while(_g81 < _g160) {
- var i63 = _g81++;
- newArray57[i63] = _this75.stackMat3[i63];
- _this75.stackMat3[i63] = null;
- }
- _this75.stackMat3 = newArray57;
- }
- _this75.stackMat3[_this75.sizeMat3++] = mat313;
- }
- if(mat414 != null) {
- var t0029 = 1;
- var t0129 = 0;
- var t0229 = 0;
- var t0314 = 0;
- var t1029 = 0;
- var t1129 = 1;
- var t1229 = 0;
- var t1314 = 0;
- var t2029 = 0;
- var t2129 = 0;
- var t2229 = 1;
- var t2314 = 0;
- var t3014 = 0;
- var t3114 = 0;
- var t3214 = 0;
- var t3314 = 1;
- mat414.e00 = t0029;
- mat414.e01 = t0129;
- mat414.e02 = t0229;
- mat414.e03 = t0314;
- mat414.e10 = t1029;
- mat414.e11 = t1129;
- mat414.e12 = t1229;
- mat414.e13 = t1314;
- mat414.e20 = t2029;
- mat414.e21 = t2129;
- mat414.e22 = t2229;
- mat414.e23 = t2314;
- mat414.e30 = t3014;
- mat414.e31 = t3114;
- mat414.e32 = t3214;
- mat414.e33 = t3314;
- if(_this75.sizeMat4 == _this75.stackMat4.length) {
- var newLength58 = _this75.sizeMat4 << 1;
- var this59 = new Array(newLength58);
- var newArray58 = this59;
- var _g82 = 0;
- var _g161 = _this75.sizeMat4;
- while(_g82 < _g161) {
- var i64 = _g82++;
- newArray58[i64] = _this75.stackMat4[i64];
- _this75.stackMat4[i64] = null;
- }
- _this75.stackMat4 = newArray58;
- }
- _this75.stackMat4[_this75.sizeMat4++] = mat414;
- }
- if(quat14 != null) {
- var tx44 = 0;
- var ty44 = 0;
- var tz44 = 0;
- var tw14 = 1;
- quat14.x = tx44;
- quat14.y = ty44;
- quat14.z = tz44;
- quat14.w = tw14;
- if(_this75.sizeQuat == _this75.stackQuat.length) {
- var newLength59 = _this75.sizeQuat << 1;
- var this60 = new Array(newLength59);
- var newArray59 = this60;
- var _g83 = 0;
- var _g162 = _this75.sizeQuat;
- while(_g83 < _g162) {
- var i65 = _g83++;
- newArray59[i65] = _this75.stackQuat[i65];
- _this75.stackQuat[i65] = null;
- }
- _this75.stackQuat = newArray59;
- }
- _this75.stackQuat[_this75.sizeQuat++] = quat14;
- }
- }
- sphere(tf,radius,color) {
- var _this = this.p;
- var o = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
- var _this1 = this.p;
- var m = _this1.sizeMat3 == 0 ? new oimo.common.Mat3() : _this1.stackMat3[--_this1.sizeMat3];
- var v = o;
- v.x = tf._positionX;
- v.y = tf._positionY;
- v.z = tf._positionZ;
- var m1 = m;
- m1.e00 = tf._rotation00;
- m1.e01 = tf._rotation01;
- m1.e02 = tf._rotation02;
- m1.e10 = tf._rotation10;
- m1.e11 = tf._rotation11;
- m1.e12 = tf._rotation12;
- m1.e20 = tf._rotation20;
- m1.e21 = tf._rotation21;
- m1.e22 = tf._rotation22;
- var nt = 4;
- var np = 8;
- var vs = this.tmpSphereVerts;
- var ns = this.tmpSphereNorms;
- var _g = 0;
- var _g1 = nt + 1;
- while(_g < _g1) {
- var i = _g++;
- var n = this.tmpSphereVerts[i].length;
- var _g2 = 0;
- var _g11 = n;
- while(_g2 < _g11) {
- var j = _g2++;
- var _this2 = ns[i][j];
- var v1 = this.sphereCoords[i][j];
- _this2.x = v1.x;
- _this2.y = v1.y;
- _this2.z = v1.z;
- var _this3 = _this2;
- var tx = _this3.x * m.e00 + _this3.y * m.e01 + _this3.z * m.e02;
- var ty = _this3.x * m.e10 + _this3.y * m.e11 + _this3.z * m.e12;
- var tz = _this3.x * m.e20 + _this3.y * m.e21 + _this3.z * m.e22;
- _this3.x = tx;
- _this3.y = ty;
- _this3.z = tz;
- var _this4 = vs[i][j];
- var v2 = ns[i][j];
- _this4.x = v2.x;
- _this4.y = v2.y;
- _this4.z = v2.z;
- var _this5 = _this4;
- var tx1 = _this5.x * radius;
- var ty1 = _this5.y * radius;
- var tz1 = _this5.z * radius;
- _this5.x = tx1;
- _this5.y = ty1;
- _this5.z = tz1;
- var _this6 = _this5;
- var tx2 = _this6.x + o.x;
- var ty2 = _this6.y + o.y;
- var tz2 = _this6.z + o.z;
- _this6.x = tx2;
- _this6.y = ty2;
- _this6.z = tz2;
- }
- }
- var _g21 = 0;
- var _g3 = nt;
- while(_g21 < _g3) {
- var i1 = _g21++;
- var _g22 = 0;
- var _g31 = np;
- while(_g22 < _g31) {
- var j1 = _g22++;
- var v11;
- var v21;
- var v3;
- var v4;
- var n1;
- var n2;
- var n3;
- var n4;
- if(i1 == 0) {
- if(this.wireframe) {
- v11 = vs[0][0];
- v21 = vs[1][j1];
- this.line(v11,v21,color);
- } else {
- v11 = vs[0][0];
- v21 = vs[1][j1];
- v3 = vs[1][(j1 + 1) % np];
- n1 = ns[0][0];
- n2 = ns[1][j1];
- n3 = ns[1][(j1 + 1) % np];
- this.triangle(v11,v21,v3,n1,n2,n3,color);
- }
- } else if(i1 == nt - 1) {
- if(this.wireframe) {
- v11 = vs[nt][0];
- v21 = vs[i1][(j1 + 1) % np];
- v3 = vs[i1][j1];
- this.line(v11,v21,color);
- this.line(v21,v3,color);
- } else {
- v11 = vs[nt][0];
- v21 = vs[i1][(j1 + 1) % np];
- v3 = vs[i1][j1];
- n1 = ns[nt][0];
- n2 = ns[i1][(j1 + 1) % np];
- n3 = ns[i1][j1];
- this.triangle(v11,v21,v3,n1,n2,n3,color);
- }
- } else if(this.wireframe) {
- v11 = vs[i1][j1];
- v21 = vs[i1][(j1 + 1) % np];
- v3 = vs[i1 + 1][j1];
- this.line(v11,v21,color);
- this.line(v11,v3,color);
- } else {
- v11 = vs[i1][j1];
- v21 = vs[i1][(j1 + 1) % np];
- v3 = vs[i1 + 1][j1];
- v4 = vs[i1 + 1][(j1 + 1) % np];
- n1 = ns[i1][j1];
- n2 = ns[i1][(j1 + 1) % np];
- n3 = ns[i1 + 1][j1];
- n4 = ns[i1 + 1][(j1 + 1) % np];
- this.rect(v11,v3,v4,v21,n1,n3,n4,n2,color);
- }
- }
- }
- var _this7 = this.p;
- var mat3 = null;
- var mat4 = null;
- var quat = null;
- if(o != null) {
- o.zero();
- if(_this7.sizeVec3 == _this7.stackVec3.length) {
- var newLength = _this7.sizeVec3 << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g4 = 0;
- var _g12 = _this7.sizeVec3;
- while(_g4 < _g12) {
- var i2 = _g4++;
- newArray[i2] = _this7.stackVec3[i2];
- _this7.stackVec3[i2] = null;
- }
- _this7.stackVec3 = newArray;
- }
- _this7.stackVec3[_this7.sizeVec3++] = o;
- }
- if(mat3 != null) {
- var t00 = 1;
- var t01 = 0;
- var t02 = 0;
- var t10 = 0;
- var t11 = 1;
- var t12 = 0;
- var t20 = 0;
- var t21 = 0;
- var t22 = 1;
- mat3.e00 = t00;
- mat3.e01 = t01;
- mat3.e02 = t02;
- mat3.e10 = t10;
- mat3.e11 = t11;
- mat3.e12 = t12;
- mat3.e20 = t20;
- mat3.e21 = t21;
- mat3.e22 = t22;
- if(_this7.sizeMat3 == _this7.stackMat3.length) {
- var newLength1 = _this7.sizeMat3 << 1;
- var this2 = new Array(newLength1);
- var newArray1 = this2;
- var _g5 = 0;
- var _g13 = _this7.sizeMat3;
- while(_g5 < _g13) {
- var i3 = _g5++;
- newArray1[i3] = _this7.stackMat3[i3];
- _this7.stackMat3[i3] = null;
- }
- _this7.stackMat3 = newArray1;
- }
- _this7.stackMat3[_this7.sizeMat3++] = mat3;
- }
- if(mat4 != null) {
- var t001 = 1;
- var t011 = 0;
- var t021 = 0;
- var t03 = 0;
- var t101 = 0;
- var t111 = 1;
- var t121 = 0;
- var t13 = 0;
- var t201 = 0;
- var t211 = 0;
- var t221 = 1;
- var t23 = 0;
- var t30 = 0;
- var t31 = 0;
- var t32 = 0;
- var t33 = 1;
- mat4.e00 = t001;
- mat4.e01 = t011;
- mat4.e02 = t021;
- mat4.e03 = t03;
- mat4.e10 = t101;
- mat4.e11 = t111;
- mat4.e12 = t121;
- mat4.e13 = t13;
- mat4.e20 = t201;
- mat4.e21 = t211;
- mat4.e22 = t221;
- mat4.e23 = t23;
- mat4.e30 = t30;
- mat4.e31 = t31;
- mat4.e32 = t32;
- mat4.e33 = t33;
- if(_this7.sizeMat4 == _this7.stackMat4.length) {
- var newLength2 = _this7.sizeMat4 << 1;
- var this3 = new Array(newLength2);
- var newArray2 = this3;
- var _g6 = 0;
- var _g14 = _this7.sizeMat4;
- while(_g6 < _g14) {
- var i4 = _g6++;
- newArray2[i4] = _this7.stackMat4[i4];
- _this7.stackMat4[i4] = null;
- }
- _this7.stackMat4 = newArray2;
- }
- _this7.stackMat4[_this7.sizeMat4++] = mat4;
- }
- if(quat != null) {
- var tx3 = 0;
- var ty3 = 0;
- var tz3 = 0;
- var tw = 1;
- quat.x = tx3;
- quat.y = ty3;
- quat.z = tz3;
- quat.w = tw;
- if(_this7.sizeQuat == _this7.stackQuat.length) {
- var newLength3 = _this7.sizeQuat << 1;
- var this4 = new Array(newLength3);
- var newArray3 = this4;
- var _g7 = 0;
- var _g15 = _this7.sizeQuat;
- while(_g7 < _g15) {
- var i5 = _g7++;
- newArray3[i5] = _this7.stackQuat[i5];
- _this7.stackQuat[i5] = null;
- }
- _this7.stackQuat = newArray3;
- }
- _this7.stackQuat[_this7.sizeQuat++] = quat;
- }
- var _this8 = this.p;
- var vec3 = null;
- var mat41 = null;
- var quat1 = null;
- if(vec3 != null) {
- vec3.zero();
- if(_this8.sizeVec3 == _this8.stackVec3.length) {
- var newLength4 = _this8.sizeVec3 << 1;
- var this5 = new Array(newLength4);
- var newArray4 = this5;
- var _g8 = 0;
- var _g16 = _this8.sizeVec3;
- while(_g8 < _g16) {
- var i6 = _g8++;
- newArray4[i6] = _this8.stackVec3[i6];
- _this8.stackVec3[i6] = null;
- }
- _this8.stackVec3 = newArray4;
- }
- _this8.stackVec3[_this8.sizeVec3++] = vec3;
- }
- if(m != null) {
- var t002 = 1;
- var t012 = 0;
- var t022 = 0;
- var t102 = 0;
- var t112 = 1;
- var t122 = 0;
- var t202 = 0;
- var t212 = 0;
- var t222 = 1;
- m.e00 = t002;
- m.e01 = t012;
- m.e02 = t022;
- m.e10 = t102;
- m.e11 = t112;
- m.e12 = t122;
- m.e20 = t202;
- m.e21 = t212;
- m.e22 = t222;
- if(_this8.sizeMat3 == _this8.stackMat3.length) {
- var newLength5 = _this8.sizeMat3 << 1;
- var this6 = new Array(newLength5);
- var newArray5 = this6;
- var _g9 = 0;
- var _g17 = _this8.sizeMat3;
- while(_g9 < _g17) {
- var i7 = _g9++;
- newArray5[i7] = _this8.stackMat3[i7];
- _this8.stackMat3[i7] = null;
- }
- _this8.stackMat3 = newArray5;
- }
- _this8.stackMat3[_this8.sizeMat3++] = m;
- }
- if(mat41 != null) {
- var t003 = 1;
- var t013 = 0;
- var t023 = 0;
- var t031 = 0;
- var t103 = 0;
- var t113 = 1;
- var t123 = 0;
- var t131 = 0;
- var t203 = 0;
- var t213 = 0;
- var t223 = 1;
- var t231 = 0;
- var t301 = 0;
- var t311 = 0;
- var t321 = 0;
- var t331 = 1;
- mat41.e00 = t003;
- mat41.e01 = t013;
- mat41.e02 = t023;
- mat41.e03 = t031;
- mat41.e10 = t103;
- mat41.e11 = t113;
- mat41.e12 = t123;
- mat41.e13 = t131;
- mat41.e20 = t203;
- mat41.e21 = t213;
- mat41.e22 = t223;
- mat41.e23 = t231;
- mat41.e30 = t301;
- mat41.e31 = t311;
- mat41.e32 = t321;
- mat41.e33 = t331;
- if(_this8.sizeMat4 == _this8.stackMat4.length) {
- var newLength6 = _this8.sizeMat4 << 1;
- var this7 = new Array(newLength6);
- var newArray6 = this7;
- var _g10 = 0;
- var _g18 = _this8.sizeMat4;
- while(_g10 < _g18) {
- var i8 = _g10++;
- newArray6[i8] = _this8.stackMat4[i8];
- _this8.stackMat4[i8] = null;
- }
- _this8.stackMat4 = newArray6;
- }
- _this8.stackMat4[_this8.sizeMat4++] = mat41;
- }
- if(quat1 != null) {
- var tx4 = 0;
- var ty4 = 0;
- var tz4 = 0;
- var tw1 = 1;
- quat1.x = tx4;
- quat1.y = ty4;
- quat1.z = tz4;
- quat1.w = tw1;
- if(_this8.sizeQuat == _this8.stackQuat.length) {
- var newLength7 = _this8.sizeQuat << 1;
- var this8 = new Array(newLength7);
- var newArray7 = this8;
- var _g19 = 0;
- var _g110 = _this8.sizeQuat;
- while(_g19 < _g110) {
- var i9 = _g19++;
- newArray7[i9] = _this8.stackQuat[i9];
- _this8.stackQuat[i9] = null;
- }
- _this8.stackQuat = newArray7;
- }
- _this8.stackQuat[_this8.sizeQuat++] = quat1;
- }
- }
- box(tf,halfExtents,color) {
- var _this = this.p;
- var ex = _this.sizeVec3 == 0 ? new oimo.common.Vec3() : _this.stackVec3[--_this.sizeVec3];
- var _this1 = this.p;
- var ey = _this1.sizeVec3 == 0 ? new oimo.common.Vec3() : _this1.stackVec3[--_this1.sizeVec3];
- var _this2 = this.p;
- var ez = _this2.sizeVec3 == 0 ? new oimo.common.Vec3() : _this2.stackVec3[--_this2.sizeVec3];
- var _this3 = this.p;
- var o = _this3.sizeVec3 == 0 ? new oimo.common.Vec3() : _this3.stackVec3[--_this3.sizeVec3];
- var _this4 = this.p;
- var m = _this4.sizeMat3 == 0 ? new oimo.common.Mat3() : _this4.stackMat3[--_this4.sizeMat3];
- var v = o;
- v.x = tf._positionX;
- v.y = tf._positionY;
- v.z = tf._positionZ;
- var m1 = m;
- m1.e00 = tf._rotation00;
- m1.e01 = tf._rotation01;
- m1.e02 = tf._rotation02;
- m1.e10 = tf._rotation10;
- m1.e11 = tf._rotation11;
- m1.e12 = tf._rotation12;
- m1.e20 = tf._rotation20;
- m1.e21 = tf._rotation21;
- m1.e22 = tf._rotation22;
- ex.init(m.e00,m.e10,m.e20);
- ey.init(m.e01,m.e11,m.e21);
- ez.init(m.e02,m.e12,m.e22);
- var hx = halfExtents.x;
- var hy = halfExtents.y;
- var hz = halfExtents.z;
- var _this5 = this.p;
- var _this6 = _this5.sizeVec3 == 0 ? new oimo.common.Vec3() : _this5.stackVec3[--_this5.sizeVec3];
- _this6.x = o.x;
- _this6.y = o.y;
- _this6.z = o.z;
- var _this7 = _this6;
- var s = -hx;
- var tx = _this7.x + ex.x * s;
- var ty = _this7.y + ex.y * s;
- var tz = _this7.z + ex.z * s;
- _this7.x = tx;
- _this7.y = ty;
- _this7.z = tz;
- var _this8 = _this7;
- var s1 = -hy;
- var tx1 = _this8.x + ey.x * s1;
- var ty1 = _this8.y + ey.y * s1;
- var tz1 = _this8.z + ey.z * s1;
- _this8.x = tx1;
- _this8.y = ty1;
- _this8.z = tz1;
- var _this9 = _this8;
- var s2 = -hz;
- var tx2 = _this9.x + ez.x * s2;
- var ty2 = _this9.y + ez.y * s2;
- var tz2 = _this9.z + ez.z * s2;
- _this9.x = tx2;
- _this9.y = ty2;
- _this9.z = tz2;
- var v1 = _this9;
- var _this10 = this.p;
- var _this11 = _this10.sizeVec3 == 0 ? new oimo.common.Vec3() : _this10.stackVec3[--_this10.sizeVec3];
- _this11.x = o.x;
- _this11.y = o.y;
- _this11.z = o.z;
- var _this12 = _this11;
- var s3 = -hx;
- var tx3 = _this12.x + ex.x * s3;
- var ty3 = _this12.y + ex.y * s3;
- var tz3 = _this12.z + ex.z * s3;
- _this12.x = tx3;
- _this12.y = ty3;
- _this12.z = tz3;
- var _this13 = _this12;
- var s4 = -hy;
- var tx4 = _this13.x + ey.x * s4;
- var ty4 = _this13.y + ey.y * s4;
- var tz4 = _this13.z + ey.z * s4;
- _this13.x = tx4;
- _this13.y = ty4;
- _this13.z = tz4;
- var _this14 = _this13;
- var tx5 = _this14.x + ez.x * hz;
- var ty5 = _this14.y + ez.y * hz;
- var tz5 = _this14.z + ez.z * hz;
- _this14.x = tx5;
- _this14.y = ty5;
- _this14.z = tz5;
- var v2 = _this14;
- var _this15 = this.p;
- var _this16 = _this15.sizeVec3 == 0 ? new oimo.common.Vec3() : _this15.stackVec3[--_this15.sizeVec3];
- _this16.x = o.x;
- _this16.y = o.y;
- _this16.z = o.z;
- var _this17 = _this16;
- var s5 = -hx;
- var tx6 = _this17.x + ex.x * s5;
- var ty6 = _this17.y + ex.y * s5;
- var tz6 = _this17.z + ex.z * s5;
- _this17.x = tx6;
- _this17.y = ty6;
- _this17.z = tz6;
- var _this18 = _this17;
- var tx7 = _this18.x + ey.x * hy;
- var ty7 = _this18.y + ey.y * hy;
- var tz7 = _this18.z + ey.z * hy;
- _this18.x = tx7;
- _this18.y = ty7;
- _this18.z = tz7;
- var _this19 = _this18;
- var s6 = -hz;
- var tx8 = _this19.x + ez.x * s6;
- var ty8 = _this19.y + ez.y * s6;
- var tz8 = _this19.z + ez.z * s6;
- _this19.x = tx8;
- _this19.y = ty8;
- _this19.z = tz8;
- var v3 = _this19;
- var _this20 = this.p;
- var _this21 = _this20.sizeVec3 == 0 ? new oimo.common.Vec3() : _this20.stackVec3[--_this20.sizeVec3];
- _this21.x = o.x;
- _this21.y = o.y;
- _this21.z = o.z;
- var _this22 = _this21;
- var s7 = -hx;
- var tx9 = _this22.x + ex.x * s7;
- var ty9 = _this22.y + ex.y * s7;
- var tz9 = _this22.z + ex.z * s7;
- _this22.x = tx9;
- _this22.y = ty9;
- _this22.z = tz9;
- var _this23 = _this22;
- var tx10 = _this23.x + ey.x * hy;
- var ty10 = _this23.y + ey.y * hy;
- var tz10 = _this23.z + ey.z * hy;
- _this23.x = tx10;
- _this23.y = ty10;
- _this23.z = tz10;
- var _this24 = _this23;
- var tx11 = _this24.x + ez.x * hz;
- var ty11 = _this24.y + ez.y * hz;
- var tz11 = _this24.z + ez.z * hz;
- _this24.x = tx11;
- _this24.y = ty11;
- _this24.z = tz11;
- var v4 = _this24;
- var _this25 = this.p;
- var _this26 = _this25.sizeVec3 == 0 ? new oimo.common.Vec3() : _this25.stackVec3[--_this25.sizeVec3];
- _this26.x = o.x;
- _this26.y = o.y;
- _this26.z = o.z;
- var _this27 = _this26;
- var tx12 = _this27.x + ex.x * hx;
- var ty12 = _this27.y + ex.y * hx;
- var tz12 = _this27.z + ex.z * hx;
- _this27.x = tx12;
- _this27.y = ty12;
- _this27.z = tz12;
- var _this28 = _this27;
- var s8 = -hy;
- var tx13 = _this28.x + ey.x * s8;
- var ty13 = _this28.y + ey.y * s8;
- var tz13 = _this28.z + ey.z * s8;
- _this28.x = tx13;
- _this28.y = ty13;
- _this28.z = tz13;
- var _this29 = _this28;
- var s9 = -hz;
- var tx14 = _this29.x + ez.x * s9;
- var ty14 = _this29.y + ez.y * s9;
- var tz14 = _this29.z + ez.z * s9;
- _this29.x = tx14;
- _this29.y = ty14;
- _this29.z = tz14;
- var v5 = _this29;
- var _this30 = this.p;
- var _this31 = _this30.sizeVec3 == 0 ? new oimo.common.Vec3() : _this30.stackVec3[--_this30.sizeVec3];
- _this31.x = o.x;
- _this31.y = o.y;
- _this31.z = o.z;
- var _this32 = _this31;
- var tx15 = _this32.x + ex.x * hx;
- var ty15 = _this32.y + ex.y * hx;
- var tz15 = _this32.z + ex.z * hx;
- _this32.x = tx15;
- _this32.y = ty15;
- _this32.z = tz15;
- var _this33 = _this32;
- var s10 = -hy;
- var tx16 = _this33.x + ey.x * s10;
- var ty16 = _this33.y + ey.y * s10;
- var tz16 = _this33.z + ey.z * s10;
- _this33.x = tx16;
- _this33.y = ty16;
- _this33.z = tz16;
- var _this34 = _this33;
- var tx17 = _this34.x + ez.x * hz;
- var ty17 = _this34.y + ez.y * hz;
- var tz17 = _this34.z + ez.z * hz;
- _this34.x = tx17;
- _this34.y = ty17;
- _this34.z = tz17;
- var v6 = _this34;
- var _this35 = this.p;
- var _this36 = _this35.sizeVec3 == 0 ? new oimo.common.Vec3() : _this35.stackVec3[--_this35.sizeVec3];
- _this36.x = o.x;
- _this36.y = o.y;
- _this36.z = o.z;
- var _this37 = _this36;
- var tx18 = _this37.x + ex.x * hx;
- var ty18 = _this37.y + ex.y * hx;
- var tz18 = _this37.z + ex.z * hx;
- _this37.x = tx18;
- _this37.y = ty18;
- _this37.z = tz18;
- var _this38 = _this37;
- var tx19 = _this38.x + ey.x * hy;
- var ty19 = _this38.y + ey.y * hy;
- var tz19 = _this38.z + ey.z * hy;
- _this38.x = tx19;
- _this38.y = ty19;
- _this38.z = tz19;
- var _this39 = _this38;
- var s11 = -hz;
- var tx20 = _this39.x + ez.x * s11;
- var ty20 = _this39.y + ez.y * s11;
- var tz20 = _this39.z + ez.z * s11;
- _this39.x = tx20;
- _this39.y = ty20;
- _this39.z = tz20;
- var v7 = _this39;
- var _this40 = this.p;
- var _this41 = _this40.sizeVec3 == 0 ? new oimo.common.Vec3() : _this40.stackVec3[--_this40.sizeVec3];
- _this41.x = o.x;
- _this41.y = o.y;
- _this41.z = o.z;
- var _this42 = _this41;
- var tx21 = _this42.x + ex.x * hx;
- var ty21 = _this42.y + ex.y * hx;
- var tz21 = _this42.z + ex.z * hx;
- _this42.x = tx21;
- _this42.y = ty21;
- _this42.z = tz21;
- var _this43 = _this42;
- var tx22 = _this43.x + ey.x * hy;
- var ty22 = _this43.y + ey.y * hy;
- var tz22 = _this43.z + ey.z * hy;
- _this43.x = tx22;
- _this43.y = ty22;
- _this43.z = tz22;
- var _this44 = _this43;
- var tx23 = _this44.x + ez.x * hz;
- var ty23 = _this44.y + ez.y * hz;
- var tz23 = _this44.z + ez.z * hz;
- _this44.x = tx23;
- _this44.y = ty23;
- _this44.z = tz23;
- var v8 = _this44;
- if(this.wireframe) {
- this.line(v1,v2,color);
- this.line(v3,v4,color);
- this.line(v5,v6,color);
- this.line(v7,v8,color);
- this.line(v1,v3,color);
- this.line(v2,v4,color);
- this.line(v5,v7,color);
- this.line(v6,v8,color);
- this.line(v1,v5,color);
- this.line(v2,v6,color);
- this.line(v3,v7,color);
- this.line(v4,v8,color);
- } else {
- var _this45 = this.p;
- var _this46 = _this45.sizeVec3 == 0 ? new oimo.common.Vec3() : _this45.stackVec3[--_this45.sizeVec3];
- _this46.x = ex.x;
- _this46.y = ex.y;
- _this46.z = ex.z;
- var _this47 = _this46;
- var tx24 = -_this47.x;
- var ty24 = -_this47.y;
- var tz24 = -_this47.z;
- _this47.x = tx24;
- _this47.y = ty24;
- _this47.z = tz24;
- var nex = _this47;
- var _this48 = this.p;
- var _this49 = _this48.sizeVec3 == 0 ? new oimo.common.Vec3() : _this48.stackVec3[--_this48.sizeVec3];
- _this49.x = ey.x;
- _this49.y = ey.y;
- _this49.z = ey.z;
- var _this50 = _this49;
- var tx25 = -_this50.x;
- var ty25 = -_this50.y;
- var tz25 = -_this50.z;
- _this50.x = tx25;
- _this50.y = ty25;
- _this50.z = tz25;
- var ney = _this50;
- var _this51 = this.p;
- var _this52 = _this51.sizeVec3 == 0 ? new oimo.common.Vec3() : _this51.stackVec3[--_this51.sizeVec3];
- _this52.x = ez.x;
- _this52.y = ez.y;
- _this52.z = ez.z;
- var _this53 = _this52;
- var tx26 = -_this53.x;
- var ty26 = -_this53.y;
- var tz26 = -_this53.z;
- _this53.x = tx26;
- _this53.y = ty26;
- _this53.z = tz26;
- var nez = _this53;
- this.rect(v1,v2,v4,v3,nex,nex,nex,nex,color);
- this.rect(v5,v7,v8,v6,ex,ex,ex,ex,color);
- this.rect(v1,v5,v6,v2,ney,ney,ney,ney,color);
- this.rect(v3,v4,v8,v7,ey,ey,ey,ey,color);
- this.rect(v1,v3,v7,v5,nez,nez,nez,nez,color);
- this.rect(v2,v6,v8,v4,ez,ez,ez,ez,color);
- var _this54 = this.p;
- var mat3 = null;
- var mat4 = null;
- var quat = null;
- if(nex != null) {
- nex.zero();
- if(_this54.sizeVec3 == _this54.stackVec3.length) {
- var newLength = _this54.sizeVec3 << 1;
- var this1 = new Array(newLength);
- var newArray = this1;
- var _g = 0;
- var _g1 = _this54.sizeVec3;
- while(_g < _g1) {
- var i = _g++;
- newArray[i] = _this54.stackVec3[i];
- _this54.stackVec3[i] = null;
- }
- _this54.stackVec3 = newArray;
- }
- _this54.stackVec3[_this54.sizeVec3++] = nex;
- }
- if(mat3 != null) {
- var t00 = 1;
- var t01 = 0;
- var t02 = 0;
- var t10 = 0;
- var t11 = 1;
- var t12 = 0;
- var t20 = 0;
- var t21 = 0;
- var t22 = 1;
- mat3.e00 = t00;
- mat3.e01 = t01;
- mat3.e02 = t02;
- mat3.e10 = t10;
- mat3.e11 = t11;
- mat3.e12 = t12;
- mat3.e20 = t20;
- mat3.e21 = t21;
- mat3.e22 = t22;
- if(_this54.sizeMat3 == _this54.stackMat3.length) {
- var newLength1 = _this54.sizeMat3 << 1;
- var this2 = new Array(newLength1);
- var newArray1 = this2;
- var _g2 = 0;
- var _g11 = _this54.sizeMat3;
- while(_g2 < _g11) {
- var i1 = _g2++;
- newArray1[i1] = _this54.stackMat3[i1];
- _this54.stackMat3[i1] = null;
- }
- _this54.stackMat3 = newArray1;
- }
- _this54.stackMat3[_this54.sizeMat3++] = mat3;
- }
- if(mat4 != null) {
- var t001 = 1;
- var t011 = 0;
- var t021 = 0;
- var t03 = 0;
- var t101 = 0;
- var t111 = 1;
- var t121 = 0;
- var t13 = 0;
- var t201 = 0;
- var t211 = 0;
- var t221 = 1;
- var t23 = 0;
- var t30 = 0;
- var t31 = 0;
- var t32 = 0;
- var t33 = 1;
- mat4.e00 = t001;
- mat4.e01 = t011;
- mat4.e02 = t021;
- mat4.e03 = t03;
- mat4.e10 = t101;
- mat4.e11 = t111;
- mat4.e12 = t121;
- mat4.e13 = t13;
- mat4.e20 = t201;
- mat4.e21 = t211;
- mat4.e22 = t221;
- mat4.e23 = t23;
- mat4.e30 = t30;
- mat4.e31 = t31;
- mat4.e32 = t32;
- mat4.e33 = t33;
- if(_this54.sizeMat4 == _this54.stackMat4.length) {
- var newLength2 = _this54.sizeMat4 << 1;
- var this3 = new Array(newLength2);
- var newArray2 = this3;
- var _g3 = 0;
- var _g12 = _this54.sizeMat4;
- while(_g3 < _g12) {
- var i2 = _g3++;
- newArray2[i2] = _this54.stackMat4[i2];
- _this54.stackMat4[i2] = null;
- }
- _this54.stackMat4 = newArray2;
- }
- _this54.stackMat4[_this54.sizeMat4++] = mat4;
- }
- if(quat != null) {
- var tx27 = 0;
- var ty27 = 0;
- var tz27 = 0;
- var tw = 1;
- quat.x = tx27;
- quat.y = ty27;
- quat.z = tz27;
- quat.w = tw;
- if(_this54.sizeQuat == _this54.stackQuat.length) {
- var newLength3 = _this54.sizeQuat << 1;
- var this4 = new Array(newLength3);
- var newArray3 = this4;
- var _g4 = 0;
- var _g13 = _this54.sizeQuat;
- while(_g4 < _g13) {
- var i3 = _g4++;
- newArray3[i3] = _this54.stackQuat[i3];
- _this54.stackQuat[i3] = null;
- }
- _this54.stackQuat = newArray3;
- }
- _this54.stackQuat[_this54.sizeQuat++] = quat;
- }
- var _this55 = this.p;
- var mat31 = null;
- var mat41 = null;
- var quat1 = null;
- if(ney != null) {
- ney.zero();
- if(_this55.sizeVec3 == _this55.stackVec3.length) {
- var newLength4 = _this55.sizeVec3 << 1;
- var this5 = new Array(newLength4);
- var newArray4 = this5;
- var _g5 = 0;
- var _g14 = _this55.sizeVec3;
- while(_g5 < _g14) {
- var i4 = _g5++;
- newArray4[i4] = _this55.stackVec3[i4];
- _this55.stackVec3[i4] = null;
- }
- _this55.stackVec3 = newArray4;
- }
- _this55.stackVec3[_this55.sizeVec3++] = ney;
- }
- if(mat31 != null) {
- var t002 = 1;
- var t012 = 0;
- var t022 = 0;
- var t102 = 0;
- var t112 = 1;
- var t122 = 0;
- var t202 = 0;
- var t212 = 0;
- var t222 = 1;
- mat31.e00 = t002;
- mat31.e01 = t012;
- mat31.e02 = t022;
- mat31.e10 = t102;
- mat31.e11 = t112;
- mat31.e12 = t122;
- mat31.e20 = t202;
- mat31.e21 = t212;
- mat31.e22 = t222;
- if(_this55.sizeMat3 == _this55.stackMat3.length) {
- var newLength5 = _this55.sizeMat3 << 1;
- var this6 = new Array(newLength5);
- var newArray5 = this6;
- var _g6 = 0;
- var _g15 = _this55.sizeMat3;
- while(_g6 < _g15) {
- var i5 = _g6++;
- newArray5[i5] = _this55.stackMat3[i5];
- _this55.stackMat3[i5] = null;
- }
- _this55.stackMat3 = newArray5;
- }
- _this55.stackMat3[_this55.sizeMat3++] = mat31;
- }
- if(mat41 != null) {
- var t003 = 1;
- var t013 = 0;
- var t023 = 0;
- var t031 = 0;
- var t103 = 0;
- var t113 = 1;
- var t123 = 0;
- var t131 = 0;
- var t203 = 0;
- var t213 = 0;
- var t223 = 1;
- var t231 = 0;
- var t301 = 0;
- var t311 = 0;
- var t321 = 0;
- var t331 = 1;
- mat41.e00 = t003;
- mat41.e01 = t013;
- mat41.e02 = t023;
- mat41.e03 = t031;
- mat41.e10 = t103;
- mat41.e11 = t113;
- mat41.e12 = t123;
- mat41.e13 = t131;
- mat41.e20 = t203;
- mat41.e21 = t213;
- mat41.e22 = t223;
- mat41.e23 = t231;
- mat41.e30 = t301;
- mat41.e31 = t311;
- mat41.e32 = t321;
- mat41.e33 = t331;
- if(_this55.sizeMat4 == _this55.stackMat4.length) {
- var newLength6 = _this55.sizeMat4 << 1;
- var this7 = new Array(newLength6);
- var newArray6 = this7;
- var _g7 = 0;
- var _g16 = _this55.sizeMat4;
- while(_g7 < _g16) {
- var i6 = _g7++;
- newArray6[i6] = _this55.stackMat4[i6];
- _this55.stackMat4[i6] = null;
- }
- _this55.stackMat4 = newArray6;
- }
- _this55.stackMat4[_this55.sizeMat4++] = mat41;
- }
- if(quat1 != null) {
- var tx28 = 0;
- var ty28 = 0;
- var tz28 = 0;
- var tw1 = 1;
- quat1.x = tx28;
- quat1.y = ty28;
- quat1.z = tz28;
- quat1.w = tw1;
- if(_this55.sizeQuat == _this55.stackQuat.length) {
- var newLength7 = _this55.sizeQuat << 1;
- var this8 = new Array(newLength7);
- var newArray7 = this8;
- var _g8 = 0;
- var _g17 = _this55.sizeQuat;
- while(_g8 < _g17) {
- var i7 = _g8++;
- newArray7[i7] = _this55.stackQuat[i7];
- _this55.stackQuat[i7] = null;
- }
- _this55.stackQuat = newArray7;
- }
- _this55.stackQuat[_this55.sizeQuat++] = quat1;
- }
- var _this56 = this.p;
- var mat32 = null;
- var mat42 = null;
- var quat2 = null;
- if(nez != null) {
- nez.zero();
- if(_this56.sizeVec3 == _this56.stackVec3.length) {
- var newLength8 = _this56.sizeVec3 << 1;
- var this9 = new Array(newLength8);
- var newArray8 = this9;
- var _g9 = 0;
- var _g18 = _this56.sizeVec3;
- while(_g9 < _g18) {
- var i8 = _g9++;
- newArray8[i8] = _this56.stackVec3[i8];
- _this56.stackVec3[i8] = null;
- }
- _this56.stackVec3 = newArray8;
- }
- _this56.stackVec3[_this56.sizeVec3++] = nez;
- }
- if(mat32 != null) {
- var t004 = 1;
- var t014 = 0;
- var t024 = 0;
- var t104 = 0;
- var t114 = 1;
- var t124 = 0;
- var t204 = 0;
- var t214 = 0;
- var t224 = 1;
- mat32.e00 = t004;
- mat32.e01 = t014;
- mat32.e02 = t024;
- mat32.e10 = t104;
- mat32.e11 = t114;
- mat32.e12 = t124;
- mat32.e20 = t204;
- mat32.e21 = t214;
- mat32.e22 = t224;
- if(_this56.sizeMat3 == _this56.stackMat3.length) {
- var newLength9 = _this56.sizeMat3 << 1;
- var this10 = new Array(newLength9);
- var newArray9 = this10;
- var _g10 = 0;
- var _g19 = _this56.sizeMat3;
- while(_g10 < _g19) {
- var i9 = _g10++;
- newArray9[i9] = _this56.stackMat3[i9];
- _this56.stackMat3[i9] = null;
- }
- _this56.stackMat3 = newArray9;
- }
- _this56.stackMat3[_this56.sizeMat3++] = mat32;
- }
- if(mat42 != null) {
- var t005 = 1;
- var t015 = 0;
- var t025 = 0;
- var t032 = 0;
- var t105 = 0;
- var t115 = 1;
- var t125 = 0;
- var t132 = 0;
- var t205 = 0;
- var t215 = 0;
- var t225 = 1;
- var t232 = 0;
- var t302 = 0;
- var t312 = 0;
- var t322 = 0;
- var t332 = 1;
- mat42.e00 = t005;
- mat42.e01 = t015;
- mat42.e02 = t025;
- mat42.e03 = t032;
- mat42.e10 = t105;
- mat42.e11 = t115;
- mat42.e12 = t125;
- mat42.e13 = t132;
- mat42.e20 = t205;
- mat42.e21 = t215;
- mat42.e22 = t225;
- mat42.e23 = t232;
- mat42.e30 = t302;
- mat42.e31 = t312;
- mat42.e32 = t322;
- mat42.e33 = t332;
- if(_this56.sizeMat4 == _this56.stackMat4.length) {
- var newLength10 = _this56.sizeMat4 << 1;
- var this11 = new Array(newLength10);
- var newArray10 = this11;
- var _g20 = 0;
- var _g110 = _this56.sizeMat4;
- while(_g20 < _g110) {
- var i10 = _g20++;
- newArray10[i10] = _this56.stackMat4[i10];
- _this56.stackMat4[i10] = null;
- }
- _this56.stackMat4 = newArray10;
- }
- _this56.stackMat4[_this56.sizeMat4++] = mat42;
- }
- if(quat2 != null) {
- var tx29 = 0;
- var ty29 = 0;
- var tz29 = 0;
- var tw2 = 1;
- quat2.x = tx29;
- quat2.y = ty29;
- quat2.z = tz29;
- quat2.w = tw2;
- if(_this56.sizeQuat == _this56.stackQuat.length) {
- var newLength11 = _this56.sizeQuat << 1;
- var this12 = new Array(newLength11);
- var newArray11 = this12;
- var _g21 = 0;
- var _g111 = _this56.sizeQuat;
- while(_g21 < _g111) {
- var i11 = _g21++;
- newArray11[i11] = _this56.stackQuat[i11];
- _this56.stackQuat[i11] = null;
- }
- _this56.stackQuat = newArray11;
- }
- _this56.stackQuat[_this56.sizeQuat++] = quat2;
- }
- }
- var _this57 = this.p;
- var mat33 = null;
- var mat43 = null;
- var quat3 = null;
- if(v1 != null) {
- v1.zero();
- if(_this57.sizeVec3 == _this57.stackVec3.length) {
- var newLength12 = _this57.sizeVec3 << 1;
- var this13 = new Array(newLength12);
- var newArray12 = this13;
- var _g22 = 0;
- var _g112 = _this57.sizeVec3;
- while(_g22 < _g112) {
- var i12 = _g22++;
- newArray12[i12] = _this57.stackVec3[i12];
- _this57.stackVec3[i12] = null;
- }
- _this57.stackVec3 = newArray12;
- }
- _this57.stackVec3[_this57.sizeVec3++] = v1;
- }
- if(mat33 != null) {
- var t006 = 1;
- var t016 = 0;
- var t026 = 0;
- var t106 = 0;
- var t116 = 1;
- var t126 = 0;
- var t206 = 0;
- var t216 = 0;
- var t226 = 1;
- mat33.e00 = t006;
- mat33.e01 = t016;
- mat33.e02 = t026;
- mat33.e10 = t106;
- mat33.e11 = t116;
- mat33.e12 = t126;
- mat33.e20 = t206;
- mat33.e21 = t216;
- mat33.e22 = t226;
- if(_this57.sizeMat3 == _this57.stackMat3.length) {
- var newLength13 = _this57.sizeMat3 << 1;
- var this14 = new Array(newLength13);
- var newArray13 = this14;
- var _g23 = 0;
- var _g113 = _this57.sizeMat3;
- while(_g23 < _g113) {
- var i13 = _g23++;
- newArray13[i13] = _this57.stackMat3[i13];
- _this57.stackMat3[i13] = null;
- }
- _this57.stackMat3 = newArray13;
- }
- _this57.stackMat3[_this57.sizeMat3++] = mat33;
- }
- if(mat43 != null) {
- var t007 = 1;
- var t017 = 0;
- var t027 = 0;
- var t033 = 0;
- var t107 = 0;
- var t117 = 1;
- var t127 = 0;
- var t133 = 0;
- var t207 = 0;
- var t217 = 0;
- var t227 = 1;
- var t233 = 0;
- var t303 = 0;
- var t313 = 0;
- var t323 = 0;
- var t333 = 1;
- mat43.e00 = t007;
- mat43.e01 = t017;
- mat43.e02 = t027;
- mat43.e03 = t033;
- mat43.e10 = t107;
- mat43.e11 = t117;
- mat43.e12 = t127;
- mat43.e13 = t133;
- mat43.e20 = t207;
- mat43.e21 = t217;
- mat43.e22 = t227;
- mat43.e23 = t233;
- mat43.e30 = t303;
- mat43.e31 = t313;
- mat43.e32 = t323;
- mat43.e33 = t333;
- if(_this57.sizeMat4 == _this57.stackMat4.length) {
- var newLength14 = _this57.sizeMat4 << 1;
- var this15 = new Array(newLength14);
- var newArray14 = this15;
- var _g24 = 0;
- var _g114 = _this57.sizeMat4;
- while(_g24 < _g114) {
- var i14 = _g24++;
- newArray14[i14] = _this57.stackMat4[i14];
- _this57.stackMat4[i14] = null;
- }
- _this57.stackMat4 = newArray14;
- }
- _this57.stackMat4[_this57.sizeMat4++] = mat43;
- }
- if(quat3 != null) {
- var tx30 = 0;
- var ty30 = 0;
- var tz30 = 0;
- var tw3 = 1;
- quat3.x = tx30;
- quat3.y = ty30;
- quat3.z = tz30;
- quat3.w = tw3;
- if(_this57.sizeQuat == _this57.stackQuat.length) {
- var newLength15 = _this57.sizeQuat << 1;
- var this16 = new Array(newLength15);
- var newArray15 = this16;
- var _g25 = 0;
- var _g115 = _this57.sizeQuat;
- while(_g25 < _g115) {
- var i15 = _g25++;
- newArray15[i15] = _this57.stackQuat[i15];
- _this57.stackQuat[i15] = null;
- }
- _this57.stackQuat = newArray15;
- }
- _this57.stackQuat[_this57.sizeQuat++] = quat3;
- }
- var _this58 = this.p;
- var mat34 = null;
- var mat44 = null;
- var quat4 = null;
- if(v2 != null) {
- v2.zero();
- if(_this58.sizeVec3 == _this58.stackVec3.length) {
- var newLength16 = _this58.sizeVec3 << 1;
- var this17 = new Array(newLength16);
- var newArray16 = this17;
- var _g26 = 0;
- var _g116 = _this58.sizeVec3;
- while(_g26 < _g116) {
- var i16 = _g26++;
- newArray16[i16] = _this58.stackVec3[i16];
- _this58.stackVec3[i16] = null;
- }
- _this58.stackVec3 = newArray16;
- }
- _this58.stackVec3[_this58.sizeVec3++] = v2;
- }
- if(mat34 != null) {
- var t008 = 1;
- var t018 = 0;
- var t028 = 0;
- var t108 = 0;
- var t118 = 1;
- var t128 = 0;
- var t208 = 0;
- var t218 = 0;
- var t228 = 1;
- mat34.e00 = t008;
- mat34.e01 = t018;
- mat34.e02 = t028;
- mat34.e10 = t108;
- mat34.e11 = t118;
- mat34.e12 = t128;
- mat34.e20 = t208;
- mat34.e21 = t218;
- mat34.e22 = t228;
- if(_this58.sizeMat3 == _this58.stackMat3.length) {
- var newLength17 = _this58.sizeMat3 << 1;
- var this18 = new Array(newLength17);
- var newArray17 = this18;
- var _g27 = 0;
- var _g117 = _this58.sizeMat3;
- while(_g27 < _g117) {
- var i17 = _g27++;
- newArray17[i17] = _this58.stackMat3[i17];
- _this58.stackMat3[i17] = null;
- }
- _this58.stackMat3 = newArray17;
- }
- _this58.stackMat3[_this58.sizeMat3++] = mat34;
- }
- if(mat44 != null) {
- var t009 = 1;
- var t019 = 0;
- var t029 = 0;
- var t034 = 0;
- var t109 = 0;
- var t119 = 1;
- var t129 = 0;
- var t134 = 0;
- var t209 = 0;
- var t219 = 0;
- var t229 = 1;
- var t234 = 0;
- var t304 = 0;
- var t314 = 0;
- var t324 = 0;
- var t334 = 1;
- mat44.e00 = t009;
- mat44.e01 = t019;
- mat44.e02 = t029;
- mat44.e03 = t034;
- mat44.e10 = t109;
- mat44.e11 = t119;
- mat44.e12 = t129;
- mat44.e13 = t134;
- mat44.e20 = t209;
- mat44.e21 = t219;
- mat44.e22 = t229;
- mat44.e23 = t234;
- mat44.e30 = t304;
- mat44.e31 = t314;
- mat44.e32 = t324;
- mat44.e33 = t334;
- if(_this58.sizeMat4 == _this58.stackMat4.length) {
- var newLength18 = _this58.sizeMat4 << 1;
- var this19 = new Array(newLength18);
- var newArray18 = this19;
- var _g28 = 0;
- var _g118 = _this58.sizeMat4;
- while(_g28 < _g118) {
- var i18 = _g28++;
- newArray18[i18] = _this58.stackMat4[i18];
- _this58.stackMat4[i18] = null;
- }
- _this58.stackMat4 = newArray18;
- }
- _this58.stackMat4[_this58.sizeMat4++] = mat44;
- }
- if(quat4 != null) {
- var tx31 = 0;
- var ty31 = 0;
- var tz31 = 0;
- var tw4 = 1;
- quat4.x = tx31;
- quat4.y = ty31;
- quat4.z = tz31;
- quat4.w = tw4;
- if(_this58.sizeQuat == _this58.stackQuat.length) {
- var newLength19 = _this58.sizeQuat << 1;
- var this20 = new Array(newLength19);
- var newArray19 = this20;
- var _g29 = 0;
- var _g119 = _this58.sizeQuat;
- while(_g29 < _g119) {
- var i19 = _g29++;
- newArray19[i19] = _this58.stackQuat[i19];
- _this58.stackQuat[i19] = null;
- }
- _this58.stackQuat = newArray19;
- }
- _this58.stackQuat[_this58.sizeQuat++] = quat4;
- }
- var _this59 = this.p;
- var mat35 = null;
- var mat45 = null;
- var quat5 = null;
- if(v3 != null) {
- v3.zero();
- if(_this59.sizeVec3 == _this59.stackVec3.length) {
- var newLength20 = _this59.sizeVec3 << 1;
- var this21 = new Array(newLength20);
- var newArray20 = this21;
- var _g30 = 0;
- var _g120 = _this59.sizeVec3;
- while(_g30 < _g120) {
- var i20 = _g30++;
- newArray20[i20] = _this59.stackVec3[i20];
- _this59.stackVec3[i20] = null;
- }
- _this59.stackVec3 = newArray20;
- }
- _this59.stackVec3[_this59.sizeVec3++] = v3;
- }
- if(mat35 != null) {
- var t0010 = 1;
- var t0110 = 0;
- var t0210 = 0;
- var t1010 = 0;
- var t1110 = 1;
- var t1210 = 0;
- var t2010 = 0;
- var t2110 = 0;
- var t2210 = 1;
- mat35.e00 = t0010;
- mat35.e01 = t0110;
- mat35.e02 = t0210;
- mat35.e10 = t1010;
- mat35.e11 = t1110;
- mat35.e12 = t1210;
- mat35.e20 = t2010;
- mat35.e21 = t2110;
- mat35.e22 = t2210;
- if(_this59.sizeMat3 == _this59.stackMat3.length) {
- var newLength21 = _this59.sizeMat3 << 1;
- var this22 = new Array(newLength21);
- var newArray21 = this22;
- var _g31 = 0;
- var _g121 = _this59.sizeMat3;
- while(_g31 < _g121) {
- var i21 = _g31++;
- newArray21[i21] = _this59.stackMat3[i21];
- _this59.stackMat3[i21] = null;
- }
- _this59.stackMat3 = newArray21;
- }
- _this59.stackMat3[_this59.sizeMat3++] = mat35;
- }
- if(mat45 != null) {
- var t0011 = 1;
- var t0111 = 0;
- var t0211 = 0;
- var t035 = 0;
- var t1011 = 0;
- var t1111 = 1;
- var t1211 = 0;
- var t135 = 0;
- var t2011 = 0;
- var t2111 = 0;
- var t2211 = 1;
- var t235 = 0;
- var t305 = 0;
- var t315 = 0;
- var t325 = 0;
- var t335 = 1;
- mat45.e00 = t0011;
- mat45.e01 = t0111;
- mat45.e02 = t0211;
- mat45.e03 = t035;
- mat45.e10 = t1011;
- mat45.e11 = t1111;
- mat45.e12 = t1211;
- mat45.e13 = t135;
- mat45.e20 = t2011;
- mat45.e21 = t2111;
- mat45.e22 = t2211;
- mat45.e23 = t235;
- mat45.e30 = t305;
- mat45.e31 = t315;
- mat45.e32 = t325;
- mat45.e33 = t335;
- if(_this59.sizeMat4 == _this59.stackMat4.length) {
- var newLength22 = _this59.sizeMat4 << 1;
- var this23 = new Array(newLength22);
- var newArray22 = this23;
- var _g32 = 0;
- var _g122 = _this59.sizeMat4;
- while(_g32 < _g122) {
- var i22 = _g32++;
- newArray22[i22] = _this59.stackMat4[i22];
- _this59.stackMat4[i22] = null;
- }
- _this59.stackMat4 = newArray22;
- }
- _this59.stackMat4[_this59.sizeMat4++] = mat45;
- }
- if(quat5 != null) {
- var tx32 = 0;
- var ty32 = 0;
- var tz32 = 0;
- var tw5 = 1;
- quat5.x = tx32;
- quat5.y = ty32;
- quat5.z = tz32;
- quat5.w = tw5;
- if(_this59.sizeQuat == _this59.stackQuat.length) {
- var newLength23 = _this59.sizeQuat << 1;
- var this24 = new Array(newLength23);
- var newArray23 = this24;
- var _g33 = 0;
- var _g123 = _this59.sizeQuat;
- while(_g33 < _g123) {
- var i23 = _g33++;
- newArray23[i23] = _this59.stackQuat[i23];
- _this59.stackQuat[i23] = null;
- }
- _this59.stackQuat = newArray23;
- }
- _this59.stackQuat[_this59.sizeQuat++] = quat5;
- }
- var _this60 = this.p;
- var mat36 = null;
- var mat46 = null;
- var quat6 = null;
- if(v4 != null) {
- v4.zero();
- if(_this60.sizeVec3 == _this60.stackVec3.length) {
- var newLength24 = _this60.sizeVec3 << 1;
- var this25 = new Array(newLength24);
- var newArray24 = this25;
- var _g34 = 0;
- var _g124 = _this60.sizeVec3;
- while(_g34 < _g124) {
- var i24 = _g34++;
- newArray24[i24] = _this60.stackVec3[i24];
- _this60.stackVec3[i24] = null;
- }
- _this60.stackVec3 = newArray24;
- }
- _this60.stackVec3[_this60.sizeVec3++] = v4;
- }
- if(mat36 != null) {
- var t0012 = 1;
- var t0112 = 0;
- var t0212 = 0;
- var t1012 = 0;
- var t1112 = 1;
- var t1212 = 0;
- var t2012 = 0;
- var t2112 = 0;
- var t2212 = 1;
- mat36.e00 = t0012;
- mat36.e01 = t0112;
- mat36.e02 = t0212;
- mat36.e10 = t1012;
- mat36.e11 = t1112;
- mat36.e12 = t1212;
- mat36.e20 = t2012;
- mat36.e21 = t2112;
- mat36.e22 = t2212;
- if(_this60.sizeMat3 == _this60.stackMat3.length) {
- var newLength25 = _this60.sizeMat3 << 1;
- var this26 = new Array(newLength25);
- var newArray25 = this26;
- var _g35 = 0;
- var _g125 = _this60.sizeMat3;
- while(_g35 < _g125) {
- var i25 = _g35++;
- newArray25[i25] = _this60.stackMat3[i25];
- _this60.stackMat3[i25] = null;
- }
- _this60.stackMat3 = newArray25;
- }
- _this60.stackMat3[_this60.sizeMat3++] = mat36;
- }
- if(mat46 != null) {
- var t0013 = 1;
- var t0113 = 0;
- var t0213 = 0;
- var t036 = 0;
- var t1013 = 0;
- var t1113 = 1;
- var t1213 = 0;
- var t136 = 0;
- var t2013 = 0;
- var t2113 = 0;
- var t2213 = 1;
- var t236 = 0;
- var t306 = 0;
- var t316 = 0;
- var t326 = 0;
- var t336 = 1;
- mat46.e00 = t0013;
- mat46.e01 = t0113;
- mat46.e02 = t0213;
- mat46.e03 = t036;
- mat46.e10 = t1013;
- mat46.e11 = t1113;
- mat46.e12 = t1213;
- mat46.e13 = t136;
- mat46.e20 = t2013;
- mat46.e21 = t2113;
- mat46.e22 = t2213;
- mat46.e23 = t236;
- mat46.e30 = t306;
- mat46.e31 = t316;
- mat46.e32 = t326;
- mat46.e33 = t336;
- if(_this60.sizeMat4 == _this60.stackMat4.length) {
- var newLength26 = _this60.sizeMat4 << 1;
- var this27 = new Array(newLength26);
- var newArray26 = this27;
- var _g36 = 0;
- var _g126 = _this60.sizeMat4;
- while(_g36 < _g126) {
- var i26 = _g36++;
- newArray26[i26] = _this60.stackMat4[i26];
- _this60.stackMat4[i26] = null;
- }
- _this60.stackMat4 = newArray26;
- }
- _this60.stackMat4[_this60.sizeMat4++] = mat46;
- }
- if(quat6 != null) {
- var tx33 = 0;
- var ty33 = 0;
- var tz33 = 0;
- var tw6 = 1;
- quat6.x = tx33;
- quat6.y = ty33;
- quat6.z = tz33;
- quat6.w = tw6;
- if(_this60.sizeQuat == _this60.stackQuat.length) {
- var newLength27 = _this60.sizeQuat << 1;
- var this28 = new Array(newLength27);
- var newArray27 = this28;
- var _g37 = 0;
- var _g127 = _this60.sizeQuat;
- while(_g37 < _g127) {
- var i27 = _g37++;
- newArray27[i27] = _this60.stackQuat[i27];
- _this60.stackQuat[i27] = null;
- }
- _this60.stackQuat = newArray27;
- }
- _this60.stackQuat[_this60.sizeQuat++] = quat6;
- }
- var _this61 = this.p;
- var mat37 = null;
- var mat47 = null;
- var quat7 = null;
- if(v5 != null) {
- v5.zero();
- if(_this61.sizeVec3 == _this61.stackVec3.length) {
- var newLength28 = _this61.sizeVec3 << 1;
- var this29 = new Array(newLength28);
- var newArray28 = this29;
- var _g38 = 0;
- var _g128 = _this61.sizeVec3;
- while(_g38 < _g128) {
- var i28 = _g38++;
- newArray28[i28] = _this61.stackVec3[i28];
- _this61.stackVec3[i28] = null;
- }
- _this61.stackVec3 = newArray28;
- }
- _this61.stackVec3[_this61.sizeVec3++] = v5;
- }
- if(mat37 != null) {
- var t0014 = 1;
- var t0114 = 0;
- var t0214 = 0;
- var t1014 = 0;
- var t1114 = 1;
- var t1214 = 0;
- var t2014 = 0;
- var t2114 = 0;
- var t2214 = 1;
- mat37.e00 = t0014;
- mat37.e01 = t0114;
- mat37.e02 = t0214;
- mat37.e10 = t1014;
- mat37.e11 = t1114;
- mat37.e12 = t1214;
- mat37.e20 = t2014;
- mat37.e21 = t2114;
- mat37.e22 = t2214;
- if(_this61.sizeMat3 == _this61.stackMat3.length) {
- var newLength29 = _this61.sizeMat3 << 1;
- var this30 = new Array(newLength29);
- var newArray29 = this30;
- var _g39 = 0;
- var _g129 = _this61.sizeMat3;
- while(_g39 < _g129) {
- var i29 = _g39++;
- newArray29[i29] = _this61.stackMat3[i29];
- _this61.stackMat3[i29] = null;
- }
- _this61.stackMat3 = newArray29;
- }
- _this61.stackMat3[_this61.sizeMat3++] = mat37;
- }
- if(mat47 != null) {
- var t0015 = 1;
- var t0115 = 0;
- var t0215 = 0;
- var t037 = 0;
- var t1015 = 0;
- var t1115 = 1;
- var t1215 = 0;
- var t137 = 0;
- var t2015 = 0;
- var t2115 = 0;
- var t2215 = 1;
- var t237 = 0;
- var t307 = 0;
- var t317 = 0;
- var t327 = 0;
- var t337 = 1;
- mat47.e00 = t0015;
- mat47.e01 = t0115;
- mat47.e02 = t0215;
- mat47.e03 = t037;
- mat47.e10 = t1015;
- mat47.e11 = t1115;
- mat47.e12 = t1215;
- mat47.e13 = t137;
- mat47.e20 = t2015;
- mat47.e21 = t2115;
- mat47.e22 = t2215;
- mat47.e23 = t237;
- mat47.e30 = t307;
- mat47.e31 = t317;
- mat47.e32 = t327;
- mat47.e33 = t337;
- if(_this61.sizeMat4 == _this61.stackMat4.length) {
- var newLength30 = _this61.sizeMat4 << 1;
- var this31 = new Array(newLength30);
- var newArray30 = this31;
- var _g40 = 0;
- var _g130 = _this61.sizeMat4;
- while(_g40 < _g130) {
- var i30 = _g40++;
- newArray30[i30] = _this61.stackMat4[i30];
- _this61.stackMat4[i30] = null;
- }
- _this61.stackMat4 = newArray30;
- }
- _this61.stackMat4[_this61.sizeMat4++] = mat47;
- }
- if(quat7 != null) {
- var tx34 = 0;
- var ty34 = 0;
- var tz34 = 0;
- var tw7 = 1;
- quat7.x = tx34;
- quat7.y = ty34;
- quat7.z = tz34;
- quat7.w = tw7;
- if(_this61.sizeQuat == _this61.stackQuat.length) {
- var newLength31 = _this61.sizeQuat << 1;
- var this32 = new Array(newLength31);
- var newArray31 = this32;
- var _g41 = 0;
- var _g131 = _this61.sizeQuat;
- while(_g41 < _g131) {
- var i31 = _g41++;
- newArray31[i31] = _this61.stackQuat[i31];
- _this61.stackQuat[i31] = null;
- }
- _this61.stackQuat = newArray31;
- }
- _this61.stackQuat[_this61.sizeQuat++] = quat7;
- }
- var _this62 = this.p;
- var mat38 = null;
- var mat48 = null;
- var quat8 = null;
- if(v6 != null) {
- v6.zero();
- if(_this62.sizeVec3 == _this62.stackVec3.length) {
- var newLength32 = _this62.sizeVec3 << 1;
- var this33 = new Array(newLength32);
- var newArray32 = this33;
- var _g42 = 0;
- var _g132 = _this62.sizeVec3;
- while(_g42 < _g132) {
- var i32 = _g42++;
- newArray32[i32] = _this62.stackVec3[i32];
- _this62.stackVec3[i32] = null;
- }
- _this62.stackVec3 = newArray32;
- }
- _this62.stackVec3[_this62.sizeVec3++] = v6;
- }
- if(mat38 != null) {
- var t0016 = 1;
- var t0116 = 0;
- var t0216 = 0;
- var t1016 = 0;
- var t1116 = 1;
- var t1216 = 0;
- var t2016 = 0;
- var t2116 = 0;
- var t2216 = 1;
- mat38.e00 = t0016;
- mat38.e01 = t0116;
- mat38.e02 = t0216;
- mat38.e10 = t1016;
- mat38.e11 = t1116;
- mat38.e12 = t1216;
- mat38.e20 = t2016;
- mat38.e21 = t2116;
- mat38.e22 = t2216;
- if(_this62.sizeMat3 == _this62.stackMat3.length) {
- var newLength33 = _this62.sizeMat3 << 1;
- var this34 = new Array(newLength33);
- var newArray33 = this34;
- var _g43 = 0;
- var _g133 = _this62.sizeMat3;
- while(_g43 < _g133) {
- var i33 = _g43++;
- newArray33[i33] = _this62.stackMat3[i33];
- _this62.stackMat3[i33] = null;
- }
- _this62.stackMat3 = newArray33;
- }
- _this62.stackMat3[_this62.sizeMat3++] = mat38;
- }
- if(mat48 != null) {
- var t0017 = 1;
- var t0117 = 0;
- var t0217 = 0;
- var t038 = 0;
- var t1017 = 0;
- var t1117 = 1;
- var t1217 = 0;
- var t138 = 0;
- var t2017 = 0;
- var t2117 = 0;
- var t2217 = 1;
- var t238 = 0;
- var t308 = 0;
- var t318 = 0;
- var t328 = 0;
- var t338 = 1;
- mat48.e00 = t0017;
- mat48.e01 = t0117;
- mat48.e02 = t0217;
- mat48.e03 = t038;
- mat48.e10 = t1017;
- mat48.e11 = t1117;
- mat48.e12 = t1217;
- mat48.e13 = t138;
- mat48.e20 = t2017;
- mat48.e21 = t2117;
- mat48.e22 = t2217;
- mat48.e23 = t238;
- mat48.e30 = t308;
- mat48.e31 = t318;
- mat48.e32 = t328;
- mat48.e33 = t338;
- if(_this62.sizeMat4 == _this62.stackMat4.length) {
- var newLength34 = _this62.sizeMat4 << 1;
- var this35 = new Array(newLength34);
- var newArray34 = this35;
- var _g44 = 0;
- var _g134 = _this62.sizeMat4;
- while(_g44 < _g134) {
- var i34 = _g44++;
- newArray34[i34] = _this62.stackMat4[i34];
- _this62.stackMat4[i34] = null;
- }
- _this62.stackMat4 = newArray34;
- }
- _this62.stackMat4[_this62.sizeMat4++] = mat48;
- }
- if(quat8 != null) {
- var tx35 = 0;
- var ty35 = 0;
- var tz35 = 0;
- var tw8 = 1;
- quat8.x = tx35;
- quat8.y = ty35;
- quat8.z = tz35;
- quat8.w = tw8;
- if(_this62.sizeQuat == _this62.stackQuat.length) {
- var newLength35 = _this62.sizeQuat << 1;
- var this36 = new Array(newLength35);
- var newArray35 = this36;
- var _g45 = 0;
- var _g135 = _this62.sizeQuat;
- while(_g45 < _g135) {
- var i35 = _g45++;
- newArray35[i35] = _this62.stackQuat[i35];
- _this62.stackQuat[i35] = null;
- }
- _this62.stackQuat = newArray35;
- }
- _this62.stackQuat[_this62.sizeQuat++] = quat8;
- }
- var _this63 = this.p;
- var mat39 = null;
- var mat49 = null;
- var quat9 = null;
- if(v7 != null) {
- v7.zero();
- if(_this63.sizeVec3 == _this63.stackVec3.length) {
- var newLength36 = _this63.sizeVec3 << 1;
- var this37 = new Array(newLength36);
- var newArray36 = this37;
- var _g46 = 0;
- var _g136 = _this63.sizeVec3;
- while(_g46 < _g136) {
- var i36 = _g46++;
- newArray36[i36] = _this63.stackVec3[i36];
- _this63.stackVec3[i36] = null;
- }
- _this63.stackVec3 = newArray36;
- }
- _this63.stackVec3[_this63.sizeVec3++] = v7;
- }
- if(mat39 != null) {
- var t0018 = 1;
- var t0118 = 0;
- var t0218 = 0;
- var t1018 = 0;
- var t1118 = 1;
- var t1218 = 0;
- var t2018 = 0;
- var t2118 = 0;
- var t2218 = 1;
- mat39.e00 = t0018;
- mat39.e01 = t0118;
- mat39.e02 = t0218;
- mat39.e10 = t1018;
- mat39.e11 = t1118;
- mat39.e12 = t1218;
- mat39.e20 = t2018;
- mat39.e21 = t2118;
- mat39.e22 = t2218;
- if(_this63.sizeMat3 == _this63.stackMat3.length) {
- var newLength37 = _this63.sizeMat3 << 1;
- var this38 = new Array(newLength37);
- var newArray37 = this38;
- var _g47 = 0;
- var _g137 = _this63.sizeMat3;
- while(_g47 < _g137) {
- var i37 = _g47++;
- newArray37[i37] = _this63.stackMat3[i37];
- _this63.stackMat3[i37] = null;
- }
- _this63.stackMat3 = newArray37;
- }
- _this63.stackMat3[_this63.sizeMat3++] = mat39;
- }
- if(mat49 != null) {
- var t0019 = 1;
- var t0119 = 0;
- var t0219 = 0;
- var t039 = 0;
- var t1019 = 0;
- var t1119 = 1;
- var t1219 = 0;
- var t139 = 0;
- var t2019 = 0;
- var t2119 = 0;
- var t2219 = 1;
- var t239 = 0;
- var t309 = 0;
- var t319 = 0;
- var t329 = 0;
- var t339 = 1;
- mat49.e00 = t0019;
- mat49.e01 = t0119;
- mat49.e02 = t0219;
- mat49.e03 = t039;
- mat49.e10 = t1019;
- mat49.e11 = t1119;
- mat49.e12 = t1219;
- mat49.e13 = t139;
- mat49.e20 = t2019;
- mat49.e21 = t2119;
- mat49.e22 = t2219;
- mat49.e23 = t239;
- mat49.e30 = t309;
- mat49.e31 = t319;
- mat49.e32 = t329;
- mat49.e33 = t339;
- if(_this63.sizeMat4 == _this63.stackMat4.length) {
- var newLength38 = _this63.sizeMat4 << 1;
- var this39 = new Array(newLength38);
- var newArray38 = this39;
- var _g48 = 0;
- var _g138 = _this63.sizeMat4;
- while(_g48 < _g138) {
- var i38 = _g48++;
- newArray38[i38] = _this63.stackMat4[i38];
- _this63.stackMat4[i38] = null;
- }
- _this63.stackMat4 = newArray38;
- }
- _this63.stackMat4[_this63.sizeMat4++] = mat49;
- }
- if(quat9 != null) {
- var tx36 = 0;
- var ty36 = 0;
- var tz36 = 0;
- var tw9 = 1;
- quat9.x = tx36;
- quat9.y = ty36;
- quat9.z = tz36;
- quat9.w = tw9;
- if(_this63.sizeQuat == _this63.stackQuat.length) {
- var newLength39 = _this63.sizeQuat << 1;
- var this40 = new Array(newLength39);
- var newArray39 = this40;
- var _g49 = 0;
- var _g139 = _this63.sizeQuat;
- while(_g49 < _g139) {
- var i39 = _g49++;
- newArray39[i39] = _this63.stackQuat[i39];
- _this63.stackQuat[i39] = null;
- }
- _this63.stackQuat = newArray39;
- }
- _this63.stackQuat[_this63.sizeQuat++] = quat9;
- }
- var _this64 = this.p;
- var mat310 = null;
- var mat410 = null;
- var quat10 = null;
- if(v8 != null) {
- v8.zero();
- if(_this64.sizeVec3 == _this64.stackVec3.length) {
- var newLength40 = _this64.sizeVec3 << 1;
- var this41 = new Array(newLength40);
- var newArray40 = this41;
- var _g50 = 0;
- var _g140 = _this64.sizeVec3;
- while(_g50 < _g140) {
- var i40 = _g50++;
- newArray40[i40] = _this64.stackVec3[i40];
- _this64.stackVec3[i40] = null;
- }
- _this64.stackVec3 = newArray40;
- }
- _this64.stackVec3[_this64.sizeVec3++] = v8;
- }
- if(mat310 != null) {
- var t0020 = 1;
- var t0120 = 0;
- var t0220 = 0;
- var t1020 = 0;
- var t1120 = 1;
- var t1220 = 0;
- var t2020 = 0;
- var t2120 = 0;
- var t2220 = 1;
- mat310.e00 = t0020;
- mat310.e01 = t0120;
- mat310.e02 = t0220;
- mat310.e10 = t1020;
- mat310.e11 = t1120;
- mat310.e12 = t1220;
- mat310.e20 = t2020;
- mat310.e21 = t2120;
- mat310.e22 = t2220;
- if(_this64.sizeMat3 == _this64.stackMat3.length) {
- var newLength41 = _this64.sizeMat3 << 1;
- var this42 = new Array(newLength41);
- var newArray41 = this42;
- var _g51 = 0;
- var _g141 = _this64.sizeMat3;
- while(_g51 < _g141) {
- var i41 = _g51++;
- newArray41[i41] = _this64.stackMat3[i41];
- _this64.stackMat3[i41] = null;
- }
- _this64.stackMat3 = newArray41;
- }
- _this64.stackMat3[_this64.sizeMat3++] = mat310;
- }
- if(mat410 != null) {
- var t0021 = 1;
- var t0121 = 0;
- var t0221 = 0;
- var t0310 = 0;
- var t1021 = 0;
- var t1121 = 1;
- var t1221 = 0;
- var t1310 = 0;
- var t2021 = 0;
- var t2121 = 0;
- var t2221 = 1;
- var t2310 = 0;
- var t3010 = 0;
- var t3110 = 0;
- var t3210 = 0;
- var t3310 = 1;
- mat410.e00 = t0021;
- mat410.e01 = t0121;
- mat410.e02 = t0221;
- mat410.e03 = t0310;
- mat410.e10 = t1021;
- mat410.e11 = t1121;
- mat410.e12 = t1221;
- mat410.e13 = t1310;
- mat410.e20 = t2021;
- mat410.e21 = t2121;
- mat410.e22 = t2221;
- mat410.e23 = t2310;
- mat410.e30 = t3010;
- mat410.e31 = t3110;
- mat410.e32 = t3210;
- mat410.e33 = t3310;
- if(_this64.sizeMat4 == _this64.stackMat4.length) {
- var newLength42 = _this64.sizeMat4 << 1;
- var this43 = new Array(newLength42);
- var newArray42 = this43;
- var _g52 = 0;
- var _g142 = _this64.sizeMat4;
- while(_g52 < _g142) {
- var i42 = _g52++;
- newArray42[i42] = _this64.stackMat4[i42];
- _this64.stackMat4[i42] = null;
- }
- _this64.stackMat4 = newArray42;
- }
- _this64.stackMat4[_this64.sizeMat4++] = mat410;
- }
- if(quat10 != null) {
- var tx37 = 0;
- var ty37 = 0;
- var tz37 = 0;
- var tw10 = 1;
- quat10.x = tx37;
- quat10.y = ty37;
- quat10.z = tz37;
- quat10.w = tw10;
- if(_this64.sizeQuat == _this64.stackQuat.length) {
- var newLength43 = _this64.sizeQuat << 1;
- var this44 = new Array(newLength43);
- var newArray43 = this44;
- var _g53 = 0;
- var _g143 = _this64.sizeQuat;
- while(_g53 < _g143) {
- var i43 = _g53++;
- newArray43[i43] = _this64.stackQuat[i43];
- _this64.stackQuat[i43] = null;
- }
- _this64.stackQuat = newArray43;
- }
- _this64.stackQuat[_this64.sizeQuat++] = quat10;
- }
- var _this65 = this.p;
- var mat311 = null;
- var mat411 = null;
- var quat11 = null;
- if(o != null) {
- o.zero();
- if(_this65.sizeVec3 == _this65.stackVec3.length) {
- var newLength44 = _this65.sizeVec3 << 1;
- var this45 = new Array(newLength44);
- var newArray44 = this45;
- var _g54 = 0;
- var _g144 = _this65.sizeVec3;
- while(_g54 < _g144) {
- var i44 = _g54++;
- newArray44[i44] = _this65.stackVec3[i44];
- _this65.stackVec3[i44] = null;
- }
- _this65.stackVec3 = newArray44;
- }
- _this65.stackVec3[_this65.sizeVec3++] = o;
- }
- if(mat311 != null) {
- var t0022 = 1;
- var t0122 = 0;
- var t0222 = 0;
- var t1022 = 0;
- var t1122 = 1;
- var t1222 = 0;
- var t2022 = 0;
- var t2122 = 0;
- var t2222 = 1;
- mat311.e00 = t0022;
- mat311.e01 = t0122;
- mat311.e02 = t0222;
- mat311.e10 = t1022;
- mat311.e11 = t1122;
- mat311.e12 = t1222;
- mat311.e20 = t2022;
- mat311.e21 = t2122;
- mat311.e22 = t2222;
- if(_this65.sizeMat3 == _this65.stackMat3.length) {
- var newLength45 = _this65.sizeMat3 << 1;
- var this46 = new Array(newLength45);
- var newArray45 = this46;
- var _g55 = 0;
- var _g145 = _this65.sizeMat3;
- while(_g55 < _g145) {
- var i45 = _g55++;
- newArray45[i45] = _this65.stackMat3[i45];
- _this65.stackMat3[i45] = null;
- }
- _this65.stackMat3 = newArray45;
- }
- _this65.stackMat3[_this65.sizeMat3++] = mat311;
- }
- if(mat411 != null) {
- var t0023 = 1;
- var t0123 = 0;
- var t0223 = 0;
- var t0311 = 0;
- var t1023 = 0;
- var t1123 = 1;
- var t1223 = 0;
- var t1311 = 0;
- var t2023 = 0;
- var t2123 = 0;
- var t2223 = 1;
- var t2311 = 0;
- var t3011 = 0;
- var t3111 = 0;
- var t3211 = 0;
- var t3311 = 1;
- mat411.e00 = t0023;
- mat411.e01 = t0123;
- mat411.e02 = t0223;
- mat411.e03 = t0311;
- mat411.e10 = t1023;
- mat411.e11 = t1123;
- mat411.e12 = t1223;
- mat411.e13 = t1311;
- mat411.e20 = t2023;
- mat411.e21 = t2123;
- mat411.e22 = t2223;
- mat411.e23 = t2311;
- mat411.e30 = t3011;
- mat411.e31 = t3111;
- mat411.e32 = t3211;
- mat411.e33 = t3311;
- if(_this65.sizeMat4 == _this65.stackMat4.length) {
- var newLength46 = _this65.sizeMat4 << 1;
- var this47 = new Array(newLength46);
- var newArray46 = this47;
- var _g56 = 0;
- var _g146 = _this65.sizeMat4;
- while(_g56 < _g146) {
- var i46 = _g56++;
- newArray46[i46] = _this65.stackMat4[i46];
- _this65.stackMat4[i46] = null;
- }
- _this65.stackMat4 = newArray46;
- }
- _this65.stackMat4[_this65.sizeMat4++] = mat411;
- }
- if(quat11 != null) {
- var tx38 = 0;
- var ty38 = 0;
- var tz38 = 0;
- var tw11 = 1;
- quat11.x = tx38;
- quat11.y = ty38;
- quat11.z = tz38;
- quat11.w = tw11;
- if(_this65.sizeQuat == _this65.stackQuat.length) {
- var newLength47 = _this65.sizeQuat << 1;
- var this48 = new Array(newLength47);
- var newArray47 = this48;
- var _g57 = 0;
- var _g147 = _this65.sizeQuat;
- while(_g57 < _g147) {
- var i47 = _g57++;
- newArray47[i47] = _this65.stackQuat[i47];
- _this65.stackQuat[i47] = null;
- }
- _this65.stackQuat = newArray47;
- }
- _this65.stackQuat[_this65.sizeQuat++] = quat11;
- }
- var _this66 = this.p;
- var vec3 = null;
- var mat412 = null;
- var quat12 = null;
- if(vec3 != null) {
- vec3.zero();
- if(_this66.sizeVec3 == _this66.stackVec3.length) {
- var newLength48 = _this66.sizeVec3 << 1;
- var this49 = new Array(newLength48);
- var newArray48 = this49;
- var _g58 = 0;
- var _g148 = _this66.sizeVec3;
- while(_g58 < _g148) {
- var i48 = _g58++;
- newArray48[i48] = _this66.stackVec3[i48];
- _this66.stackVec3[i48] = null;
- }
- _this66.stackVec3 = newArray48;
- }
- _this66.stackVec3[_this66.sizeVec3++] = vec3;
- }
- if(m != null) {
- var t0024 = 1;
- var t0124 = 0;
- var t0224 = 0;
- var t1024 = 0;
- var t1124 = 1;
- var t1224 = 0;
- var t2024 = 0;
- var t2124 = 0;
- var t2224 = 1;
- m.e00 = t0024;
- m.e01 = t0124;
- m.e02 = t0224;
- m.e10 = t1024;
- m.e11 = t1124;
- m.e12 = t1224;
- m.e20 = t2024;
- m.e21 = t2124;
- m.e22 = t2224;
- if(_this66.sizeMat3 == _this66.stackMat3.length) {
- var newLength49 = _this66.sizeMat3 << 1;
- var this50 = new Array(newLength49);
- var newArray49 = this50;
- var _g59 = 0;
- var _g149 = _this66.sizeMat3;
- while(_g59 < _g149) {
- var i49 = _g59++;
- newArray49[i49] = _this66.stackMat3[i49];
- _this66.stackMat3[i49] = null;
- }
- _this66.stackMat3 = newArray49;
- }
- _this66.stackMat3[_this66.sizeMat3++] = m;
- }
- if(mat412 != null) {
- var t0025 = 1;
- var t0125 = 0;
- var t0225 = 0;
- var t0312 = 0;
- var t1025 = 0;
- var t1125 = 1;
- var t1225 = 0;
- var t1312 = 0;
- var t2025 = 0;
- var t2125 = 0;
- var t2225 = 1;
- var t2312 = 0;
- var t3012 = 0;
- var t3112 = 0;
- var t3212 = 0;
- var t3312 = 1;
- mat412.e00 = t0025;
- mat412.e01 = t0125;
- mat412.e02 = t0225;
- mat412.e03 = t0312;
- mat412.e10 = t1025;
- mat412.e11 = t1125;
- mat412.e12 = t1225;
- mat412.e13 = t1312;
- mat412.e20 = t2025;
- mat412.e21 = t2125;
- mat412.e22 = t2225;
- mat412.e23 = t2312;
- mat412.e30 = t3012;
- mat412.e31 = t3112;
- mat412.e32 = t3212;
- mat412.e33 = t3312;
- if(_this66.sizeMat4 == _this66.stackMat4.length) {
- var newLength50 = _this66.sizeMat4 << 1;
- var this51 = new Array(newLength50);
- var newArray50 = this51;
- var _g60 = 0;
- var _g150 = _this66.sizeMat4;
- while(_g60 < _g150) {
- var i50 = _g60++;
- newArray50[i50] = _this66.stackMat4[i50];
- _this66.stackMat4[i50] = null;
- }
- _this66.stackMat4 = newArray50;
- }
- _this66.stackMat4[_this66.sizeMat4++] = mat412;
- }
- if(quat12 != null) {
- var tx39 = 0;
- var ty39 = 0;
- var tz39 = 0;
- var tw12 = 1;
- quat12.x = tx39;
- quat12.y = ty39;
- quat12.z = tz39;
- quat12.w = tw12;
- if(_this66.sizeQuat == _this66.stackQuat.length) {
- var newLength51 = _this66.sizeQuat << 1;
- var this52 = new Array(newLength51);
- var newArray51 = this52;
- var _g61 = 0;
- var _g151 = _this66.sizeQuat;
- while(_g61 < _g151) {
- var i51 = _g61++;
- newArray51[i51] = _this66.stackQuat[i51];
- _this66.stackQuat[i51] = null;
- }
- _this66.stackQuat = newArray51;
- }
- _this66.stackQuat[_this66.sizeQuat++] = quat12;
- }
- var _this67 = this.p;
- var mat312 = null;
- var mat413 = null;
- var quat13 = null;
- if(ex != null) {
- ex.zero();
- if(_this67.sizeVec3 == _this67.stackVec3.length) {
- var newLength52 = _this67.sizeVec3 << 1;
- var this53 = new Array(newLength52);
- var newArray52 = this53;
- var _g62 = 0;
- var _g152 = _this67.sizeVec3;
- while(_g62 < _g152) {
- var i52 = _g62++;
- newArray52[i52] = _this67.stackVec3[i52];
- _this67.stackVec3[i52] = null;
- }
- _this67.stackVec3 = newArray52;
- }
- _this67.stackVec3[_this67.sizeVec3++] = ex;
- }
- if(mat312 != null) {
- var t0026 = 1;
- var t0126 = 0;
- var t0226 = 0;
- var t1026 = 0;
- var t1126 = 1;
- var t1226 = 0;
- var t2026 = 0;
- var t2126 = 0;
- var t2226 = 1;
- mat312.e00 = t0026;
- mat312.e01 = t0126;
- mat312.e02 = t0226;
- mat312.e10 = t1026;
- mat312.e11 = t1126;
- mat312.e12 = t1226;
- mat312.e20 = t2026;
- mat312.e21 = t2126;
- mat312.e22 = t2226;
- if(_this67.sizeMat3 == _this67.stackMat3.length) {
- var newLength53 = _this67.sizeMat3 << 1;
- var this54 = new Array(newLength53);
- var newArray53 = this54;
- var _g63 = 0;
- var _g153 = _this67.sizeMat3;
- while(_g63 < _g153) {
- var i53 = _g63++;
- newArray53[i53] = _this67.stackMat3[i53];
- _this67.stackMat3[i53] = null;
- }
- _this67.stackMat3 = newArray53;
- }
- _this67.stackMat3[_this67.sizeMat3++] = mat312;
- }
- if(mat413 != null) {
- var t0027 = 1;
- var t0127 = 0;
- var t0227 = 0;
- var t0313 = 0;
- var t1027 = 0;
- var t1127 = 1;
- var t1227 = 0;
- var t1313 = 0;
- var t2027 = 0;
- var t2127 = 0;
- var t2227 = 1;
- var t2313 = 0;
- var t3013 = 0;
- var t3113 = 0;
- var t3213 = 0;
- var t3313 = 1;
- mat413.e00 = t0027;
- mat413.e01 = t0127;
- mat413.e02 = t0227;
- mat413.e03 = t0313;
- mat413.e10 = t1027;
- mat413.e11 = t1127;
- mat413.e12 = t1227;
- mat413.e13 = t1313;
- mat413.e20 = t2027;
- mat413.e21 = t2127;
- mat413.e22 = t2227;
- mat413.e23 = t2313;
- mat413.e30 = t3013;
- mat413.e31 = t3113;
- mat413.e32 = t3213;
- mat413.e33 = t3313;
- if(_this67.sizeMat4 == _this67.stackMat4.length) {
- var newLength54 = _this67.sizeMat4 << 1;
- var this55 = new Array(newLength54);
- var newArray54 = this55;
- var _g64 = 0;
- var _g154 = _this67.sizeMat4;
- while(_g64 < _g154) {
- var i54 = _g64++;
- newArray54[i54] = _this67.stackMat4[i54];
- _this67.stackMat4[i54] = null;
- }
- _this67.stackMat4 = newArray54;
- }
- _this67.stackMat4[_this67.sizeMat4++] = mat413;
- }
- if(quat13 != null) {
- var tx40 = 0;
- var ty40 = 0;
- var tz40 = 0;
- var tw13 = 1;
- quat13.x = tx40;
- quat13.y = ty40;
- quat13.z = tz40;
- quat13.w = tw13;
- if(_this67.sizeQuat == _this67.stackQuat.length) {
- var newLength55 = _this67.sizeQuat << 1;
- var this56 = new Array(newLength55);
- var newArray55 = this56;
- var _g65 = 0;
- var _g155 = _this67.sizeQuat;
- while(_g65 < _g155) {
- var i55 = _g65++;
- newArray55[i55] = _this67.stackQuat[i55];
- _this67.stackQuat[i55] = null;
- }
- _this67.stackQuat = newArray55;
- }
- _this67.stackQuat[_this67.sizeQuat++] = quat13;
- }
- var _this68 = this.p;
- var mat313 = null;
- var mat414 = null;
- var quat14 = null;
- if(ey != null) {
- ey.zero();
- if(_this68.sizeVec3 == _this68.stackVec3.length) {
- var newLength56 = _this68.sizeVec3 << 1;
- var this57 = new Array(newLength56);
- var newArray56 = this57;
- var _g66 = 0;
- var _g156 = _this68.sizeVec3;
- while(_g66 < _g156) {
- var i56 = _g66++;
- newArray56[i56] = _this68.stackVec3[i56];
- _this68.stackVec3[i56] = null;
- }
- _this68.stackVec3 = newArray56;
- }
- _this68.stackVec3[_this68.sizeVec3++] = ey;
- }
- if(mat313 != null) {
- var t0028 = 1;
- var t0128 = 0;
- var t0228 = 0;
- var t1028 = 0;
- var t1128 = 1;
- var t1228 = 0;
- var t2028 = 0;
- var t2128 = 0;
- var t2228 = 1;
- mat313.e00 = t0028;
- mat313.e01 = t0128;
- mat313.e02 = t0228;
- mat313.e10 = t1028;
- mat313.e11 = t1128;
- mat313.e12 = t1228;
- mat313.e20 = t2028;
- mat313.e21 = t2128;
- mat313.e22 = t2228;
- if(_this68.sizeMat3 == _this68.stackMat3.length) {
- var newLength57 = _this68.sizeMat3 << 1;
- var this58 = new Array(newLength57);
- var newArray57 = this58;
- var _g67 = 0;
- var _g157 = _this68.sizeMat3;
- while(_g67 < _g157) {
- var i57 = _g67++;
- newArray57[i57] = _this68.stackMat3[i57];
- _this68.stackMat3[i57] = null;
- }
- _this68.stackMat3 = newArray57;
- }
- _this68.stackMat3[_this68.sizeMat3++] = mat313;
- }
- if(mat414 != null) {
- var t0029 = 1;
- var t0129 = 0;
- var t0229 = 0;
- var t0314 = 0;
- var t1029 = 0;
- var t1129 = 1;
- var t1229 = 0;
- var t1314 = 0;
- var t2029 = 0;
- var t2129 = 0;
- var t2229 = 1;
- var t2314 = 0;
- var t3014 = 0;
- var t3114 = 0;
- var t3214 = 0;
- var t3314 = 1;
- mat414.e00 = t0029;
- mat414.e01 = t0129;
- mat414.e02 = t0229;
- mat414.e03 = t0314;
- mat414.e10 = t1029;
- mat414.e11 = t1129;
- mat414.e12 = t1229;
- mat414.e13 = t1314;
- mat414.e20 = t2029;
- mat414.e21 = t2129;
- mat414.e22 = t2229;
- mat414.e23 = t2314;
- mat414.e30 = t3014;
- mat414.e31 = t3114;
- mat414.e32 = t3214;
- mat414.e33 = t3314;
- if(_this68.sizeMat4 == _this68.stackMat4.length) {
- var newLength58 = _this68.sizeMat4 << 1;
- var this59 = new Array(newLength58);
- var newArray58 = this59;
- var _g68 = 0;
- var _g158 = _this68.sizeMat4;
- while(_g68 < _g158) {
- var i58 = _g68++;
- newArray58[i58] = _this68.stackMat4[i58];
- _this68.stackMat4[i58] = null;
- }
- _this68.stackMat4 = newArray58;
- }
- _this68.stackMat4[_this68.sizeMat4++] = mat414;
- }
- if(quat14 != null) {
- var tx41 = 0;
- var ty41 = 0;
- var tz41 = 0;
- var tw14 = 1;
- quat14.x = tx41;
- quat14.y = ty41;
- quat14.z = tz41;
- quat14.w = tw14;
- if(_this68.sizeQuat == _this68.stackQuat.length) {
- var newLength59 = _this68.sizeQuat << 1;
- var this60 = new Array(newLength59);
- var newArray59 = this60;
- var _g69 = 0;
- var _g159 = _this68.sizeQuat;
- while(_g69 < _g159) {
- var i59 = _g69++;
- newArray59[i59] = _this68.stackQuat[i59];
- _this68.stackQuat[i59] = null;
- }
- _this68.stackQuat = newArray59;
- }
- _this68.stackQuat[_this68.sizeQuat++] = quat14;
- }
- var _this69 = this.p;
- var mat314 = null;
- var mat415 = null;
- var quat15 = null;
- if(ez != null) {
- ez.zero();
- if(_this69.sizeVec3 == _this69.stackVec3.length) {
- var newLength60 = _this69.sizeVec3 << 1;
- var this61 = new Array(newLength60);
- var newArray60 = this61;
- var _g70 = 0;
- var _g160 = _this69.sizeVec3;
- while(_g70 < _g160) {
- var i60 = _g70++;
- newArray60[i60] = _this69.stackVec3[i60];
- _this69.stackVec3[i60] = null;
- }
- _this69.stackVec3 = newArray60;
- }
- _this69.stackVec3[_this69.sizeVec3++] = ez;
- }
- if(mat314 != null) {
- var t0030 = 1;
- var t0130 = 0;
- var t0230 = 0;
- var t1030 = 0;
- var t1130 = 1;
- var t1230 = 0;
- var t2030 = 0;
- var t2130 = 0;
- var t2230 = 1;
- mat314.e00 = t0030;
- mat314.e01 = t0130;
- mat314.e02 = t0230;
- mat314.e10 = t1030;
- mat314.e11 = t1130;
- mat314.e12 = t1230;
- mat314.e20 = t2030;
- mat314.e21 = t2130;
- mat314.e22 = t2230;
- if(_this69.sizeMat3 == _this69.stackMat3.length) {
- var newLength61 = _this69.sizeMat3 << 1;
- var this62 = new Array(newLength61);
- var newArray61 = this62;
- var _g71 = 0;
- var _g161 = _this69.sizeMat3;
- while(_g71 < _g161) {
- var i61 = _g71++;
- newArray61[i61] = _this69.stackMat3[i61];
- _this69.stackMat3[i61] = null;
- }
- _this69.stackMat3 = newArray61;
- }
- _this69.stackMat3[_this69.sizeMat3++] = mat314;
- }
- if(mat415 != null) {
- var t0031 = 1;
- var t0131 = 0;
- var t0231 = 0;
- var t0315 = 0;
- var t1031 = 0;
- var t1131 = 1;
- var t1231 = 0;
- var t1315 = 0;
- var t2031 = 0;
- var t2131 = 0;
- var t2231 = 1;
- var t2315 = 0;
- var t3015 = 0;
- var t3115 = 0;
- var t3215 = 0;
- var t3315 = 1;
- mat415.e00 = t0031;
- mat415.e01 = t0131;
- mat415.e02 = t0231;
- mat415.e03 = t0315;
- mat415.e10 = t1031;
- mat415.e11 = t1131;
- mat415.e12 = t1231;
- mat415.e13 = t1315;
- mat415.e20 = t2031;
- mat415.e21 = t2131;
- mat415.e22 = t2231;
- mat415.e23 = t2315;
- mat415.e30 = t3015;
- mat415.e31 = t3115;
- mat415.e32 = t3215;
- mat415.e33 = t3315;
- if(_this69.sizeMat4 == _this69.stackMat4.length) {
- var newLength62 = _this69.sizeMat4 << 1;
- var this63 = new Array(newLength62);
- var newArray62 = this63;
- var _g72 = 0;
- var _g162 = _this69.sizeMat4;
- while(_g72 < _g162) {
- var i62 = _g72++;
- newArray62[i62] = _this69.stackMat4[i62];
- _this69.stackMat4[i62] = null;
- }
- _this69.stackMat4 = newArray62;
- }
- _this69.stackMat4[_this69.sizeMat4++] = mat415;
- }
- if(quat15 != null) {
- var tx42 = 0;
- var ty42 = 0;
- var tz42 = 0;
- var tw15 = 1;
- quat15.x = tx42;
- quat15.y = ty42;
- quat15.z = tz42;
- quat15.w = tw15;
- if(_this69.sizeQuat == _this69.stackQuat.length) {
- var newLength63 = _this69.sizeQuat << 1;
- var this64 = new Array(newLength63);
- var newArray63 = this64;
- var _g73 = 0;
- var _g163 = _this69.sizeQuat;
- while(_g73 < _g163) {
- var i63 = _g73++;
- newArray63[i63] = _this69.stackQuat[i63];
- _this69.stackQuat[i63] = null;
- }
- _this69.stackQuat = newArray63;
- }
- _this69.stackQuat[_this69.sizeQuat++] = quat15;
- }
- }
- rect(v1,v2,v3,v4,n1,n2,n3,n4,color) {
- this.triangle(v1,v2,v3,n1,n2,n3,color);
- this.triangle(v1,v3,v4,n1,n3,n4,color);
- }
- point(v,color) {
- }
- triangle(v1,v2,v3,n1,n2,n3,color) {
- }
- line(v1,v2,color) {
- }
- }
- oimo.dynamics.common.DebugDrawStyle = class oimo_dynamics_common_DebugDrawStyle {
- constructor() {
- this.basisColorZ = new oimo.common.Vec3(0.0,0.0,1.0);
- this.basisColorY = new oimo.common.Vec3(0.0,1.0,0.0);
- this.basisColorX = new oimo.common.Vec3(1.0,0.0,0.0);
- this.basisLength = 0.5;
- this.jointRotationalConstraintRadius = 0.3;
- this.jointErrorColor = new oimo.common.Vec3(1.0,0.1,0.1);
- this.jointLineColor = new oimo.common.Vec3(0.8,0.8,0.8);
- this.contactBinormalLength = 0.5;
- this.contactTangentLength = 0.5;
- this.contactNormalLength = 0.5;
- this.contactBinormalColor = new oimo.common.Vec3(0.2,0.2,1.0);
- this.contactTangentColor = new oimo.common.Vec3(0.1,0.8,0.1);
- this.contactNormalColor = new oimo.common.Vec3(1.0,0.1,0.1);
- this.disabledContactColor = new oimo.common.Vec3(0.5,0.1,0.1);
- this.newContactColor = new oimo.common.Vec3(1.0,1.0,0.1);
- this.contactColor4 = new oimo.common.Vec3(0.8,0.1,1.0);
- this.contactColor3 = new oimo.common.Vec3(0.1,0.8,0.6);
- this.contactColor2 = new oimo.common.Vec3(1.0,0.6,0.1);
- this.contactColor = new oimo.common.Vec3(1.0,0.1,0.1);
- this.pairColor = new oimo.common.Vec3(1.0,1.0,0.1);
- this.bvhNodeColor = new oimo.common.Vec3(0.4,0.4,0.4);
- this.aabbColor = new oimo.common.Vec3(1.0,0.1,0.1);
- this.kinematicShapeColor = new oimo.common.Vec3(1.0,0.5,0.1);
- this.staticShapeColor = new oimo.common.Vec3(0.7,0.7,0.7);
- this.sleepingShapeColor2 = new oimo.common.Vec3(0.2,0.8,0.5);
- this.sleepingShapeColor1 = new oimo.common.Vec3(0.3,0.3,0.8);
- this.sleepyShapeColor2 = new oimo.common.Vec3(0.6,0.8,0.3);
- this.sleepyShapeColor1 = new oimo.common.Vec3(0.5,0.25,0.6);
- this.shapeColor2 = new oimo.common.Vec3(1.0,0.8,0.1);
- this.shapeColor1 = new oimo.common.Vec3(0.7,0.2,0.4);
- }
- }
- oimo.dynamics.common.Performance = class oimo_dynamics_common_Performance {
- }
- if(!oimo.dynamics.constraint) oimo.dynamics.constraint = {};
- oimo.dynamics.constraint.ConstraintSolver = class oimo_dynamics_constraint_ConstraintSolver {
- constructor() {
- this._b1 = null;
- this._b2 = null;
- this._addedToIsland = false;
- }
- preSolveVelocity(timeStep) {
- }
- warmStart(timeStep) {
- }
- solveVelocity() {
- }
- postSolveVelocity(timeStep) {
- }
- preSolvePosition(timeStep) {
- }
- solvePositionSplitImpulse() {
- }
- solvePositionNgs(timeStep) {
- }
- postSolve() {
- }
- }
- oimo.dynamics.constraint.PositionCorrectionAlgorithm = class oimo_dynamics_constraint_PositionCorrectionAlgorithm {
- }
- if(!oimo.dynamics.constraint.contact) oimo.dynamics.constraint.contact = {};
- oimo.dynamics.constraint.contact.ContactConstraint = class oimo_dynamics_constraint_contact_ContactConstraint {
- constructor(manifold) {
- this._solver = new oimo.dynamics.constraint.solver.pgs.PgsContactConstraintSolver(this);
- this._manifold = manifold;
- }
- _getVelocitySolverInfo(timeStep,info) {
- info.b1 = this._b1;
- info.b2 = this._b2;
- var normal;
- var normalX;
- var normalY;
- var normalZ;
- var tangent;
- var tangentX;
- var tangentY;
- var tangentZ;
- var binormal;
- var binormalX;
- var binormalY;
- var binormalZ;
- normalX = this._manifold._normalX;
- normalY = this._manifold._normalY;
- normalZ = this._manifold._normalZ;
- tangentX = this._manifold._tangentX;
- tangentY = this._manifold._tangentY;
- tangentZ = this._manifold._tangentZ;
- binormalX = this._manifold._binormalX;
- binormalY = this._manifold._binormalY;
- binormalZ = this._manifold._binormalZ;
- var friction = Math.sqrt(this._s1._friction * this._s2._friction);
- var restitution = Math.sqrt(this._s1._restitution * this._s2._restitution);
- var num = this._manifold._numPoints;
- info.numRows = 0;
- var posDiff;
- var posDiffX;
- var posDiffY;
- var posDiffZ;
- posDiffX = this._tf1._positionX - this._tf2._positionX;
- posDiffY = this._tf1._positionY - this._tf2._positionY;
- posDiffZ = this._tf1._positionZ - this._tf2._positionZ;
- var _g = 0;
- var _g1 = num;
- while(_g < _g1) {
- var i = _g++;
- var p = this._manifold._points[i];
- if(p._depth < 0) {
- p._disabled = true;
- var _this = p._impulse;
- _this.impulseN = 0;
- _this.impulseT = 0;
- _this.impulseB = 0;
- _this.impulseP = 0;
- _this.impulseLX = 0;
- _this.impulseLY = 0;
- _this.impulseLZ = 0;
- continue;
- } else {
- p._disabled = false;
- }
- var row = info.rows[info.numRows++];
- row.friction = friction;
- row.cfm = 0;
- var j = row.jacobianN;
- j.lin1X = normalX;
- j.lin1Y = normalY;
- j.lin1Z = normalZ;
- j.lin2X = normalX;
- j.lin2Y = normalY;
- j.lin2Z = normalZ;
- j.ang1X = p._relPos1Y * normalZ - p._relPos1Z * normalY;
- j.ang1Y = p._relPos1Z * normalX - p._relPos1X * normalZ;
- j.ang1Z = p._relPos1X * normalY - p._relPos1Y * normalX;
- j.ang2X = p._relPos2Y * normalZ - p._relPos2Z * normalY;
- j.ang2Y = p._relPos2Z * normalX - p._relPos2X * normalZ;
- j.ang2Z = p._relPos2X * normalY - p._relPos2Y * normalX;
- j = row.jacobianT;
- j.lin1X = tangentX;
- j.lin1Y = tangentY;
- j.lin1Z = tangentZ;
- j.lin2X = tangentX;
- j.lin2Y = tangentY;
- j.lin2Z = tangentZ;
- j.ang1X = p._relPos1Y * tangentZ - p._relPos1Z * tangentY;
- j.ang1Y = p._relPos1Z * tangentX - p._relPos1X * tangentZ;
- j.ang1Z = p._relPos1X * tangentY - p._relPos1Y * tangentX;
- j.ang2X = p._relPos2Y * tangentZ - p._relPos2Z * tangentY;
- j.ang2Y = p._relPos2Z * tangentX - p._relPos2X * tangentZ;
- j.ang2Z = p._relPos2X * tangentY - p._relPos2Y * tangentX;
- j = row.jacobianB;
- j.lin1X = binormalX;
- j.lin1Y = binormalY;
- j.lin1Z = binormalZ;
- j.lin2X = binormalX;
- j.lin2Y = binormalY;
- j.lin2Z = binormalZ;
- j.ang1X = p._relPos1Y * binormalZ - p._relPos1Z * binormalY;
- j.ang1Y = p._relPos1Z * binormalX - p._relPos1X * binormalZ;
- j.ang1Z = p._relPos1X * binormalY - p._relPos1Y * binormalX;
- j.ang2X = p._relPos2Y * binormalZ - p._relPos2Z * binormalY;
- j.ang2Y = p._relPos2Z * binormalX - p._relPos2X * binormalZ;
- j.ang2Z = p._relPos2X * binormalY - p._relPos2Y * binormalX;
- j = row.jacobianN;
- var rvn = j.lin1X * this._b1._velX + j.lin1Y * this._b1._velY + j.lin1Z * this._b1._velZ + (j.ang1X * this._b1._angVelX + j.ang1Y * this._b1._angVelY + j.ang1Z * this._b1._angVelZ) - (j.lin2X * this._b2._velX + j.lin2Y * this._b2._velY + j.lin2Z * this._b2._velZ + (j.ang2X * this._b2._angVelX + j.ang2Y * this._b2._angVelY + j.ang2Z * this._b2._angVelZ));
- if(rvn < -oimo.common.Setting.contactEnableBounceThreshold && !p._warmStarted) {
- row.rhs = -rvn * restitution;
- } else {
- row.rhs = 0;
- }
- if(this._positionCorrectionAlgorithm == oimo.dynamics.constraint.PositionCorrectionAlgorithm.BAUMGARTE) {
- if(p._depth > oimo.common.Setting.linearSlop) {
- var minRhs = (p._depth - oimo.common.Setting.linearSlop) * oimo.common.Setting.velocityBaumgarte * timeStep.invDt;
- if(row.rhs < minRhs) {
- row.rhs = minRhs;
- }
- }
- }
- if(!p._warmStarted) {
- var _this1 = p._impulse;
- _this1.impulseN = 0;
- _this1.impulseT = 0;
- _this1.impulseB = 0;
- _this1.impulseP = 0;
- _this1.impulseLX = 0;
- _this1.impulseLY = 0;
- _this1.impulseLZ = 0;
- }
- row.impulse = p._impulse;
- }
- }
- _getPositionSolverInfo(info) {
- info.b1 = this._b1;
- info.b2 = this._b2;
- var normal;
- var normalX;
- var normalY;
- var normalZ;
- normalX = this._manifold._normalX;
- normalY = this._manifold._normalY;
- normalZ = this._manifold._normalZ;
- var num = this._manifold._numPoints;
- info.numRows = 0;
- var _g = 0;
- var _g1 = num;
- while(_g < _g1) {
- var i = _g++;
- var p = this._manifold._points[i];
- if(p._disabled) {
- continue;
- }
- var row = info.rows[info.numRows++];
- var j = row.jacobianN;
- j.lin1X = normalX;
- j.lin1Y = normalY;
- j.lin1Z = normalZ;
- j.lin2X = normalX;
- j.lin2Y = normalY;
- j.lin2Z = normalZ;
- j.ang1X = p._relPos1Y * normalZ - p._relPos1Z * normalY;
- j.ang1Y = p._relPos1Z * normalX - p._relPos1X * normalZ;
- j.ang1Z = p._relPos1X * normalY - p._relPos1Y * normalX;
- j.ang2X = p._relPos2Y * normalZ - p._relPos2Z * normalY;
- j.ang2Y = p._relPos2Z * normalX - p._relPos2X * normalZ;
- j.ang2Z = p._relPos2X * normalY - p._relPos2Y * normalX;
- row.rhs = p._depth - oimo.common.Setting.linearSlop;
- if(row.rhs < 0) {
- row.rhs = 0;
- }
- row.impulse = p._impulse;
- }
- }
- _syncManifold() {
- this._manifold._updateDepthsAndPositions(this._tf1,this._tf2);
- }
- getShape1() {
- return this._s1;
- }
- getShape2() {
- return this._s2;
- }
- getManifold() {
- return this._manifold;
- }
- isTouching() {
- var _g = 0;
- var _g1 = this._manifold._numPoints;
- while(_g < _g1) {
- var i = _g++;
- if(this._manifold._points[i]._depth >= 0) {
- return true;
- }
- }
- return false;
- }
- }
- oimo.dynamics.constraint.contact.ContactImpulse = class oimo_dynamics_constraint_contact_ContactImpulse {
- constructor() {
- this.impulseN = 0;
- this.impulseT = 0;
- this.impulseB = 0;
- this.impulseP = 0;
- this.impulseLX = 0;
- this.impulseLY = 0;
- this.impulseLZ = 0;
- }
- copyFrom(imp) {
- this.impulseN = imp.impulseN;
- this.impulseT = imp.impulseT;
- this.impulseB = imp.impulseB;
- this.impulseLX = imp.impulseLX;
- this.impulseLY = imp.impulseLY;
- this.impulseLZ = imp.impulseLZ;
- }
- }
- oimo.dynamics.constraint.contact.Manifold = class oimo_dynamics_constraint_contact_Manifold {
- constructor() {
- this._normalX = 0;
- this._normalY = 0;
- this._normalZ = 0;
- this._tangentX = 0;
- this._tangentY = 0;
- this._tangentZ = 0;
- this._binormalX = 0;
- this._binormalY = 0;
- this._binormalZ = 0;
- this._numPoints = 0;
- var this1 = new Array(oimo.common.Setting.maxManifoldPoints);
- this._points = this1;
- var _g = 0;
- var _g1 = oimo.common.Setting.maxManifoldPoints;
- while(_g < _g1) {
- var i = _g++;
- this._points[i] = new oimo.dynamics.constraint.contact.ManifoldPoint();
- }
- }
- _clear() {
- var _g = 0;
- var _g1 = this._numPoints;
- while(_g < _g1) {
- var i = _g++;
- var _this = this._points[i];
- _this._localPos1X = 0;
- _this._localPos1Y = 0;
- _this._localPos1Z = 0;
- _this._localPos2X = 0;
- _this._localPos2Y = 0;
- _this._localPos2Z = 0;
- _this._relPos1X = 0;
- _this._relPos1Y = 0;
- _this._relPos1Z = 0;
- _this._relPos2X = 0;
- _this._relPos2Y = 0;
- _this._relPos2Z = 0;
- _this._pos1X = 0;
- _this._pos1Y = 0;
- _this._pos1Z = 0;
- _this._pos2X = 0;
- _this._pos2Y = 0;
- _this._pos2Z = 0;
- _this._depth = 0;
- var _this1 = _this._impulse;
- _this1.impulseN = 0;
- _this1.impulseT = 0;
- _this1.impulseB = 0;
- _this1.impulseP = 0;
- _this1.impulseLX = 0;
- _this1.impulseLY = 0;
- _this1.impulseLZ = 0;
- _this._warmStarted = false;
- _this._disabled = false;
- _this._id = -1;
- }
- this._numPoints = 0;
- }
- _buildBasis(normal) {
- var v = normal;
- this._normalX = v.x;
- this._normalY = v.y;
- this._normalZ = v.z;
- var nx = normal.x;
- var ny = normal.y;
- var nz = normal.z;
- var nx2 = nx * nx;
- var ny2 = ny * ny;
- var nz2 = nz * nz;
- var tx;
- var ty;
- var tz;
- var bx;
- var by;
- var bz;
- if(nx2 < ny2) {
- if(nx2 < nz2) {
- var invL = 1 / Math.sqrt(ny2 + nz2);
- tx = 0;
- ty = -nz * invL;
- tz = ny * invL;
- bx = ny * tz - nz * ty;
- by = -nx * tz;
- bz = nx * ty;
- } else {
- var invL1 = 1 / Math.sqrt(nx2 + ny2);
- tx = -ny * invL1;
- ty = nx * invL1;
- tz = 0;
- bx = -nz * ty;
- by = nz * tx;
- bz = nx * ty - ny * tx;
- }
- } else if(ny2 < nz2) {
- var invL2 = 1 / Math.sqrt(nx2 + nz2);
- tx = nz * invL2;
- ty = 0;
- tz = -nx * invL2;
- bx = ny * tz;
- by = nz * tx - nx * tz;
- bz = -ny * tx;
- } else {
- var invL3 = 1 / Math.sqrt(nx2 + ny2);
- tx = -ny * invL3;
- ty = nx * invL3;
- tz = 0;
- bx = -nz * ty;
- by = nz * tx;
- bz = nx * ty - ny * tx;
- }
- this._tangentX = tx;
- this._tangentY = ty;
- this._tangentZ = tz;
- this._binormalX = bx;
- this._binormalY = by;
- this._binormalZ = bz;
- }
- _updateDepthsAndPositions(tf1,tf2) {
- var _g = 0;
- var _g1 = this._numPoints;
- while(_g < _g1) {
- var i = _g++;
- var p = this._points[i];
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = tf1._rotation00 * p._localPos1X + tf1._rotation01 * p._localPos1Y + tf1._rotation02 * p._localPos1Z;
- __tmp__Y = tf1._rotation10 * p._localPos1X + tf1._rotation11 * p._localPos1Y + tf1._rotation12 * p._localPos1Z;
- __tmp__Z = tf1._rotation20 * p._localPos1X + tf1._rotation21 * p._localPos1Y + tf1._rotation22 * p._localPos1Z;
- p._relPos1X = __tmp__X;
- p._relPos1Y = __tmp__Y;
- p._relPos1Z = __tmp__Z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = tf2._rotation00 * p._localPos2X + tf2._rotation01 * p._localPos2Y + tf2._rotation02 * p._localPos2Z;
- __tmp__Y1 = tf2._rotation10 * p._localPos2X + tf2._rotation11 * p._localPos2Y + tf2._rotation12 * p._localPos2Z;
- __tmp__Z1 = tf2._rotation20 * p._localPos2X + tf2._rotation21 * p._localPos2Y + tf2._rotation22 * p._localPos2Z;
- p._relPos2X = __tmp__X1;
- p._relPos2Y = __tmp__Y1;
- p._relPos2Z = __tmp__Z1;
- p._pos1X = p._relPos1X + tf1._positionX;
- p._pos1Y = p._relPos1Y + tf1._positionY;
- p._pos1Z = p._relPos1Z + tf1._positionZ;
- p._pos2X = p._relPos2X + tf2._positionX;
- p._pos2Y = p._relPos2Y + tf2._positionY;
- p._pos2Z = p._relPos2Z + tf2._positionZ;
- var diff;
- var diffX;
- var diffY;
- var diffZ;
- diffX = p._pos1X - p._pos2X;
- diffY = p._pos1Y - p._pos2Y;
- diffZ = p._pos1Z - p._pos2Z;
- var dotN = diffX * this._normalX + diffY * this._normalY + diffZ * this._normalZ;
- p._depth = -dotN;
- }
- }
- getNormal() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._normalX;
- v1.y = this._normalY;
- v1.z = this._normalZ;
- return v;
- }
- getNormalTo(normal) {
- var v = normal;
- v.x = this._normalX;
- v.y = this._normalY;
- v.z = this._normalZ;
- }
- getTangent() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._tangentX;
- v1.y = this._tangentY;
- v1.z = this._tangentZ;
- return v;
- }
- getTangentTo(tangent) {
- var v = tangent;
- v.x = this._tangentX;
- v.y = this._tangentY;
- v.z = this._tangentZ;
- }
- getBinormal() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._binormalX;
- v1.y = this._binormalY;
- v1.z = this._binormalZ;
- return v;
- }
- getBinormalTo(binormal) {
- var v = binormal;
- v.x = this._binormalX;
- v.y = this._binormalY;
- v.z = this._binormalZ;
- }
- getPoints() {
- return this._points;
- }
- getNumPoints() {
- return this._numPoints;
- }
- }
- oimo.dynamics.constraint.contact.ManifoldPoint = class oimo_dynamics_constraint_contact_ManifoldPoint {
- constructor() {
- this._localPos1X = 0;
- this._localPos1Y = 0;
- this._localPos1Z = 0;
- this._localPos2X = 0;
- this._localPos2Y = 0;
- this._localPos2Z = 0;
- this._relPos1X = 0;
- this._relPos1Y = 0;
- this._relPos1Z = 0;
- this._relPos2X = 0;
- this._relPos2Y = 0;
- this._relPos2Z = 0;
- this._pos1X = 0;
- this._pos1Y = 0;
- this._pos1Z = 0;
- this._pos2X = 0;
- this._pos2Y = 0;
- this._pos2Z = 0;
- this._depth = 0;
- this._impulse = new oimo.dynamics.constraint.contact.ContactImpulse();
- this._warmStarted = false;
- this._disabled = false;
- this._id = -1;
- }
- getPosition1() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._pos1X;
- v1.y = this._pos1Y;
- v1.z = this._pos1Z;
- return v;
- }
- getPosition1To(position) {
- var v = position;
- v.x = this._pos1X;
- v.y = this._pos1Y;
- v.z = this._pos1Z;
- }
- getPosition2() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._pos2X;
- v1.y = this._pos2Y;
- v1.z = this._pos2Z;
- return v;
- }
- getPosition2To(position) {
- var v = position;
- v.x = this._pos2X;
- v.y = this._pos2Y;
- v.z = this._pos2Z;
- }
- getDepth() {
- return this._depth;
- }
- isWarmStarted() {
- return this._warmStarted;
- }
- getNormalImpulse() {
- return this._impulse.impulseN;
- }
- getTangentImpulse() {
- return this._impulse.impulseT;
- }
- getBinormalImpulse() {
- return this._impulse.impulseB;
- }
- isEnabled() {
- return !this._disabled;
- }
- }
- oimo.dynamics.constraint.contact.ManifoldUpdater = class oimo_dynamics_constraint_contact_ManifoldUpdater {
- constructor(manifold) {
- this._manifold = manifold;
- this.numOldPoints = 0;
- var this1 = new Array(oimo.common.Setting.maxManifoldPoints);
- this.oldPoints = this1;
- var _g = 0;
- var _g1 = oimo.common.Setting.maxManifoldPoints;
- while(_g < _g1) {
- var i = _g++;
- this.oldPoints[i] = new oimo.dynamics.constraint.contact.ManifoldPoint();
- }
- }
- removeOutdatedPoints() {
- var num = this._manifold._numPoints;
- var index = num;
- while(--index >= 0) {
- var p = this._manifold._points[index];
- var diff;
- var diffX;
- var diffY;
- var diffZ;
- diffX = p._pos1X - p._pos2X;
- diffY = p._pos1Y - p._pos2Y;
- diffZ = p._pos1Z - p._pos2Z;
- var dotN = this._manifold._normalX * diffX + this._manifold._normalY * diffY + this._manifold._normalZ * diffZ;
- if(dotN > oimo.common.Setting.contactPersistenceThreshold) {
- this.removeManifoldPoint(index);
- continue;
- }
- diffX += this._manifold._normalX * -dotN;
- diffY += this._manifold._normalY * -dotN;
- diffZ += this._manifold._normalZ * -dotN;
- if(diffX * diffX + diffY * diffY + diffZ * diffZ > oimo.common.Setting.contactPersistenceThreshold * oimo.common.Setting.contactPersistenceThreshold) {
- this.removeManifoldPoint(index);
- continue;
- }
- }
- }
- removeManifoldPoint(index) {
- var lastIndex = --this._manifold._numPoints;
- if(index != lastIndex) {
- var tmp = this._manifold._points[index];
- this._manifold._points[index] = this._manifold._points[lastIndex];
- this._manifold._points[lastIndex] = tmp;
- }
- var _this = this._manifold._points[lastIndex];
- _this._localPos1X = 0;
- _this._localPos1Y = 0;
- _this._localPos1Z = 0;
- _this._localPos2X = 0;
- _this._localPos2Y = 0;
- _this._localPos2Z = 0;
- _this._relPos1X = 0;
- _this._relPos1Y = 0;
- _this._relPos1Z = 0;
- _this._relPos2X = 0;
- _this._relPos2Y = 0;
- _this._relPos2Z = 0;
- _this._pos1X = 0;
- _this._pos1Y = 0;
- _this._pos1Z = 0;
- _this._pos2X = 0;
- _this._pos2Y = 0;
- _this._pos2Z = 0;
- _this._depth = 0;
- var _this1 = _this._impulse;
- _this1.impulseN = 0;
- _this1.impulseT = 0;
- _this1.impulseB = 0;
- _this1.impulseP = 0;
- _this1.impulseLX = 0;
- _this1.impulseLY = 0;
- _this1.impulseLZ = 0;
- _this._warmStarted = false;
- _this._disabled = false;
- _this._id = -1;
- }
- addManifoldPoint(point,tf1,tf2) {
- var num = this._manifold._numPoints;
- if(num == oimo.common.Setting.maxManifoldPoints) {
- var targetIndex = this.computeTargetIndex(point,tf1,tf2);
- var _this = this._manifold._points[targetIndex];
- var v = point.position1;
- _this._pos1X = v.x;
- _this._pos1Y = v.y;
- _this._pos1Z = v.z;
- var v1 = point.position2;
- _this._pos2X = v1.x;
- _this._pos2Y = v1.y;
- _this._pos2Z = v1.z;
- _this._relPos1X = _this._pos1X - tf1._positionX;
- _this._relPos1Y = _this._pos1Y - tf1._positionY;
- _this._relPos1Z = _this._pos1Z - tf1._positionZ;
- _this._relPos2X = _this._pos2X - tf2._positionX;
- _this._relPos2Y = _this._pos2Y - tf2._positionY;
- _this._relPos2Z = _this._pos2Z - tf2._positionZ;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = tf1._rotation00 * _this._relPos1X + tf1._rotation10 * _this._relPos1Y + tf1._rotation20 * _this._relPos1Z;
- __tmp__Y = tf1._rotation01 * _this._relPos1X + tf1._rotation11 * _this._relPos1Y + tf1._rotation21 * _this._relPos1Z;
- __tmp__Z = tf1._rotation02 * _this._relPos1X + tf1._rotation12 * _this._relPos1Y + tf1._rotation22 * _this._relPos1Z;
- _this._localPos1X = __tmp__X;
- _this._localPos1Y = __tmp__Y;
- _this._localPos1Z = __tmp__Z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = tf2._rotation00 * _this._relPos2X + tf2._rotation10 * _this._relPos2Y + tf2._rotation20 * _this._relPos2Z;
- __tmp__Y1 = tf2._rotation01 * _this._relPos2X + tf2._rotation11 * _this._relPos2Y + tf2._rotation21 * _this._relPos2Z;
- __tmp__Z1 = tf2._rotation02 * _this._relPos2X + tf2._rotation12 * _this._relPos2Y + tf2._rotation22 * _this._relPos2Z;
- _this._localPos2X = __tmp__X1;
- _this._localPos2Y = __tmp__Y1;
- _this._localPos2Z = __tmp__Z1;
- _this._depth = point.depth;
- var _this1 = _this._impulse;
- _this1.impulseN = 0;
- _this1.impulseT = 0;
- _this1.impulseB = 0;
- _this1.impulseP = 0;
- _this1.impulseLX = 0;
- _this1.impulseLY = 0;
- _this1.impulseLZ = 0;
- _this._id = point.id;
- _this._warmStarted = false;
- _this._disabled = false;
- return;
- }
- var _this2 = this._manifold._points[num];
- var v2 = point.position1;
- _this2._pos1X = v2.x;
- _this2._pos1Y = v2.y;
- _this2._pos1Z = v2.z;
- var v3 = point.position2;
- _this2._pos2X = v3.x;
- _this2._pos2Y = v3.y;
- _this2._pos2Z = v3.z;
- _this2._relPos1X = _this2._pos1X - tf1._positionX;
- _this2._relPos1Y = _this2._pos1Y - tf1._positionY;
- _this2._relPos1Z = _this2._pos1Z - tf1._positionZ;
- _this2._relPos2X = _this2._pos2X - tf2._positionX;
- _this2._relPos2Y = _this2._pos2Y - tf2._positionY;
- _this2._relPos2Z = _this2._pos2Z - tf2._positionZ;
- var __tmp__X2;
- var __tmp__Y2;
- var __tmp__Z2;
- __tmp__X2 = tf1._rotation00 * _this2._relPos1X + tf1._rotation10 * _this2._relPos1Y + tf1._rotation20 * _this2._relPos1Z;
- __tmp__Y2 = tf1._rotation01 * _this2._relPos1X + tf1._rotation11 * _this2._relPos1Y + tf1._rotation21 * _this2._relPos1Z;
- __tmp__Z2 = tf1._rotation02 * _this2._relPos1X + tf1._rotation12 * _this2._relPos1Y + tf1._rotation22 * _this2._relPos1Z;
- _this2._localPos1X = __tmp__X2;
- _this2._localPos1Y = __tmp__Y2;
- _this2._localPos1Z = __tmp__Z2;
- var __tmp__X3;
- var __tmp__Y3;
- var __tmp__Z3;
- __tmp__X3 = tf2._rotation00 * _this2._relPos2X + tf2._rotation10 * _this2._relPos2Y + tf2._rotation20 * _this2._relPos2Z;
- __tmp__Y3 = tf2._rotation01 * _this2._relPos2X + tf2._rotation11 * _this2._relPos2Y + tf2._rotation21 * _this2._relPos2Z;
- __tmp__Z3 = tf2._rotation02 * _this2._relPos2X + tf2._rotation12 * _this2._relPos2Y + tf2._rotation22 * _this2._relPos2Z;
- _this2._localPos2X = __tmp__X3;
- _this2._localPos2Y = __tmp__Y3;
- _this2._localPos2Z = __tmp__Z3;
- _this2._depth = point.depth;
- var _this3 = _this2._impulse;
- _this3.impulseN = 0;
- _this3.impulseT = 0;
- _this3.impulseB = 0;
- _this3.impulseP = 0;
- _this3.impulseLX = 0;
- _this3.impulseLY = 0;
- _this3.impulseLZ = 0;
- _this2._id = point.id;
- _this2._warmStarted = false;
- _this2._disabled = false;
- this._manifold._numPoints++;
- }
- computeTargetIndex(newPoint,tf1,tf2) {
- var p1 = this._manifold._points[0];
- var p2 = this._manifold._points[1];
- var p3 = this._manifold._points[2];
- var p4 = this._manifold._points[3];
- var maxDepth = p1._depth;
- var maxDepthIndex = 0;
- if(p2._depth > maxDepth) {
- maxDepth = p2._depth;
- maxDepthIndex = 1;
- }
- if(p3._depth > maxDepth) {
- maxDepth = p3._depth;
- maxDepthIndex = 2;
- }
- if(p4._depth > maxDepth) {
- maxDepth = p4._depth;
- maxDepthIndex = 3;
- }
- var rp1;
- var rp1X;
- var rp1Y;
- var rp1Z;
- var v = newPoint.position1;
- rp1X = v.x;
- rp1Y = v.y;
- rp1Z = v.z;
- rp1X -= tf1._positionX;
- rp1Y -= tf1._positionY;
- rp1Z -= tf1._positionZ;
- var p1X = p2._relPos1X;
- var p1Y = p2._relPos1Y;
- var p1Z = p2._relPos1Z;
- var p2X = p3._relPos1X;
- var p2Y = p3._relPos1Y;
- var p2Z = p3._relPos1Z;
- var p3X = p4._relPos1X;
- var p3Y = p4._relPos1Y;
- var p3Z = p4._relPos1Z;
- var v12;
- var v12X;
- var v12Y;
- var v12Z;
- var v34;
- var v34X;
- var v34Y;
- var v34Z;
- var v13;
- var v13X;
- var v13Y;
- var v13Z;
- var v24;
- var v24X;
- var v24Y;
- var v24Z;
- var v14;
- var v14X;
- var v14Y;
- var v14Z;
- var v23;
- var v23X;
- var v23Y;
- var v23Z;
- v12X = p2X - p1X;
- v12Y = p2Y - p1Y;
- v12Z = p2Z - p1Z;
- v34X = rp1X - p3X;
- v34Y = rp1Y - p3Y;
- v34Z = rp1Z - p3Z;
- v13X = p3X - p1X;
- v13Y = p3Y - p1Y;
- v13Z = p3Z - p1Z;
- v24X = rp1X - p2X;
- v24Y = rp1Y - p2Y;
- v24Z = rp1Z - p2Z;
- v14X = rp1X - p1X;
- v14Y = rp1Y - p1Y;
- v14Z = rp1Z - p1Z;
- v23X = p3X - p2X;
- v23Y = p3Y - p2Y;
- v23Z = p3Z - p2Z;
- var cross1;
- var cross1X;
- var cross1Y;
- var cross1Z;
- var cross2;
- var cross2X;
- var cross2Y;
- var cross2Z;
- var cross3;
- var cross3X;
- var cross3Y;
- var cross3Z;
- cross1X = v12Y * v34Z - v12Z * v34Y;
- cross1Y = v12Z * v34X - v12X * v34Z;
- cross1Z = v12X * v34Y - v12Y * v34X;
- cross2X = v13Y * v24Z - v13Z * v24Y;
- cross2Y = v13Z * v24X - v13X * v24Z;
- cross2Z = v13X * v24Y - v13Y * v24X;
- cross3X = v14Y * v23Z - v14Z * v23Y;
- cross3Y = v14Z * v23X - v14X * v23Z;
- cross3Z = v14X * v23Y - v14Y * v23X;
- var a1 = cross1X * cross1X + cross1Y * cross1Y + cross1Z * cross1Z;
- var a2 = cross2X * cross2X + cross2Y * cross2Y + cross2Z * cross2Z;
- var a3 = cross3X * cross3X + cross3Y * cross3Y + cross3Z * cross3Z;
- var a11 = a1 > a2 ? a1 > a3 ? a1 : a3 : a2 > a3 ? a2 : a3;
- var p1X1 = p1._relPos1X;
- var p1Y1 = p1._relPos1Y;
- var p1Z1 = p1._relPos1Z;
- var p2X1 = p3._relPos1X;
- var p2Y1 = p3._relPos1Y;
- var p2Z1 = p3._relPos1Z;
- var p3X1 = p4._relPos1X;
- var p3Y1 = p4._relPos1Y;
- var p3Z1 = p4._relPos1Z;
- var v121;
- var v12X1;
- var v12Y1;
- var v12Z1;
- var v341;
- var v34X1;
- var v34Y1;
- var v34Z1;
- var v131;
- var v13X1;
- var v13Y1;
- var v13Z1;
- var v241;
- var v24X1;
- var v24Y1;
- var v24Z1;
- var v141;
- var v14X1;
- var v14Y1;
- var v14Z1;
- var v231;
- var v23X1;
- var v23Y1;
- var v23Z1;
- v12X1 = p2X1 - p1X1;
- v12Y1 = p2Y1 - p1Y1;
- v12Z1 = p2Z1 - p1Z1;
- v34X1 = rp1X - p3X1;
- v34Y1 = rp1Y - p3Y1;
- v34Z1 = rp1Z - p3Z1;
- v13X1 = p3X1 - p1X1;
- v13Y1 = p3Y1 - p1Y1;
- v13Z1 = p3Z1 - p1Z1;
- v24X1 = rp1X - p2X1;
- v24Y1 = rp1Y - p2Y1;
- v24Z1 = rp1Z - p2Z1;
- v14X1 = rp1X - p1X1;
- v14Y1 = rp1Y - p1Y1;
- v14Z1 = rp1Z - p1Z1;
- v23X1 = p3X1 - p2X1;
- v23Y1 = p3Y1 - p2Y1;
- v23Z1 = p3Z1 - p2Z1;
- var cross11;
- var cross1X1;
- var cross1Y1;
- var cross1Z1;
- var cross21;
- var cross2X1;
- var cross2Y1;
- var cross2Z1;
- var cross31;
- var cross3X1;
- var cross3Y1;
- var cross3Z1;
- cross1X1 = v12Y1 * v34Z1 - v12Z1 * v34Y1;
- cross1Y1 = v12Z1 * v34X1 - v12X1 * v34Z1;
- cross1Z1 = v12X1 * v34Y1 - v12Y1 * v34X1;
- cross2X1 = v13Y1 * v24Z1 - v13Z1 * v24Y1;
- cross2Y1 = v13Z1 * v24X1 - v13X1 * v24Z1;
- cross2Z1 = v13X1 * v24Y1 - v13Y1 * v24X1;
- cross3X1 = v14Y1 * v23Z1 - v14Z1 * v23Y1;
- cross3Y1 = v14Z1 * v23X1 - v14X1 * v23Z1;
- cross3Z1 = v14X1 * v23Y1 - v14Y1 * v23X1;
- var a12 = cross1X1 * cross1X1 + cross1Y1 * cross1Y1 + cross1Z1 * cross1Z1;
- var a21 = cross2X1 * cross2X1 + cross2Y1 * cross2Y1 + cross2Z1 * cross2Z1;
- var a31 = cross3X1 * cross3X1 + cross3Y1 * cross3Y1 + cross3Z1 * cross3Z1;
- var a22 = a12 > a21 ? a12 > a31 ? a12 : a31 : a21 > a31 ? a21 : a31;
- var p1X2 = p1._relPos1X;
- var p1Y2 = p1._relPos1Y;
- var p1Z2 = p1._relPos1Z;
- var p2X2 = p2._relPos1X;
- var p2Y2 = p2._relPos1Y;
- var p2Z2 = p2._relPos1Z;
- var p3X2 = p4._relPos1X;
- var p3Y2 = p4._relPos1Y;
- var p3Z2 = p4._relPos1Z;
- var v122;
- var v12X2;
- var v12Y2;
- var v12Z2;
- var v342;
- var v34X2;
- var v34Y2;
- var v34Z2;
- var v132;
- var v13X2;
- var v13Y2;
- var v13Z2;
- var v242;
- var v24X2;
- var v24Y2;
- var v24Z2;
- var v142;
- var v14X2;
- var v14Y2;
- var v14Z2;
- var v232;
- var v23X2;
- var v23Y2;
- var v23Z2;
- v12X2 = p2X2 - p1X2;
- v12Y2 = p2Y2 - p1Y2;
- v12Z2 = p2Z2 - p1Z2;
- v34X2 = rp1X - p3X2;
- v34Y2 = rp1Y - p3Y2;
- v34Z2 = rp1Z - p3Z2;
- v13X2 = p3X2 - p1X2;
- v13Y2 = p3Y2 - p1Y2;
- v13Z2 = p3Z2 - p1Z2;
- v24X2 = rp1X - p2X2;
- v24Y2 = rp1Y - p2Y2;
- v24Z2 = rp1Z - p2Z2;
- v14X2 = rp1X - p1X2;
- v14Y2 = rp1Y - p1Y2;
- v14Z2 = rp1Z - p1Z2;
- v23X2 = p3X2 - p2X2;
- v23Y2 = p3Y2 - p2Y2;
- v23Z2 = p3Z2 - p2Z2;
- var cross12;
- var cross1X2;
- var cross1Y2;
- var cross1Z2;
- var cross22;
- var cross2X2;
- var cross2Y2;
- var cross2Z2;
- var cross32;
- var cross3X2;
- var cross3Y2;
- var cross3Z2;
- cross1X2 = v12Y2 * v34Z2 - v12Z2 * v34Y2;
- cross1Y2 = v12Z2 * v34X2 - v12X2 * v34Z2;
- cross1Z2 = v12X2 * v34Y2 - v12Y2 * v34X2;
- cross2X2 = v13Y2 * v24Z2 - v13Z2 * v24Y2;
- cross2Y2 = v13Z2 * v24X2 - v13X2 * v24Z2;
- cross2Z2 = v13X2 * v24Y2 - v13Y2 * v24X2;
- cross3X2 = v14Y2 * v23Z2 - v14Z2 * v23Y2;
- cross3Y2 = v14Z2 * v23X2 - v14X2 * v23Z2;
- cross3Z2 = v14X2 * v23Y2 - v14Y2 * v23X2;
- var a13 = cross1X2 * cross1X2 + cross1Y2 * cross1Y2 + cross1Z2 * cross1Z2;
- var a23 = cross2X2 * cross2X2 + cross2Y2 * cross2Y2 + cross2Z2 * cross2Z2;
- var a32 = cross3X2 * cross3X2 + cross3Y2 * cross3Y2 + cross3Z2 * cross3Z2;
- var a33 = a13 > a23 ? a13 > a32 ? a13 : a32 : a23 > a32 ? a23 : a32;
- var p1X3 = p1._relPos1X;
- var p1Y3 = p1._relPos1Y;
- var p1Z3 = p1._relPos1Z;
- var p2X3 = p2._relPos1X;
- var p2Y3 = p2._relPos1Y;
- var p2Z3 = p2._relPos1Z;
- var p3X3 = p3._relPos1X;
- var p3Y3 = p3._relPos1Y;
- var p3Z3 = p3._relPos1Z;
- var v123;
- var v12X3;
- var v12Y3;
- var v12Z3;
- var v343;
- var v34X3;
- var v34Y3;
- var v34Z3;
- var v133;
- var v13X3;
- var v13Y3;
- var v13Z3;
- var v243;
- var v24X3;
- var v24Y3;
- var v24Z3;
- var v143;
- var v14X3;
- var v14Y3;
- var v14Z3;
- var v233;
- var v23X3;
- var v23Y3;
- var v23Z3;
- v12X3 = p2X3 - p1X3;
- v12Y3 = p2Y3 - p1Y3;
- v12Z3 = p2Z3 - p1Z3;
- v34X3 = rp1X - p3X3;
- v34Y3 = rp1Y - p3Y3;
- v34Z3 = rp1Z - p3Z3;
- v13X3 = p3X3 - p1X3;
- v13Y3 = p3Y3 - p1Y3;
- v13Z3 = p3Z3 - p1Z3;
- v24X3 = rp1X - p2X3;
- v24Y3 = rp1Y - p2Y3;
- v24Z3 = rp1Z - p2Z3;
- v14X3 = rp1X - p1X3;
- v14Y3 = rp1Y - p1Y3;
- v14Z3 = rp1Z - p1Z3;
- v23X3 = p3X3 - p2X3;
- v23Y3 = p3Y3 - p2Y3;
- v23Z3 = p3Z3 - p2Z3;
- var cross13;
- var cross1X3;
- var cross1Y3;
- var cross1Z3;
- var cross23;
- var cross2X3;
- var cross2Y3;
- var cross2Z3;
- var cross33;
- var cross3X3;
- var cross3Y3;
- var cross3Z3;
- cross1X3 = v12Y3 * v34Z3 - v12Z3 * v34Y3;
- cross1Y3 = v12Z3 * v34X3 - v12X3 * v34Z3;
- cross1Z3 = v12X3 * v34Y3 - v12Y3 * v34X3;
- cross2X3 = v13Y3 * v24Z3 - v13Z3 * v24Y3;
- cross2Y3 = v13Z3 * v24X3 - v13X3 * v24Z3;
- cross2Z3 = v13X3 * v24Y3 - v13Y3 * v24X3;
- cross3X3 = v14Y3 * v23Z3 - v14Z3 * v23Y3;
- cross3Y3 = v14Z3 * v23X3 - v14X3 * v23Z3;
- cross3Z3 = v14X3 * v23Y3 - v14Y3 * v23X3;
- var a14 = cross1X3 * cross1X3 + cross1Y3 * cross1Y3 + cross1Z3 * cross1Z3;
- var a24 = cross2X3 * cross2X3 + cross2Y3 * cross2Y3 + cross2Z3 * cross2Z3;
- var a34 = cross3X3 * cross3X3 + cross3Y3 * cross3Y3 + cross3Z3 * cross3Z3;
- var a4 = a14 > a24 ? a14 > a34 ? a14 : a34 : a24 > a34 ? a24 : a34;
- var max = a11;
- var target = 0;
- if(a22 > max && maxDepthIndex != 1 || maxDepthIndex == 0) {
- max = a22;
- target = 1;
- }
- if(a33 > max && maxDepthIndex != 2) {
- max = a33;
- target = 2;
- }
- if(a4 > max && maxDepthIndex != 3) {
- max = a4;
- target = 3;
- }
- return target;
- }
- computeRelativePositions(tf1,tf2) {
- var num = this._manifold._numPoints;
- var _g = 0;
- var _g1 = num;
- while(_g < _g1) {
- var i = _g++;
- var p = this._manifold._points[i];
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = tf1._rotation00 * p._localPos1X + tf1._rotation01 * p._localPos1Y + tf1._rotation02 * p._localPos1Z;
- __tmp__Y = tf1._rotation10 * p._localPos1X + tf1._rotation11 * p._localPos1Y + tf1._rotation12 * p._localPos1Z;
- __tmp__Z = tf1._rotation20 * p._localPos1X + tf1._rotation21 * p._localPos1Y + tf1._rotation22 * p._localPos1Z;
- p._relPos1X = __tmp__X;
- p._relPos1Y = __tmp__Y;
- p._relPos1Z = __tmp__Z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = tf2._rotation00 * p._localPos2X + tf2._rotation01 * p._localPos2Y + tf2._rotation02 * p._localPos2Z;
- __tmp__Y1 = tf2._rotation10 * p._localPos2X + tf2._rotation11 * p._localPos2Y + tf2._rotation12 * p._localPos2Z;
- __tmp__Z1 = tf2._rotation20 * p._localPos2X + tf2._rotation21 * p._localPos2Y + tf2._rotation22 * p._localPos2Z;
- p._relPos2X = __tmp__X1;
- p._relPos2Y = __tmp__Y1;
- p._relPos2Z = __tmp__Z1;
- p._warmStarted = true;
- }
- }
- findNearestContactPointIndex(target,tf1,tf2) {
- var nearestSq = oimo.common.Setting.contactPersistenceThreshold * oimo.common.Setting.contactPersistenceThreshold;
- var idx = -1;
- var _g = 0;
- var _g1 = this._manifold._numPoints;
- while(_g < _g1) {
- var i = _g++;
- var mp = this._manifold._points[i];
- var rp1;
- var rp1X;
- var rp1Y;
- var rp1Z;
- var rp2;
- var rp2X;
- var rp2Y;
- var rp2Z;
- var v = target.position1;
- rp1X = v.x;
- rp1Y = v.y;
- rp1Z = v.z;
- var v1 = target.position2;
- rp2X = v1.x;
- rp2Y = v1.y;
- rp2Z = v1.z;
- rp1X -= tf1._positionX;
- rp1Y -= tf1._positionY;
- rp1Z -= tf1._positionZ;
- rp2X -= tf2._positionX;
- rp2Y -= tf2._positionY;
- rp2Z -= tf2._positionZ;
- var diff1;
- var diff1X;
- var diff1Y;
- var diff1Z;
- var diff2;
- var diff2X;
- var diff2Y;
- var diff2Z;
- diff1X = mp._relPos1X - rp1X;
- diff1Y = mp._relPos1Y - rp1Y;
- diff1Z = mp._relPos1Z - rp1Z;
- diff2X = mp._relPos2X - rp2X;
- diff2Y = mp._relPos2Y - rp2Y;
- diff2Z = mp._relPos2Z - rp2Z;
- var sq1 = diff1X * diff1X + diff1Y * diff1Y + diff1Z * diff1Z;
- var sq2 = diff2X * diff2X + diff2Y * diff2Y + diff2Z * diff2Z;
- var d = sq1 < sq2 ? sq1 : sq2;
- if(d < nearestSq) {
- nearestSq = d;
- idx = i;
- }
- }
- return idx;
- }
- totalUpdate(result,tf1,tf2) {
- this.numOldPoints = this._manifold._numPoints;
- var _g = 0;
- var _g1 = this.numOldPoints;
- while(_g < _g1) {
- var i = _g++;
- var _this = this.oldPoints[i];
- var cp = this._manifold._points[i];
- _this._localPos1X = cp._localPos1X;
- _this._localPos1Y = cp._localPos1Y;
- _this._localPos1Z = cp._localPos1Z;
- _this._localPos2X = cp._localPos2X;
- _this._localPos2Y = cp._localPos2Y;
- _this._localPos2Z = cp._localPos2Z;
- _this._relPos1X = cp._relPos1X;
- _this._relPos1Y = cp._relPos1Y;
- _this._relPos1Z = cp._relPos1Z;
- _this._relPos2X = cp._relPos2X;
- _this._relPos2Y = cp._relPos2Y;
- _this._relPos2Z = cp._relPos2Z;
- _this._pos1X = cp._pos1X;
- _this._pos1Y = cp._pos1Y;
- _this._pos1Z = cp._pos1Z;
- _this._pos2X = cp._pos2X;
- _this._pos2Y = cp._pos2Y;
- _this._pos2Z = cp._pos2Z;
- _this._depth = cp._depth;
- _this._impulse.copyFrom(cp._impulse);
- _this._id = cp._id;
- _this._warmStarted = cp._warmStarted;
- _this._disabled = false;
- }
- var num = result.numPoints;
- this._manifold._numPoints = num;
- var _g2 = 0;
- var _g11 = num;
- while(_g2 < _g11) {
- var i1 = _g2++;
- var p = this._manifold._points[i1];
- var ref = result.points[i1];
- var v = ref.position1;
- p._pos1X = v.x;
- p._pos1Y = v.y;
- p._pos1Z = v.z;
- var v1 = ref.position2;
- p._pos2X = v1.x;
- p._pos2Y = v1.y;
- p._pos2Z = v1.z;
- p._relPos1X = p._pos1X - tf1._positionX;
- p._relPos1Y = p._pos1Y - tf1._positionY;
- p._relPos1Z = p._pos1Z - tf1._positionZ;
- p._relPos2X = p._pos2X - tf2._positionX;
- p._relPos2Y = p._pos2Y - tf2._positionY;
- p._relPos2Z = p._pos2Z - tf2._positionZ;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = tf1._rotation00 * p._relPos1X + tf1._rotation10 * p._relPos1Y + tf1._rotation20 * p._relPos1Z;
- __tmp__Y = tf1._rotation01 * p._relPos1X + tf1._rotation11 * p._relPos1Y + tf1._rotation21 * p._relPos1Z;
- __tmp__Z = tf1._rotation02 * p._relPos1X + tf1._rotation12 * p._relPos1Y + tf1._rotation22 * p._relPos1Z;
- p._localPos1X = __tmp__X;
- p._localPos1Y = __tmp__Y;
- p._localPos1Z = __tmp__Z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = tf2._rotation00 * p._relPos2X + tf2._rotation10 * p._relPos2Y + tf2._rotation20 * p._relPos2Z;
- __tmp__Y1 = tf2._rotation01 * p._relPos2X + tf2._rotation11 * p._relPos2Y + tf2._rotation21 * p._relPos2Z;
- __tmp__Z1 = tf2._rotation02 * p._relPos2X + tf2._rotation12 * p._relPos2Y + tf2._rotation22 * p._relPos2Z;
- p._localPos2X = __tmp__X1;
- p._localPos2Y = __tmp__Y1;
- p._localPos2Z = __tmp__Z1;
- p._depth = ref.depth;
- var _this1 = p._impulse;
- _this1.impulseN = 0;
- _this1.impulseT = 0;
- _this1.impulseB = 0;
- _this1.impulseP = 0;
- _this1.impulseLX = 0;
- _this1.impulseLY = 0;
- _this1.impulseLZ = 0;
- p._id = ref.id;
- p._warmStarted = false;
- p._disabled = false;
- var _g3 = 0;
- var _g12 = this.numOldPoints;
- while(_g3 < _g12) {
- var i2 = _g3++;
- var ocp = this.oldPoints[i2];
- if(p._id == ocp._id) {
- p._impulse.copyFrom(ocp._impulse);
- p._warmStarted = true;
- break;
- }
- }
- }
- }
- incrementalUpdate(result,tf1,tf2) {
- this._manifold._updateDepthsAndPositions(tf1,tf2);
- var _g = 0;
- var _g1 = this._manifold._numPoints;
- while(_g < _g1) {
- var i = _g++;
- this._manifold._points[i]._warmStarted = true;
- }
- var newPoint = result.points[0];
- var index = this.findNearestContactPointIndex(newPoint,tf1,tf2);
- if(index == -1) {
- this.addManifoldPoint(newPoint,tf1,tf2);
- } else {
- var cp = this._manifold._points[index];
- var v = newPoint.position1;
- cp._pos1X = v.x;
- cp._pos1Y = v.y;
- cp._pos1Z = v.z;
- var v1 = newPoint.position2;
- cp._pos2X = v1.x;
- cp._pos2Y = v1.y;
- cp._pos2Z = v1.z;
- cp._relPos1X = cp._pos1X - tf1._positionX;
- cp._relPos1Y = cp._pos1Y - tf1._positionY;
- cp._relPos1Z = cp._pos1Z - tf1._positionZ;
- cp._relPos2X = cp._pos2X - tf2._positionX;
- cp._relPos2Y = cp._pos2Y - tf2._positionY;
- cp._relPos2Z = cp._pos2Z - tf2._positionZ;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = tf1._rotation00 * cp._relPos1X + tf1._rotation10 * cp._relPos1Y + tf1._rotation20 * cp._relPos1Z;
- __tmp__Y = tf1._rotation01 * cp._relPos1X + tf1._rotation11 * cp._relPos1Y + tf1._rotation21 * cp._relPos1Z;
- __tmp__Z = tf1._rotation02 * cp._relPos1X + tf1._rotation12 * cp._relPos1Y + tf1._rotation22 * cp._relPos1Z;
- cp._localPos1X = __tmp__X;
- cp._localPos1Y = __tmp__Y;
- cp._localPos1Z = __tmp__Z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = tf2._rotation00 * cp._relPos2X + tf2._rotation10 * cp._relPos2Y + tf2._rotation20 * cp._relPos2Z;
- __tmp__Y1 = tf2._rotation01 * cp._relPos2X + tf2._rotation11 * cp._relPos2Y + tf2._rotation21 * cp._relPos2Z;
- __tmp__Z1 = tf2._rotation02 * cp._relPos2X + tf2._rotation12 * cp._relPos2Y + tf2._rotation22 * cp._relPos2Z;
- cp._localPos2X = __tmp__X1;
- cp._localPos2Y = __tmp__Y1;
- cp._localPos2Z = __tmp__Z1;
- cp._depth = newPoint.depth;
- }
- this.removeOutdatedPoints();
- }
- }
- if(!oimo.dynamics.constraint.info) oimo.dynamics.constraint.info = {};
- oimo.dynamics.constraint.info.JacobianRow = class oimo_dynamics_constraint_info_JacobianRow {
- constructor() {
- this.lin1X = 0;
- this.lin1Y = 0;
- this.lin1Z = 0;
- this.lin2X = 0;
- this.lin2Y = 0;
- this.lin2Z = 0;
- this.ang1X = 0;
- this.ang1Y = 0;
- this.ang1Z = 0;
- this.ang2X = 0;
- this.ang2Y = 0;
- this.ang2Z = 0;
- this.flag = 0;
- }
- updateSparsity() {
- this.flag = 0;
- if(!(this.lin1X == 0 && this.lin1Y == 0 && this.lin1Z == 0) || !(this.lin2X == 0 && this.lin2Y == 0 && this.lin2Z == 0)) {
- this.flag |= 1;
- }
- if(!(this.ang1X == 0 && this.ang1Y == 0 && this.ang1Z == 0) || !(this.ang2X == 0 && this.ang2Y == 0 && this.ang2Z == 0)) {
- this.flag |= 2;
- }
- }
- }
- if(!oimo.dynamics.constraint.info.contact) oimo.dynamics.constraint.info.contact = {};
- oimo.dynamics.constraint.info.contact.ContactSolverInfo = class oimo_dynamics_constraint_info_contact_ContactSolverInfo {
- constructor() {
- this.b1 = null;
- this.b2 = null;
- this.numRows = 0;
- var this1 = new Array(oimo.common.Setting.maxManifoldPoints);
- this.rows = this1;
- var _g = 0;
- var _g1 = this.rows.length;
- while(_g < _g1) {
- var i = _g++;
- this.rows[i] = new oimo.dynamics.constraint.info.contact.ContactSolverInfoRow();
- }
- }
- }
- oimo.dynamics.constraint.info.contact.ContactSolverInfoRow = class oimo_dynamics_constraint_info_contact_ContactSolverInfoRow {
- constructor() {
- this.jacobianN = new oimo.dynamics.constraint.info.JacobianRow();
- this.jacobianT = new oimo.dynamics.constraint.info.JacobianRow();
- this.jacobianB = new oimo.dynamics.constraint.info.JacobianRow();
- this.rhs = 0;
- this.cfm = 0;
- this.friction = 0;
- this.impulse = null;
- }
- }
- if(!oimo.dynamics.constraint.info.joint) oimo.dynamics.constraint.info.joint = {};
- oimo.dynamics.constraint.info.joint.JointSolverInfo = class oimo_dynamics_constraint_info_joint_JointSolverInfo {
- constructor() {
- this.b1 = null;
- this.b2 = null;
- this.numRows = 0;
- var this1 = new Array(oimo.common.Setting.maxJacobianRows);
- this.rows = this1;
- var _g = 0;
- var _g1 = this.rows.length;
- while(_g < _g1) {
- var i = _g++;
- this.rows[i] = new oimo.dynamics.constraint.info.joint.JointSolverInfoRow();
- }
- }
- }
- oimo.dynamics.constraint.info.joint.JointSolverInfoRow = class oimo_dynamics_constraint_info_joint_JointSolverInfoRow {
- constructor() {
- this.jacobian = new oimo.dynamics.constraint.info.JacobianRow();
- this.rhs = 0;
- this.cfm = 0;
- this.minImpulse = 0;
- this.maxImpulse = 0;
- this.motorSpeed = 0;
- this.motorMaxImpulse = 0;
- this.impulse = null;
- }
- }
- if(!oimo.dynamics.constraint.joint) oimo.dynamics.constraint.joint = {};
- oimo.dynamics.constraint.joint.BasisTracker = class oimo_dynamics_constraint_joint_BasisTracker {
- constructor(joint) {
- this.joint = joint;
- this.xX = 0;
- this.xY = 0;
- this.xZ = 0;
- this.yX = 0;
- this.yY = 0;
- this.yZ = 0;
- this.zX = 0;
- this.zY = 0;
- this.zZ = 0;
- }
- }
- oimo.dynamics.constraint.joint.Joint = class oimo_dynamics_constraint_joint_Joint {
- constructor(config,type) {
- this._link1 = new oimo.dynamics.constraint.joint.JointLink(this);
- this._link2 = new oimo.dynamics.constraint.joint.JointLink(this);
- this._positionCorrectionAlgorithm = oimo.common.Setting.defaultJointPositionCorrectionAlgorithm;
- this._type = type;
- this._world = null;
- this._b1 = config.rigidBody1;
- this._b2 = config.rigidBody2;
- this._allowCollision = config.allowCollision;
- this._breakForce = config.breakForce;
- this._breakTorque = config.breakTorque;
- switch(config.solverType) {
- case 0:
- this._solver = new oimo.dynamics.constraint.solver.pgs.PgsJointConstraintSolver(this);
- break;
- case 1:
- this._solver = new oimo.dynamics.constraint.solver.direct.DirectJointConstraintSolver(this);
- break;
- }
- var v = config.localAnchor1;
- this._localAnchor1X = v.x;
- this._localAnchor1Y = v.y;
- this._localAnchor1Z = v.z;
- var v1 = config.localAnchor2;
- this._localAnchor2X = v1.x;
- this._localAnchor2Y = v1.y;
- this._localAnchor2Z = v1.z;
- this._relativeAnchor1X = 0;
- this._relativeAnchor1Y = 0;
- this._relativeAnchor1Z = 0;
- this._relativeAnchor2X = 0;
- this._relativeAnchor2Y = 0;
- this._relativeAnchor2Z = 0;
- this._anchor1X = 0;
- this._anchor1Y = 0;
- this._anchor1Z = 0;
- this._anchor2X = 0;
- this._anchor2Y = 0;
- this._anchor2Z = 0;
- this._localBasisX1X = 0;
- this._localBasisX1Y = 0;
- this._localBasisX1Z = 0;
- this._localBasisY1X = 0;
- this._localBasisY1Y = 0;
- this._localBasisY1Z = 0;
- this._localBasisZ1X = 0;
- this._localBasisZ1Y = 0;
- this._localBasisZ1Z = 0;
- this._localBasisX2X = 0;
- this._localBasisX2Y = 0;
- this._localBasisX2Z = 0;
- this._localBasisY2X = 0;
- this._localBasisY2Y = 0;
- this._localBasisY2Z = 0;
- this._localBasisZ2X = 0;
- this._localBasisZ2Y = 0;
- this._localBasisZ2Z = 0;
- var this1 = new Array(oimo.common.Setting.maxJacobianRows);
- this._impulses = this1;
- var _g1 = 0;
- var _g2 = oimo.common.Setting.maxJacobianRows;
- while(_g1 < _g2) {
- var i = _g1++;
- this._impulses[i] = new oimo.dynamics.constraint.joint.JointImpulse();
- }
- }
- buildLocalBasesFromX() {
- if(this._localBasisX1X * this._localBasisX1X + this._localBasisX1Y * this._localBasisX1Y + this._localBasisX1Z * this._localBasisX1Z == 0) {
- this._localBasisX1X = 1;
- this._localBasisX1Y = 0;
- this._localBasisX1Z = 0;
- } else {
- var l = this._localBasisX1X * this._localBasisX1X + this._localBasisX1Y * this._localBasisX1Y + this._localBasisX1Z * this._localBasisX1Z;
- if(l > 0) {
- l = 1 / Math.sqrt(l);
- }
- this._localBasisX1X *= l;
- this._localBasisX1Y *= l;
- this._localBasisX1Z *= l;
- }
- if(this._localBasisX2X * this._localBasisX2X + this._localBasisX2Y * this._localBasisX2Y + this._localBasisX2Z * this._localBasisX2Z == 0) {
- this._localBasisX2X = 1;
- this._localBasisX2Y = 0;
- this._localBasisX2Z = 0;
- } else {
- var l1 = this._localBasisX2X * this._localBasisX2X + this._localBasisX2Y * this._localBasisX2Y + this._localBasisX2Z * this._localBasisX2Z;
- if(l1 > 0) {
- l1 = 1 / Math.sqrt(l1);
- }
- this._localBasisX2X *= l1;
- this._localBasisX2Y *= l1;
- this._localBasisX2Z *= l1;
- }
- var slerpQ;
- var slerpQX;
- var slerpQY;
- var slerpQZ;
- var slerpQW;
- var slerpM;
- var slerpM00;
- var slerpM01;
- var slerpM02;
- var slerpM10;
- var slerpM11;
- var slerpM12;
- var slerpM20;
- var slerpM21;
- var slerpM22;
- var d = this._localBasisX1X * this._localBasisX2X + this._localBasisX1Y * this._localBasisX2Y + this._localBasisX1Z * this._localBasisX2Z;
- if(d < -0.999999999) {
- var vX;
- var vY;
- var vZ;
- var x1 = this._localBasisX1X;
- var y1 = this._localBasisX1Y;
- var z1 = this._localBasisX1Z;
- var x2 = x1 * x1;
- var y2 = y1 * y1;
- var z2 = z1 * z1;
- var d1;
- if(x2 < y2) {
- if(x2 < z2) {
- d1 = 1 / Math.sqrt(y2 + z2);
- vX = 0;
- vY = z1 * d1;
- vZ = -y1 * d1;
- } else {
- d1 = 1 / Math.sqrt(x2 + y2);
- vX = y1 * d1;
- vY = -x1 * d1;
- vZ = 0;
- }
- } else if(y2 < z2) {
- d1 = 1 / Math.sqrt(z2 + x2);
- vX = -z1 * d1;
- vY = 0;
- vZ = x1 * d1;
- } else {
- d1 = 1 / Math.sqrt(x2 + y2);
- vX = y1 * d1;
- vY = -x1 * d1;
- vZ = 0;
- }
- slerpQX = vX;
- slerpQY = vY;
- slerpQZ = vZ;
- slerpQW = 0;
- } else {
- var cX;
- var cY;
- var cZ;
- cX = this._localBasisX1Y * this._localBasisX2Z - this._localBasisX1Z * this._localBasisX2Y;
- cY = this._localBasisX1Z * this._localBasisX2X - this._localBasisX1X * this._localBasisX2Z;
- cZ = this._localBasisX1X * this._localBasisX2Y - this._localBasisX1Y * this._localBasisX2X;
- var w = Math.sqrt((1 + d) * 0.5);
- d = 0.5 / w;
- cX *= d;
- cY *= d;
- cZ *= d;
- slerpQX = cX;
- slerpQY = cY;
- slerpQZ = cZ;
- slerpQW = w;
- }
- var x = slerpQX;
- var y = slerpQY;
- var z = slerpQZ;
- var w1 = slerpQW;
- var x21 = 2 * x;
- var y21 = 2 * y;
- var z21 = 2 * z;
- var xx = x * x21;
- var yy = y * y21;
- var zz = z * z21;
- var xy = x * y21;
- var yz = y * z21;
- var xz = x * z21;
- var wx = w1 * x21;
- var wy = w1 * y21;
- var wz = w1 * z21;
- slerpM00 = 1 - yy - zz;
- slerpM01 = xy - wz;
- slerpM02 = xz + wy;
- slerpM10 = xy + wz;
- slerpM11 = 1 - xx - zz;
- slerpM12 = yz - wx;
- slerpM20 = xz - wy;
- slerpM21 = yz + wx;
- slerpM22 = 1 - xx - yy;
- var x11 = this._localBasisX1X;
- var y11 = this._localBasisX1Y;
- var z11 = this._localBasisX1Z;
- var x22 = x11 * x11;
- var y22 = y11 * y11;
- var z22 = z11 * z11;
- var d2;
- if(x22 < y22) {
- if(x22 < z22) {
- d2 = 1 / Math.sqrt(y22 + z22);
- this._localBasisY1X = 0;
- this._localBasisY1Y = z11 * d2;
- this._localBasisY1Z = -y11 * d2;
- } else {
- d2 = 1 / Math.sqrt(x22 + y22);
- this._localBasisY1X = y11 * d2;
- this._localBasisY1Y = -x11 * d2;
- this._localBasisY1Z = 0;
- }
- } else if(y22 < z22) {
- d2 = 1 / Math.sqrt(z22 + x22);
- this._localBasisY1X = -z11 * d2;
- this._localBasisY1Y = 0;
- this._localBasisY1Z = x11 * d2;
- } else {
- d2 = 1 / Math.sqrt(x22 + y22);
- this._localBasisY1X = y11 * d2;
- this._localBasisY1Y = -x11 * d2;
- this._localBasisY1Z = 0;
- }
- this._localBasisZ1X = this._localBasisX1Y * this._localBasisY1Z - this._localBasisX1Z * this._localBasisY1Y;
- this._localBasisZ1Y = this._localBasisX1Z * this._localBasisY1X - this._localBasisX1X * this._localBasisY1Z;
- this._localBasisZ1Z = this._localBasisX1X * this._localBasisY1Y - this._localBasisX1Y * this._localBasisY1X;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = slerpM00 * this._localBasisX1X + slerpM01 * this._localBasisX1Y + slerpM02 * this._localBasisX1Z;
- __tmp__Y = slerpM10 * this._localBasisX1X + slerpM11 * this._localBasisX1Y + slerpM12 * this._localBasisX1Z;
- __tmp__Z = slerpM20 * this._localBasisX1X + slerpM21 * this._localBasisX1Y + slerpM22 * this._localBasisX1Z;
- this._localBasisX2X = __tmp__X;
- this._localBasisX2Y = __tmp__Y;
- this._localBasisX2Z = __tmp__Z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = slerpM00 * this._localBasisY1X + slerpM01 * this._localBasisY1Y + slerpM02 * this._localBasisY1Z;
- __tmp__Y1 = slerpM10 * this._localBasisY1X + slerpM11 * this._localBasisY1Y + slerpM12 * this._localBasisY1Z;
- __tmp__Z1 = slerpM20 * this._localBasisY1X + slerpM21 * this._localBasisY1Y + slerpM22 * this._localBasisY1Z;
- this._localBasisY2X = __tmp__X1;
- this._localBasisY2Y = __tmp__Y1;
- this._localBasisY2Z = __tmp__Z1;
- var __tmp__X2;
- var __tmp__Y2;
- var __tmp__Z2;
- __tmp__X2 = slerpM00 * this._localBasisZ1X + slerpM01 * this._localBasisZ1Y + slerpM02 * this._localBasisZ1Z;
- __tmp__Y2 = slerpM10 * this._localBasisZ1X + slerpM11 * this._localBasisZ1Y + slerpM12 * this._localBasisZ1Z;
- __tmp__Z2 = slerpM20 * this._localBasisZ1X + slerpM21 * this._localBasisZ1Y + slerpM22 * this._localBasisZ1Z;
- this._localBasisZ2X = __tmp__X2;
- this._localBasisZ2Y = __tmp__Y2;
- this._localBasisZ2Z = __tmp__Z2;
- }
- buildLocalBasesFromXY() {
- if(this._localBasisX1X * this._localBasisX1X + this._localBasisX1Y * this._localBasisX1Y + this._localBasisX1Z * this._localBasisX1Z == 0) {
- this._localBasisX1X = 1;
- this._localBasisX1Y = 0;
- this._localBasisX1Z = 0;
- } else {
- var l = this._localBasisX1X * this._localBasisX1X + this._localBasisX1Y * this._localBasisX1Y + this._localBasisX1Z * this._localBasisX1Z;
- if(l > 0) {
- l = 1 / Math.sqrt(l);
- }
- this._localBasisX1X *= l;
- this._localBasisX1Y *= l;
- this._localBasisX1Z *= l;
- }
- if(this._localBasisX2X * this._localBasisX2X + this._localBasisX2Y * this._localBasisX2Y + this._localBasisX2Z * this._localBasisX2Z == 0) {
- this._localBasisX2X = 1;
- this._localBasisX2Y = 0;
- this._localBasisX2Z = 0;
- } else {
- var l1 = this._localBasisX2X * this._localBasisX2X + this._localBasisX2Y * this._localBasisX2Y + this._localBasisX2Z * this._localBasisX2Z;
- if(l1 > 0) {
- l1 = 1 / Math.sqrt(l1);
- }
- this._localBasisX2X *= l1;
- this._localBasisX2Y *= l1;
- this._localBasisX2Z *= l1;
- }
- this._localBasisZ1X = this._localBasisX1Y * this._localBasisY1Z - this._localBasisX1Z * this._localBasisY1Y;
- this._localBasisZ1Y = this._localBasisX1Z * this._localBasisY1X - this._localBasisX1X * this._localBasisY1Z;
- this._localBasisZ1Z = this._localBasisX1X * this._localBasisY1Y - this._localBasisX1Y * this._localBasisY1X;
- this._localBasisZ2X = this._localBasisX2Y * this._localBasisY2Z - this._localBasisX2Z * this._localBasisY2Y;
- this._localBasisZ2Y = this._localBasisX2Z * this._localBasisY2X - this._localBasisX2X * this._localBasisY2Z;
- this._localBasisZ2Z = this._localBasisX2X * this._localBasisY2Y - this._localBasisX2Y * this._localBasisY2X;
- if(this._localBasisZ1X * this._localBasisZ1X + this._localBasisZ1Y * this._localBasisZ1Y + this._localBasisZ1Z * this._localBasisZ1Z == 0) {
- var x1 = this._localBasisX1X;
- var y1 = this._localBasisX1Y;
- var z1 = this._localBasisX1Z;
- var x2 = x1 * x1;
- var y2 = y1 * y1;
- var z2 = z1 * z1;
- var d;
- if(x2 < y2) {
- if(x2 < z2) {
- d = 1 / Math.sqrt(y2 + z2);
- this._localBasisY1X = 0;
- this._localBasisY1Y = z1 * d;
- this._localBasisY1Z = -y1 * d;
- } else {
- d = 1 / Math.sqrt(x2 + y2);
- this._localBasisY1X = y1 * d;
- this._localBasisY1Y = -x1 * d;
- this._localBasisY1Z = 0;
- }
- } else if(y2 < z2) {
- d = 1 / Math.sqrt(z2 + x2);
- this._localBasisY1X = -z1 * d;
- this._localBasisY1Y = 0;
- this._localBasisY1Z = x1 * d;
- } else {
- d = 1 / Math.sqrt(x2 + y2);
- this._localBasisY1X = y1 * d;
- this._localBasisY1Y = -x1 * d;
- this._localBasisY1Z = 0;
- }
- this._localBasisZ1X = this._localBasisX1Y * this._localBasisY1Z - this._localBasisX1Z * this._localBasisY1Y;
- this._localBasisZ1Y = this._localBasisX1Z * this._localBasisY1X - this._localBasisX1X * this._localBasisY1Z;
- this._localBasisZ1Z = this._localBasisX1X * this._localBasisY1Y - this._localBasisX1Y * this._localBasisY1X;
- } else {
- var l2 = this._localBasisZ1X * this._localBasisZ1X + this._localBasisZ1Y * this._localBasisZ1Y + this._localBasisZ1Z * this._localBasisZ1Z;
- if(l2 > 0) {
- l2 = 1 / Math.sqrt(l2);
- }
- this._localBasisZ1X *= l2;
- this._localBasisZ1Y *= l2;
- this._localBasisZ1Z *= l2;
- this._localBasisY1X = this._localBasisZ1Y * this._localBasisX1Z - this._localBasisZ1Z * this._localBasisX1Y;
- this._localBasisY1Y = this._localBasisZ1Z * this._localBasisX1X - this._localBasisZ1X * this._localBasisX1Z;
- this._localBasisY1Z = this._localBasisZ1X * this._localBasisX1Y - this._localBasisZ1Y * this._localBasisX1X;
- }
- if(this._localBasisZ2X * this._localBasisZ2X + this._localBasisZ2Y * this._localBasisZ2Y + this._localBasisZ2Z * this._localBasisZ2Z == 0) {
- var x11 = this._localBasisX2X;
- var y11 = this._localBasisX2Y;
- var z11 = this._localBasisX2Z;
- var x21 = x11 * x11;
- var y21 = y11 * y11;
- var z21 = z11 * z11;
- var d1;
- if(x21 < y21) {
- if(x21 < z21) {
- d1 = 1 / Math.sqrt(y21 + z21);
- this._localBasisY2X = 0;
- this._localBasisY2Y = z11 * d1;
- this._localBasisY2Z = -y11 * d1;
- } else {
- d1 = 1 / Math.sqrt(x21 + y21);
- this._localBasisY2X = y11 * d1;
- this._localBasisY2Y = -x11 * d1;
- this._localBasisY2Z = 0;
- }
- } else if(y21 < z21) {
- d1 = 1 / Math.sqrt(z21 + x21);
- this._localBasisY2X = -z11 * d1;
- this._localBasisY2Y = 0;
- this._localBasisY2Z = x11 * d1;
- } else {
- d1 = 1 / Math.sqrt(x21 + y21);
- this._localBasisY2X = y11 * d1;
- this._localBasisY2Y = -x11 * d1;
- this._localBasisY2Z = 0;
- }
- this._localBasisZ2X = this._localBasisX2Y * this._localBasisY2Z - this._localBasisX2Z * this._localBasisY2Y;
- this._localBasisZ2Y = this._localBasisX2Z * this._localBasisY2X - this._localBasisX2X * this._localBasisY2Z;
- this._localBasisZ2Z = this._localBasisX2X * this._localBasisY2Y - this._localBasisX2Y * this._localBasisY2X;
- } else {
- var l3 = this._localBasisZ2X * this._localBasisZ2X + this._localBasisZ2Y * this._localBasisZ2Y + this._localBasisZ2Z * this._localBasisZ2Z;
- if(l3 > 0) {
- l3 = 1 / Math.sqrt(l3);
- }
- this._localBasisZ2X *= l3;
- this._localBasisZ2Y *= l3;
- this._localBasisZ2Z *= l3;
- this._localBasisY2X = this._localBasisZ2Y * this._localBasisX2Z - this._localBasisZ2Z * this._localBasisX2Y;
- this._localBasisY2Y = this._localBasisZ2Z * this._localBasisX2X - this._localBasisZ2X * this._localBasisX2Z;
- this._localBasisY2Z = this._localBasisZ2X * this._localBasisX2Y - this._localBasisZ2Y * this._localBasisX2X;
- }
- }
- buildLocalBasesFromX1Z2() {
- if(this._localBasisX1X * this._localBasisX1X + this._localBasisX1Y * this._localBasisX1Y + this._localBasisX1Z * this._localBasisX1Z == 0) {
- this._localBasisX1X = 1;
- this._localBasisX1Y = 0;
- this._localBasisX1Z = 0;
- } else {
- var l = this._localBasisX1X * this._localBasisX1X + this._localBasisX1Y * this._localBasisX1Y + this._localBasisX1Z * this._localBasisX1Z;
- if(l > 0) {
- l = 1 / Math.sqrt(l);
- }
- this._localBasisX1X *= l;
- this._localBasisX1Y *= l;
- this._localBasisX1Z *= l;
- }
- if(this._localBasisZ2X * this._localBasisZ2X + this._localBasisZ2Y * this._localBasisZ2Y + this._localBasisZ2Z * this._localBasisZ2Z == 0) {
- this._localBasisZ2X = 0;
- this._localBasisZ2Y = 0;
- this._localBasisZ2Z = 1;
- } else {
- var l1 = this._localBasisZ2X * this._localBasisZ2X + this._localBasisZ2Y * this._localBasisZ2Y + this._localBasisZ2Z * this._localBasisZ2Z;
- if(l1 > 0) {
- l1 = 1 / Math.sqrt(l1);
- }
- this._localBasisZ2X *= l1;
- this._localBasisZ2Y *= l1;
- this._localBasisZ2Z *= l1;
- }
- var tf1 = this._b1._transform;
- var tf2 = this._b2._transform;
- var worldX1;
- var worldX1X;
- var worldX1Y;
- var worldX1Z;
- var worldZ1;
- var worldZ1X;
- var worldZ1Y;
- var worldZ1Z;
- var worldY;
- var worldYX;
- var worldYY;
- var worldYZ;
- var worldX2;
- var worldX2X;
- var worldX2Y;
- var worldX2Z;
- var worldZ2;
- var worldZ2X;
- var worldZ2Y;
- var worldZ2Z;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = tf1._rotation00 * this._localBasisX1X + tf1._rotation01 * this._localBasisX1Y + tf1._rotation02 * this._localBasisX1Z;
- __tmp__Y = tf1._rotation10 * this._localBasisX1X + tf1._rotation11 * this._localBasisX1Y + tf1._rotation12 * this._localBasisX1Z;
- __tmp__Z = tf1._rotation20 * this._localBasisX1X + tf1._rotation21 * this._localBasisX1Y + tf1._rotation22 * this._localBasisX1Z;
- worldX1X = __tmp__X;
- worldX1Y = __tmp__Y;
- worldX1Z = __tmp__Z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = tf2._rotation00 * this._localBasisZ2X + tf2._rotation01 * this._localBasisZ2Y + tf2._rotation02 * this._localBasisZ2Z;
- __tmp__Y1 = tf2._rotation10 * this._localBasisZ2X + tf2._rotation11 * this._localBasisZ2Y + tf2._rotation12 * this._localBasisZ2Z;
- __tmp__Z1 = tf2._rotation20 * this._localBasisZ2X + tf2._rotation21 * this._localBasisZ2Y + tf2._rotation22 * this._localBasisZ2Z;
- worldZ2X = __tmp__X1;
- worldZ2Y = __tmp__Y1;
- worldZ2Z = __tmp__Z1;
- worldYX = worldZ2Y * worldX1Z - worldZ2Z * worldX1Y;
- worldYY = worldZ2Z * worldX1X - worldZ2X * worldX1Z;
- worldYZ = worldZ2X * worldX1Y - worldZ2Y * worldX1X;
- if(worldYX * worldYX + worldYY * worldYY + worldYZ * worldYZ == 0) {
- var x1 = worldX1X;
- var y1 = worldX1Y;
- var z1 = worldX1Z;
- var x2 = x1 * x1;
- var y2 = y1 * y1;
- var z2 = z1 * z1;
- var d;
- if(x2 < y2) {
- if(x2 < z2) {
- d = 1 / Math.sqrt(y2 + z2);
- worldYX = 0;
- worldYY = z1 * d;
- worldYZ = -y1 * d;
- } else {
- d = 1 / Math.sqrt(x2 + y2);
- worldYX = y1 * d;
- worldYY = -x1 * d;
- worldYZ = 0;
- }
- } else if(y2 < z2) {
- d = 1 / Math.sqrt(z2 + x2);
- worldYX = -z1 * d;
- worldYY = 0;
- worldYZ = x1 * d;
- } else {
- d = 1 / Math.sqrt(x2 + y2);
- worldYX = y1 * d;
- worldYY = -x1 * d;
- worldYZ = 0;
- }
- }
- worldZ1X = worldX1Y * worldYZ - worldX1Z * worldYY;
- worldZ1Y = worldX1Z * worldYX - worldX1X * worldYZ;
- worldZ1Z = worldX1X * worldYY - worldX1Y * worldYX;
- worldX2X = worldYY * worldZ2Z - worldYZ * worldZ2Y;
- worldX2Y = worldYZ * worldZ2X - worldYX * worldZ2Z;
- worldX2Z = worldYX * worldZ2Y - worldYY * worldZ2X;
- var __tmp__X2;
- var __tmp__Y2;
- var __tmp__Z2;
- __tmp__X2 = tf1._rotation00 * worldX1X + tf1._rotation10 * worldX1Y + tf1._rotation20 * worldX1Z;
- __tmp__Y2 = tf1._rotation01 * worldX1X + tf1._rotation11 * worldX1Y + tf1._rotation21 * worldX1Z;
- __tmp__Z2 = tf1._rotation02 * worldX1X + tf1._rotation12 * worldX1Y + tf1._rotation22 * worldX1Z;
- this._localBasisX1X = __tmp__X2;
- this._localBasisX1Y = __tmp__Y2;
- this._localBasisX1Z = __tmp__Z2;
- var __tmp__X3;
- var __tmp__Y3;
- var __tmp__Z3;
- __tmp__X3 = tf1._rotation00 * worldYX + tf1._rotation10 * worldYY + tf1._rotation20 * worldYZ;
- __tmp__Y3 = tf1._rotation01 * worldYX + tf1._rotation11 * worldYY + tf1._rotation21 * worldYZ;
- __tmp__Z3 = tf1._rotation02 * worldYX + tf1._rotation12 * worldYY + tf1._rotation22 * worldYZ;
- this._localBasisY1X = __tmp__X3;
- this._localBasisY1Y = __tmp__Y3;
- this._localBasisY1Z = __tmp__Z3;
- var __tmp__X4;
- var __tmp__Y4;
- var __tmp__Z4;
- __tmp__X4 = tf1._rotation00 * worldZ1X + tf1._rotation10 * worldZ1Y + tf1._rotation20 * worldZ1Z;
- __tmp__Y4 = tf1._rotation01 * worldZ1X + tf1._rotation11 * worldZ1Y + tf1._rotation21 * worldZ1Z;
- __tmp__Z4 = tf1._rotation02 * worldZ1X + tf1._rotation12 * worldZ1Y + tf1._rotation22 * worldZ1Z;
- this._localBasisZ1X = __tmp__X4;
- this._localBasisZ1Y = __tmp__Y4;
- this._localBasisZ1Z = __tmp__Z4;
- var __tmp__X5;
- var __tmp__Y5;
- var __tmp__Z5;
- __tmp__X5 = tf2._rotation00 * worldX2X + tf2._rotation10 * worldX2Y + tf2._rotation20 * worldX2Z;
- __tmp__Y5 = tf2._rotation01 * worldX2X + tf2._rotation11 * worldX2Y + tf2._rotation21 * worldX2Z;
- __tmp__Z5 = tf2._rotation02 * worldX2X + tf2._rotation12 * worldX2Y + tf2._rotation22 * worldX2Z;
- this._localBasisX2X = __tmp__X5;
- this._localBasisX2Y = __tmp__Y5;
- this._localBasisX2Z = __tmp__Z5;
- var __tmp__X6;
- var __tmp__Y6;
- var __tmp__Z6;
- __tmp__X6 = tf2._rotation00 * worldYX + tf2._rotation10 * worldYY + tf2._rotation20 * worldYZ;
- __tmp__Y6 = tf2._rotation01 * worldYX + tf2._rotation11 * worldYY + tf2._rotation21 * worldYZ;
- __tmp__Z6 = tf2._rotation02 * worldYX + tf2._rotation12 * worldYY + tf2._rotation22 * worldYZ;
- this._localBasisY2X = __tmp__X6;
- this._localBasisY2Y = __tmp__Y6;
- this._localBasisY2Z = __tmp__Z6;
- var __tmp__X7;
- var __tmp__Y7;
- var __tmp__Z7;
- __tmp__X7 = tf2._rotation00 * worldZ2X + tf2._rotation10 * worldZ2Y + tf2._rotation20 * worldZ2Z;
- __tmp__Y7 = tf2._rotation01 * worldZ2X + tf2._rotation11 * worldZ2Y + tf2._rotation21 * worldZ2Z;
- __tmp__Z7 = tf2._rotation02 * worldZ2X + tf2._rotation12 * worldZ2Y + tf2._rotation22 * worldZ2Z;
- this._localBasisZ2X = __tmp__X7;
- this._localBasisZ2Y = __tmp__Y7;
- this._localBasisZ2Z = __tmp__Z7;
- }
- buildLocalBasesFromXY1X2() {
- if(this._localBasisX1X * this._localBasisX1X + this._localBasisX1Y * this._localBasisX1Y + this._localBasisX1Z * this._localBasisX1Z == 0) {
- this._localBasisX1X = 1;
- this._localBasisX1Y = 0;
- this._localBasisX1Z = 0;
- } else {
- var l = this._localBasisX1X * this._localBasisX1X + this._localBasisX1Y * this._localBasisX1Y + this._localBasisX1Z * this._localBasisX1Z;
- if(l > 0) {
- l = 1 / Math.sqrt(l);
- }
- this._localBasisX1X *= l;
- this._localBasisX1Y *= l;
- this._localBasisX1Z *= l;
- }
- this._localBasisZ1X = this._localBasisX1Y * this._localBasisY1Z - this._localBasisX1Z * this._localBasisY1Y;
- this._localBasisZ1Y = this._localBasisX1Z * this._localBasisY1X - this._localBasisX1X * this._localBasisY1Z;
- this._localBasisZ1Z = this._localBasisX1X * this._localBasisY1Y - this._localBasisX1Y * this._localBasisY1X;
- if(this._localBasisZ1X * this._localBasisZ1X + this._localBasisZ1Y * this._localBasisZ1Y + this._localBasisZ1Z * this._localBasisZ1Z == 0) {
- var x1 = this._localBasisX1X;
- var y1 = this._localBasisX1Y;
- var z1 = this._localBasisX1Z;
- var x2 = x1 * x1;
- var y2 = y1 * y1;
- var z2 = z1 * z1;
- var d;
- if(x2 < y2) {
- if(x2 < z2) {
- d = 1 / Math.sqrt(y2 + z2);
- this._localBasisY1X = 0;
- this._localBasisY1Y = z1 * d;
- this._localBasisY1Z = -y1 * d;
- } else {
- d = 1 / Math.sqrt(x2 + y2);
- this._localBasisY1X = y1 * d;
- this._localBasisY1Y = -x1 * d;
- this._localBasisY1Z = 0;
- }
- } else if(y2 < z2) {
- d = 1 / Math.sqrt(z2 + x2);
- this._localBasisY1X = -z1 * d;
- this._localBasisY1Y = 0;
- this._localBasisY1Z = x1 * d;
- } else {
- d = 1 / Math.sqrt(x2 + y2);
- this._localBasisY1X = y1 * d;
- this._localBasisY1Y = -x1 * d;
- this._localBasisY1Z = 0;
- }
- this._localBasisZ1X = this._localBasisX1Y * this._localBasisY1Z - this._localBasisX1Z * this._localBasisY1Y;
- this._localBasisZ1Y = this._localBasisX1Z * this._localBasisY1X - this._localBasisX1X * this._localBasisY1Z;
- this._localBasisZ1Z = this._localBasisX1X * this._localBasisY1Y - this._localBasisX1Y * this._localBasisY1X;
- } else {
- var l1 = this._localBasisZ1X * this._localBasisZ1X + this._localBasisZ1Y * this._localBasisZ1Y + this._localBasisZ1Z * this._localBasisZ1Z;
- if(l1 > 0) {
- l1 = 1 / Math.sqrt(l1);
- }
- this._localBasisZ1X *= l1;
- this._localBasisZ1Y *= l1;
- this._localBasisZ1Z *= l1;
- this._localBasisY1X = this._localBasisZ1Y * this._localBasisX1Z - this._localBasisZ1Z * this._localBasisX1Y;
- this._localBasisY1Y = this._localBasisZ1Z * this._localBasisX1X - this._localBasisZ1X * this._localBasisX1Z;
- this._localBasisY1Z = this._localBasisZ1X * this._localBasisX1Y - this._localBasisZ1Y * this._localBasisX1X;
- }
- var slerpQ;
- var slerpQX;
- var slerpQY;
- var slerpQZ;
- var slerpQW;
- var slerpM;
- var slerpM00;
- var slerpM01;
- var slerpM02;
- var slerpM10;
- var slerpM11;
- var slerpM12;
- var slerpM20;
- var slerpM21;
- var slerpM22;
- var d1 = this._localBasisX1X * this._localBasisX2X + this._localBasisX1Y * this._localBasisX2Y + this._localBasisX1Z * this._localBasisX2Z;
- if(d1 < -0.999999999) {
- var vX;
- var vY;
- var vZ;
- var x11 = this._localBasisX1X;
- var y11 = this._localBasisX1Y;
- var z11 = this._localBasisX1Z;
- var x21 = x11 * x11;
- var y21 = y11 * y11;
- var z21 = z11 * z11;
- var d2;
- if(x21 < y21) {
- if(x21 < z21) {
- d2 = 1 / Math.sqrt(y21 + z21);
- vX = 0;
- vY = z11 * d2;
- vZ = -y11 * d2;
- } else {
- d2 = 1 / Math.sqrt(x21 + y21);
- vX = y11 * d2;
- vY = -x11 * d2;
- vZ = 0;
- }
- } else if(y21 < z21) {
- d2 = 1 / Math.sqrt(z21 + x21);
- vX = -z11 * d2;
- vY = 0;
- vZ = x11 * d2;
- } else {
- d2 = 1 / Math.sqrt(x21 + y21);
- vX = y11 * d2;
- vY = -x11 * d2;
- vZ = 0;
- }
- slerpQX = vX;
- slerpQY = vY;
- slerpQZ = vZ;
- slerpQW = 0;
- } else {
- var cX;
- var cY;
- var cZ;
- cX = this._localBasisX1Y * this._localBasisX2Z - this._localBasisX1Z * this._localBasisX2Y;
- cY = this._localBasisX1Z * this._localBasisX2X - this._localBasisX1X * this._localBasisX2Z;
- cZ = this._localBasisX1X * this._localBasisX2Y - this._localBasisX1Y * this._localBasisX2X;
- var w = Math.sqrt((1 + d1) * 0.5);
- d1 = 0.5 / w;
- cX *= d1;
- cY *= d1;
- cZ *= d1;
- slerpQX = cX;
- slerpQY = cY;
- slerpQZ = cZ;
- slerpQW = w;
- }
- var x = slerpQX;
- var y = slerpQY;
- var z = slerpQZ;
- var w1 = slerpQW;
- var x22 = 2 * x;
- var y22 = 2 * y;
- var z22 = 2 * z;
- var xx = x * x22;
- var yy = y * y22;
- var zz = z * z22;
- var xy = x * y22;
- var yz = y * z22;
- var xz = x * z22;
- var wx = w1 * x22;
- var wy = w1 * y22;
- var wz = w1 * z22;
- slerpM00 = 1 - yy - zz;
- slerpM01 = xy - wz;
- slerpM02 = xz + wy;
- slerpM10 = xy + wz;
- slerpM11 = 1 - xx - zz;
- slerpM12 = yz - wx;
- slerpM20 = xz - wy;
- slerpM21 = yz + wx;
- slerpM22 = 1 - xx - yy;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = slerpM00 * this._localBasisX1X + slerpM01 * this._localBasisX1Y + slerpM02 * this._localBasisX1Z;
- __tmp__Y = slerpM10 * this._localBasisX1X + slerpM11 * this._localBasisX1Y + slerpM12 * this._localBasisX1Z;
- __tmp__Z = slerpM20 * this._localBasisX1X + slerpM21 * this._localBasisX1Y + slerpM22 * this._localBasisX1Z;
- this._localBasisX2X = __tmp__X;
- this._localBasisX2Y = __tmp__Y;
- this._localBasisX2Z = __tmp__Z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = slerpM00 * this._localBasisY1X + slerpM01 * this._localBasisY1Y + slerpM02 * this._localBasisY1Z;
- __tmp__Y1 = slerpM10 * this._localBasisY1X + slerpM11 * this._localBasisY1Y + slerpM12 * this._localBasisY1Z;
- __tmp__Z1 = slerpM20 * this._localBasisY1X + slerpM21 * this._localBasisY1Y + slerpM22 * this._localBasisY1Z;
- this._localBasisY2X = __tmp__X1;
- this._localBasisY2Y = __tmp__Y1;
- this._localBasisY2Z = __tmp__Z1;
- var __tmp__X2;
- var __tmp__Y2;
- var __tmp__Z2;
- __tmp__X2 = slerpM00 * this._localBasisZ1X + slerpM01 * this._localBasisZ1Y + slerpM02 * this._localBasisZ1Z;
- __tmp__Y2 = slerpM10 * this._localBasisZ1X + slerpM11 * this._localBasisZ1Y + slerpM12 * this._localBasisZ1Z;
- __tmp__Z2 = slerpM20 * this._localBasisZ1X + slerpM21 * this._localBasisZ1Y + slerpM22 * this._localBasisZ1Z;
- this._localBasisZ2X = __tmp__X2;
- this._localBasisZ2Y = __tmp__Y2;
- this._localBasisZ2Z = __tmp__Z2;
- }
- setSolverInfoRowLinear(row,diff,lm,mass,sd,timeStep,isPositionPart) {
- var cfmFactor;
- var erp;
- var slop = oimo.common.Setting.linearSlop;
- if(isPositionPart) {
- cfmFactor = 0;
- erp = 1;
- } else {
- if(sd.frequency > 0) {
- slop = 0;
- var omega = 6.28318530717958 * sd.frequency;
- var zeta = sd.dampingRatio;
- if(zeta < oimo.common.Setting.minSpringDamperDampingRatio) {
- zeta = oimo.common.Setting.minSpringDamperDampingRatio;
- }
- var h = timeStep.dt;
- var c = 2 * zeta * omega;
- var k = omega * omega;
- if(sd.useSymplecticEuler) {
- cfmFactor = 1 / (h * c);
- erp = k / c;
- } else {
- cfmFactor = 1 / (h * (h * k + c));
- erp = k / (h * k + c);
- }
- } else {
- cfmFactor = 0;
- erp = this.getErp(timeStep,false);
- }
- if(lm.motorForce > 0) {
- row.motorSpeed = lm.motorSpeed;
- row.motorMaxImpulse = lm.motorForce * timeStep.dt;
- } else {
- row.motorSpeed = 0;
- row.motorMaxImpulse = 0;
- }
- }
- var lower = lm.lowerLimit;
- var upper = lm.upperLimit;
- var minImp;
- var maxImp;
- var error;
- if(lower > upper) {
- minImp = 0;
- maxImp = 0;
- error = 0;
- } else if(lower == upper) {
- minImp = -1e65536;
- maxImp = 1e65536;
- error = diff - lower;
- } else if(diff < lower) {
- minImp = -1e65536;
- maxImp = 0;
- error = diff - lower + slop;
- if(error > 0) {
- error = 0;
- }
- } else if(diff > upper) {
- minImp = 0;
- maxImp = 1e65536;
- error = diff - upper - slop;
- if(error < 0) {
- error = 0;
- }
- } else {
- minImp = 0;
- maxImp = 0;
- error = 0;
- }
- var invMass = mass == 0 ? 0 : 1 / mass;
- row.minImpulse = minImp;
- row.maxImpulse = maxImp;
- row.cfm = cfmFactor * invMass;
- row.rhs = error * erp;
- }
- setSolverInfoRowAngular(row,diff,lm,mass,sd,timeStep,isPositionPart) {
- var cfmFactor;
- var erp;
- var slop = oimo.common.Setting.angularSlop;
- if(isPositionPart) {
- cfmFactor = 0;
- erp = 1;
- } else {
- if(sd.frequency > 0) {
- slop = 0;
- var omega = 6.28318530717958 * sd.frequency;
- var zeta = sd.dampingRatio;
- if(zeta < oimo.common.Setting.minSpringDamperDampingRatio) {
- zeta = oimo.common.Setting.minSpringDamperDampingRatio;
- }
- var h = timeStep.dt;
- var c = 2 * zeta * omega;
- var k = omega * omega;
- if(sd.useSymplecticEuler) {
- cfmFactor = 1 / (h * c);
- erp = k / c;
- } else {
- cfmFactor = 1 / (h * (h * k + c));
- erp = k / (h * k + c);
- }
- } else {
- cfmFactor = 0;
- erp = this.getErp(timeStep,false);
- }
- if(lm.motorTorque > 0) {
- row.motorSpeed = lm.motorSpeed;
- row.motorMaxImpulse = lm.motorTorque * timeStep.dt;
- } else {
- row.motorSpeed = 0;
- row.motorMaxImpulse = 0;
- }
- }
- var lower = lm.lowerLimit;
- var upper = lm.upperLimit;
- var mid = (lower + upper) * 0.5;
- diff -= mid;
- diff = ((diff + 3.14159265358979) % 6.28318530717958 + 6.28318530717958) % 6.28318530717958 - 3.14159265358979;
- diff += mid;
- var minImp;
- var maxImp;
- var error;
- if(lower > upper) {
- minImp = 0;
- maxImp = 0;
- error = 0;
- } else if(lower == upper) {
- minImp = -1e65536;
- maxImp = 1e65536;
- error = diff - lower;
- } else if(diff < lower) {
- minImp = -1e65536;
- maxImp = 0;
- error = diff - lower + slop;
- if(error > 0) {
- error = 0;
- }
- } else if(diff > upper) {
- minImp = 0;
- maxImp = 1e65536;
- error = diff - upper - slop;
- if(error < 0) {
- error = 0;
- }
- } else {
- minImp = 0;
- maxImp = 0;
- error = 0;
- }
- var invMass = mass == 0 ? 0 : 1 / mass;
- row.minImpulse = minImp;
- row.maxImpulse = maxImp;
- row.cfm = cfmFactor * invMass;
- row.rhs = error * erp;
- }
- getErp(timeStep,isPositionPart) {
- if(isPositionPart) {
- return 1;
- } else if(this._positionCorrectionAlgorithm == oimo.dynamics.constraint.PositionCorrectionAlgorithm.BAUMGARTE) {
- return timeStep.invDt * oimo.common.Setting.velocityBaumgarte;
- } else {
- return 0;
- }
- }
- computeEffectiveInertiaMoment(axisX,axisY,axisZ) {
- var ia1;
- var ia1X;
- var ia1Y;
- var ia1Z;
- var ia2;
- var ia2X;
- var ia2Y;
- var ia2Z;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = this._b1._invInertia00 * axisX + this._b1._invInertia01 * axisY + this._b1._invInertia02 * axisZ;
- __tmp__Y = this._b1._invInertia10 * axisX + this._b1._invInertia11 * axisY + this._b1._invInertia12 * axisZ;
- __tmp__Z = this._b1._invInertia20 * axisX + this._b1._invInertia21 * axisY + this._b1._invInertia22 * axisZ;
- ia1X = __tmp__X;
- ia1Y = __tmp__Y;
- ia1Z = __tmp__Z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = this._b2._invInertia00 * axisX + this._b2._invInertia01 * axisY + this._b2._invInertia02 * axisZ;
- __tmp__Y1 = this._b2._invInertia10 * axisX + this._b2._invInertia11 * axisY + this._b2._invInertia12 * axisZ;
- __tmp__Z1 = this._b2._invInertia20 * axisX + this._b2._invInertia21 * axisY + this._b2._invInertia22 * axisZ;
- ia2X = __tmp__X1;
- ia2Y = __tmp__Y1;
- ia2Z = __tmp__Z1;
- var invI1 = ia1X * axisX + ia1Y * axisY + ia1Z * axisZ;
- var invI2 = ia2X * axisX + ia2Y * axisY + ia2Z * axisZ;
- if(invI1 > 0) {
- var rsq = this._relativeAnchor1X * this._relativeAnchor1X + this._relativeAnchor1Y * this._relativeAnchor1Y + this._relativeAnchor1Z * this._relativeAnchor1Z;
- var dot = axisX * this._relativeAnchor1X + axisY * this._relativeAnchor1Y + axisZ * this._relativeAnchor1Z;
- var projsq = rsq - dot * dot;
- if(projsq > 0) {
- if(this._b1._invMass > 0) {
- invI1 = 1 / (1 / invI1 + this._b1._mass * projsq);
- } else {
- invI1 = 0;
- }
- }
- }
- if(invI2 > 0) {
- var rsq1 = this._relativeAnchor2X * this._relativeAnchor2X + this._relativeAnchor2Y * this._relativeAnchor2Y + this._relativeAnchor2Z * this._relativeAnchor2Z;
- var dot1 = axisX * this._relativeAnchor2X + axisY * this._relativeAnchor2Y + axisZ * this._relativeAnchor2Z;
- var projsq1 = rsq1 - dot1 * dot1;
- if(projsq1 > 0) {
- if(this._b2._invMass > 0) {
- invI2 = 1 / (1 / invI2 + this._b2._mass * projsq1);
- } else {
- invI2 = 0;
- }
- }
- }
- if(invI1 + invI2 == 0) {
- return 0;
- } else {
- return 1 / (invI1 + invI2);
- }
- }
- computeEffectiveInertiaMoment2(axis1X,axis1Y,axis1Z,axis2X,axis2Y,axis2Z) {
- var ia1;
- var ia1X;
- var ia1Y;
- var ia1Z;
- var ia2;
- var ia2X;
- var ia2Y;
- var ia2Z;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = this._b1._invInertia00 * axis1X + this._b1._invInertia01 * axis1Y + this._b1._invInertia02 * axis1Z;
- __tmp__Y = this._b1._invInertia10 * axis1X + this._b1._invInertia11 * axis1Y + this._b1._invInertia12 * axis1Z;
- __tmp__Z = this._b1._invInertia20 * axis1X + this._b1._invInertia21 * axis1Y + this._b1._invInertia22 * axis1Z;
- ia1X = __tmp__X;
- ia1Y = __tmp__Y;
- ia1Z = __tmp__Z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = this._b2._invInertia00 * axis2X + this._b2._invInertia01 * axis2Y + this._b2._invInertia02 * axis2Z;
- __tmp__Y1 = this._b2._invInertia10 * axis2X + this._b2._invInertia11 * axis2Y + this._b2._invInertia12 * axis2Z;
- __tmp__Z1 = this._b2._invInertia20 * axis2X + this._b2._invInertia21 * axis2Y + this._b2._invInertia22 * axis2Z;
- ia2X = __tmp__X1;
- ia2Y = __tmp__Y1;
- ia2Z = __tmp__Z1;
- var invI1 = ia1X * axis1X + ia1Y * axis1Y + ia1Z * axis1Z;
- var invI2 = ia2X * axis2X + ia2Y * axis2Y + ia2Z * axis2Z;
- if(invI1 > 0) {
- var rsq = this._relativeAnchor1X * this._relativeAnchor1X + this._relativeAnchor1Y * this._relativeAnchor1Y + this._relativeAnchor1Z * this._relativeAnchor1Z;
- var dot = axis1X * this._relativeAnchor1X + axis1Y * this._relativeAnchor1Y + axis1Z * this._relativeAnchor1Z;
- var projsq = rsq * rsq - dot * dot;
- if(projsq > 0) {
- if(this._b1._invMass > 0) {
- invI1 = 1 / (1 / invI1 + this._b1._mass * projsq);
- } else {
- invI1 = 0;
- }
- }
- }
- if(invI2 > 0) {
- var rsq1 = this._relativeAnchor2X * this._relativeAnchor2X + this._relativeAnchor2Y * this._relativeAnchor2Y + this._relativeAnchor2Z * this._relativeAnchor2Z;
- var dot1 = axis2X * this._relativeAnchor2X + axis2Y * this._relativeAnchor2Y + axis2Z * this._relativeAnchor2Z;
- var projsq1 = rsq1 * rsq1 - dot1 * dot1;
- if(projsq1 > 0) {
- if(this._b2._invMass > 0) {
- invI2 = 1 / (1 / invI2 + this._b2._mass * projsq1);
- } else {
- invI2 = 0;
- }
- }
- }
- if(invI1 + invI2 == 0) {
- return 0;
- } else {
- return 1 / (invI1 + invI2);
- }
- }
- _syncAnchors() {
- var tf1 = this._b1._transform;
- var tf2 = this._b2._transform;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = tf1._rotation00 * this._localAnchor1X + tf1._rotation01 * this._localAnchor1Y + tf1._rotation02 * this._localAnchor1Z;
- __tmp__Y = tf1._rotation10 * this._localAnchor1X + tf1._rotation11 * this._localAnchor1Y + tf1._rotation12 * this._localAnchor1Z;
- __tmp__Z = tf1._rotation20 * this._localAnchor1X + tf1._rotation21 * this._localAnchor1Y + tf1._rotation22 * this._localAnchor1Z;
- this._relativeAnchor1X = __tmp__X;
- this._relativeAnchor1Y = __tmp__Y;
- this._relativeAnchor1Z = __tmp__Z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = tf2._rotation00 * this._localAnchor2X + tf2._rotation01 * this._localAnchor2Y + tf2._rotation02 * this._localAnchor2Z;
- __tmp__Y1 = tf2._rotation10 * this._localAnchor2X + tf2._rotation11 * this._localAnchor2Y + tf2._rotation12 * this._localAnchor2Z;
- __tmp__Z1 = tf2._rotation20 * this._localAnchor2X + tf2._rotation21 * this._localAnchor2Y + tf2._rotation22 * this._localAnchor2Z;
- this._relativeAnchor2X = __tmp__X1;
- this._relativeAnchor2Y = __tmp__Y1;
- this._relativeAnchor2Z = __tmp__Z1;
- this._anchor1X = this._relativeAnchor1X + tf1._positionX;
- this._anchor1Y = this._relativeAnchor1Y + tf1._positionY;
- this._anchor1Z = this._relativeAnchor1Z + tf1._positionZ;
- this._anchor2X = this._relativeAnchor2X + tf2._positionX;
- this._anchor2Y = this._relativeAnchor2Y + tf2._positionY;
- this._anchor2Z = this._relativeAnchor2Z + tf2._positionZ;
- var __tmp__X2;
- var __tmp__Y2;
- var __tmp__Z2;
- __tmp__X2 = tf1._rotation00 * this._localBasisX1X + tf1._rotation01 * this._localBasisX1Y + tf1._rotation02 * this._localBasisX1Z;
- __tmp__Y2 = tf1._rotation10 * this._localBasisX1X + tf1._rotation11 * this._localBasisX1Y + tf1._rotation12 * this._localBasisX1Z;
- __tmp__Z2 = tf1._rotation20 * this._localBasisX1X + tf1._rotation21 * this._localBasisX1Y + tf1._rotation22 * this._localBasisX1Z;
- this._basisX1X = __tmp__X2;
- this._basisX1Y = __tmp__Y2;
- this._basisX1Z = __tmp__Z2;
- var __tmp__X3;
- var __tmp__Y3;
- var __tmp__Z3;
- __tmp__X3 = tf1._rotation00 * this._localBasisY1X + tf1._rotation01 * this._localBasisY1Y + tf1._rotation02 * this._localBasisY1Z;
- __tmp__Y3 = tf1._rotation10 * this._localBasisY1X + tf1._rotation11 * this._localBasisY1Y + tf1._rotation12 * this._localBasisY1Z;
- __tmp__Z3 = tf1._rotation20 * this._localBasisY1X + tf1._rotation21 * this._localBasisY1Y + tf1._rotation22 * this._localBasisY1Z;
- this._basisY1X = __tmp__X3;
- this._basisY1Y = __tmp__Y3;
- this._basisY1Z = __tmp__Z3;
- var __tmp__X4;
- var __tmp__Y4;
- var __tmp__Z4;
- __tmp__X4 = tf1._rotation00 * this._localBasisZ1X + tf1._rotation01 * this._localBasisZ1Y + tf1._rotation02 * this._localBasisZ1Z;
- __tmp__Y4 = tf1._rotation10 * this._localBasisZ1X + tf1._rotation11 * this._localBasisZ1Y + tf1._rotation12 * this._localBasisZ1Z;
- __tmp__Z4 = tf1._rotation20 * this._localBasisZ1X + tf1._rotation21 * this._localBasisZ1Y + tf1._rotation22 * this._localBasisZ1Z;
- this._basisZ1X = __tmp__X4;
- this._basisZ1Y = __tmp__Y4;
- this._basisZ1Z = __tmp__Z4;
- var __tmp__X5;
- var __tmp__Y5;
- var __tmp__Z5;
- __tmp__X5 = tf2._rotation00 * this._localBasisX2X + tf2._rotation01 * this._localBasisX2Y + tf2._rotation02 * this._localBasisX2Z;
- __tmp__Y5 = tf2._rotation10 * this._localBasisX2X + tf2._rotation11 * this._localBasisX2Y + tf2._rotation12 * this._localBasisX2Z;
- __tmp__Z5 = tf2._rotation20 * this._localBasisX2X + tf2._rotation21 * this._localBasisX2Y + tf2._rotation22 * this._localBasisX2Z;
- this._basisX2X = __tmp__X5;
- this._basisX2Y = __tmp__Y5;
- this._basisX2Z = __tmp__Z5;
- var __tmp__X6;
- var __tmp__Y6;
- var __tmp__Z6;
- __tmp__X6 = tf2._rotation00 * this._localBasisY2X + tf2._rotation01 * this._localBasisY2Y + tf2._rotation02 * this._localBasisY2Z;
- __tmp__Y6 = tf2._rotation10 * this._localBasisY2X + tf2._rotation11 * this._localBasisY2Y + tf2._rotation12 * this._localBasisY2Z;
- __tmp__Z6 = tf2._rotation20 * this._localBasisY2X + tf2._rotation21 * this._localBasisY2Y + tf2._rotation22 * this._localBasisY2Z;
- this._basisY2X = __tmp__X6;
- this._basisY2Y = __tmp__Y6;
- this._basisY2Z = __tmp__Z6;
- var __tmp__X7;
- var __tmp__Y7;
- var __tmp__Z7;
- __tmp__X7 = tf2._rotation00 * this._localBasisZ2X + tf2._rotation01 * this._localBasisZ2Y + tf2._rotation02 * this._localBasisZ2Z;
- __tmp__Y7 = tf2._rotation10 * this._localBasisZ2X + tf2._rotation11 * this._localBasisZ2Y + tf2._rotation12 * this._localBasisZ2Z;
- __tmp__Z7 = tf2._rotation20 * this._localBasisZ2X + tf2._rotation21 * this._localBasisZ2Y + tf2._rotation22 * this._localBasisZ2Z;
- this._basisZ2X = __tmp__X7;
- this._basisZ2Y = __tmp__Y7;
- this._basisZ2Z = __tmp__Z7;
- }
- _getVelocitySolverInfo(timeStep,info) {
- info.b1 = this._b1;
- info.b2 = this._b2;
- info.numRows = 0;
- }
- _getPositionSolverInfo(info) {
- info.b1 = this._b1;
- info.b2 = this._b2;
- info.numRows = 0;
- }
- _checkDestruction() {
- var forceSq = this._appliedForceX * this._appliedForceX + this._appliedForceY * this._appliedForceY + this._appliedForceZ * this._appliedForceZ;
- var torqueSq = this._appliedTorqueX * this._appliedTorqueX + this._appliedTorqueY * this._appliedTorqueY + this._appliedTorqueZ * this._appliedTorqueZ;
- if(this._breakForce > 0 && forceSq > this._breakForce * this._breakForce) {
- this._world.removeJoint(this);
- return;
- }
- if(this._breakTorque > 0 && torqueSq > this._breakTorque * this._breakTorque) {
- this._world.removeJoint(this);
- return;
- }
- }
- getRigidBody1() {
- return this._b1;
- }
- getRigidBody2() {
- return this._b2;
- }
- getType() {
- return this._type;
- }
- getAnchor1() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._anchor1X;
- v1.y = this._anchor1Y;
- v1.z = this._anchor1Z;
- return v;
- }
- getAnchor2() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._anchor2X;
- v1.y = this._anchor2Y;
- v1.z = this._anchor2Z;
- return v;
- }
- getAnchor1To(anchor) {
- var v = anchor;
- v.x = this._anchor1X;
- v.y = this._anchor1Y;
- v.z = this._anchor1Z;
- }
- getAnchor2To(anchor) {
- var v = anchor;
- v.x = this._anchor2X;
- v.y = this._anchor2Y;
- v.z = this._anchor2Z;
- }
- getLocalAnchor1() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._localAnchor1X;
- v1.y = this._localAnchor1Y;
- v1.z = this._localAnchor1Z;
- return v;
- }
- getLocalAnchor2() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._localAnchor2X;
- v1.y = this._localAnchor2Y;
- v1.z = this._localAnchor2Z;
- return v;
- }
- getLocalAnchor1To(localAnchor) {
- var v = localAnchor;
- v.x = this._localAnchor1X;
- v.y = this._localAnchor1Y;
- v.z = this._localAnchor1Z;
- }
- getLocalAnchor2To(localAnchor) {
- var v = localAnchor;
- v.x = this._localAnchor2X;
- v.y = this._localAnchor2Y;
- v.z = this._localAnchor2Z;
- }
- getBasis1() {
- var m = new oimo.common.Mat3();
- var b;
- var b00;
- var b01;
- var b02;
- var b10;
- var b11;
- var b12;
- var b20;
- var b21;
- var b22;
- b00 = this._basisX1X;
- b01 = this._basisY1X;
- b02 = this._basisZ1X;
- b10 = this._basisX1Y;
- b11 = this._basisY1Y;
- b12 = this._basisZ1Y;
- b20 = this._basisX1Z;
- b21 = this._basisY1Z;
- b22 = this._basisZ1Z;
- var m1 = m;
- m1.e00 = b00;
- m1.e01 = b01;
- m1.e02 = b02;
- m1.e10 = b10;
- m1.e11 = b11;
- m1.e12 = b12;
- m1.e20 = b20;
- m1.e21 = b21;
- m1.e22 = b22;
- return m;
- }
- getBasis2() {
- var m = new oimo.common.Mat3();
- var b;
- var b00;
- var b01;
- var b02;
- var b10;
- var b11;
- var b12;
- var b20;
- var b21;
- var b22;
- b00 = this._basisX2X;
- b01 = this._basisY2X;
- b02 = this._basisZ2X;
- b10 = this._basisX2Y;
- b11 = this._basisY2Y;
- b12 = this._basisZ2Y;
- b20 = this._basisX2Z;
- b21 = this._basisY2Z;
- b22 = this._basisZ2Z;
- var m1 = m;
- m1.e00 = b00;
- m1.e01 = b01;
- m1.e02 = b02;
- m1.e10 = b10;
- m1.e11 = b11;
- m1.e12 = b12;
- m1.e20 = b20;
- m1.e21 = b21;
- m1.e22 = b22;
- return m;
- }
- getBasis1To(basis) {
- var b;
- var b00;
- var b01;
- var b02;
- var b10;
- var b11;
- var b12;
- var b20;
- var b21;
- var b22;
- b00 = this._basisX1X;
- b01 = this._basisY1X;
- b02 = this._basisZ1X;
- b10 = this._basisX1Y;
- b11 = this._basisY1Y;
- b12 = this._basisZ1Y;
- b20 = this._basisX1Z;
- b21 = this._basisY1Z;
- b22 = this._basisZ1Z;
- var m = basis;
- m.e00 = b00;
- m.e01 = b01;
- m.e02 = b02;
- m.e10 = b10;
- m.e11 = b11;
- m.e12 = b12;
- m.e20 = b20;
- m.e21 = b21;
- m.e22 = b22;
- }
- getBasis2To(basis) {
- var b;
- var b00;
- var b01;
- var b02;
- var b10;
- var b11;
- var b12;
- var b20;
- var b21;
- var b22;
- b00 = this._basisX2X;
- b01 = this._basisY2X;
- b02 = this._basisZ2X;
- b10 = this._basisX2Y;
- b11 = this._basisY2Y;
- b12 = this._basisZ2Y;
- b20 = this._basisX2Z;
- b21 = this._basisY2Z;
- b22 = this._basisZ2Z;
- var m = basis;
- m.e00 = b00;
- m.e01 = b01;
- m.e02 = b02;
- m.e10 = b10;
- m.e11 = b11;
- m.e12 = b12;
- m.e20 = b20;
- m.e21 = b21;
- m.e22 = b22;
- }
- getAllowCollision() {
- return this._allowCollision;
- }
- setAllowCollision(allowCollision) {
- this._allowCollision = allowCollision;
- }
- getBreakForce() {
- return this._breakForce;
- }
- setBreakForce(breakForce) {
- this._breakForce = breakForce;
- }
- getBreakTorque() {
- return this._breakTorque;
- }
- setBreakTorque(breakTorque) {
- this._breakTorque = breakTorque;
- }
- getPositionCorrectionAlgorithm() {
- return this._positionCorrectionAlgorithm;
- }
- setPositionCorrectionAlgorithm(positionCorrectionAlgorithm) {
- switch(positionCorrectionAlgorithm) {
- case 0:case 1:case 2:
- break;
- default:
- throw new Error("invalid position correction algorithm id: " + positionCorrectionAlgorithm);
- }
- this._positionCorrectionAlgorithm = positionCorrectionAlgorithm;
- }
- getAppliedForce() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._appliedForceX;
- v1.y = this._appliedForceY;
- v1.z = this._appliedForceZ;
- return v;
- }
- getAppliedForceTo(appliedForce) {
- var v = appliedForce;
- v.x = this._appliedForceX;
- v.y = this._appliedForceY;
- v.z = this._appliedForceZ;
- }
- getAppliedTorque() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._appliedTorqueX;
- v1.y = this._appliedTorqueY;
- v1.z = this._appliedTorqueZ;
- return v;
- }
- getAppliedTorqueTo(appliedTorque) {
- var v = appliedTorque;
- v.x = this._appliedTorqueX;
- v.y = this._appliedTorqueY;
- v.z = this._appliedTorqueZ;
- }
- getPrev() {
- return this._prev;
- }
- getNext() {
- return this._next;
- }
- }
- oimo.dynamics.constraint.joint.CylindricalJoint = class oimo_dynamics_constraint_joint_CylindricalJoint extends oimo.dynamics.constraint.joint.Joint {
- constructor(config) {
- super(config,2);
- var v = config.localAxis1;
- this._localBasisX1X = v.x;
- this._localBasisX1Y = v.y;
- this._localBasisX1Z = v.z;
- var v1 = config.localAxis2;
- this._localBasisX2X = v1.x;
- this._localBasisX2Y = v1.y;
- this._localBasisX2Z = v1.z;
- this.buildLocalBasesFromX();
- this.angle = 0;
- this.angularErrorY = 0;
- this.angularErrorZ = 0;
- this.translation = 0;
- this.linearErrorY = 0;
- this.linearErrorZ = 0;
- this._basis = new oimo.dynamics.constraint.joint.BasisTracker(this);
- this._translSd = config.translationalSpringDamper.clone();
- this._translLm = config.translationalLimitMotor.clone();
- this._rotSd = config.rotationalSpringDamper.clone();
- this._rotLm = config.rotationalLimitMotor.clone();
- }
- getInfo(info,timeStep,isPositionPart) {
- var erp = this.getErp(timeStep,isPositionPart);
- var linRhsY = this.linearErrorY * erp;
- var linRhsZ = this.linearErrorZ * erp;
- var angRhsY = this.angularErrorY * erp;
- var angRhsZ = this.angularErrorZ * erp;
- var row;
- var j;
- var translationalMotorMass = 1 / (this._b1._invMass + this._b2._invMass);
- var rotationalMotorMass = this.computeEffectiveInertiaMoment(this._basis.xX,this._basis.xY,this._basis.xZ);
- if(this._translSd.frequency <= 0 || !isPositionPart) {
- var impulse = this._impulses[0];
- var row1 = info.rows[info.numRows++];
- var _this = row1.jacobian;
- _this.lin1X = 0;
- _this.lin1Y = 0;
- _this.lin1Z = 0;
- _this.lin2X = 0;
- _this.lin2Y = 0;
- _this.lin2Z = 0;
- _this.ang1X = 0;
- _this.ang1Y = 0;
- _this.ang1Z = 0;
- _this.ang2X = 0;
- _this.ang2Y = 0;
- _this.ang2Z = 0;
- row1.rhs = 0;
- row1.cfm = 0;
- row1.minImpulse = 0;
- row1.maxImpulse = 0;
- row1.motorSpeed = 0;
- row1.motorMaxImpulse = 0;
- row1.impulse = null;
- row1.impulse = impulse;
- row = row1;
- this.setSolverInfoRowLinear(row,this.translation,this._translLm,translationalMotorMass,this._translSd,timeStep,isPositionPart);
- j = row.jacobian;
- j.lin1X = this._basis.xX;
- j.lin1Y = this._basis.xY;
- j.lin1Z = this._basis.xZ;
- j.lin2X = this._basis.xX;
- j.lin2Y = this._basis.xY;
- j.lin2Z = this._basis.xZ;
- j.ang1X = this._relativeAnchor1Y * this._basis.xZ - this._relativeAnchor1Z * this._basis.xY;
- j.ang1Y = this._relativeAnchor1Z * this._basis.xX - this._relativeAnchor1X * this._basis.xZ;
- j.ang1Z = this._relativeAnchor1X * this._basis.xY - this._relativeAnchor1Y * this._basis.xX;
- j.ang2X = this._relativeAnchor2Y * this._basis.xZ - this._relativeAnchor2Z * this._basis.xY;
- j.ang2Y = this._relativeAnchor2Z * this._basis.xX - this._relativeAnchor2X * this._basis.xZ;
- j.ang2Z = this._relativeAnchor2X * this._basis.xY - this._relativeAnchor2Y * this._basis.xX;
- }
- var impulse1 = this._impulses[1];
- var row2 = info.rows[info.numRows++];
- var _this1 = row2.jacobian;
- _this1.lin1X = 0;
- _this1.lin1Y = 0;
- _this1.lin1Z = 0;
- _this1.lin2X = 0;
- _this1.lin2Y = 0;
- _this1.lin2Z = 0;
- _this1.ang1X = 0;
- _this1.ang1Y = 0;
- _this1.ang1Z = 0;
- _this1.ang2X = 0;
- _this1.ang2Y = 0;
- _this1.ang2Z = 0;
- row2.rhs = 0;
- row2.cfm = 0;
- row2.minImpulse = 0;
- row2.maxImpulse = 0;
- row2.motorSpeed = 0;
- row2.motorMaxImpulse = 0;
- row2.impulse = null;
- row2.impulse = impulse1;
- row = row2;
- row.rhs = linRhsY;
- row.cfm = 0;
- row.minImpulse = -1e65536;
- row.maxImpulse = 1e65536;
- j = row.jacobian;
- j.lin1X = this._basis.yX;
- j.lin1Y = this._basis.yY;
- j.lin1Z = this._basis.yZ;
- j.lin2X = this._basis.yX;
- j.lin2Y = this._basis.yY;
- j.lin2Z = this._basis.yZ;
- j.ang1X = this._relativeAnchor1Y * this._basis.yZ - this._relativeAnchor1Z * this._basis.yY;
- j.ang1Y = this._relativeAnchor1Z * this._basis.yX - this._relativeAnchor1X * this._basis.yZ;
- j.ang1Z = this._relativeAnchor1X * this._basis.yY - this._relativeAnchor1Y * this._basis.yX;
- j.ang2X = this._relativeAnchor2Y * this._basis.yZ - this._relativeAnchor2Z * this._basis.yY;
- j.ang2Y = this._relativeAnchor2Z * this._basis.yX - this._relativeAnchor2X * this._basis.yZ;
- j.ang2Z = this._relativeAnchor2X * this._basis.yY - this._relativeAnchor2Y * this._basis.yX;
- var impulse2 = this._impulses[2];
- var row3 = info.rows[info.numRows++];
- var _this2 = row3.jacobian;
- _this2.lin1X = 0;
- _this2.lin1Y = 0;
- _this2.lin1Z = 0;
- _this2.lin2X = 0;
- _this2.lin2Y = 0;
- _this2.lin2Z = 0;
- _this2.ang1X = 0;
- _this2.ang1Y = 0;
- _this2.ang1Z = 0;
- _this2.ang2X = 0;
- _this2.ang2Y = 0;
- _this2.ang2Z = 0;
- row3.rhs = 0;
- row3.cfm = 0;
- row3.minImpulse = 0;
- row3.maxImpulse = 0;
- row3.motorSpeed = 0;
- row3.motorMaxImpulse = 0;
- row3.impulse = null;
- row3.impulse = impulse2;
- row = row3;
- row.rhs = linRhsZ;
- row.cfm = 0;
- row.minImpulse = -1e65536;
- row.maxImpulse = 1e65536;
- j = row.jacobian;
- j.lin1X = this._basis.zX;
- j.lin1Y = this._basis.zY;
- j.lin1Z = this._basis.zZ;
- j.lin2X = this._basis.zX;
- j.lin2Y = this._basis.zY;
- j.lin2Z = this._basis.zZ;
- j.ang1X = this._relativeAnchor1Y * this._basis.zZ - this._relativeAnchor1Z * this._basis.zY;
- j.ang1Y = this._relativeAnchor1Z * this._basis.zX - this._relativeAnchor1X * this._basis.zZ;
- j.ang1Z = this._relativeAnchor1X * this._basis.zY - this._relativeAnchor1Y * this._basis.zX;
- j.ang2X = this._relativeAnchor2Y * this._basis.zZ - this._relativeAnchor2Z * this._basis.zY;
- j.ang2Y = this._relativeAnchor2Z * this._basis.zX - this._relativeAnchor2X * this._basis.zZ;
- j.ang2Z = this._relativeAnchor2X * this._basis.zY - this._relativeAnchor2Y * this._basis.zX;
- if(this._rotSd.frequency <= 0 || !isPositionPart) {
- var impulse3 = this._impulses[3];
- var row4 = info.rows[info.numRows++];
- var _this3 = row4.jacobian;
- _this3.lin1X = 0;
- _this3.lin1Y = 0;
- _this3.lin1Z = 0;
- _this3.lin2X = 0;
- _this3.lin2Y = 0;
- _this3.lin2Z = 0;
- _this3.ang1X = 0;
- _this3.ang1Y = 0;
- _this3.ang1Z = 0;
- _this3.ang2X = 0;
- _this3.ang2Y = 0;
- _this3.ang2Z = 0;
- row4.rhs = 0;
- row4.cfm = 0;
- row4.minImpulse = 0;
- row4.maxImpulse = 0;
- row4.motorSpeed = 0;
- row4.motorMaxImpulse = 0;
- row4.impulse = null;
- row4.impulse = impulse3;
- row = row4;
- this.setSolverInfoRowAngular(row,this.angle,this._rotLm,rotationalMotorMass,this._rotSd,timeStep,isPositionPart);
- j = row.jacobian;
- j.ang1X = this._basis.xX;
- j.ang1Y = this._basis.xY;
- j.ang1Z = this._basis.xZ;
- j.ang2X = this._basis.xX;
- j.ang2Y = this._basis.xY;
- j.ang2Z = this._basis.xZ;
- }
- var impulse4 = this._impulses[4];
- var row5 = info.rows[info.numRows++];
- var _this4 = row5.jacobian;
- _this4.lin1X = 0;
- _this4.lin1Y = 0;
- _this4.lin1Z = 0;
- _this4.lin2X = 0;
- _this4.lin2Y = 0;
- _this4.lin2Z = 0;
- _this4.ang1X = 0;
- _this4.ang1Y = 0;
- _this4.ang1Z = 0;
- _this4.ang2X = 0;
- _this4.ang2Y = 0;
- _this4.ang2Z = 0;
- row5.rhs = 0;
- row5.cfm = 0;
- row5.minImpulse = 0;
- row5.maxImpulse = 0;
- row5.motorSpeed = 0;
- row5.motorMaxImpulse = 0;
- row5.impulse = null;
- row5.impulse = impulse4;
- row = row5;
- row.rhs = angRhsY;
- row.cfm = 0;
- row.minImpulse = -1e65536;
- row.maxImpulse = 1e65536;
- j = row.jacobian;
- j.ang1X = this._basis.yX;
- j.ang1Y = this._basis.yY;
- j.ang1Z = this._basis.yZ;
- j.ang2X = this._basis.yX;
- j.ang2Y = this._basis.yY;
- j.ang2Z = this._basis.yZ;
- var impulse5 = this._impulses[5];
- var row6 = info.rows[info.numRows++];
- var _this5 = row6.jacobian;
- _this5.lin1X = 0;
- _this5.lin1Y = 0;
- _this5.lin1Z = 0;
- _this5.lin2X = 0;
- _this5.lin2Y = 0;
- _this5.lin2Z = 0;
- _this5.ang1X = 0;
- _this5.ang1Y = 0;
- _this5.ang1Z = 0;
- _this5.ang2X = 0;
- _this5.ang2Y = 0;
- _this5.ang2Z = 0;
- row6.rhs = 0;
- row6.cfm = 0;
- row6.minImpulse = 0;
- row6.maxImpulse = 0;
- row6.motorSpeed = 0;
- row6.motorMaxImpulse = 0;
- row6.impulse = null;
- row6.impulse = impulse5;
- row = row6;
- row.rhs = angRhsZ;
- row.cfm = 0;
- row.minImpulse = -1e65536;
- row.maxImpulse = 1e65536;
- j = row.jacobian;
- j.ang1X = this._basis.zX;
- j.ang1Y = this._basis.zY;
- j.ang1Z = this._basis.zZ;
- j.ang2X = this._basis.zX;
- j.ang2Y = this._basis.zY;
- j.ang2Z = this._basis.zZ;
- }
- _syncAnchors() {
- super._syncAnchors();
- var _this = this._basis;
- var invM1 = _this.joint._b1._invMass;
- var invM2 = _this.joint._b2._invMass;
- var q;
- var qX;
- var qY;
- var qZ;
- var qW;
- var idQ;
- var idQX;
- var idQY;
- var idQZ;
- var idQW;
- var slerpQ;
- var slerpQX;
- var slerpQY;
- var slerpQZ;
- var slerpQW;
- var slerpM;
- var slerpM00;
- var slerpM01;
- var slerpM02;
- var slerpM10;
- var slerpM11;
- var slerpM12;
- var slerpM20;
- var slerpM21;
- var slerpM22;
- var newX;
- var newXX;
- var newXY;
- var newXZ;
- var newY;
- var newYX;
- var newYY;
- var newYZ;
- var newZ;
- var newZX;
- var newZY;
- var newZZ;
- var prevX;
- var prevXX;
- var prevXY;
- var prevXZ;
- var prevY;
- var prevYX;
- var prevYY;
- var prevYZ;
- var d = _this.joint._basisX1X * _this.joint._basisX2X + _this.joint._basisX1Y * _this.joint._basisX2Y + _this.joint._basisX1Z * _this.joint._basisX2Z;
- if(d < -0.999999999) {
- var vX;
- var vY;
- var vZ;
- var x1 = _this.joint._basisX1X;
- var y1 = _this.joint._basisX1Y;
- var z1 = _this.joint._basisX1Z;
- var x2 = x1 * x1;
- var y2 = y1 * y1;
- var z2 = z1 * z1;
- var d1;
- if(x2 < y2) {
- if(x2 < z2) {
- d1 = 1 / Math.sqrt(y2 + z2);
- vX = 0;
- vY = z1 * d1;
- vZ = -y1 * d1;
- } else {
- d1 = 1 / Math.sqrt(x2 + y2);
- vX = y1 * d1;
- vY = -x1 * d1;
- vZ = 0;
- }
- } else if(y2 < z2) {
- d1 = 1 / Math.sqrt(z2 + x2);
- vX = -z1 * d1;
- vY = 0;
- vZ = x1 * d1;
- } else {
- d1 = 1 / Math.sqrt(x2 + y2);
- vX = y1 * d1;
- vY = -x1 * d1;
- vZ = 0;
- }
- qX = vX;
- qY = vY;
- qZ = vZ;
- qW = 0;
- } else {
- var cX;
- var cY;
- var cZ;
- cX = _this.joint._basisX1Y * _this.joint._basisX2Z - _this.joint._basisX1Z * _this.joint._basisX2Y;
- cY = _this.joint._basisX1Z * _this.joint._basisX2X - _this.joint._basisX1X * _this.joint._basisX2Z;
- cZ = _this.joint._basisX1X * _this.joint._basisX2Y - _this.joint._basisX1Y * _this.joint._basisX2X;
- var w = Math.sqrt((1 + d) * 0.5);
- d = 0.5 / w;
- cX *= d;
- cY *= d;
- cZ *= d;
- qX = cX;
- qY = cY;
- qZ = cZ;
- qW = w;
- }
- idQX = 0;
- idQY = 0;
- idQZ = 0;
- idQW = 1;
- var qx;
- var qy;
- var qz;
- var qw;
- var q1X;
- var q1Y;
- var q1Z;
- var q1W;
- var q2X;
- var q2Y;
- var q2Z;
- var q2W;
- q1X = idQX;
- q1Y = idQY;
- q1Z = idQZ;
- q1W = idQW;
- q2X = qX;
- q2Y = qY;
- q2Z = qZ;
- q2W = qW;
- var d2 = q1X * q2X + q1Y * q2Y + q1Z * q2Z + q1W * q2W;
- if(d2 < 0) {
- d2 = -d2;
- q2X = -q2X;
- q2Y = -q2Y;
- q2Z = -q2Z;
- q2W = -q2W;
- }
- if(d2 > 0.999999) {
- var dqX;
- var dqY;
- var dqZ;
- var dqW;
- dqX = q2X - q1X;
- dqY = q2Y - q1Y;
- dqZ = q2Z - q1Z;
- dqW = q2W - q1W;
- q2X = q1X + dqX * (invM1 / (invM1 + invM2));
- q2Y = q1Y + dqY * (invM1 / (invM1 + invM2));
- q2Z = q1Z + dqZ * (invM1 / (invM1 + invM2));
- q2W = q1W + dqW * (invM1 / (invM1 + invM2));
- var l = q2X * q2X + q2Y * q2Y + q2Z * q2Z + q2W * q2W;
- if(l > 1e-32) {
- l = 1 / Math.sqrt(l);
- }
- slerpQX = q2X * l;
- slerpQY = q2Y * l;
- slerpQZ = q2Z * l;
- slerpQW = q2W * l;
- } else {
- var theta = invM1 / (invM1 + invM2) * Math.acos(d2);
- q2X += q1X * -d2;
- q2Y += q1Y * -d2;
- q2Z += q1Z * -d2;
- q2W += q1W * -d2;
- var l1 = q2X * q2X + q2Y * q2Y + q2Z * q2Z + q2W * q2W;
- if(l1 > 1e-32) {
- l1 = 1 / Math.sqrt(l1);
- }
- q2X *= l1;
- q2Y *= l1;
- q2Z *= l1;
- q2W *= l1;
- var sin = Math.sin(theta);
- var cos = Math.cos(theta);
- q1X *= cos;
- q1Y *= cos;
- q1Z *= cos;
- q1W *= cos;
- slerpQX = q1X + q2X * sin;
- slerpQY = q1Y + q2Y * sin;
- slerpQZ = q1Z + q2Z * sin;
- slerpQW = q1W + q2W * sin;
- }
- var x = slerpQX;
- var y = slerpQY;
- var z = slerpQZ;
- var w1 = slerpQW;
- var x21 = 2 * x;
- var y21 = 2 * y;
- var z21 = 2 * z;
- var xx = x * x21;
- var yy = y * y21;
- var zz = z * z21;
- var xy = x * y21;
- var yz = y * z21;
- var xz = x * z21;
- var wx = w1 * x21;
- var wy = w1 * y21;
- var wz = w1 * z21;
- slerpM00 = 1 - yy - zz;
- slerpM01 = xy - wz;
- slerpM02 = xz + wy;
- slerpM10 = xy + wz;
- slerpM11 = 1 - xx - zz;
- slerpM12 = yz - wx;
- slerpM20 = xz - wy;
- slerpM21 = yz + wx;
- slerpM22 = 1 - xx - yy;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = slerpM00 * _this.joint._basisX1X + slerpM01 * _this.joint._basisX1Y + slerpM02 * _this.joint._basisX1Z;
- __tmp__Y = slerpM10 * _this.joint._basisX1X + slerpM11 * _this.joint._basisX1Y + slerpM12 * _this.joint._basisX1Z;
- __tmp__Z = slerpM20 * _this.joint._basisX1X + slerpM21 * _this.joint._basisX1Y + slerpM22 * _this.joint._basisX1Z;
- newXX = __tmp__X;
- newXY = __tmp__Y;
- newXZ = __tmp__Z;
- prevXX = _this.xX;
- prevXY = _this.xY;
- prevXZ = _this.xZ;
- prevYX = _this.yX;
- prevYY = _this.yY;
- prevYZ = _this.yZ;
- var d3 = prevXX * newXX + prevXY * newXY + prevXZ * newXZ;
- if(d3 < -0.999999999) {
- var vX1;
- var vY1;
- var vZ1;
- var x11 = prevXX;
- var y11 = prevXY;
- var z11 = prevXZ;
- var x22 = x11 * x11;
- var y22 = y11 * y11;
- var z22 = z11 * z11;
- var d4;
- if(x22 < y22) {
- if(x22 < z22) {
- d4 = 1 / Math.sqrt(y22 + z22);
- vX1 = 0;
- vY1 = z11 * d4;
- vZ1 = -y11 * d4;
- } else {
- d4 = 1 / Math.sqrt(x22 + y22);
- vX1 = y11 * d4;
- vY1 = -x11 * d4;
- vZ1 = 0;
- }
- } else if(y22 < z22) {
- d4 = 1 / Math.sqrt(z22 + x22);
- vX1 = -z11 * d4;
- vY1 = 0;
- vZ1 = x11 * d4;
- } else {
- d4 = 1 / Math.sqrt(x22 + y22);
- vX1 = y11 * d4;
- vY1 = -x11 * d4;
- vZ1 = 0;
- }
- slerpQX = vX1;
- slerpQY = vY1;
- slerpQZ = vZ1;
- slerpQW = 0;
- } else {
- var cX1;
- var cY1;
- var cZ1;
- cX1 = prevXY * newXZ - prevXZ * newXY;
- cY1 = prevXZ * newXX - prevXX * newXZ;
- cZ1 = prevXX * newXY - prevXY * newXX;
- var w2 = Math.sqrt((1 + d3) * 0.5);
- d3 = 0.5 / w2;
- cX1 *= d3;
- cY1 *= d3;
- cZ1 *= d3;
- slerpQX = cX1;
- slerpQY = cY1;
- slerpQZ = cZ1;
- slerpQW = w2;
- }
- var x3 = slerpQX;
- var y3 = slerpQY;
- var z3 = slerpQZ;
- var w3 = slerpQW;
- var x23 = 2 * x3;
- var y23 = 2 * y3;
- var z23 = 2 * z3;
- var xx1 = x3 * x23;
- var yy1 = y3 * y23;
- var zz1 = z3 * z23;
- var xy1 = x3 * y23;
- var yz1 = y3 * z23;
- var xz1 = x3 * z23;
- var wx1 = w3 * x23;
- var wy1 = w3 * y23;
- var wz1 = w3 * z23;
- slerpM00 = 1 - yy1 - zz1;
- slerpM01 = xy1 - wz1;
- slerpM02 = xz1 + wy1;
- slerpM10 = xy1 + wz1;
- slerpM11 = 1 - xx1 - zz1;
- slerpM12 = yz1 - wx1;
- slerpM20 = xz1 - wy1;
- slerpM21 = yz1 + wx1;
- slerpM22 = 1 - xx1 - yy1;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = slerpM00 * prevYX + slerpM01 * prevYY + slerpM02 * prevYZ;
- __tmp__Y1 = slerpM10 * prevYX + slerpM11 * prevYY + slerpM12 * prevYZ;
- __tmp__Z1 = slerpM20 * prevYX + slerpM21 * prevYY + slerpM22 * prevYZ;
- newYX = __tmp__X1;
- newYY = __tmp__Y1;
- newYZ = __tmp__Z1;
- newZX = newXY * newYZ - newXZ * newYY;
- newZY = newXZ * newYX - newXX * newYZ;
- newZZ = newXX * newYY - newXY * newYX;
- if(newZX * newZX + newZY * newZY + newZZ * newZZ > 1e-6) {
- var l2 = newZX * newZX + newZY * newZY + newZZ * newZZ;
- if(l2 > 0) {
- l2 = 1 / Math.sqrt(l2);
- }
- newZX *= l2;
- newZY *= l2;
- newZZ *= l2;
- } else {
- var x12 = newXX;
- var y12 = newXY;
- var z12 = newXZ;
- var x24 = x12 * x12;
- var y24 = y12 * y12;
- var z24 = z12 * z12;
- var d5;
- if(x24 < y24) {
- if(x24 < z24) {
- d5 = 1 / Math.sqrt(y24 + z24);
- newZX = 0;
- newZY = z12 * d5;
- newZZ = -y12 * d5;
- } else {
- d5 = 1 / Math.sqrt(x24 + y24);
- newZX = y12 * d5;
- newZY = -x12 * d5;
- newZZ = 0;
- }
- } else if(y24 < z24) {
- d5 = 1 / Math.sqrt(z24 + x24);
- newZX = -z12 * d5;
- newZY = 0;
- newZZ = x12 * d5;
- } else {
- d5 = 1 / Math.sqrt(x24 + y24);
- newZX = y12 * d5;
- newZY = -x12 * d5;
- newZZ = 0;
- }
- }
- newYX = newZY * newXZ - newZZ * newXY;
- newYY = newZZ * newXX - newZX * newXZ;
- newYZ = newZX * newXY - newZY * newXX;
- _this.xX = newXX;
- _this.xY = newXY;
- _this.xZ = newXZ;
- _this.yX = newYX;
- _this.yY = newYY;
- _this.yZ = newYZ;
- _this.zX = newZX;
- _this.zY = newZY;
- _this.zZ = newZZ;
- var angError;
- var angErrorX;
- var angErrorY;
- var angErrorZ;
- angErrorX = this._basisX1Y * this._basisX2Z - this._basisX1Z * this._basisX2Y;
- angErrorY = this._basisX1Z * this._basisX2X - this._basisX1X * this._basisX2Z;
- angErrorZ = this._basisX1X * this._basisX2Y - this._basisX1Y * this._basisX2X;
- var cos1 = this._basisX1X * this._basisX2X + this._basisX1Y * this._basisX2Y + this._basisX1Z * this._basisX2Z;
- var theta1 = cos1 <= -1 ? 3.14159265358979 : cos1 >= 1 ? 0 : Math.acos(cos1);
- var l3 = angErrorX * angErrorX + angErrorY * angErrorY + angErrorZ * angErrorZ;
- if(l3 > 0) {
- l3 = 1 / Math.sqrt(l3);
- }
- angErrorX *= l3;
- angErrorY *= l3;
- angErrorZ *= l3;
- angErrorX *= theta1;
- angErrorY *= theta1;
- angErrorZ *= theta1;
- this.angularErrorY = angErrorX * this._basis.yX + angErrorY * this._basis.yY + angErrorZ * this._basis.yZ;
- this.angularErrorZ = angErrorX * this._basis.zX + angErrorY * this._basis.zY + angErrorZ * this._basis.zZ;
- var perpCross;
- var perpCrossX;
- var perpCrossY;
- var perpCrossZ;
- perpCrossX = this._basisY1Y * this._basisY2Z - this._basisY1Z * this._basisY2Y;
- perpCrossY = this._basisY1Z * this._basisY2X - this._basisY1X * this._basisY2Z;
- perpCrossZ = this._basisY1X * this._basisY2Y - this._basisY1Y * this._basisY2X;
- cos1 = this._basisY1X * this._basisY2X + this._basisY1Y * this._basisY2Y + this._basisY1Z * this._basisY2Z;
- this.angle = cos1 <= -1 ? 3.14159265358979 : cos1 >= 1 ? 0 : Math.acos(cos1);
- if(perpCrossX * this._basis.xX + perpCrossY * this._basis.xY + perpCrossZ * this._basis.xZ < 0) {
- this.angle = -this.angle;
- }
- var anchorDiff;
- var anchorDiffX;
- var anchorDiffY;
- var anchorDiffZ;
- anchorDiffX = this._anchor2X - this._anchor1X;
- anchorDiffY = this._anchor2Y - this._anchor1Y;
- anchorDiffZ = this._anchor2Z - this._anchor1Z;
- this.translation = anchorDiffX * this._basis.xX + anchorDiffY * this._basis.xY + anchorDiffZ * this._basis.xZ;
- this.linearErrorY = anchorDiffX * this._basis.yX + anchorDiffY * this._basis.yY + anchorDiffZ * this._basis.yZ;
- this.linearErrorZ = anchorDiffX * this._basis.zX + anchorDiffY * this._basis.zY + anchorDiffZ * this._basis.zZ;
- }
- _getVelocitySolverInfo(timeStep,info) {
- super._getVelocitySolverInfo(timeStep,info);
- this.getInfo(info,timeStep,false);
- }
- _getPositionSolverInfo(info) {
- super._getPositionSolverInfo(info);
- this.getInfo(info,null,true);
- }
- getAxis1() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._basisX1X;
- v1.y = this._basisX1Y;
- v1.z = this._basisX1Z;
- return v;
- }
- getAxis2() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._basisX2X;
- v1.y = this._basisX2Y;
- v1.z = this._basisX2Z;
- return v;
- }
- getAxis1To(axis) {
- var v = axis;
- v.x = this._basisX1X;
- v.y = this._basisX1Y;
- v.z = this._basisX1Z;
- }
- getAxis2To(axis) {
- var v = axis;
- v.x = this._basisX2X;
- v.y = this._basisX2Y;
- v.z = this._basisX2Z;
- }
- getLocalAxis1() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._localBasisX1X;
- v1.y = this._localBasisX1Y;
- v1.z = this._localBasisX1Z;
- return v;
- }
- getLocalAxis2() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._localBasisX2X;
- v1.y = this._localBasisX2Y;
- v1.z = this._localBasisX2Z;
- return v;
- }
- getLocalAxis1To(axis) {
- var v = axis;
- v.x = this._localBasisX1X;
- v.y = this._localBasisX1Y;
- v.z = this._localBasisX1Z;
- }
- getLocalAxis2To(axis) {
- var v = axis;
- v.x = this._localBasisX2X;
- v.y = this._localBasisX2Y;
- v.z = this._localBasisX2Z;
- }
- getTranslationalSpringDamper() {
- return this._translSd;
- }
- getRotationalSpringDamper() {
- return this._rotSd;
- }
- getTranslationalLimitMotor() {
- return this._translLm;
- }
- getRotationalLimitMotor() {
- return this._rotLm;
- }
- getAngle() {
- return this.angle;
- }
- getTranslation() {
- return this.translation;
- }
- }
- oimo.dynamics.constraint.joint.JointConfig = class oimo_dynamics_constraint_joint_JointConfig {
- constructor() {
- this.rigidBody1 = null;
- this.rigidBody2 = null;
- this.localAnchor1 = new oimo.common.Vec3();
- this.localAnchor2 = new oimo.common.Vec3();
- this.allowCollision = false;
- this.solverType = oimo.common.Setting.defaultJointConstraintSolverType;
- this.positionCorrectionAlgorithm = oimo.common.Setting.defaultJointPositionCorrectionAlgorithm;
- this.breakForce = 0;
- this.breakTorque = 0;
- }
- _init(rb1,rb2,worldAnchor) {
- this.rigidBody1 = rb1;
- this.rigidBody2 = rb2;
- var _this = this.rigidBody1;
- var v;
- var vX;
- var vY;
- var vZ;
- var v1 = worldAnchor;
- vX = v1.x;
- vY = v1.y;
- vZ = v1.z;
- vX -= _this._transform._positionX;
- vY -= _this._transform._positionY;
- vZ -= _this._transform._positionZ;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = _this._transform._rotation00 * vX + _this._transform._rotation10 * vY + _this._transform._rotation20 * vZ;
- __tmp__Y = _this._transform._rotation01 * vX + _this._transform._rotation11 * vY + _this._transform._rotation21 * vZ;
- __tmp__Z = _this._transform._rotation02 * vX + _this._transform._rotation12 * vY + _this._transform._rotation22 * vZ;
- vX = __tmp__X;
- vY = __tmp__Y;
- vZ = __tmp__Z;
- var v2 = this.localAnchor1;
- v2.x = vX;
- v2.y = vY;
- v2.z = vZ;
- var _this1 = this.rigidBody2;
- var v3;
- var vX1;
- var vY1;
- var vZ1;
- var v4 = worldAnchor;
- vX1 = v4.x;
- vY1 = v4.y;
- vZ1 = v4.z;
- vX1 -= _this1._transform._positionX;
- vY1 -= _this1._transform._positionY;
- vZ1 -= _this1._transform._positionZ;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = _this1._transform._rotation00 * vX1 + _this1._transform._rotation10 * vY1 + _this1._transform._rotation20 * vZ1;
- __tmp__Y1 = _this1._transform._rotation01 * vX1 + _this1._transform._rotation11 * vY1 + _this1._transform._rotation21 * vZ1;
- __tmp__Z1 = _this1._transform._rotation02 * vX1 + _this1._transform._rotation12 * vY1 + _this1._transform._rotation22 * vZ1;
- vX1 = __tmp__X1;
- vY1 = __tmp__Y1;
- vZ1 = __tmp__Z1;
- var v5 = this.localAnchor2;
- v5.x = vX1;
- v5.y = vY1;
- v5.z = vZ1;
- }
- }
- oimo.dynamics.constraint.joint.CylindricalJointConfig = class oimo_dynamics_constraint_joint_CylindricalJointConfig extends oimo.dynamics.constraint.joint.JointConfig {
- constructor() {
- super();
- this.localAxis1 = new oimo.common.Vec3(1,0,0);
- this.localAxis2 = new oimo.common.Vec3(1,0,0);
- this.translationalLimitMotor = new oimo.dynamics.constraint.joint.TranslationalLimitMotor();
- this.translationalSpringDamper = new oimo.dynamics.constraint.joint.SpringDamper();
- this.rotationalLimitMotor = new oimo.dynamics.constraint.joint.RotationalLimitMotor();
- this.rotationalSpringDamper = new oimo.dynamics.constraint.joint.SpringDamper();
- }
- init(rigidBody1,rigidBody2,worldAnchor,worldAxis) {
- this._init(rigidBody1,rigidBody2,worldAnchor);
- var v;
- var vX;
- var vY;
- var vZ;
- var v1 = worldAxis;
- vX = v1.x;
- vY = v1.y;
- vZ = v1.z;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = rigidBody1._transform._rotation00 * vX + rigidBody1._transform._rotation10 * vY + rigidBody1._transform._rotation20 * vZ;
- __tmp__Y = rigidBody1._transform._rotation01 * vX + rigidBody1._transform._rotation11 * vY + rigidBody1._transform._rotation21 * vZ;
- __tmp__Z = rigidBody1._transform._rotation02 * vX + rigidBody1._transform._rotation12 * vY + rigidBody1._transform._rotation22 * vZ;
- vX = __tmp__X;
- vY = __tmp__Y;
- vZ = __tmp__Z;
- var v2 = this.localAxis1;
- v2.x = vX;
- v2.y = vY;
- v2.z = vZ;
- var v3;
- var vX1;
- var vY1;
- var vZ1;
- var v4 = worldAxis;
- vX1 = v4.x;
- vY1 = v4.y;
- vZ1 = v4.z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = rigidBody2._transform._rotation00 * vX1 + rigidBody2._transform._rotation10 * vY1 + rigidBody2._transform._rotation20 * vZ1;
- __tmp__Y1 = rigidBody2._transform._rotation01 * vX1 + rigidBody2._transform._rotation11 * vY1 + rigidBody2._transform._rotation21 * vZ1;
- __tmp__Z1 = rigidBody2._transform._rotation02 * vX1 + rigidBody2._transform._rotation12 * vY1 + rigidBody2._transform._rotation22 * vZ1;
- vX1 = __tmp__X1;
- vY1 = __tmp__Y1;
- vZ1 = __tmp__Z1;
- var v5 = this.localAxis2;
- v5.x = vX1;
- v5.y = vY1;
- v5.z = vZ1;
- return this;
- }
- }
- oimo.dynamics.constraint.joint.GenericJoint = class oimo_dynamics_constraint_joint_GenericJoint extends oimo.dynamics.constraint.joint.Joint {
- constructor(config) {
- super(config,oimo.dynamics.constraint.joint.JointType.GENERIC);
- var tmp;
- var _this = config.localBasis1;
- if(!(_this.e00 * (_this.e11 * _this.e22 - _this.e12 * _this.e21) - _this.e01 * (_this.e10 * _this.e22 - _this.e12 * _this.e20) + _this.e02 * (_this.e10 * _this.e21 - _this.e11 * _this.e20) < 0)) {
- var _this1 = config.localBasis2;
- tmp = _this1.e00 * (_this1.e11 * _this1.e22 - _this1.e12 * _this1.e21) - _this1.e01 * (_this1.e10 * _this1.e22 - _this1.e12 * _this1.e20) + _this1.e02 * (_this1.e10 * _this1.e21 - _this1.e11 * _this1.e20) < 0;
- } else {
- tmp = true;
- }
- if(tmp) {
- console.log("src/oimo/dynamics/constraint/joint/GenericJoint.hx:50:","[warning] joint basis must be right handed");
- }
- var lb1;
- var lb100;
- var lb101;
- var lb102;
- var lb110;
- var lb111;
- var lb112;
- var lb120;
- var lb121;
- var lb122;
- var lb2;
- var lb200;
- var lb201;
- var lb202;
- var lb210;
- var lb211;
- var lb212;
- var lb220;
- var lb221;
- var lb222;
- var m = config.localBasis1;
- lb100 = m.e00;
- lb101 = m.e01;
- lb102 = m.e02;
- lb110 = m.e10;
- lb111 = m.e11;
- lb112 = m.e12;
- lb120 = m.e20;
- lb121 = m.e21;
- lb122 = m.e22;
- var m1 = config.localBasis2;
- lb200 = m1.e00;
- lb201 = m1.e01;
- lb202 = m1.e02;
- lb210 = m1.e10;
- lb211 = m1.e11;
- lb212 = m1.e12;
- lb220 = m1.e20;
- lb221 = m1.e21;
- lb222 = m1.e22;
- this._localBasisX1X = lb100;
- this._localBasisX1Y = lb110;
- this._localBasisX1Z = lb120;
- this._localBasisY1X = lb101;
- this._localBasisY1Y = lb111;
- this._localBasisY1Z = lb121;
- this._localBasisZ1X = lb102;
- this._localBasisZ1Y = lb112;
- this._localBasisZ1Z = lb122;
- this._localBasisX2X = lb200;
- this._localBasisX2Y = lb210;
- this._localBasisX2Z = lb220;
- this._localBasisY2X = lb201;
- this._localBasisY2Y = lb211;
- this._localBasisY2Z = lb221;
- this._localBasisZ2X = lb202;
- this._localBasisZ2Y = lb212;
- this._localBasisZ2Z = lb222;
- this._angleX = 0;
- this._angleY = 0;
- this._angleZ = 0;
- this.translationX = 0;
- this.translationY = 0;
- this.translationZ = 0;
- this.xSingular = false;
- this.ySingular = false;
- this.zSingular = false;
- var this1 = new Array(3);
- this._translLms = this1;
- var this2 = new Array(3);
- this._translSds = this2;
- var this3 = new Array(3);
- this._rotLms = this3;
- var this4 = new Array(3);
- this._rotSds = this4;
- this._translLms[0] = config.translationalLimitMotors[0].clone();
- this._translLms[1] = config.translationalLimitMotors[1].clone();
- this._translLms[2] = config.translationalLimitMotors[2].clone();
- this._translSds[0] = config.translationalSpringDampers[0].clone();
- this._translSds[1] = config.translationalSpringDampers[1].clone();
- this._translSds[2] = config.translationalSpringDampers[2].clone();
- this._rotLms[0] = config.rotationalLimitMotors[0].clone();
- this._rotLms[1] = config.rotationalLimitMotors[1].clone();
- this._rotLms[2] = config.rotationalLimitMotors[2].clone();
- this._rotSds[0] = config.rotationalSpringDampers[0].clone();
- this._rotSds[1] = config.rotationalSpringDampers[1].clone();
- this._rotSds[2] = config.rotationalSpringDampers[2].clone();
- }
- getInfo(info,timeStep,isPositionPart) {
- var row;
- var j;
- var translMotorMass = 1 / (this._b1._invMass + this._b2._invMass);
- var motorMassX = this.computeEffectiveInertiaMoment(this._axisXX,this._axisXY,this._axisXZ);
- var motorMassY = this.computeEffectiveInertiaMoment(this._axisYX,this._axisYY,this._axisYZ);
- var motorMassZ = this.computeEffectiveInertiaMoment(this._axisZX,this._axisZY,this._axisZZ);
- if(this._translSds[0].frequency <= 0 || !isPositionPart) {
- var impulse = this._impulses[0];
- var row1 = info.rows[info.numRows++];
- var _this = row1.jacobian;
- _this.lin1X = 0;
- _this.lin1Y = 0;
- _this.lin1Z = 0;
- _this.lin2X = 0;
- _this.lin2Y = 0;
- _this.lin2Z = 0;
- _this.ang1X = 0;
- _this.ang1Y = 0;
- _this.ang1Z = 0;
- _this.ang2X = 0;
- _this.ang2Y = 0;
- _this.ang2Z = 0;
- row1.rhs = 0;
- row1.cfm = 0;
- row1.minImpulse = 0;
- row1.maxImpulse = 0;
- row1.motorSpeed = 0;
- row1.motorMaxImpulse = 0;
- row1.impulse = null;
- row1.impulse = impulse;
- row = row1;
- this.setSolverInfoRowLinear(row,this.translationX,this._translLms[0],translMotorMass,this._translSds[0],timeStep,isPositionPart);
- j = row.jacobian;
- j.lin1X = this._basisX1X;
- j.lin1Y = this._basisX1Y;
- j.lin1Z = this._basisX1Z;
- j.lin2X = this._basisX1X;
- j.lin2Y = this._basisX1Y;
- j.lin2Z = this._basisX1Z;
- j.ang1X = this._relativeAnchor1Y * this._basisX1Z - this._relativeAnchor1Z * this._basisX1Y;
- j.ang1Y = this._relativeAnchor1Z * this._basisX1X - this._relativeAnchor1X * this._basisX1Z;
- j.ang1Z = this._relativeAnchor1X * this._basisX1Y - this._relativeAnchor1Y * this._basisX1X;
- j.ang2X = this._relativeAnchor2Y * this._basisX1Z - this._relativeAnchor2Z * this._basisX1Y;
- j.ang2Y = this._relativeAnchor2Z * this._basisX1X - this._relativeAnchor2X * this._basisX1Z;
- j.ang2Z = this._relativeAnchor2X * this._basisX1Y - this._relativeAnchor2Y * this._basisX1X;
- }
- if(this._translSds[1].frequency <= 0 || !isPositionPart) {
- var impulse1 = this._impulses[1];
- var row2 = info.rows[info.numRows++];
- var _this1 = row2.jacobian;
- _this1.lin1X = 0;
- _this1.lin1Y = 0;
- _this1.lin1Z = 0;
- _this1.lin2X = 0;
- _this1.lin2Y = 0;
- _this1.lin2Z = 0;
- _this1.ang1X = 0;
- _this1.ang1Y = 0;
- _this1.ang1Z = 0;
- _this1.ang2X = 0;
- _this1.ang2Y = 0;
- _this1.ang2Z = 0;
- row2.rhs = 0;
- row2.cfm = 0;
- row2.minImpulse = 0;
- row2.maxImpulse = 0;
- row2.motorSpeed = 0;
- row2.motorMaxImpulse = 0;
- row2.impulse = null;
- row2.impulse = impulse1;
- row = row2;
- this.setSolverInfoRowLinear(row,this.translationY,this._translLms[1],translMotorMass,this._translSds[1],timeStep,isPositionPart);
- j = row.jacobian;
- j.lin1X = this._basisY1X;
- j.lin1Y = this._basisY1Y;
- j.lin1Z = this._basisY1Z;
- j.lin2X = this._basisY1X;
- j.lin2Y = this._basisY1Y;
- j.lin2Z = this._basisY1Z;
- j.ang1X = this._relativeAnchor1Y * this._basisY1Z - this._relativeAnchor1Z * this._basisY1Y;
- j.ang1Y = this._relativeAnchor1Z * this._basisY1X - this._relativeAnchor1X * this._basisY1Z;
- j.ang1Z = this._relativeAnchor1X * this._basisY1Y - this._relativeAnchor1Y * this._basisY1X;
- j.ang2X = this._relativeAnchor2Y * this._basisY1Z - this._relativeAnchor2Z * this._basisY1Y;
- j.ang2Y = this._relativeAnchor2Z * this._basisY1X - this._relativeAnchor2X * this._basisY1Z;
- j.ang2Z = this._relativeAnchor2X * this._basisY1Y - this._relativeAnchor2Y * this._basisY1X;
- }
- if(this._translSds[2].frequency <= 0 || !isPositionPart) {
- var impulse2 = this._impulses[2];
- var row3 = info.rows[info.numRows++];
- var _this2 = row3.jacobian;
- _this2.lin1X = 0;
- _this2.lin1Y = 0;
- _this2.lin1Z = 0;
- _this2.lin2X = 0;
- _this2.lin2Y = 0;
- _this2.lin2Z = 0;
- _this2.ang1X = 0;
- _this2.ang1Y = 0;
- _this2.ang1Z = 0;
- _this2.ang2X = 0;
- _this2.ang2Y = 0;
- _this2.ang2Z = 0;
- row3.rhs = 0;
- row3.cfm = 0;
- row3.minImpulse = 0;
- row3.maxImpulse = 0;
- row3.motorSpeed = 0;
- row3.motorMaxImpulse = 0;
- row3.impulse = null;
- row3.impulse = impulse2;
- row = row3;
- this.setSolverInfoRowLinear(row,this.translationZ,this._translLms[2],translMotorMass,this._translSds[2],timeStep,isPositionPart);
- j = row.jacobian;
- j.lin1X = this._basisZ1X;
- j.lin1Y = this._basisZ1Y;
- j.lin1Z = this._basisZ1Z;
- j.lin2X = this._basisZ1X;
- j.lin2Y = this._basisZ1Y;
- j.lin2Z = this._basisZ1Z;
- j.ang1X = this._relativeAnchor1Y * this._basisZ1Z - this._relativeAnchor1Z * this._basisZ1Y;
- j.ang1Y = this._relativeAnchor1Z * this._basisZ1X - this._relativeAnchor1X * this._basisZ1Z;
- j.ang1Z = this._relativeAnchor1X * this._basisZ1Y - this._relativeAnchor1Y * this._basisZ1X;
- j.ang2X = this._relativeAnchor2Y * this._basisZ1Z - this._relativeAnchor2Z * this._basisZ1Y;
- j.ang2Y = this._relativeAnchor2Z * this._basisZ1X - this._relativeAnchor2X * this._basisZ1Z;
- j.ang2Z = this._relativeAnchor2X * this._basisZ1Y - this._relativeAnchor2Y * this._basisZ1X;
- }
- if(!this.xSingular && (this._rotSds[0].frequency <= 0 || !isPositionPart)) {
- var impulse3 = this._impulses[3];
- var row4 = info.rows[info.numRows++];
- var _this3 = row4.jacobian;
- _this3.lin1X = 0;
- _this3.lin1Y = 0;
- _this3.lin1Z = 0;
- _this3.lin2X = 0;
- _this3.lin2Y = 0;
- _this3.lin2Z = 0;
- _this3.ang1X = 0;
- _this3.ang1Y = 0;
- _this3.ang1Z = 0;
- _this3.ang2X = 0;
- _this3.ang2Y = 0;
- _this3.ang2Z = 0;
- row4.rhs = 0;
- row4.cfm = 0;
- row4.minImpulse = 0;
- row4.maxImpulse = 0;
- row4.motorSpeed = 0;
- row4.motorMaxImpulse = 0;
- row4.impulse = null;
- row4.impulse = impulse3;
- row = row4;
- this.setSolverInfoRowAngular(row,this._angleX,this._rotLms[0],motorMassX,this._rotSds[0],timeStep,isPositionPart);
- j = row.jacobian;
- j.ang1X = this._axisXX;
- j.ang1Y = this._axisXY;
- j.ang1Z = this._axisXZ;
- j.ang2X = this._axisXX;
- j.ang2Y = this._axisXY;
- j.ang2Z = this._axisXZ;
- }
- if(!this.ySingular && (this._rotSds[1].frequency <= 0 || !isPositionPart)) {
- var impulse4 = this._impulses[4];
- var row5 = info.rows[info.numRows++];
- var _this4 = row5.jacobian;
- _this4.lin1X = 0;
- _this4.lin1Y = 0;
- _this4.lin1Z = 0;
- _this4.lin2X = 0;
- _this4.lin2Y = 0;
- _this4.lin2Z = 0;
- _this4.ang1X = 0;
- _this4.ang1Y = 0;
- _this4.ang1Z = 0;
- _this4.ang2X = 0;
- _this4.ang2Y = 0;
- _this4.ang2Z = 0;
- row5.rhs = 0;
- row5.cfm = 0;
- row5.minImpulse = 0;
- row5.maxImpulse = 0;
- row5.motorSpeed = 0;
- row5.motorMaxImpulse = 0;
- row5.impulse = null;
- row5.impulse = impulse4;
- row = row5;
- this.setSolverInfoRowAngular(row,this._angleY,this._rotLms[1],motorMassY,this._rotSds[1],timeStep,isPositionPart);
- j = row.jacobian;
- j.ang1X = this._axisYX;
- j.ang1Y = this._axisYY;
- j.ang1Z = this._axisYZ;
- j.ang2X = this._axisYX;
- j.ang2Y = this._axisYY;
- j.ang2Z = this._axisYZ;
- }
- if(!this.zSingular && (this._rotSds[2].frequency <= 0 || !isPositionPart)) {
- var impulse5 = this._impulses[5];
- var row6 = info.rows[info.numRows++];
- var _this5 = row6.jacobian;
- _this5.lin1X = 0;
- _this5.lin1Y = 0;
- _this5.lin1Z = 0;
- _this5.lin2X = 0;
- _this5.lin2Y = 0;
- _this5.lin2Z = 0;
- _this5.ang1X = 0;
- _this5.ang1Y = 0;
- _this5.ang1Z = 0;
- _this5.ang2X = 0;
- _this5.ang2Y = 0;
- _this5.ang2Z = 0;
- row6.rhs = 0;
- row6.cfm = 0;
- row6.minImpulse = 0;
- row6.maxImpulse = 0;
- row6.motorSpeed = 0;
- row6.motorMaxImpulse = 0;
- row6.impulse = null;
- row6.impulse = impulse5;
- row = row6;
- this.setSolverInfoRowAngular(row,this._angleZ,this._rotLms[2],motorMassZ,this._rotSds[2],timeStep,isPositionPart);
- j = row.jacobian;
- j.ang1X = this._axisZX;
- j.ang1Y = this._axisZY;
- j.ang1Z = this._axisZZ;
- j.ang2X = this._axisZX;
- j.ang2Y = this._axisZY;
- j.ang2Z = this._axisZZ;
- }
- }
- _syncAnchors() {
- super._syncAnchors();
- var rot1;
- var rot100;
- var rot101;
- var rot102;
- var rot110;
- var rot111;
- var rot112;
- var rot120;
- var rot121;
- var rot122;
- var rot2;
- var rot200;
- var rot201;
- var rot202;
- var rot210;
- var rot211;
- var rot212;
- var rot220;
- var rot221;
- var rot222;
- rot100 = this._basisX1X;
- rot101 = this._basisY1X;
- rot102 = this._basisZ1X;
- rot110 = this._basisX1Y;
- rot111 = this._basisY1Y;
- rot112 = this._basisZ1Y;
- rot120 = this._basisX1Z;
- rot121 = this._basisY1Z;
- rot122 = this._basisZ1Z;
- rot200 = this._basisX2X;
- rot201 = this._basisY2X;
- rot202 = this._basisZ2X;
- rot210 = this._basisX2Y;
- rot211 = this._basisY2Y;
- rot212 = this._basisZ2Y;
- rot220 = this._basisX2Z;
- rot221 = this._basisY2Z;
- rot222 = this._basisZ2Z;
- var relRot;
- var relRot00;
- var relRot01;
- var relRot02;
- var relRot10;
- var relRot11;
- var relRot12;
- var relRot20;
- var relRot21;
- var relRot22;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = rot100 * rot200 + rot110 * rot210 + rot120 * rot220;
- __tmp__01 = rot100 * rot201 + rot110 * rot211 + rot120 * rot221;
- __tmp__02 = rot100 * rot202 + rot110 * rot212 + rot120 * rot222;
- __tmp__10 = rot101 * rot200 + rot111 * rot210 + rot121 * rot220;
- __tmp__11 = rot101 * rot201 + rot111 * rot211 + rot121 * rot221;
- __tmp__12 = rot101 * rot202 + rot111 * rot212 + rot121 * rot222;
- __tmp__20 = rot102 * rot200 + rot112 * rot210 + rot122 * rot220;
- __tmp__21 = rot102 * rot201 + rot112 * rot211 + rot122 * rot221;
- __tmp__22 = rot102 * rot202 + rot112 * rot212 + rot122 * rot222;
- relRot00 = __tmp__00;
- relRot01 = __tmp__01;
- relRot02 = __tmp__02;
- relRot10 = __tmp__10;
- relRot11 = __tmp__11;
- relRot12 = __tmp__12;
- relRot20 = __tmp__20;
- relRot21 = __tmp__21;
- relRot22 = __tmp__22;
- var angleAxisX;
- var angleAxisXX;
- var angleAxisXY;
- var angleAxisXZ;
- var angleAxisY;
- var angleAxisYX;
- var angleAxisYY;
- var angleAxisYZ;
- var angleAxisZ;
- var angleAxisZX;
- var angleAxisZY;
- var angleAxisZZ;
- angleAxisXX = this._basisX1X;
- angleAxisXY = this._basisX1Y;
- angleAxisXZ = this._basisX1Z;
- angleAxisZX = this._basisZ2X;
- angleAxisZY = this._basisZ2Y;
- angleAxisZZ = this._basisZ2Z;
- angleAxisYX = angleAxisZY * angleAxisXZ - angleAxisZZ * angleAxisXY;
- angleAxisYY = angleAxisZZ * angleAxisXX - angleAxisZX * angleAxisXZ;
- angleAxisYZ = angleAxisZX * angleAxisXY - angleAxisZY * angleAxisXX;
- this._axisXX = angleAxisYY * angleAxisZZ - angleAxisYZ * angleAxisZY;
- this._axisXY = angleAxisYZ * angleAxisZX - angleAxisYX * angleAxisZZ;
- this._axisXZ = angleAxisYX * angleAxisZY - angleAxisYY * angleAxisZX;
- this._axisYX = angleAxisYX;
- this._axisYY = angleAxisYY;
- this._axisYZ = angleAxisYZ;
- this._axisZX = angleAxisXY * angleAxisYZ - angleAxisXZ * angleAxisYY;
- this._axisZY = angleAxisXZ * angleAxisYX - angleAxisXX * angleAxisYZ;
- this._axisZZ = angleAxisXX * angleAxisYY - angleAxisXY * angleAxisYX;
- var l = this._axisXX * this._axisXX + this._axisXY * this._axisXY + this._axisXZ * this._axisXZ;
- if(l > 0) {
- l = 1 / Math.sqrt(l);
- }
- this._axisXX *= l;
- this._axisXY *= l;
- this._axisXZ *= l;
- var l1 = this._axisYX * this._axisYX + this._axisYY * this._axisYY + this._axisYZ * this._axisYZ;
- if(l1 > 0) {
- l1 = 1 / Math.sqrt(l1);
- }
- this._axisYX *= l1;
- this._axisYY *= l1;
- this._axisYZ *= l1;
- var l2 = this._axisZX * this._axisZX + this._axisZY * this._axisZY + this._axisZZ * this._axisZZ;
- if(l2 > 0) {
- l2 = 1 / Math.sqrt(l2);
- }
- this._axisZX *= l2;
- this._axisZY *= l2;
- this._axisZZ *= l2;
- this.xSingular = this._axisXX * this._axisXX + this._axisXY * this._axisXY + this._axisXZ * this._axisXZ == 0;
- this.ySingular = this._axisYX * this._axisYX + this._axisYY * this._axisYY + this._axisYZ * this._axisYZ == 0;
- this.zSingular = this._axisZX * this._axisZX + this._axisZY * this._axisZY + this._axisZZ * this._axisZZ == 0;
- var rot11;
- var rot1001;
- var rot1011;
- var rot1021;
- var rot1101;
- var rot1111;
- var rot1121;
- var rot1201;
- var rot1211;
- var rot1221;
- var rot21;
- var rot2001;
- var rot2011;
- var rot2021;
- var rot2101;
- var rot2111;
- var rot2121;
- var rot2201;
- var rot2211;
- var rot2221;
- rot1001 = this._basisX1X;
- rot1011 = this._basisY1X;
- rot1021 = this._basisZ1X;
- rot1101 = this._basisX1Y;
- rot1111 = this._basisY1Y;
- rot1121 = this._basisZ1Y;
- rot1201 = this._basisX1Z;
- rot1211 = this._basisY1Z;
- rot1221 = this._basisZ1Z;
- rot2001 = this._basisX2X;
- rot2011 = this._basisY2X;
- rot2021 = this._basisZ2X;
- rot2101 = this._basisX2Y;
- rot2111 = this._basisY2Y;
- rot2121 = this._basisZ2Y;
- rot2201 = this._basisX2Z;
- rot2211 = this._basisY2Z;
- rot2221 = this._basisZ2Z;
- var relRot1;
- var relRot001;
- var relRot011;
- var relRot021;
- var relRot101;
- var relRot111;
- var relRot121;
- var relRot201;
- var relRot211;
- var relRot221;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = rot1001 * rot2001 + rot1101 * rot2101 + rot1201 * rot2201;
- __tmp__011 = rot1001 * rot2011 + rot1101 * rot2111 + rot1201 * rot2211;
- __tmp__021 = rot1001 * rot2021 + rot1101 * rot2121 + rot1201 * rot2221;
- __tmp__101 = rot1011 * rot2001 + rot1111 * rot2101 + rot1211 * rot2201;
- __tmp__111 = rot1011 * rot2011 + rot1111 * rot2111 + rot1211 * rot2211;
- __tmp__121 = rot1011 * rot2021 + rot1111 * rot2121 + rot1211 * rot2221;
- __tmp__201 = rot1021 * rot2001 + rot1121 * rot2101 + rot1221 * rot2201;
- __tmp__211 = rot1021 * rot2011 + rot1121 * rot2111 + rot1221 * rot2211;
- __tmp__221 = rot1021 * rot2021 + rot1121 * rot2121 + rot1221 * rot2221;
- relRot001 = __tmp__001;
- relRot011 = __tmp__011;
- relRot021 = __tmp__021;
- relRot101 = __tmp__101;
- relRot111 = __tmp__111;
- relRot121 = __tmp__121;
- relRot201 = __tmp__201;
- relRot211 = __tmp__211;
- relRot221 = __tmp__221;
- var angles;
- var anglesX;
- var anglesY;
- var anglesZ;
- var sy = relRot021;
- if(sy <= -1) {
- var xSubZ = Math.atan2(relRot211,relRot111);
- anglesX = xSubZ * 0.5;
- anglesY = -1.570796326794895;
- anglesZ = -xSubZ * 0.5;
- } else if(sy >= 1) {
- var xAddZ = Math.atan2(relRot211,relRot111);
- anglesX = xAddZ * 0.5;
- anglesY = 1.570796326794895;
- anglesZ = xAddZ * 0.5;
- } else {
- var y = Math.asin(sy);
- var x = Math.atan2(-relRot121,relRot221);
- var z = Math.atan2(-relRot011,relRot001);
- anglesX = x;
- anglesY = y;
- anglesZ = z;
- }
- this._angleX = anglesX;
- this._angleY = anglesY;
- this._angleZ = anglesZ;
- var anchorDiff;
- var anchorDiffX;
- var anchorDiffY;
- var anchorDiffZ;
- anchorDiffX = this._anchor2X - this._anchor1X;
- anchorDiffY = this._anchor2Y - this._anchor1Y;
- anchorDiffZ = this._anchor2Z - this._anchor1Z;
- this.translationX = anchorDiffX * this._basisX1X + anchorDiffY * this._basisX1Y + anchorDiffZ * this._basisX1Z;
- this.translationY = anchorDiffX * this._basisY1X + anchorDiffY * this._basisY1Y + anchorDiffZ * this._basisY1Z;
- this.translationZ = anchorDiffX * this._basisZ1X + anchorDiffY * this._basisZ1Y + anchorDiffZ * this._basisZ1Z;
- }
- _getVelocitySolverInfo(timeStep,info) {
- super._getVelocitySolverInfo(timeStep,info);
- this.getInfo(info,timeStep,false);
- }
- _getPositionSolverInfo(info) {
- super._getPositionSolverInfo(info);
- this.getInfo(info,null,true);
- }
- getAxisX() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._basisX1X;
- v1.y = this._basisX1Y;
- v1.z = this._basisX1Z;
- return v;
- }
- getAxisY() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._axisYX;
- v1.y = this._axisYY;
- v1.z = this._axisYZ;
- return v;
- }
- getAxisZ() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._basisZ2X;
- v1.y = this._basisZ2Y;
- v1.z = this._basisZ2Z;
- return v;
- }
- getTranslationalSpringDampers() {
- return this._translSds.slice(0);
- }
- getRotationalSpringDampers() {
- return this._translSds.slice(0);
- }
- getTranslationalLimitMotors() {
- return this._translLms.slice(0);
- }
- getRotationalLimitMotors() {
- return this._rotLms.slice(0);
- }
- getAngles() {
- return new oimo.common.Vec3(this._angleX,this._angleY,this._angleZ);
- }
- getTranslations() {
- return new oimo.common.Vec3(this.translationX,this.translationY,this.translationZ);
- }
- }
- oimo.dynamics.constraint.joint.GenericJointConfig = class oimo_dynamics_constraint_joint_GenericJointConfig extends oimo.dynamics.constraint.joint.JointConfig {
- constructor() {
- super();
- this.localBasis1 = new oimo.common.Mat3();
- this.localBasis2 = new oimo.common.Mat3();
- var _g = [];
- _g.push(new oimo.dynamics.constraint.joint.TranslationalLimitMotor().setLimits(0,0));
- _g.push(new oimo.dynamics.constraint.joint.TranslationalLimitMotor().setLimits(0,0));
- _g.push(new oimo.dynamics.constraint.joint.TranslationalLimitMotor().setLimits(0,0));
- this.translationalLimitMotors = _g;
- var _g1 = [];
- _g1.push(new oimo.dynamics.constraint.joint.RotationalLimitMotor().setLimits(0,0));
- _g1.push(new oimo.dynamics.constraint.joint.RotationalLimitMotor().setLimits(0,0));
- _g1.push(new oimo.dynamics.constraint.joint.RotationalLimitMotor().setLimits(0,0));
- this.rotationalLimitMotors = _g1;
- this.translationalSpringDampers = [new oimo.dynamics.constraint.joint.SpringDamper(),new oimo.dynamics.constraint.joint.SpringDamper(),new oimo.dynamics.constraint.joint.SpringDamper()];
- this.rotationalSpringDampers = [new oimo.dynamics.constraint.joint.SpringDamper(),new oimo.dynamics.constraint.joint.SpringDamper(),new oimo.dynamics.constraint.joint.SpringDamper()];
- }
- init(rigidBody1,rigidBody2,worldAnchor,worldBasis1,worldBasis2) {
- this._init(rigidBody1,rigidBody2,worldAnchor);
- var tf1 = rigidBody1._transform;
- var tf2 = rigidBody2._transform;
- var wb1;
- var wb100;
- var wb101;
- var wb102;
- var wb110;
- var wb111;
- var wb112;
- var wb120;
- var wb121;
- var wb122;
- var wb2;
- var wb200;
- var wb201;
- var wb202;
- var wb210;
- var wb211;
- var wb212;
- var wb220;
- var wb221;
- var wb222;
- var lb1;
- var lb100;
- var lb101;
- var lb102;
- var lb110;
- var lb111;
- var lb112;
- var lb120;
- var lb121;
- var lb122;
- var lb2;
- var lb200;
- var lb201;
- var lb202;
- var lb210;
- var lb211;
- var lb212;
- var lb220;
- var lb221;
- var lb222;
- var m = worldBasis1;
- wb100 = m.e00;
- wb101 = m.e01;
- wb102 = m.e02;
- wb110 = m.e10;
- wb111 = m.e11;
- wb112 = m.e12;
- wb120 = m.e20;
- wb121 = m.e21;
- wb122 = m.e22;
- var m1 = worldBasis2;
- wb200 = m1.e00;
- wb201 = m1.e01;
- wb202 = m1.e02;
- wb210 = m1.e10;
- wb211 = m1.e11;
- wb212 = m1.e12;
- wb220 = m1.e20;
- wb221 = m1.e21;
- wb222 = m1.e22;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = tf1._rotation00 * wb100 + tf1._rotation10 * wb110 + tf1._rotation20 * wb120;
- __tmp__01 = tf1._rotation00 * wb101 + tf1._rotation10 * wb111 + tf1._rotation20 * wb121;
- __tmp__02 = tf1._rotation00 * wb102 + tf1._rotation10 * wb112 + tf1._rotation20 * wb122;
- __tmp__10 = tf1._rotation01 * wb100 + tf1._rotation11 * wb110 + tf1._rotation21 * wb120;
- __tmp__11 = tf1._rotation01 * wb101 + tf1._rotation11 * wb111 + tf1._rotation21 * wb121;
- __tmp__12 = tf1._rotation01 * wb102 + tf1._rotation11 * wb112 + tf1._rotation21 * wb122;
- __tmp__20 = tf1._rotation02 * wb100 + tf1._rotation12 * wb110 + tf1._rotation22 * wb120;
- __tmp__21 = tf1._rotation02 * wb101 + tf1._rotation12 * wb111 + tf1._rotation22 * wb121;
- __tmp__22 = tf1._rotation02 * wb102 + tf1._rotation12 * wb112 + tf1._rotation22 * wb122;
- lb100 = __tmp__00;
- lb101 = __tmp__01;
- lb102 = __tmp__02;
- lb110 = __tmp__10;
- lb111 = __tmp__11;
- lb112 = __tmp__12;
- lb120 = __tmp__20;
- lb121 = __tmp__21;
- lb122 = __tmp__22;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = tf2._rotation00 * wb200 + tf2._rotation10 * wb210 + tf2._rotation20 * wb220;
- __tmp__011 = tf2._rotation00 * wb201 + tf2._rotation10 * wb211 + tf2._rotation20 * wb221;
- __tmp__021 = tf2._rotation00 * wb202 + tf2._rotation10 * wb212 + tf2._rotation20 * wb222;
- __tmp__101 = tf2._rotation01 * wb200 + tf2._rotation11 * wb210 + tf2._rotation21 * wb220;
- __tmp__111 = tf2._rotation01 * wb201 + tf2._rotation11 * wb211 + tf2._rotation21 * wb221;
- __tmp__121 = tf2._rotation01 * wb202 + tf2._rotation11 * wb212 + tf2._rotation21 * wb222;
- __tmp__201 = tf2._rotation02 * wb200 + tf2._rotation12 * wb210 + tf2._rotation22 * wb220;
- __tmp__211 = tf2._rotation02 * wb201 + tf2._rotation12 * wb211 + tf2._rotation22 * wb221;
- __tmp__221 = tf2._rotation02 * wb202 + tf2._rotation12 * wb212 + tf2._rotation22 * wb222;
- lb200 = __tmp__001;
- lb201 = __tmp__011;
- lb202 = __tmp__021;
- lb210 = __tmp__101;
- lb211 = __tmp__111;
- lb212 = __tmp__121;
- lb220 = __tmp__201;
- lb221 = __tmp__211;
- lb222 = __tmp__221;
- var m2 = this.localBasis1;
- m2.e00 = lb100;
- m2.e01 = lb101;
- m2.e02 = lb102;
- m2.e10 = lb110;
- m2.e11 = lb111;
- m2.e12 = lb112;
- m2.e20 = lb120;
- m2.e21 = lb121;
- m2.e22 = lb122;
- var m3 = this.localBasis2;
- m3.e00 = lb200;
- m3.e01 = lb201;
- m3.e02 = lb202;
- m3.e10 = lb210;
- m3.e11 = lb211;
- m3.e12 = lb212;
- m3.e20 = lb220;
- m3.e21 = lb221;
- m3.e22 = lb222;
- return this;
- }
- }
- oimo.dynamics.constraint.joint.JointImpulse = class oimo_dynamics_constraint_joint_JointImpulse {
- constructor() {
- this.impulse = 0;
- this.impulseM = 0;
- this.impulseP = 0;
- }
- }
- oimo.dynamics.constraint.joint.JointLink = class oimo_dynamics_constraint_joint_JointLink {
- constructor(joint) {
- this._joint = joint;
- }
- getContact() {
- return this._joint;
- }
- getOther() {
- return this._other;
- }
- getPrev() {
- return this._prev;
- }
- getNext() {
- return this._next;
- }
- }
- oimo.dynamics.constraint.joint.JointMacro = class oimo_dynamics_constraint_joint_JointMacro {
- }
- oimo.dynamics.constraint.joint.JointType = class oimo_dynamics_constraint_joint_JointType {
- }
- oimo.dynamics.constraint.joint.PrismaticJoint = class oimo_dynamics_constraint_joint_PrismaticJoint extends oimo.dynamics.constraint.joint.Joint {
- constructor(config) {
- super(config,oimo.dynamics.constraint.joint.JointType.PRISMATIC);
- var v = config.localAxis1;
- this._localBasisX1X = v.x;
- this._localBasisX1Y = v.y;
- this._localBasisX1Z = v.z;
- var v1 = config.localAxis2;
- this._localBasisX2X = v1.x;
- this._localBasisX2Y = v1.y;
- this._localBasisX2Z = v1.z;
- this.buildLocalBasesFromX();
- this._basis = new oimo.dynamics.constraint.joint.BasisTracker(this);
- this.translation = 0;
- this.linearErrorY = 0;
- this.linearErrorZ = 0;
- this.angularErrorX = 0;
- this.angularErrorY = 0;
- this.angularErrorZ = 0;
- this._sd = config.springDamper.clone();
- this._lm = config.limitMotor.clone();
- }
- getInfo(info,timeStep,isPositionPart) {
- var erp = this.getErp(timeStep,isPositionPart);
- var linRhsY = this.linearErrorY * erp;
- var linRhsZ = this.linearErrorZ * erp;
- var angRhsX = this.angularErrorX * erp;
- var angRhsY = this.angularErrorY * erp;
- var angRhsZ = this.angularErrorZ * erp;
- var row;
- var j;
- var motorMass = 1 / (this._b1._invMass + this._b2._invMass);
- if(this._sd.frequency <= 0 || !isPositionPart) {
- var impulse = this._impulses[0];
- var row1 = info.rows[info.numRows++];
- var _this = row1.jacobian;
- _this.lin1X = 0;
- _this.lin1Y = 0;
- _this.lin1Z = 0;
- _this.lin2X = 0;
- _this.lin2Y = 0;
- _this.lin2Z = 0;
- _this.ang1X = 0;
- _this.ang1Y = 0;
- _this.ang1Z = 0;
- _this.ang2X = 0;
- _this.ang2Y = 0;
- _this.ang2Z = 0;
- row1.rhs = 0;
- row1.cfm = 0;
- row1.minImpulse = 0;
- row1.maxImpulse = 0;
- row1.motorSpeed = 0;
- row1.motorMaxImpulse = 0;
- row1.impulse = null;
- row1.impulse = impulse;
- row = row1;
- this.setSolverInfoRowLinear(row,this.translation,this._lm,motorMass,this._sd,timeStep,isPositionPart);
- j = row.jacobian;
- j.lin1X = this._basis.xX;
- j.lin1Y = this._basis.xY;
- j.lin1Z = this._basis.xZ;
- j.lin2X = this._basis.xX;
- j.lin2Y = this._basis.xY;
- j.lin2Z = this._basis.xZ;
- j.ang1X = this._relativeAnchor1Y * this._basis.xZ - this._relativeAnchor1Z * this._basis.xY;
- j.ang1Y = this._relativeAnchor1Z * this._basis.xX - this._relativeAnchor1X * this._basis.xZ;
- j.ang1Z = this._relativeAnchor1X * this._basis.xY - this._relativeAnchor1Y * this._basis.xX;
- j.ang2X = this._relativeAnchor2Y * this._basis.xZ - this._relativeAnchor2Z * this._basis.xY;
- j.ang2Y = this._relativeAnchor2Z * this._basis.xX - this._relativeAnchor2X * this._basis.xZ;
- j.ang2Z = this._relativeAnchor2X * this._basis.xY - this._relativeAnchor2Y * this._basis.xX;
- }
- var impulse1 = this._impulses[1];
- var row2 = info.rows[info.numRows++];
- var _this1 = row2.jacobian;
- _this1.lin1X = 0;
- _this1.lin1Y = 0;
- _this1.lin1Z = 0;
- _this1.lin2X = 0;
- _this1.lin2Y = 0;
- _this1.lin2Z = 0;
- _this1.ang1X = 0;
- _this1.ang1Y = 0;
- _this1.ang1Z = 0;
- _this1.ang2X = 0;
- _this1.ang2Y = 0;
- _this1.ang2Z = 0;
- row2.rhs = 0;
- row2.cfm = 0;
- row2.minImpulse = 0;
- row2.maxImpulse = 0;
- row2.motorSpeed = 0;
- row2.motorMaxImpulse = 0;
- row2.impulse = null;
- row2.impulse = impulse1;
- row = row2;
- row.rhs = linRhsY;
- row.cfm = 0;
- row.minImpulse = -1e65536;
- row.maxImpulse = 1e65536;
- j = row.jacobian;
- j.lin1X = this._basis.yX;
- j.lin1Y = this._basis.yY;
- j.lin1Z = this._basis.yZ;
- j.lin2X = this._basis.yX;
- j.lin2Y = this._basis.yY;
- j.lin2Z = this._basis.yZ;
- j.ang1X = this._relativeAnchor1Y * this._basis.yZ - this._relativeAnchor1Z * this._basis.yY;
- j.ang1Y = this._relativeAnchor1Z * this._basis.yX - this._relativeAnchor1X * this._basis.yZ;
- j.ang1Z = this._relativeAnchor1X * this._basis.yY - this._relativeAnchor1Y * this._basis.yX;
- j.ang2X = this._relativeAnchor2Y * this._basis.yZ - this._relativeAnchor2Z * this._basis.yY;
- j.ang2Y = this._relativeAnchor2Z * this._basis.yX - this._relativeAnchor2X * this._basis.yZ;
- j.ang2Z = this._relativeAnchor2X * this._basis.yY - this._relativeAnchor2Y * this._basis.yX;
- var impulse2 = this._impulses[2];
- var row3 = info.rows[info.numRows++];
- var _this2 = row3.jacobian;
- _this2.lin1X = 0;
- _this2.lin1Y = 0;
- _this2.lin1Z = 0;
- _this2.lin2X = 0;
- _this2.lin2Y = 0;
- _this2.lin2Z = 0;
- _this2.ang1X = 0;
- _this2.ang1Y = 0;
- _this2.ang1Z = 0;
- _this2.ang2X = 0;
- _this2.ang2Y = 0;
- _this2.ang2Z = 0;
- row3.rhs = 0;
- row3.cfm = 0;
- row3.minImpulse = 0;
- row3.maxImpulse = 0;
- row3.motorSpeed = 0;
- row3.motorMaxImpulse = 0;
- row3.impulse = null;
- row3.impulse = impulse2;
- row = row3;
- row.rhs = linRhsZ;
- row.cfm = 0;
- row.minImpulse = -1e65536;
- row.maxImpulse = 1e65536;
- j = row.jacobian;
- j.lin1X = this._basis.zX;
- j.lin1Y = this._basis.zY;
- j.lin1Z = this._basis.zZ;
- j.lin2X = this._basis.zX;
- j.lin2Y = this._basis.zY;
- j.lin2Z = this._basis.zZ;
- j.ang1X = this._relativeAnchor1Y * this._basis.zZ - this._relativeAnchor1Z * this._basis.zY;
- j.ang1Y = this._relativeAnchor1Z * this._basis.zX - this._relativeAnchor1X * this._basis.zZ;
- j.ang1Z = this._relativeAnchor1X * this._basis.zY - this._relativeAnchor1Y * this._basis.zX;
- j.ang2X = this._relativeAnchor2Y * this._basis.zZ - this._relativeAnchor2Z * this._basis.zY;
- j.ang2Y = this._relativeAnchor2Z * this._basis.zX - this._relativeAnchor2X * this._basis.zZ;
- j.ang2Z = this._relativeAnchor2X * this._basis.zY - this._relativeAnchor2Y * this._basis.zX;
- var impulse3 = this._impulses[3];
- var row4 = info.rows[info.numRows++];
- var _this3 = row4.jacobian;
- _this3.lin1X = 0;
- _this3.lin1Y = 0;
- _this3.lin1Z = 0;
- _this3.lin2X = 0;
- _this3.lin2Y = 0;
- _this3.lin2Z = 0;
- _this3.ang1X = 0;
- _this3.ang1Y = 0;
- _this3.ang1Z = 0;
- _this3.ang2X = 0;
- _this3.ang2Y = 0;
- _this3.ang2Z = 0;
- row4.rhs = 0;
- row4.cfm = 0;
- row4.minImpulse = 0;
- row4.maxImpulse = 0;
- row4.motorSpeed = 0;
- row4.motorMaxImpulse = 0;
- row4.impulse = null;
- row4.impulse = impulse3;
- row = row4;
- row.rhs = angRhsX;
- row.cfm = 0;
- row.minImpulse = -1e65536;
- row.maxImpulse = 1e65536;
- j = row.jacobian;
- j.ang1X = 1;
- j.ang1Y = 0;
- j.ang1Z = 0;
- j.ang2X = 1;
- j.ang2Y = 0;
- j.ang2Z = 0;
- var impulse4 = this._impulses[4];
- var row5 = info.rows[info.numRows++];
- var _this4 = row5.jacobian;
- _this4.lin1X = 0;
- _this4.lin1Y = 0;
- _this4.lin1Z = 0;
- _this4.lin2X = 0;
- _this4.lin2Y = 0;
- _this4.lin2Z = 0;
- _this4.ang1X = 0;
- _this4.ang1Y = 0;
- _this4.ang1Z = 0;
- _this4.ang2X = 0;
- _this4.ang2Y = 0;
- _this4.ang2Z = 0;
- row5.rhs = 0;
- row5.cfm = 0;
- row5.minImpulse = 0;
- row5.maxImpulse = 0;
- row5.motorSpeed = 0;
- row5.motorMaxImpulse = 0;
- row5.impulse = null;
- row5.impulse = impulse4;
- row = row5;
- row.rhs = angRhsY;
- row.cfm = 0;
- row.minImpulse = -1e65536;
- row.maxImpulse = 1e65536;
- j = row.jacobian;
- j.ang1X = 0;
- j.ang1Y = 1;
- j.ang1Z = 0;
- j.ang2X = 0;
- j.ang2Y = 1;
- j.ang2Z = 0;
- var impulse5 = this._impulses[5];
- var row6 = info.rows[info.numRows++];
- var _this5 = row6.jacobian;
- _this5.lin1X = 0;
- _this5.lin1Y = 0;
- _this5.lin1Z = 0;
- _this5.lin2X = 0;
- _this5.lin2Y = 0;
- _this5.lin2Z = 0;
- _this5.ang1X = 0;
- _this5.ang1Y = 0;
- _this5.ang1Z = 0;
- _this5.ang2X = 0;
- _this5.ang2Y = 0;
- _this5.ang2Z = 0;
- row6.rhs = 0;
- row6.cfm = 0;
- row6.minImpulse = 0;
- row6.maxImpulse = 0;
- row6.motorSpeed = 0;
- row6.motorMaxImpulse = 0;
- row6.impulse = null;
- row6.impulse = impulse5;
- row = row6;
- row.rhs = angRhsZ;
- row.cfm = 0;
- row.minImpulse = -1e65536;
- row.maxImpulse = 1e65536;
- j = row.jacobian;
- j.ang1X = 0;
- j.ang1Y = 0;
- j.ang1Z = 1;
- j.ang2X = 0;
- j.ang2Y = 0;
- j.ang2Z = 1;
- }
- _syncAnchors() {
- super._syncAnchors();
- var _this = this._basis;
- var invM1 = _this.joint._b1._invMass;
- var invM2 = _this.joint._b2._invMass;
- var q;
- var qX;
- var qY;
- var qZ;
- var qW;
- var idQ;
- var idQX;
- var idQY;
- var idQZ;
- var idQW;
- var slerpQ;
- var slerpQX;
- var slerpQY;
- var slerpQZ;
- var slerpQW;
- var slerpM;
- var slerpM00;
- var slerpM01;
- var slerpM02;
- var slerpM10;
- var slerpM11;
- var slerpM12;
- var slerpM20;
- var slerpM21;
- var slerpM22;
- var newX;
- var newXX;
- var newXY;
- var newXZ;
- var newY;
- var newYX;
- var newYY;
- var newYZ;
- var newZ;
- var newZX;
- var newZY;
- var newZZ;
- var prevX;
- var prevXX;
- var prevXY;
- var prevXZ;
- var prevY;
- var prevYX;
- var prevYY;
- var prevYZ;
- var d = _this.joint._basisX1X * _this.joint._basisX2X + _this.joint._basisX1Y * _this.joint._basisX2Y + _this.joint._basisX1Z * _this.joint._basisX2Z;
- if(d < -0.999999999) {
- var vX;
- var vY;
- var vZ;
- var x1 = _this.joint._basisX1X;
- var y1 = _this.joint._basisX1Y;
- var z1 = _this.joint._basisX1Z;
- var x2 = x1 * x1;
- var y2 = y1 * y1;
- var z2 = z1 * z1;
- var d1;
- if(x2 < y2) {
- if(x2 < z2) {
- d1 = 1 / Math.sqrt(y2 + z2);
- vX = 0;
- vY = z1 * d1;
- vZ = -y1 * d1;
- } else {
- d1 = 1 / Math.sqrt(x2 + y2);
- vX = y1 * d1;
- vY = -x1 * d1;
- vZ = 0;
- }
- } else if(y2 < z2) {
- d1 = 1 / Math.sqrt(z2 + x2);
- vX = -z1 * d1;
- vY = 0;
- vZ = x1 * d1;
- } else {
- d1 = 1 / Math.sqrt(x2 + y2);
- vX = y1 * d1;
- vY = -x1 * d1;
- vZ = 0;
- }
- qX = vX;
- qY = vY;
- qZ = vZ;
- qW = 0;
- } else {
- var cX;
- var cY;
- var cZ;
- cX = _this.joint._basisX1Y * _this.joint._basisX2Z - _this.joint._basisX1Z * _this.joint._basisX2Y;
- cY = _this.joint._basisX1Z * _this.joint._basisX2X - _this.joint._basisX1X * _this.joint._basisX2Z;
- cZ = _this.joint._basisX1X * _this.joint._basisX2Y - _this.joint._basisX1Y * _this.joint._basisX2X;
- var w = Math.sqrt((1 + d) * 0.5);
- d = 0.5 / w;
- cX *= d;
- cY *= d;
- cZ *= d;
- qX = cX;
- qY = cY;
- qZ = cZ;
- qW = w;
- }
- idQX = 0;
- idQY = 0;
- idQZ = 0;
- idQW = 1;
- var qx;
- var qy;
- var qz;
- var qw;
- var q1X;
- var q1Y;
- var q1Z;
- var q1W;
- var q2X;
- var q2Y;
- var q2Z;
- var q2W;
- q1X = idQX;
- q1Y = idQY;
- q1Z = idQZ;
- q1W = idQW;
- q2X = qX;
- q2Y = qY;
- q2Z = qZ;
- q2W = qW;
- var d2 = q1X * q2X + q1Y * q2Y + q1Z * q2Z + q1W * q2W;
- if(d2 < 0) {
- d2 = -d2;
- q2X = -q2X;
- q2Y = -q2Y;
- q2Z = -q2Z;
- q2W = -q2W;
- }
- if(d2 > 0.999999) {
- var dqX;
- var dqY;
- var dqZ;
- var dqW;
- dqX = q2X - q1X;
- dqY = q2Y - q1Y;
- dqZ = q2Z - q1Z;
- dqW = q2W - q1W;
- q2X = q1X + dqX * (invM1 / (invM1 + invM2));
- q2Y = q1Y + dqY * (invM1 / (invM1 + invM2));
- q2Z = q1Z + dqZ * (invM1 / (invM1 + invM2));
- q2W = q1W + dqW * (invM1 / (invM1 + invM2));
- var l = q2X * q2X + q2Y * q2Y + q2Z * q2Z + q2W * q2W;
- if(l > 1e-32) {
- l = 1 / Math.sqrt(l);
- }
- slerpQX = q2X * l;
- slerpQY = q2Y * l;
- slerpQZ = q2Z * l;
- slerpQW = q2W * l;
- } else {
- var theta = invM1 / (invM1 + invM2) * Math.acos(d2);
- q2X += q1X * -d2;
- q2Y += q1Y * -d2;
- q2Z += q1Z * -d2;
- q2W += q1W * -d2;
- var l1 = q2X * q2X + q2Y * q2Y + q2Z * q2Z + q2W * q2W;
- if(l1 > 1e-32) {
- l1 = 1 / Math.sqrt(l1);
- }
- q2X *= l1;
- q2Y *= l1;
- q2Z *= l1;
- q2W *= l1;
- var sin = Math.sin(theta);
- var cos = Math.cos(theta);
- q1X *= cos;
- q1Y *= cos;
- q1Z *= cos;
- q1W *= cos;
- slerpQX = q1X + q2X * sin;
- slerpQY = q1Y + q2Y * sin;
- slerpQZ = q1Z + q2Z * sin;
- slerpQW = q1W + q2W * sin;
- }
- var x = slerpQX;
- var y = slerpQY;
- var z = slerpQZ;
- var w1 = slerpQW;
- var x21 = 2 * x;
- var y21 = 2 * y;
- var z21 = 2 * z;
- var xx = x * x21;
- var yy = y * y21;
- var zz = z * z21;
- var xy = x * y21;
- var yz = y * z21;
- var xz = x * z21;
- var wx = w1 * x21;
- var wy = w1 * y21;
- var wz = w1 * z21;
- slerpM00 = 1 - yy - zz;
- slerpM01 = xy - wz;
- slerpM02 = xz + wy;
- slerpM10 = xy + wz;
- slerpM11 = 1 - xx - zz;
- slerpM12 = yz - wx;
- slerpM20 = xz - wy;
- slerpM21 = yz + wx;
- slerpM22 = 1 - xx - yy;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = slerpM00 * _this.joint._basisX1X + slerpM01 * _this.joint._basisX1Y + slerpM02 * _this.joint._basisX1Z;
- __tmp__Y = slerpM10 * _this.joint._basisX1X + slerpM11 * _this.joint._basisX1Y + slerpM12 * _this.joint._basisX1Z;
- __tmp__Z = slerpM20 * _this.joint._basisX1X + slerpM21 * _this.joint._basisX1Y + slerpM22 * _this.joint._basisX1Z;
- newXX = __tmp__X;
- newXY = __tmp__Y;
- newXZ = __tmp__Z;
- prevXX = _this.xX;
- prevXY = _this.xY;
- prevXZ = _this.xZ;
- prevYX = _this.yX;
- prevYY = _this.yY;
- prevYZ = _this.yZ;
- var d3 = prevXX * newXX + prevXY * newXY + prevXZ * newXZ;
- if(d3 < -0.999999999) {
- var vX1;
- var vY1;
- var vZ1;
- var x11 = prevXX;
- var y11 = prevXY;
- var z11 = prevXZ;
- var x22 = x11 * x11;
- var y22 = y11 * y11;
- var z22 = z11 * z11;
- var d4;
- if(x22 < y22) {
- if(x22 < z22) {
- d4 = 1 / Math.sqrt(y22 + z22);
- vX1 = 0;
- vY1 = z11 * d4;
- vZ1 = -y11 * d4;
- } else {
- d4 = 1 / Math.sqrt(x22 + y22);
- vX1 = y11 * d4;
- vY1 = -x11 * d4;
- vZ1 = 0;
- }
- } else if(y22 < z22) {
- d4 = 1 / Math.sqrt(z22 + x22);
- vX1 = -z11 * d4;
- vY1 = 0;
- vZ1 = x11 * d4;
- } else {
- d4 = 1 / Math.sqrt(x22 + y22);
- vX1 = y11 * d4;
- vY1 = -x11 * d4;
- vZ1 = 0;
- }
- slerpQX = vX1;
- slerpQY = vY1;
- slerpQZ = vZ1;
- slerpQW = 0;
- } else {
- var cX1;
- var cY1;
- var cZ1;
- cX1 = prevXY * newXZ - prevXZ * newXY;
- cY1 = prevXZ * newXX - prevXX * newXZ;
- cZ1 = prevXX * newXY - prevXY * newXX;
- var w2 = Math.sqrt((1 + d3) * 0.5);
- d3 = 0.5 / w2;
- cX1 *= d3;
- cY1 *= d3;
- cZ1 *= d3;
- slerpQX = cX1;
- slerpQY = cY1;
- slerpQZ = cZ1;
- slerpQW = w2;
- }
- var x3 = slerpQX;
- var y3 = slerpQY;
- var z3 = slerpQZ;
- var w3 = slerpQW;
- var x23 = 2 * x3;
- var y23 = 2 * y3;
- var z23 = 2 * z3;
- var xx1 = x3 * x23;
- var yy1 = y3 * y23;
- var zz1 = z3 * z23;
- var xy1 = x3 * y23;
- var yz1 = y3 * z23;
- var xz1 = x3 * z23;
- var wx1 = w3 * x23;
- var wy1 = w3 * y23;
- var wz1 = w3 * z23;
- slerpM00 = 1 - yy1 - zz1;
- slerpM01 = xy1 - wz1;
- slerpM02 = xz1 + wy1;
- slerpM10 = xy1 + wz1;
- slerpM11 = 1 - xx1 - zz1;
- slerpM12 = yz1 - wx1;
- slerpM20 = xz1 - wy1;
- slerpM21 = yz1 + wx1;
- slerpM22 = 1 - xx1 - yy1;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = slerpM00 * prevYX + slerpM01 * prevYY + slerpM02 * prevYZ;
- __tmp__Y1 = slerpM10 * prevYX + slerpM11 * prevYY + slerpM12 * prevYZ;
- __tmp__Z1 = slerpM20 * prevYX + slerpM21 * prevYY + slerpM22 * prevYZ;
- newYX = __tmp__X1;
- newYY = __tmp__Y1;
- newYZ = __tmp__Z1;
- newZX = newXY * newYZ - newXZ * newYY;
- newZY = newXZ * newYX - newXX * newYZ;
- newZZ = newXX * newYY - newXY * newYX;
- if(newZX * newZX + newZY * newZY + newZZ * newZZ > 1e-6) {
- var l2 = newZX * newZX + newZY * newZY + newZZ * newZZ;
- if(l2 > 0) {
- l2 = 1 / Math.sqrt(l2);
- }
- newZX *= l2;
- newZY *= l2;
- newZZ *= l2;
- } else {
- var x12 = newXX;
- var y12 = newXY;
- var z12 = newXZ;
- var x24 = x12 * x12;
- var y24 = y12 * y12;
- var z24 = z12 * z12;
- var d5;
- if(x24 < y24) {
- if(x24 < z24) {
- d5 = 1 / Math.sqrt(y24 + z24);
- newZX = 0;
- newZY = z12 * d5;
- newZZ = -y12 * d5;
- } else {
- d5 = 1 / Math.sqrt(x24 + y24);
- newZX = y12 * d5;
- newZY = -x12 * d5;
- newZZ = 0;
- }
- } else if(y24 < z24) {
- d5 = 1 / Math.sqrt(z24 + x24);
- newZX = -z12 * d5;
- newZY = 0;
- newZZ = x12 * d5;
- } else {
- d5 = 1 / Math.sqrt(x24 + y24);
- newZX = y12 * d5;
- newZY = -x12 * d5;
- newZZ = 0;
- }
- }
- newYX = newZY * newXZ - newZZ * newXY;
- newYY = newZZ * newXX - newZX * newXZ;
- newYZ = newZX * newXY - newZY * newXX;
- _this.xX = newXX;
- _this.xY = newXY;
- _this.xZ = newXZ;
- _this.yX = newYX;
- _this.yY = newYY;
- _this.yZ = newYZ;
- _this.zX = newZX;
- _this.zY = newZY;
- _this.zZ = newZZ;
- var rot1;
- var rot100;
- var rot101;
- var rot102;
- var rot110;
- var rot111;
- var rot112;
- var rot120;
- var rot121;
- var rot122;
- var rot2;
- var rot200;
- var rot201;
- var rot202;
- var rot210;
- var rot211;
- var rot212;
- var rot220;
- var rot221;
- var rot222;
- rot100 = this._basisX1X;
- rot101 = this._basisY1X;
- rot102 = this._basisZ1X;
- rot110 = this._basisX1Y;
- rot111 = this._basisY1Y;
- rot112 = this._basisZ1Y;
- rot120 = this._basisX1Z;
- rot121 = this._basisY1Z;
- rot122 = this._basisZ1Z;
- rot200 = this._basisX2X;
- rot201 = this._basisY2X;
- rot202 = this._basisZ2X;
- rot210 = this._basisX2Y;
- rot211 = this._basisY2Y;
- rot212 = this._basisZ2Y;
- rot220 = this._basisX2Z;
- rot221 = this._basisY2Z;
- rot222 = this._basisZ2Z;
- var relRot;
- var relRot00;
- var relRot01;
- var relRot02;
- var relRot10;
- var relRot11;
- var relRot12;
- var relRot20;
- var relRot21;
- var relRot22;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = rot200 * rot100 + rot201 * rot101 + rot202 * rot102;
- __tmp__01 = rot200 * rot110 + rot201 * rot111 + rot202 * rot112;
- __tmp__02 = rot200 * rot120 + rot201 * rot121 + rot202 * rot122;
- __tmp__10 = rot210 * rot100 + rot211 * rot101 + rot212 * rot102;
- __tmp__11 = rot210 * rot110 + rot211 * rot111 + rot212 * rot112;
- __tmp__12 = rot210 * rot120 + rot211 * rot121 + rot212 * rot122;
- __tmp__20 = rot220 * rot100 + rot221 * rot101 + rot222 * rot102;
- __tmp__21 = rot220 * rot110 + rot221 * rot111 + rot222 * rot112;
- __tmp__22 = rot220 * rot120 + rot221 * rot121 + rot222 * rot122;
- relRot00 = __tmp__00;
- relRot01 = __tmp__01;
- relRot02 = __tmp__02;
- relRot10 = __tmp__10;
- relRot11 = __tmp__11;
- relRot12 = __tmp__12;
- relRot20 = __tmp__20;
- relRot21 = __tmp__21;
- relRot22 = __tmp__22;
- var relQ;
- var relQX;
- var relQY;
- var relQZ;
- var relQW;
- var e00 = relRot00;
- var e11 = relRot11;
- var e22 = relRot22;
- var t = e00 + e11 + e22;
- var s;
- if(t > 0) {
- s = Math.sqrt(t + 1);
- relQW = 0.5 * s;
- s = 0.5 / s;
- relQX = (relRot21 - relRot12) * s;
- relQY = (relRot02 - relRot20) * s;
- relQZ = (relRot10 - relRot01) * s;
- } else if(e00 > e11) {
- if(e00 > e22) {
- s = Math.sqrt(e00 - e11 - e22 + 1);
- relQX = 0.5 * s;
- s = 0.5 / s;
- relQY = (relRot01 + relRot10) * s;
- relQZ = (relRot02 + relRot20) * s;
- relQW = (relRot21 - relRot12) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- relQZ = 0.5 * s;
- s = 0.5 / s;
- relQX = (relRot02 + relRot20) * s;
- relQY = (relRot12 + relRot21) * s;
- relQW = (relRot10 - relRot01) * s;
- }
- } else if(e11 > e22) {
- s = Math.sqrt(e11 - e22 - e00 + 1);
- relQY = 0.5 * s;
- s = 0.5 / s;
- relQX = (relRot01 + relRot10) * s;
- relQZ = (relRot12 + relRot21) * s;
- relQW = (relRot02 - relRot20) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- relQZ = 0.5 * s;
- s = 0.5 / s;
- relQX = (relRot02 + relRot20) * s;
- relQY = (relRot12 + relRot21) * s;
- relQW = (relRot10 - relRot01) * s;
- }
- var cosHalfTheta = relQW;
- var theta1 = (cosHalfTheta <= -1 ? 3.14159265358979 : cosHalfTheta >= 1 ? 0 : Math.acos(cosHalfTheta)) * 2;
- this.angularErrorX = relQX;
- this.angularErrorY = relQY;
- this.angularErrorZ = relQZ;
- var l3 = this.angularErrorX * this.angularErrorX + this.angularErrorY * this.angularErrorY + this.angularErrorZ * this.angularErrorZ;
- if(l3 > 0) {
- l3 = 1 / Math.sqrt(l3);
- }
- this.angularErrorX *= l3;
- this.angularErrorY *= l3;
- this.angularErrorZ *= l3;
- this.angularErrorX *= theta1;
- this.angularErrorY *= theta1;
- this.angularErrorZ *= theta1;
- var anchorDiff;
- var anchorDiffX;
- var anchorDiffY;
- var anchorDiffZ;
- anchorDiffX = this._anchor2X - this._anchor1X;
- anchorDiffY = this._anchor2Y - this._anchor1Y;
- anchorDiffZ = this._anchor2Z - this._anchor1Z;
- this.translation = anchorDiffX * this._basis.xX + anchorDiffY * this._basis.xY + anchorDiffZ * this._basis.xZ;
- this.linearErrorY = anchorDiffX * this._basis.yX + anchorDiffY * this._basis.yY + anchorDiffZ * this._basis.yZ;
- this.linearErrorZ = anchorDiffX * this._basis.zX + anchorDiffY * this._basis.zY + anchorDiffZ * this._basis.zZ;
- }
- _getVelocitySolverInfo(timeStep,info) {
- super._getVelocitySolverInfo(timeStep,info);
- this.getInfo(info,timeStep,false);
- }
- _getPositionSolverInfo(info) {
- super._getPositionSolverInfo(info);
- this.getInfo(info,null,true);
- }
- getAxis1() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._basisX1X;
- v1.y = this._basisX1Y;
- v1.z = this._basisX1Z;
- return v;
- }
- getAxis2() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._basisX2X;
- v1.y = this._basisX2Y;
- v1.z = this._basisX2Z;
- return v;
- }
- getAxis1To(axis) {
- var v = axis;
- v.x = this._basisX1X;
- v.y = this._basisX1Y;
- v.z = this._basisX1Z;
- }
- getAxis2To(axis) {
- var v = axis;
- v.x = this._basisX2X;
- v.y = this._basisX2Y;
- v.z = this._basisX2Z;
- }
- getLocalAxis1() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._localBasisX1X;
- v1.y = this._localBasisX1Y;
- v1.z = this._localBasisX1Z;
- return v;
- }
- getLocalAxis2() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._localBasisX2X;
- v1.y = this._localBasisX2Y;
- v1.z = this._localBasisX2Z;
- return v;
- }
- getLocalAxis1To(axis) {
- var v = axis;
- v.x = this._localBasisX1X;
- v.y = this._localBasisX1Y;
- v.z = this._localBasisX1Z;
- }
- getLocalAxis2To(axis) {
- var v = axis;
- v.x = this._localBasisX2X;
- v.y = this._localBasisX2Y;
- v.z = this._localBasisX2Z;
- }
- getSpringDamper() {
- return this._sd;
- }
- getLimitMotor() {
- return this._lm;
- }
- getTranslation() {
- return this.translation;
- }
- }
- oimo.dynamics.constraint.joint.PrismaticJointConfig = class oimo_dynamics_constraint_joint_PrismaticJointConfig extends oimo.dynamics.constraint.joint.JointConfig {
- constructor() {
- super();
- this.localAxis1 = new oimo.common.Vec3(1,0,0);
- this.localAxis2 = new oimo.common.Vec3(1,0,0);
- this.limitMotor = new oimo.dynamics.constraint.joint.TranslationalLimitMotor();
- this.springDamper = new oimo.dynamics.constraint.joint.SpringDamper();
- }
- init(rigidBody1,rigidBody2,worldAnchor,worldAxis) {
- this._init(rigidBody1,rigidBody2,worldAnchor);
- var v;
- var vX;
- var vY;
- var vZ;
- var v1 = worldAxis;
- vX = v1.x;
- vY = v1.y;
- vZ = v1.z;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = rigidBody1._transform._rotation00 * vX + rigidBody1._transform._rotation10 * vY + rigidBody1._transform._rotation20 * vZ;
- __tmp__Y = rigidBody1._transform._rotation01 * vX + rigidBody1._transform._rotation11 * vY + rigidBody1._transform._rotation21 * vZ;
- __tmp__Z = rigidBody1._transform._rotation02 * vX + rigidBody1._transform._rotation12 * vY + rigidBody1._transform._rotation22 * vZ;
- vX = __tmp__X;
- vY = __tmp__Y;
- vZ = __tmp__Z;
- var v2 = this.localAxis1;
- v2.x = vX;
- v2.y = vY;
- v2.z = vZ;
- var v3;
- var vX1;
- var vY1;
- var vZ1;
- var v4 = worldAxis;
- vX1 = v4.x;
- vY1 = v4.y;
- vZ1 = v4.z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = rigidBody2._transform._rotation00 * vX1 + rigidBody2._transform._rotation10 * vY1 + rigidBody2._transform._rotation20 * vZ1;
- __tmp__Y1 = rigidBody2._transform._rotation01 * vX1 + rigidBody2._transform._rotation11 * vY1 + rigidBody2._transform._rotation21 * vZ1;
- __tmp__Z1 = rigidBody2._transform._rotation02 * vX1 + rigidBody2._transform._rotation12 * vY1 + rigidBody2._transform._rotation22 * vZ1;
- vX1 = __tmp__X1;
- vY1 = __tmp__Y1;
- vZ1 = __tmp__Z1;
- var v5 = this.localAxis2;
- v5.x = vX1;
- v5.y = vY1;
- v5.z = vZ1;
- return this;
- }
- }
- oimo.dynamics.constraint.joint.RagdollJoint = class oimo_dynamics_constraint_joint_RagdollJoint extends oimo.dynamics.constraint.joint.Joint {
- constructor(config) {
- super(config,oimo.dynamics.constraint.joint.JointType.RAGDOLL);
- var v = config.localTwistAxis1;
- this._localBasisX1X = v.x;
- this._localBasisX1Y = v.y;
- this._localBasisX1Z = v.z;
- var v1 = config.localSwingAxis1;
- this._localBasisY1X = v1.x;
- this._localBasisY1Y = v1.y;
- this._localBasisY1Z = v1.z;
- var v2 = config.localTwistAxis2;
- this._localBasisX2X = v2.x;
- this._localBasisX2Y = v2.y;
- this._localBasisX2Z = v2.z;
- this.buildLocalBasesFromXY1X2();
- this._twistSd = config.twistSpringDamper.clone();
- this._twistLm = config.twistLimitMotor.clone();
- this._swingSd = config.swingSpringDamper.clone();
- this._maxSwingAngle1 = config.maxSwingAngle1;
- this._maxSwingAngle2 = config.maxSwingAngle2;
- if(this._maxSwingAngle1 < oimo.common.Setting.minRagdollMaxSwingAngle) {
- this._maxSwingAngle1 = oimo.common.Setting.minRagdollMaxSwingAngle;
- }
- if(this._maxSwingAngle2 < oimo.common.Setting.minRagdollMaxSwingAngle) {
- this._maxSwingAngle2 = oimo.common.Setting.minRagdollMaxSwingAngle;
- }
- this.dummySwingLm = new oimo.dynamics.constraint.joint.RotationalLimitMotor();
- this.dummySwingLm.lowerLimit = -1;
- this.dummySwingLm.upperLimit = 0;
- this._swingAngle = 0;
- this._twistAngle = 0;
- this.swingError = 0;
- this.swingAxisX = 0;
- this.swingAxisY = 0;
- this.swingAxisZ = 0;
- this.twistAxisX = 0;
- this.twistAxisY = 0;
- this.twistAxisZ = 0;
- }
- getInfo(info,timeStep,isPositionPart) {
- var erp = this.getErp(timeStep,isPositionPart);
- var linearRhs;
- var linearRhsX;
- var linearRhsY;
- var linearRhsZ;
- linearRhsX = this.linearErrorX * erp;
- linearRhsY = this.linearErrorY * erp;
- linearRhsZ = this.linearErrorZ * erp;
- var linRhsX = linearRhsX;
- var linRhsY = linearRhsY;
- var linRhsZ = linearRhsZ;
- var crossR1;
- var crossR100;
- var crossR101;
- var crossR102;
- var crossR110;
- var crossR111;
- var crossR112;
- var crossR120;
- var crossR121;
- var crossR122;
- var crossR2;
- var crossR200;
- var crossR201;
- var crossR202;
- var crossR210;
- var crossR211;
- var crossR212;
- var crossR220;
- var crossR221;
- var crossR222;
- crossR100 = 0;
- crossR101 = -this._relativeAnchor1Z;
- crossR102 = this._relativeAnchor1Y;
- crossR110 = this._relativeAnchor1Z;
- crossR111 = 0;
- crossR112 = -this._relativeAnchor1X;
- crossR120 = -this._relativeAnchor1Y;
- crossR121 = this._relativeAnchor1X;
- crossR122 = 0;
- crossR200 = 0;
- crossR201 = -this._relativeAnchor2Z;
- crossR202 = this._relativeAnchor2Y;
- crossR210 = this._relativeAnchor2Z;
- crossR211 = 0;
- crossR212 = -this._relativeAnchor2X;
- crossR220 = -this._relativeAnchor2Y;
- crossR221 = this._relativeAnchor2X;
- crossR222 = 0;
- crossR100 = -crossR100;
- crossR101 = -crossR101;
- crossR102 = -crossR102;
- crossR110 = -crossR110;
- crossR111 = -crossR111;
- crossR112 = -crossR112;
- crossR120 = -crossR120;
- crossR121 = -crossR121;
- crossR122 = -crossR122;
- crossR200 = -crossR200;
- crossR201 = -crossR201;
- crossR202 = -crossR202;
- crossR210 = -crossR210;
- crossR211 = -crossR211;
- crossR212 = -crossR212;
- crossR220 = -crossR220;
- crossR221 = -crossR221;
- crossR222 = -crossR222;
- var swingMass = this.computeEffectiveInertiaMoment(this.swingAxisX,this.swingAxisY,this.swingAxisZ);
- var twistMass = this.computeEffectiveInertiaMoment(this._basisX2X,this._basisX2Y,this._basisX2Z);
- var impulse = this._impulses[0];
- var row = info.rows[info.numRows++];
- var _this = row.jacobian;
- _this.lin1X = 0;
- _this.lin1Y = 0;
- _this.lin1Z = 0;
- _this.lin2X = 0;
- _this.lin2Y = 0;
- _this.lin2Z = 0;
- _this.ang1X = 0;
- _this.ang1Y = 0;
- _this.ang1Z = 0;
- _this.ang2X = 0;
- _this.ang2Y = 0;
- _this.ang2Z = 0;
- row.rhs = 0;
- row.cfm = 0;
- row.minImpulse = 0;
- row.maxImpulse = 0;
- row.motorSpeed = 0;
- row.motorMaxImpulse = 0;
- row.impulse = null;
- row.impulse = impulse;
- var row1 = row;
- row1.rhs = linRhsX;
- row1.cfm = 0;
- row1.minImpulse = -1e65536;
- row1.maxImpulse = 1e65536;
- var j = row1.jacobian;
- j.lin1X = 1;
- j.lin1Y = 0;
- j.lin1Z = 0;
- j.lin2X = 1;
- j.lin2Y = 0;
- j.lin2Z = 0;
- j.ang1X = crossR100;
- j.ang1Y = crossR101;
- j.ang1Z = crossR102;
- j.ang2X = crossR200;
- j.ang2Y = crossR201;
- j.ang2Z = crossR202;
- var impulse1 = this._impulses[1];
- var row2 = info.rows[info.numRows++];
- var _this1 = row2.jacobian;
- _this1.lin1X = 0;
- _this1.lin1Y = 0;
- _this1.lin1Z = 0;
- _this1.lin2X = 0;
- _this1.lin2Y = 0;
- _this1.lin2Z = 0;
- _this1.ang1X = 0;
- _this1.ang1Y = 0;
- _this1.ang1Z = 0;
- _this1.ang2X = 0;
- _this1.ang2Y = 0;
- _this1.ang2Z = 0;
- row2.rhs = 0;
- row2.cfm = 0;
- row2.minImpulse = 0;
- row2.maxImpulse = 0;
- row2.motorSpeed = 0;
- row2.motorMaxImpulse = 0;
- row2.impulse = null;
- row2.impulse = impulse1;
- row1 = row2;
- row1.rhs = linRhsY;
- row1.cfm = 0;
- row1.minImpulse = -1e65536;
- row1.maxImpulse = 1e65536;
- j = row1.jacobian;
- j.lin1X = 0;
- j.lin1Y = 1;
- j.lin1Z = 0;
- j.lin2X = 0;
- j.lin2Y = 1;
- j.lin2Z = 0;
- j.ang1X = crossR110;
- j.ang1Y = crossR111;
- j.ang1Z = crossR112;
- j.ang2X = crossR210;
- j.ang2Y = crossR211;
- j.ang2Z = crossR212;
- var impulse2 = this._impulses[2];
- var row3 = info.rows[info.numRows++];
- var _this2 = row3.jacobian;
- _this2.lin1X = 0;
- _this2.lin1Y = 0;
- _this2.lin1Z = 0;
- _this2.lin2X = 0;
- _this2.lin2Y = 0;
- _this2.lin2Z = 0;
- _this2.ang1X = 0;
- _this2.ang1Y = 0;
- _this2.ang1Z = 0;
- _this2.ang2X = 0;
- _this2.ang2Y = 0;
- _this2.ang2Z = 0;
- row3.rhs = 0;
- row3.cfm = 0;
- row3.minImpulse = 0;
- row3.maxImpulse = 0;
- row3.motorSpeed = 0;
- row3.motorMaxImpulse = 0;
- row3.impulse = null;
- row3.impulse = impulse2;
- row1 = row3;
- row1.rhs = linRhsZ;
- row1.cfm = 0;
- row1.minImpulse = -1e65536;
- row1.maxImpulse = 1e65536;
- j = row1.jacobian;
- j.lin1X = 0;
- j.lin1Y = 0;
- j.lin1Z = 1;
- j.lin2X = 0;
- j.lin2Y = 0;
- j.lin2Z = 1;
- j.ang1X = crossR120;
- j.ang1Y = crossR121;
- j.ang1Z = crossR122;
- j.ang2X = crossR220;
- j.ang2Y = crossR221;
- j.ang2Z = crossR222;
- if(this.swingError > 0 && (this._swingSd.frequency <= 0 || !isPositionPart)) {
- var impulse3 = this._impulses[3];
- var row4 = info.rows[info.numRows++];
- var _this3 = row4.jacobian;
- _this3.lin1X = 0;
- _this3.lin1Y = 0;
- _this3.lin1Z = 0;
- _this3.lin2X = 0;
- _this3.lin2Y = 0;
- _this3.lin2Z = 0;
- _this3.ang1X = 0;
- _this3.ang1Y = 0;
- _this3.ang1Z = 0;
- _this3.ang2X = 0;
- _this3.ang2Y = 0;
- _this3.ang2Z = 0;
- row4.rhs = 0;
- row4.cfm = 0;
- row4.minImpulse = 0;
- row4.maxImpulse = 0;
- row4.motorSpeed = 0;
- row4.motorMaxImpulse = 0;
- row4.impulse = null;
- row4.impulse = impulse3;
- row1 = row4;
- this.setSolverInfoRowAngular(row1,this.swingError,this.dummySwingLm,swingMass,this._swingSd,timeStep,isPositionPart);
- j = row1.jacobian;
- j.ang1X = this.swingAxisX;
- j.ang1Y = this.swingAxisY;
- j.ang1Z = this.swingAxisZ;
- j.ang2X = this.swingAxisX;
- j.ang2Y = this.swingAxisY;
- j.ang2Z = this.swingAxisZ;
- }
- if(this._twistSd.frequency <= 0 || !isPositionPart) {
- var impulse4 = this._impulses[4];
- var row5 = info.rows[info.numRows++];
- var _this4 = row5.jacobian;
- _this4.lin1X = 0;
- _this4.lin1Y = 0;
- _this4.lin1Z = 0;
- _this4.lin2X = 0;
- _this4.lin2Y = 0;
- _this4.lin2Z = 0;
- _this4.ang1X = 0;
- _this4.ang1Y = 0;
- _this4.ang1Z = 0;
- _this4.ang2X = 0;
- _this4.ang2Y = 0;
- _this4.ang2Z = 0;
- row5.rhs = 0;
- row5.cfm = 0;
- row5.minImpulse = 0;
- row5.maxImpulse = 0;
- row5.motorSpeed = 0;
- row5.motorMaxImpulse = 0;
- row5.impulse = null;
- row5.impulse = impulse4;
- row1 = row5;
- this.setSolverInfoRowAngular(row1,this._twistAngle,this._twistLm,twistMass,this._twistSd,timeStep,isPositionPart);
- j = row1.jacobian;
- j.ang1X = this.twistAxisX;
- j.ang1Y = this.twistAxisY;
- j.ang1Z = this.twistAxisZ;
- j.ang2X = this.twistAxisX;
- j.ang2Y = this.twistAxisY;
- j.ang2Z = this.twistAxisZ;
- }
- }
- _syncAnchors() {
- super._syncAnchors();
- var tf1 = this._b1._transform;
- var tf2 = this._b2._transform;
- var axis1;
- var axis1X;
- var axis1Y;
- var axis1Z;
- var axis2;
- var axis2X;
- var axis2Y;
- var axis2Z;
- axis1X = this._basisX1X;
- axis1Y = this._basisX1Y;
- axis1Z = this._basisX1Z;
- axis2X = this._basisX2X;
- axis2Y = this._basisX2Y;
- axis2Z = this._basisX2Z;
- var basis1Mat;
- var basis1Mat00;
- var basis1Mat01;
- var basis1Mat02;
- var basis1Mat10;
- var basis1Mat11;
- var basis1Mat12;
- var basis1Mat20;
- var basis1Mat21;
- var basis1Mat22;
- var basis2Mat;
- var basis2Mat00;
- var basis2Mat01;
- var basis2Mat02;
- var basis2Mat10;
- var basis2Mat11;
- var basis2Mat12;
- var basis2Mat20;
- var basis2Mat21;
- var basis2Mat22;
- basis1Mat00 = this._basisX1X;
- basis1Mat01 = this._basisY1X;
- basis1Mat02 = this._basisZ1X;
- basis1Mat10 = this._basisX1Y;
- basis1Mat11 = this._basisY1Y;
- basis1Mat12 = this._basisZ1Y;
- basis1Mat20 = this._basisX1Z;
- basis1Mat21 = this._basisY1Z;
- basis1Mat22 = this._basisZ1Z;
- basis2Mat00 = this._basisX2X;
- basis2Mat01 = this._basisY2X;
- basis2Mat02 = this._basisZ2X;
- basis2Mat10 = this._basisX2Y;
- basis2Mat11 = this._basisY2Y;
- basis2Mat12 = this._basisZ2Y;
- basis2Mat20 = this._basisX2Z;
- basis2Mat21 = this._basisY2Z;
- basis2Mat22 = this._basisZ2Z;
- var swingQ;
- var swingQX;
- var swingQY;
- var swingQZ;
- var swingQW;
- var swingM;
- var swingM00;
- var swingM01;
- var swingM02;
- var swingM10;
- var swingM11;
- var swingM12;
- var swingM20;
- var swingM21;
- var swingM22;
- var swingV;
- var swingVX;
- var swingVY;
- var swingVZ;
- var d = axis1X * axis2X + axis1Y * axis2Y + axis1Z * axis2Z;
- if(d < -0.999999999) {
- var vX;
- var vY;
- var vZ;
- var x1 = axis1X;
- var y1 = axis1Y;
- var z1 = axis1Z;
- var x2 = x1 * x1;
- var y2 = y1 * y1;
- var z2 = z1 * z1;
- var d1;
- if(x2 < y2) {
- if(x2 < z2) {
- d1 = 1 / Math.sqrt(y2 + z2);
- vX = 0;
- vY = z1 * d1;
- vZ = -y1 * d1;
- } else {
- d1 = 1 / Math.sqrt(x2 + y2);
- vX = y1 * d1;
- vY = -x1 * d1;
- vZ = 0;
- }
- } else if(y2 < z2) {
- d1 = 1 / Math.sqrt(z2 + x2);
- vX = -z1 * d1;
- vY = 0;
- vZ = x1 * d1;
- } else {
- d1 = 1 / Math.sqrt(x2 + y2);
- vX = y1 * d1;
- vY = -x1 * d1;
- vZ = 0;
- }
- swingQX = vX;
- swingQY = vY;
- swingQZ = vZ;
- swingQW = 0;
- } else {
- var cX;
- var cY;
- var cZ;
- cX = axis1Y * axis2Z - axis1Z * axis2Y;
- cY = axis1Z * axis2X - axis1X * axis2Z;
- cZ = axis1X * axis2Y - axis1Y * axis2X;
- var w = Math.sqrt((1 + d) * 0.5);
- d = 0.5 / w;
- cX *= d;
- cY *= d;
- cZ *= d;
- swingQX = cX;
- swingQY = cY;
- swingQZ = cZ;
- swingQW = w;
- }
- var x = swingQX;
- var y = swingQY;
- var z = swingQZ;
- var w1 = swingQW;
- var x21 = 2 * x;
- var y21 = 2 * y;
- var z21 = 2 * z;
- var xx = x * x21;
- var yy = y * y21;
- var zz = z * z21;
- var xy = x * y21;
- var yz = y * z21;
- var xz = x * z21;
- var wx = w1 * x21;
- var wy = w1 * y21;
- var wz = w1 * z21;
- swingM00 = 1 - yy - zz;
- swingM01 = xy - wz;
- swingM02 = xz + wy;
- swingM10 = xy + wz;
- swingM11 = 1 - xx - zz;
- swingM12 = yz - wx;
- swingM20 = xz - wy;
- swingM21 = yz + wx;
- swingM22 = 1 - xx - yy;
- this._swingAngle = (swingQW <= -1 ? 3.14159265358979 : swingQW >= 1 ? 0 : Math.acos(swingQW)) * 2;
- swingVX = swingQX;
- swingVY = swingQY;
- swingVZ = swingQZ;
- var basisY2In1;
- var basisY2In1X;
- var basisY2In1Y;
- var basisY2In1Z;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = swingM00 * this._basisY2X + swingM10 * this._basisY2Y + swingM20 * this._basisY2Z;
- __tmp__Y = swingM01 * this._basisY2X + swingM11 * this._basisY2Y + swingM21 * this._basisY2Z;
- __tmp__Z = swingM02 * this._basisY2X + swingM12 * this._basisY2Y + swingM22 * this._basisY2Z;
- basisY2In1X = __tmp__X;
- basisY2In1Y = __tmp__Y;
- basisY2In1Z = __tmp__Z;
- var yCoord = this._basisY1X * basisY2In1X + this._basisY1Y * basisY2In1Y + this._basisY1Z * basisY2In1Z;
- var zCoord = this._basisZ1X * basisY2In1X + this._basisZ1Y * basisY2In1Y + this._basisZ1Z * basisY2In1Z;
- this._twistAngle = Math.atan2(zCoord,yCoord);
- this.twistAxisX = this._basisX1X + this._basisX2X;
- this.twistAxisY = this._basisX1Y + this._basisX2Y;
- this.twistAxisZ = this._basisX1Z + this._basisX2Z;
- var l = this.twistAxisX * this.twistAxisX + this.twistAxisY * this.twistAxisY + this.twistAxisZ * this.twistAxisZ;
- if(l > 0) {
- l = 1 / Math.sqrt(l);
- }
- this.twistAxisX *= l;
- this.twistAxisY *= l;
- this.twistAxisZ *= l;
- var invLen = Math.sqrt(swingVX * swingVX + swingVY * swingVY + swingVZ * swingVZ);
- if(invLen > 0) {
- invLen = 1 / invLen;
- }
- swingVX *= invLen * this._swingAngle;
- swingVY *= invLen * this._swingAngle;
- swingVZ *= invLen * this._swingAngle;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = basis1Mat00 * swingVX + basis1Mat10 * swingVY + basis1Mat20 * swingVZ;
- __tmp__Y1 = basis1Mat01 * swingVX + basis1Mat11 * swingVY + basis1Mat21 * swingVZ;
- __tmp__Z1 = basis1Mat02 * swingVX + basis1Mat12 * swingVY + basis1Mat22 * swingVZ;
- swingVX = __tmp__X1;
- swingVY = __tmp__Y1;
- swingVZ = __tmp__Z1;
- var x3 = swingVY;
- var y3 = swingVZ;
- var a = this._maxSwingAngle1;
- var b = this._maxSwingAngle2;
- var invA2 = 1 / (a * a);
- var invB2 = 1 / (b * b);
- var w2 = x3 * x3 * invA2 + y3 * y3 * invB2;
- if(w2 == 0) {
- this.swingAxisX = 0;
- this.swingAxisY = 0;
- this.swingAxisZ = 0;
- this.swingError = 0;
- } else {
- var t = Math.sqrt(1 / w2);
- var x0 = x3 * t;
- var y0 = y3 * t;
- var nx = x0 * invA2;
- var ny = y0 * invB2;
- invLen = 1 / Math.sqrt(nx * nx + ny * ny);
- nx *= invLen;
- ny *= invLen;
- var depth = (x3 - x0) * nx + (y3 - y0) * ny;
- if(depth > 0) {
- this.swingError = depth;
- this.swingAxisX = 0;
- this.swingAxisY = nx;
- this.swingAxisZ = ny;
- var __tmp__X2;
- var __tmp__Y2;
- var __tmp__Z2;
- __tmp__X2 = basis1Mat00 * this.swingAxisX + basis1Mat01 * this.swingAxisY + basis1Mat02 * this.swingAxisZ;
- __tmp__Y2 = basis1Mat10 * this.swingAxisX + basis1Mat11 * this.swingAxisY + basis1Mat12 * this.swingAxisZ;
- __tmp__Z2 = basis1Mat20 * this.swingAxisX + basis1Mat21 * this.swingAxisY + basis1Mat22 * this.swingAxisZ;
- this.swingAxisX = __tmp__X2;
- this.swingAxisY = __tmp__Y2;
- this.swingAxisZ = __tmp__Z2;
- var __tmp__X3;
- var __tmp__Y3;
- var __tmp__Z3;
- __tmp__X3 = swingM00 * this.swingAxisX + swingM01 * this.swingAxisY + swingM02 * this.swingAxisZ;
- __tmp__Y3 = swingM10 * this.swingAxisX + swingM11 * this.swingAxisY + swingM12 * this.swingAxisZ;
- __tmp__Z3 = swingM20 * this.swingAxisX + swingM21 * this.swingAxisY + swingM22 * this.swingAxisZ;
- this.swingAxisX = __tmp__X3;
- this.swingAxisY = __tmp__Y3;
- this.swingAxisZ = __tmp__Z3;
- } else {
- this.swingError = 0;
- }
- }
- this.linearErrorX = this._anchor2X - this._anchor1X;
- this.linearErrorY = this._anchor2Y - this._anchor1Y;
- this.linearErrorZ = this._anchor2Z - this._anchor1Z;
- }
- _getVelocitySolverInfo(timeStep,info) {
- super._getVelocitySolverInfo(timeStep,info);
- this.getInfo(info,timeStep,false);
- }
- _getPositionSolverInfo(info) {
- super._getPositionSolverInfo(info);
- this.getInfo(info,null,true);
- }
- getAxis1() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._basisX1X;
- v1.y = this._basisX1Y;
- v1.z = this._basisX1Z;
- return v;
- }
- getAxis2() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._basisX2X;
- v1.y = this._basisX2Y;
- v1.z = this._basisX2Z;
- return v;
- }
- getAxis1To(axis) {
- var v = axis;
- v.x = this._basisX1X;
- v.y = this._basisX1Y;
- v.z = this._basisX1Z;
- }
- getAxis2To(axis) {
- var v = axis;
- v.x = this._basisX2X;
- v.y = this._basisX2Y;
- v.z = this._basisX2Z;
- }
- getLocalAxis1() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._localBasisX1X;
- v1.y = this._localBasisX1Y;
- v1.z = this._localBasisX1Z;
- return v;
- }
- getLocalAxis2() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._localBasisX2X;
- v1.y = this._localBasisX2Y;
- v1.z = this._localBasisX2Z;
- return v;
- }
- getLocalAxis1To(axis) {
- var v = axis;
- v.x = this._localBasisX1X;
- v.y = this._localBasisX1Y;
- v.z = this._localBasisX1Z;
- }
- getLocalAxis2To(axis) {
- var v = axis;
- v.x = this._localBasisX2X;
- v.y = this._localBasisX2Y;
- v.z = this._localBasisX2Z;
- }
- getTwistSpringDamper() {
- return this._twistSd;
- }
- getTwistLimitMotor() {
- return this._twistLm;
- }
- getSwingSpringDamper() {
- return this._swingSd;
- }
- getSwingAxis() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this.swingAxisX;
- v1.y = this.swingAxisY;
- v1.z = this.swingAxisZ;
- return v;
- }
- getSwingAxisTo(axis) {
- var v = axis;
- v.x = this.swingAxisX;
- v.y = this.swingAxisY;
- v.z = this.swingAxisZ;
- }
- getSwingAngle() {
- return this._swingAngle;
- }
- getTwistAngle() {
- return this._twistAngle;
- }
- }
- oimo.dynamics.constraint.joint.RagdollJointConfig = class oimo_dynamics_constraint_joint_RagdollJointConfig extends oimo.dynamics.constraint.joint.JointConfig {
- constructor() {
- super();
- this.localTwistAxis1 = new oimo.common.Vec3(1,0,0);
- this.localTwistAxis2 = new oimo.common.Vec3(1,0,0);
- this.localSwingAxis1 = new oimo.common.Vec3(0,1,0);
- this.twistSpringDamper = new oimo.dynamics.constraint.joint.SpringDamper();
- this.swingSpringDamper = new oimo.dynamics.constraint.joint.SpringDamper();
- this.twistLimitMotor = new oimo.dynamics.constraint.joint.RotationalLimitMotor();
- this.maxSwingAngle1 = 3.14159265358979;
- this.maxSwingAngle2 = 3.14159265358979;
- }
- init(rigidBody1,rigidBody2,worldAnchor,worldTwistAxis,worldSwingAxis) {
- this._init(rigidBody1,rigidBody2,worldAnchor);
- var v;
- var vX;
- var vY;
- var vZ;
- var v1 = worldTwistAxis;
- vX = v1.x;
- vY = v1.y;
- vZ = v1.z;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = rigidBody1._transform._rotation00 * vX + rigidBody1._transform._rotation10 * vY + rigidBody1._transform._rotation20 * vZ;
- __tmp__Y = rigidBody1._transform._rotation01 * vX + rigidBody1._transform._rotation11 * vY + rigidBody1._transform._rotation21 * vZ;
- __tmp__Z = rigidBody1._transform._rotation02 * vX + rigidBody1._transform._rotation12 * vY + rigidBody1._transform._rotation22 * vZ;
- vX = __tmp__X;
- vY = __tmp__Y;
- vZ = __tmp__Z;
- var v2 = this.localTwistAxis1;
- v2.x = vX;
- v2.y = vY;
- v2.z = vZ;
- var v3;
- var vX1;
- var vY1;
- var vZ1;
- var v4 = worldTwistAxis;
- vX1 = v4.x;
- vY1 = v4.y;
- vZ1 = v4.z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = rigidBody2._transform._rotation00 * vX1 + rigidBody2._transform._rotation10 * vY1 + rigidBody2._transform._rotation20 * vZ1;
- __tmp__Y1 = rigidBody2._transform._rotation01 * vX1 + rigidBody2._transform._rotation11 * vY1 + rigidBody2._transform._rotation21 * vZ1;
- __tmp__Z1 = rigidBody2._transform._rotation02 * vX1 + rigidBody2._transform._rotation12 * vY1 + rigidBody2._transform._rotation22 * vZ1;
- vX1 = __tmp__X1;
- vY1 = __tmp__Y1;
- vZ1 = __tmp__Z1;
- var v5 = this.localTwistAxis2;
- v5.x = vX1;
- v5.y = vY1;
- v5.z = vZ1;
- var v6;
- var vX2;
- var vY2;
- var vZ2;
- var v7 = worldSwingAxis;
- vX2 = v7.x;
- vY2 = v7.y;
- vZ2 = v7.z;
- var __tmp__X2;
- var __tmp__Y2;
- var __tmp__Z2;
- __tmp__X2 = rigidBody1._transform._rotation00 * vX2 + rigidBody1._transform._rotation10 * vY2 + rigidBody1._transform._rotation20 * vZ2;
- __tmp__Y2 = rigidBody1._transform._rotation01 * vX2 + rigidBody1._transform._rotation11 * vY2 + rigidBody1._transform._rotation21 * vZ2;
- __tmp__Z2 = rigidBody1._transform._rotation02 * vX2 + rigidBody1._transform._rotation12 * vY2 + rigidBody1._transform._rotation22 * vZ2;
- vX2 = __tmp__X2;
- vY2 = __tmp__Y2;
- vZ2 = __tmp__Z2;
- var v8 = this.localSwingAxis1;
- v8.x = vX2;
- v8.y = vY2;
- v8.z = vZ2;
- return this;
- }
- }
- oimo.dynamics.constraint.joint.RevoluteJoint = class oimo_dynamics_constraint_joint_RevoluteJoint extends oimo.dynamics.constraint.joint.Joint {
- constructor(config) {
- super(config,1);
- var v = config.localAxis1;
- this._localBasisX1X = v.x;
- this._localBasisX1Y = v.y;
- this._localBasisX1Z = v.z;
- var v1 = config.localAxis2;
- this._localBasisX2X = v1.x;
- this._localBasisX2Y = v1.y;
- this._localBasisX2Z = v1.z;
- this.buildLocalBasesFromX();
- this.angle = 0;
- this.angularErrorY = 0;
- this.angularErrorZ = 0;
- this._basis = new oimo.dynamics.constraint.joint.BasisTracker(this);
- this._sd = config.springDamper.clone();
- this._lm = config.limitMotor.clone();
- }
- getInfo(info,timeStep,isPositionPart) {
- var erp = this.getErp(timeStep,isPositionPart);
- var linearRhs;
- var linearRhsX;
- var linearRhsY;
- var linearRhsZ;
- linearRhsX = this.linearErrorX * erp;
- linearRhsY = this.linearErrorY * erp;
- linearRhsZ = this.linearErrorZ * erp;
- var linRhsX = linearRhsX;
- var linRhsY = linearRhsY;
- var linRhsZ = linearRhsZ;
- var angRhsY = this.angularErrorY * erp;
- var angRhsZ = this.angularErrorZ * erp;
- var crossR1;
- var crossR100;
- var crossR101;
- var crossR102;
- var crossR110;
- var crossR111;
- var crossR112;
- var crossR120;
- var crossR121;
- var crossR122;
- var crossR2;
- var crossR200;
- var crossR201;
- var crossR202;
- var crossR210;
- var crossR211;
- var crossR212;
- var crossR220;
- var crossR221;
- var crossR222;
- crossR100 = 0;
- crossR101 = -this._relativeAnchor1Z;
- crossR102 = this._relativeAnchor1Y;
- crossR110 = this._relativeAnchor1Z;
- crossR111 = 0;
- crossR112 = -this._relativeAnchor1X;
- crossR120 = -this._relativeAnchor1Y;
- crossR121 = this._relativeAnchor1X;
- crossR122 = 0;
- crossR200 = 0;
- crossR201 = -this._relativeAnchor2Z;
- crossR202 = this._relativeAnchor2Y;
- crossR210 = this._relativeAnchor2Z;
- crossR211 = 0;
- crossR212 = -this._relativeAnchor2X;
- crossR220 = -this._relativeAnchor2Y;
- crossR221 = this._relativeAnchor2X;
- crossR222 = 0;
- crossR100 = -crossR100;
- crossR101 = -crossR101;
- crossR102 = -crossR102;
- crossR110 = -crossR110;
- crossR111 = -crossR111;
- crossR112 = -crossR112;
- crossR120 = -crossR120;
- crossR121 = -crossR121;
- crossR122 = -crossR122;
- crossR200 = -crossR200;
- crossR201 = -crossR201;
- crossR202 = -crossR202;
- crossR210 = -crossR210;
- crossR211 = -crossR211;
- crossR212 = -crossR212;
- crossR220 = -crossR220;
- crossR221 = -crossR221;
- crossR222 = -crossR222;
- var motorMass = this.computeEffectiveInertiaMoment(this._basis.xX,this._basis.xY,this._basis.xZ);
- var impulse = this._impulses[0];
- var row = info.rows[info.numRows++];
- var _this = row.jacobian;
- _this.lin1X = 0;
- _this.lin1Y = 0;
- _this.lin1Z = 0;
- _this.lin2X = 0;
- _this.lin2Y = 0;
- _this.lin2Z = 0;
- _this.ang1X = 0;
- _this.ang1Y = 0;
- _this.ang1Z = 0;
- _this.ang2X = 0;
- _this.ang2Y = 0;
- _this.ang2Z = 0;
- row.rhs = 0;
- row.cfm = 0;
- row.minImpulse = 0;
- row.maxImpulse = 0;
- row.motorSpeed = 0;
- row.motorMaxImpulse = 0;
- row.impulse = null;
- row.impulse = impulse;
- var row1 = row;
- row1.rhs = linRhsX;
- row1.cfm = 0;
- row1.minImpulse = -1e65536;
- row1.maxImpulse = 1e65536;
- var j = row1.jacobian;
- j.lin1X = 1;
- j.lin1Y = 0;
- j.lin1Z = 0;
- j.lin2X = 1;
- j.lin2Y = 0;
- j.lin2Z = 0;
- j.ang1X = crossR100;
- j.ang1Y = crossR101;
- j.ang1Z = crossR102;
- j.ang2X = crossR200;
- j.ang2Y = crossR201;
- j.ang2Z = crossR202;
- var impulse1 = this._impulses[1];
- var row2 = info.rows[info.numRows++];
- var _this1 = row2.jacobian;
- _this1.lin1X = 0;
- _this1.lin1Y = 0;
- _this1.lin1Z = 0;
- _this1.lin2X = 0;
- _this1.lin2Y = 0;
- _this1.lin2Z = 0;
- _this1.ang1X = 0;
- _this1.ang1Y = 0;
- _this1.ang1Z = 0;
- _this1.ang2X = 0;
- _this1.ang2Y = 0;
- _this1.ang2Z = 0;
- row2.rhs = 0;
- row2.cfm = 0;
- row2.minImpulse = 0;
- row2.maxImpulse = 0;
- row2.motorSpeed = 0;
- row2.motorMaxImpulse = 0;
- row2.impulse = null;
- row2.impulse = impulse1;
- row1 = row2;
- row1.rhs = linRhsY;
- row1.cfm = 0;
- row1.minImpulse = -1e65536;
- row1.maxImpulse = 1e65536;
- j = row1.jacobian;
- j.lin1X = 0;
- j.lin1Y = 1;
- j.lin1Z = 0;
- j.lin2X = 0;
- j.lin2Y = 1;
- j.lin2Z = 0;
- j.ang1X = crossR110;
- j.ang1Y = crossR111;
- j.ang1Z = crossR112;
- j.ang2X = crossR210;
- j.ang2Y = crossR211;
- j.ang2Z = crossR212;
- var impulse2 = this._impulses[2];
- var row3 = info.rows[info.numRows++];
- var _this2 = row3.jacobian;
- _this2.lin1X = 0;
- _this2.lin1Y = 0;
- _this2.lin1Z = 0;
- _this2.lin2X = 0;
- _this2.lin2Y = 0;
- _this2.lin2Z = 0;
- _this2.ang1X = 0;
- _this2.ang1Y = 0;
- _this2.ang1Z = 0;
- _this2.ang2X = 0;
- _this2.ang2Y = 0;
- _this2.ang2Z = 0;
- row3.rhs = 0;
- row3.cfm = 0;
- row3.minImpulse = 0;
- row3.maxImpulse = 0;
- row3.motorSpeed = 0;
- row3.motorMaxImpulse = 0;
- row3.impulse = null;
- row3.impulse = impulse2;
- row1 = row3;
- row1.rhs = linRhsZ;
- row1.cfm = 0;
- row1.minImpulse = -1e65536;
- row1.maxImpulse = 1e65536;
- j = row1.jacobian;
- j.lin1X = 0;
- j.lin1Y = 0;
- j.lin1Z = 1;
- j.lin2X = 0;
- j.lin2Y = 0;
- j.lin2Z = 1;
- j.ang1X = crossR120;
- j.ang1Y = crossR121;
- j.ang1Z = crossR122;
- j.ang2X = crossR220;
- j.ang2Y = crossR221;
- j.ang2Z = crossR222;
- if(this._sd.frequency <= 0 || !isPositionPart) {
- var impulse3 = this._impulses[3];
- var row4 = info.rows[info.numRows++];
- var _this3 = row4.jacobian;
- _this3.lin1X = 0;
- _this3.lin1Y = 0;
- _this3.lin1Z = 0;
- _this3.lin2X = 0;
- _this3.lin2Y = 0;
- _this3.lin2Z = 0;
- _this3.ang1X = 0;
- _this3.ang1Y = 0;
- _this3.ang1Z = 0;
- _this3.ang2X = 0;
- _this3.ang2Y = 0;
- _this3.ang2Z = 0;
- row4.rhs = 0;
- row4.cfm = 0;
- row4.minImpulse = 0;
- row4.maxImpulse = 0;
- row4.motorSpeed = 0;
- row4.motorMaxImpulse = 0;
- row4.impulse = null;
- row4.impulse = impulse3;
- row1 = row4;
- this.setSolverInfoRowAngular(row1,this.angle,this._lm,motorMass,this._sd,timeStep,isPositionPart);
- j = row1.jacobian;
- j.ang1X = this._basis.xX;
- j.ang1Y = this._basis.xY;
- j.ang1Z = this._basis.xZ;
- j.ang2X = this._basis.xX;
- j.ang2Y = this._basis.xY;
- j.ang2Z = this._basis.xZ;
- }
- var impulse4 = this._impulses[4];
- var row5 = info.rows[info.numRows++];
- var _this4 = row5.jacobian;
- _this4.lin1X = 0;
- _this4.lin1Y = 0;
- _this4.lin1Z = 0;
- _this4.lin2X = 0;
- _this4.lin2Y = 0;
- _this4.lin2Z = 0;
- _this4.ang1X = 0;
- _this4.ang1Y = 0;
- _this4.ang1Z = 0;
- _this4.ang2X = 0;
- _this4.ang2Y = 0;
- _this4.ang2Z = 0;
- row5.rhs = 0;
- row5.cfm = 0;
- row5.minImpulse = 0;
- row5.maxImpulse = 0;
- row5.motorSpeed = 0;
- row5.motorMaxImpulse = 0;
- row5.impulse = null;
- row5.impulse = impulse4;
- row1 = row5;
- row1.rhs = angRhsY;
- row1.cfm = 0;
- row1.minImpulse = -1e65536;
- row1.maxImpulse = 1e65536;
- j = row1.jacobian;
- j.ang1X = this._basis.yX;
- j.ang1Y = this._basis.yY;
- j.ang1Z = this._basis.yZ;
- j.ang2X = this._basis.yX;
- j.ang2Y = this._basis.yY;
- j.ang2Z = this._basis.yZ;
- var impulse5 = this._impulses[5];
- var row6 = info.rows[info.numRows++];
- var _this5 = row6.jacobian;
- _this5.lin1X = 0;
- _this5.lin1Y = 0;
- _this5.lin1Z = 0;
- _this5.lin2X = 0;
- _this5.lin2Y = 0;
- _this5.lin2Z = 0;
- _this5.ang1X = 0;
- _this5.ang1Y = 0;
- _this5.ang1Z = 0;
- _this5.ang2X = 0;
- _this5.ang2Y = 0;
- _this5.ang2Z = 0;
- row6.rhs = 0;
- row6.cfm = 0;
- row6.minImpulse = 0;
- row6.maxImpulse = 0;
- row6.motorSpeed = 0;
- row6.motorMaxImpulse = 0;
- row6.impulse = null;
- row6.impulse = impulse5;
- row1 = row6;
- row1.rhs = angRhsZ;
- row1.cfm = 0;
- row1.minImpulse = -1e65536;
- row1.maxImpulse = 1e65536;
- j = row1.jacobian;
- j.ang1X = this._basis.zX;
- j.ang1Y = this._basis.zY;
- j.ang1Z = this._basis.zZ;
- j.ang2X = this._basis.zX;
- j.ang2Y = this._basis.zY;
- j.ang2Z = this._basis.zZ;
- }
- _syncAnchors() {
- super._syncAnchors();
- var _this = this._basis;
- var invM1 = _this.joint._b1._invMass;
- var invM2 = _this.joint._b2._invMass;
- var q;
- var qX;
- var qY;
- var qZ;
- var qW;
- var idQ;
- var idQX;
- var idQY;
- var idQZ;
- var idQW;
- var slerpQ;
- var slerpQX;
- var slerpQY;
- var slerpQZ;
- var slerpQW;
- var slerpM;
- var slerpM00;
- var slerpM01;
- var slerpM02;
- var slerpM10;
- var slerpM11;
- var slerpM12;
- var slerpM20;
- var slerpM21;
- var slerpM22;
- var newX;
- var newXX;
- var newXY;
- var newXZ;
- var newY;
- var newYX;
- var newYY;
- var newYZ;
- var newZ;
- var newZX;
- var newZY;
- var newZZ;
- var prevX;
- var prevXX;
- var prevXY;
- var prevXZ;
- var prevY;
- var prevYX;
- var prevYY;
- var prevYZ;
- var d = _this.joint._basisX1X * _this.joint._basisX2X + _this.joint._basisX1Y * _this.joint._basisX2Y + _this.joint._basisX1Z * _this.joint._basisX2Z;
- if(d < -0.999999999) {
- var vX;
- var vY;
- var vZ;
- var x1 = _this.joint._basisX1X;
- var y1 = _this.joint._basisX1Y;
- var z1 = _this.joint._basisX1Z;
- var x2 = x1 * x1;
- var y2 = y1 * y1;
- var z2 = z1 * z1;
- var d1;
- if(x2 < y2) {
- if(x2 < z2) {
- d1 = 1 / Math.sqrt(y2 + z2);
- vX = 0;
- vY = z1 * d1;
- vZ = -y1 * d1;
- } else {
- d1 = 1 / Math.sqrt(x2 + y2);
- vX = y1 * d1;
- vY = -x1 * d1;
- vZ = 0;
- }
- } else if(y2 < z2) {
- d1 = 1 / Math.sqrt(z2 + x2);
- vX = -z1 * d1;
- vY = 0;
- vZ = x1 * d1;
- } else {
- d1 = 1 / Math.sqrt(x2 + y2);
- vX = y1 * d1;
- vY = -x1 * d1;
- vZ = 0;
- }
- qX = vX;
- qY = vY;
- qZ = vZ;
- qW = 0;
- } else {
- var cX;
- var cY;
- var cZ;
- cX = _this.joint._basisX1Y * _this.joint._basisX2Z - _this.joint._basisX1Z * _this.joint._basisX2Y;
- cY = _this.joint._basisX1Z * _this.joint._basisX2X - _this.joint._basisX1X * _this.joint._basisX2Z;
- cZ = _this.joint._basisX1X * _this.joint._basisX2Y - _this.joint._basisX1Y * _this.joint._basisX2X;
- var w = Math.sqrt((1 + d) * 0.5);
- d = 0.5 / w;
- cX *= d;
- cY *= d;
- cZ *= d;
- qX = cX;
- qY = cY;
- qZ = cZ;
- qW = w;
- }
- idQX = 0;
- idQY = 0;
- idQZ = 0;
- idQW = 1;
- var qx;
- var qy;
- var qz;
- var qw;
- var q1X;
- var q1Y;
- var q1Z;
- var q1W;
- var q2X;
- var q2Y;
- var q2Z;
- var q2W;
- q1X = idQX;
- q1Y = idQY;
- q1Z = idQZ;
- q1W = idQW;
- q2X = qX;
- q2Y = qY;
- q2Z = qZ;
- q2W = qW;
- var d2 = q1X * q2X + q1Y * q2Y + q1Z * q2Z + q1W * q2W;
- if(d2 < 0) {
- d2 = -d2;
- q2X = -q2X;
- q2Y = -q2Y;
- q2Z = -q2Z;
- q2W = -q2W;
- }
- if(d2 > 0.999999) {
- var dqX;
- var dqY;
- var dqZ;
- var dqW;
- dqX = q2X - q1X;
- dqY = q2Y - q1Y;
- dqZ = q2Z - q1Z;
- dqW = q2W - q1W;
- q2X = q1X + dqX * (invM1 / (invM1 + invM2));
- q2Y = q1Y + dqY * (invM1 / (invM1 + invM2));
- q2Z = q1Z + dqZ * (invM1 / (invM1 + invM2));
- q2W = q1W + dqW * (invM1 / (invM1 + invM2));
- var l = q2X * q2X + q2Y * q2Y + q2Z * q2Z + q2W * q2W;
- if(l > 1e-32) {
- l = 1 / Math.sqrt(l);
- }
- slerpQX = q2X * l;
- slerpQY = q2Y * l;
- slerpQZ = q2Z * l;
- slerpQW = q2W * l;
- } else {
- var theta = invM1 / (invM1 + invM2) * Math.acos(d2);
- q2X += q1X * -d2;
- q2Y += q1Y * -d2;
- q2Z += q1Z * -d2;
- q2W += q1W * -d2;
- var l1 = q2X * q2X + q2Y * q2Y + q2Z * q2Z + q2W * q2W;
- if(l1 > 1e-32) {
- l1 = 1 / Math.sqrt(l1);
- }
- q2X *= l1;
- q2Y *= l1;
- q2Z *= l1;
- q2W *= l1;
- var sin = Math.sin(theta);
- var cos = Math.cos(theta);
- q1X *= cos;
- q1Y *= cos;
- q1Z *= cos;
- q1W *= cos;
- slerpQX = q1X + q2X * sin;
- slerpQY = q1Y + q2Y * sin;
- slerpQZ = q1Z + q2Z * sin;
- slerpQW = q1W + q2W * sin;
- }
- var x = slerpQX;
- var y = slerpQY;
- var z = slerpQZ;
- var w1 = slerpQW;
- var x21 = 2 * x;
- var y21 = 2 * y;
- var z21 = 2 * z;
- var xx = x * x21;
- var yy = y * y21;
- var zz = z * z21;
- var xy = x * y21;
- var yz = y * z21;
- var xz = x * z21;
- var wx = w1 * x21;
- var wy = w1 * y21;
- var wz = w1 * z21;
- slerpM00 = 1 - yy - zz;
- slerpM01 = xy - wz;
- slerpM02 = xz + wy;
- slerpM10 = xy + wz;
- slerpM11 = 1 - xx - zz;
- slerpM12 = yz - wx;
- slerpM20 = xz - wy;
- slerpM21 = yz + wx;
- slerpM22 = 1 - xx - yy;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = slerpM00 * _this.joint._basisX1X + slerpM01 * _this.joint._basisX1Y + slerpM02 * _this.joint._basisX1Z;
- __tmp__Y = slerpM10 * _this.joint._basisX1X + slerpM11 * _this.joint._basisX1Y + slerpM12 * _this.joint._basisX1Z;
- __tmp__Z = slerpM20 * _this.joint._basisX1X + slerpM21 * _this.joint._basisX1Y + slerpM22 * _this.joint._basisX1Z;
- newXX = __tmp__X;
- newXY = __tmp__Y;
- newXZ = __tmp__Z;
- prevXX = _this.xX;
- prevXY = _this.xY;
- prevXZ = _this.xZ;
- prevYX = _this.yX;
- prevYY = _this.yY;
- prevYZ = _this.yZ;
- var d3 = prevXX * newXX + prevXY * newXY + prevXZ * newXZ;
- if(d3 < -0.999999999) {
- var vX1;
- var vY1;
- var vZ1;
- var x11 = prevXX;
- var y11 = prevXY;
- var z11 = prevXZ;
- var x22 = x11 * x11;
- var y22 = y11 * y11;
- var z22 = z11 * z11;
- var d4;
- if(x22 < y22) {
- if(x22 < z22) {
- d4 = 1 / Math.sqrt(y22 + z22);
- vX1 = 0;
- vY1 = z11 * d4;
- vZ1 = -y11 * d4;
- } else {
- d4 = 1 / Math.sqrt(x22 + y22);
- vX1 = y11 * d4;
- vY1 = -x11 * d4;
- vZ1 = 0;
- }
- } else if(y22 < z22) {
- d4 = 1 / Math.sqrt(z22 + x22);
- vX1 = -z11 * d4;
- vY1 = 0;
- vZ1 = x11 * d4;
- } else {
- d4 = 1 / Math.sqrt(x22 + y22);
- vX1 = y11 * d4;
- vY1 = -x11 * d4;
- vZ1 = 0;
- }
- slerpQX = vX1;
- slerpQY = vY1;
- slerpQZ = vZ1;
- slerpQW = 0;
- } else {
- var cX1;
- var cY1;
- var cZ1;
- cX1 = prevXY * newXZ - prevXZ * newXY;
- cY1 = prevXZ * newXX - prevXX * newXZ;
- cZ1 = prevXX * newXY - prevXY * newXX;
- var w2 = Math.sqrt((1 + d3) * 0.5);
- d3 = 0.5 / w2;
- cX1 *= d3;
- cY1 *= d3;
- cZ1 *= d3;
- slerpQX = cX1;
- slerpQY = cY1;
- slerpQZ = cZ1;
- slerpQW = w2;
- }
- var x3 = slerpQX;
- var y3 = slerpQY;
- var z3 = slerpQZ;
- var w3 = slerpQW;
- var x23 = 2 * x3;
- var y23 = 2 * y3;
- var z23 = 2 * z3;
- var xx1 = x3 * x23;
- var yy1 = y3 * y23;
- var zz1 = z3 * z23;
- var xy1 = x3 * y23;
- var yz1 = y3 * z23;
- var xz1 = x3 * z23;
- var wx1 = w3 * x23;
- var wy1 = w3 * y23;
- var wz1 = w3 * z23;
- slerpM00 = 1 - yy1 - zz1;
- slerpM01 = xy1 - wz1;
- slerpM02 = xz1 + wy1;
- slerpM10 = xy1 + wz1;
- slerpM11 = 1 - xx1 - zz1;
- slerpM12 = yz1 - wx1;
- slerpM20 = xz1 - wy1;
- slerpM21 = yz1 + wx1;
- slerpM22 = 1 - xx1 - yy1;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = slerpM00 * prevYX + slerpM01 * prevYY + slerpM02 * prevYZ;
- __tmp__Y1 = slerpM10 * prevYX + slerpM11 * prevYY + slerpM12 * prevYZ;
- __tmp__Z1 = slerpM20 * prevYX + slerpM21 * prevYY + slerpM22 * prevYZ;
- newYX = __tmp__X1;
- newYY = __tmp__Y1;
- newYZ = __tmp__Z1;
- newZX = newXY * newYZ - newXZ * newYY;
- newZY = newXZ * newYX - newXX * newYZ;
- newZZ = newXX * newYY - newXY * newYX;
- if(newZX * newZX + newZY * newZY + newZZ * newZZ > 1e-6) {
- var l2 = newZX * newZX + newZY * newZY + newZZ * newZZ;
- if(l2 > 0) {
- l2 = 1 / Math.sqrt(l2);
- }
- newZX *= l2;
- newZY *= l2;
- newZZ *= l2;
- } else {
- var x12 = newXX;
- var y12 = newXY;
- var z12 = newXZ;
- var x24 = x12 * x12;
- var y24 = y12 * y12;
- var z24 = z12 * z12;
- var d5;
- if(x24 < y24) {
- if(x24 < z24) {
- d5 = 1 / Math.sqrt(y24 + z24);
- newZX = 0;
- newZY = z12 * d5;
- newZZ = -y12 * d5;
- } else {
- d5 = 1 / Math.sqrt(x24 + y24);
- newZX = y12 * d5;
- newZY = -x12 * d5;
- newZZ = 0;
- }
- } else if(y24 < z24) {
- d5 = 1 / Math.sqrt(z24 + x24);
- newZX = -z12 * d5;
- newZY = 0;
- newZZ = x12 * d5;
- } else {
- d5 = 1 / Math.sqrt(x24 + y24);
- newZX = y12 * d5;
- newZY = -x12 * d5;
- newZZ = 0;
- }
- }
- newYX = newZY * newXZ - newZZ * newXY;
- newYY = newZZ * newXX - newZX * newXZ;
- newYZ = newZX * newXY - newZY * newXX;
- _this.xX = newXX;
- _this.xY = newXY;
- _this.xZ = newXZ;
- _this.yX = newYX;
- _this.yY = newYY;
- _this.yZ = newYZ;
- _this.zX = newZX;
- _this.zY = newZY;
- _this.zZ = newZZ;
- var angError;
- var angErrorX;
- var angErrorY;
- var angErrorZ;
- angErrorX = this._basisX1Y * this._basisX2Z - this._basisX1Z * this._basisX2Y;
- angErrorY = this._basisX1Z * this._basisX2X - this._basisX1X * this._basisX2Z;
- angErrorZ = this._basisX1X * this._basisX2Y - this._basisX1Y * this._basisX2X;
- var cos1 = this._basisX1X * this._basisX2X + this._basisX1Y * this._basisX2Y + this._basisX1Z * this._basisX2Z;
- var theta1 = cos1 <= -1 ? 3.14159265358979 : cos1 >= 1 ? 0 : Math.acos(cos1);
- var l3 = angErrorX * angErrorX + angErrorY * angErrorY + angErrorZ * angErrorZ;
- if(l3 > 0) {
- l3 = 1 / Math.sqrt(l3);
- }
- angErrorX *= l3;
- angErrorY *= l3;
- angErrorZ *= l3;
- angErrorX *= theta1;
- angErrorY *= theta1;
- angErrorZ *= theta1;
- this.angularErrorY = angErrorX * this._basis.yX + angErrorY * this._basis.yY + angErrorZ * this._basis.yZ;
- this.angularErrorZ = angErrorX * this._basis.zX + angErrorY * this._basis.zY + angErrorZ * this._basis.zZ;
- var perpCross;
- var perpCrossX;
- var perpCrossY;
- var perpCrossZ;
- perpCrossX = this._basisY1Y * this._basisY2Z - this._basisY1Z * this._basisY2Y;
- perpCrossY = this._basisY1Z * this._basisY2X - this._basisY1X * this._basisY2Z;
- perpCrossZ = this._basisY1X * this._basisY2Y - this._basisY1Y * this._basisY2X;
- cos1 = this._basisY1X * this._basisY2X + this._basisY1Y * this._basisY2Y + this._basisY1Z * this._basisY2Z;
- this.angle = cos1 <= -1 ? 3.14159265358979 : cos1 >= 1 ? 0 : Math.acos(cos1);
- if(perpCrossX * this._basis.xX + perpCrossY * this._basis.xY + perpCrossZ * this._basis.xZ < 0) {
- this.angle = -this.angle;
- }
- this.linearErrorX = this._anchor2X - this._anchor1X;
- this.linearErrorY = this._anchor2Y - this._anchor1Y;
- this.linearErrorZ = this._anchor2Z - this._anchor1Z;
- }
- _getVelocitySolverInfo(timeStep,info) {
- super._getVelocitySolverInfo(timeStep,info);
- this.getInfo(info,timeStep,false);
- }
- _getPositionSolverInfo(info) {
- super._getPositionSolverInfo(info);
- this.getInfo(info,null,true);
- }
- getAxis1() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._basisX1X;
- v1.y = this._basisX1Y;
- v1.z = this._basisX1Z;
- return v;
- }
- getAxis2() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._basisX2X;
- v1.y = this._basisX2Y;
- v1.z = this._basisX2Z;
- return v;
- }
- getAxis1To(axis) {
- var v = axis;
- v.x = this._basisX1X;
- v.y = this._basisX1Y;
- v.z = this._basisX1Z;
- }
- getAxis2To(axis) {
- var v = axis;
- v.x = this._basisX2X;
- v.y = this._basisX2Y;
- v.z = this._basisX2Z;
- }
- getLocalAxis1() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._localBasisX1X;
- v1.y = this._localBasisX1Y;
- v1.z = this._localBasisX1Z;
- return v;
- }
- getLocalAxis2() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._localBasisX2X;
- v1.y = this._localBasisX2Y;
- v1.z = this._localBasisX2Z;
- return v;
- }
- getLocalAxis1To(axis) {
- var v = axis;
- v.x = this._localBasisX1X;
- v.y = this._localBasisX1Y;
- v.z = this._localBasisX1Z;
- }
- getLocalAxis2To(axis) {
- var v = axis;
- v.x = this._localBasisX2X;
- v.y = this._localBasisX2Y;
- v.z = this._localBasisX2Z;
- }
- getSpringDamper() {
- return this._sd;
- }
- getLimitMotor() {
- return this._lm;
- }
- getAngle() {
- return this.angle;
- }
- }
- oimo.dynamics.constraint.joint.RevoluteJointConfig = class oimo_dynamics_constraint_joint_RevoluteJointConfig extends oimo.dynamics.constraint.joint.JointConfig {
- constructor() {
- super();
- this.localAxis1 = new oimo.common.Vec3(1,0,0);
- this.localAxis2 = new oimo.common.Vec3(1,0,0);
- this.springDamper = new oimo.dynamics.constraint.joint.SpringDamper();
- this.limitMotor = new oimo.dynamics.constraint.joint.RotationalLimitMotor();
- }
- init(rigidBody1,rigidBody2,worldAnchor,worldAxis) {
- this._init(rigidBody1,rigidBody2,worldAnchor);
- var v;
- var vX;
- var vY;
- var vZ;
- var v1 = worldAxis;
- vX = v1.x;
- vY = v1.y;
- vZ = v1.z;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = rigidBody1._transform._rotation00 * vX + rigidBody1._transform._rotation10 * vY + rigidBody1._transform._rotation20 * vZ;
- __tmp__Y = rigidBody1._transform._rotation01 * vX + rigidBody1._transform._rotation11 * vY + rigidBody1._transform._rotation21 * vZ;
- __tmp__Z = rigidBody1._transform._rotation02 * vX + rigidBody1._transform._rotation12 * vY + rigidBody1._transform._rotation22 * vZ;
- vX = __tmp__X;
- vY = __tmp__Y;
- vZ = __tmp__Z;
- var v2 = this.localAxis1;
- v2.x = vX;
- v2.y = vY;
- v2.z = vZ;
- var v3;
- var vX1;
- var vY1;
- var vZ1;
- var v4 = worldAxis;
- vX1 = v4.x;
- vY1 = v4.y;
- vZ1 = v4.z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = rigidBody2._transform._rotation00 * vX1 + rigidBody2._transform._rotation10 * vY1 + rigidBody2._transform._rotation20 * vZ1;
- __tmp__Y1 = rigidBody2._transform._rotation01 * vX1 + rigidBody2._transform._rotation11 * vY1 + rigidBody2._transform._rotation21 * vZ1;
- __tmp__Z1 = rigidBody2._transform._rotation02 * vX1 + rigidBody2._transform._rotation12 * vY1 + rigidBody2._transform._rotation22 * vZ1;
- vX1 = __tmp__X1;
- vY1 = __tmp__Y1;
- vZ1 = __tmp__Z1;
- var v5 = this.localAxis2;
- v5.x = vX1;
- v5.y = vY1;
- v5.z = vZ1;
- return this;
- }
- }
- oimo.dynamics.constraint.joint.RotationalLimitMotor = class oimo_dynamics_constraint_joint_RotationalLimitMotor {
- constructor() {
- this.lowerLimit = 1;
- this.upperLimit = 0;
- this.motorTorque = 0;
- }
- setLimits(lower,upper) {
- this.lowerLimit = lower;
- this.upperLimit = upper;
- return this;
- }
- setMotor(speed,torque) {
- this.motorSpeed = speed;
- this.motorTorque = torque;
- return this;
- }
- clone() {
- var lm = new oimo.dynamics.constraint.joint.RotationalLimitMotor();
- lm.lowerLimit = this.lowerLimit;
- lm.upperLimit = this.upperLimit;
- lm.motorSpeed = this.motorSpeed;
- lm.motorTorque = this.motorTorque;
- return lm;
- }
- }
- oimo.dynamics.constraint.joint.SphericalJoint = class oimo_dynamics_constraint_joint_SphericalJoint extends oimo.dynamics.constraint.joint.Joint {
- constructor(config) {
- super(config,0);
- this._sd = config.springDamper.clone();
- }
- getInfo(info,timeStep,isPositionPart) {
- if(this._sd.frequency > 0 && isPositionPart) {
- return;
- }
- var error;
- var errorX;
- var errorY;
- var errorZ;
- errorX = this._anchor2X - this._anchor1X;
- errorY = this._anchor2Y - this._anchor1Y;
- errorZ = this._anchor2Z - this._anchor1Z;
- var cfm;
- var erp;
- if(this._sd.frequency > 0) {
- var omega = 6.28318530717958 * this._sd.frequency;
- var zeta = this._sd.dampingRatio;
- if(zeta < oimo.common.Setting.minSpringDamperDampingRatio) {
- zeta = oimo.common.Setting.minSpringDamperDampingRatio;
- }
- var h = timeStep.dt;
- var c = 2 * zeta * omega;
- var k = omega * omega;
- if(this._sd.useSymplecticEuler) {
- cfm = 1 / (h * c);
- erp = k / c;
- } else {
- cfm = 1 / (h * (h * k + c));
- erp = k / (h * k + c);
- }
- cfm *= this._b1._invMass + this._b2._invMass;
- } else {
- cfm = 0;
- erp = this.getErp(timeStep,isPositionPart);
- }
- var linearRhs;
- var linearRhsX;
- var linearRhsY;
- var linearRhsZ;
- linearRhsX = errorX * erp;
- linearRhsY = errorY * erp;
- linearRhsZ = errorZ * erp;
- var linRhsX = linearRhsX;
- var linRhsY = linearRhsY;
- var linRhsZ = linearRhsZ;
- var crossR1;
- var crossR100;
- var crossR101;
- var crossR102;
- var crossR110;
- var crossR111;
- var crossR112;
- var crossR120;
- var crossR121;
- var crossR122;
- var crossR2;
- var crossR200;
- var crossR201;
- var crossR202;
- var crossR210;
- var crossR211;
- var crossR212;
- var crossR220;
- var crossR221;
- var crossR222;
- crossR100 = 0;
- crossR101 = -this._relativeAnchor1Z;
- crossR102 = this._relativeAnchor1Y;
- crossR110 = this._relativeAnchor1Z;
- crossR111 = 0;
- crossR112 = -this._relativeAnchor1X;
- crossR120 = -this._relativeAnchor1Y;
- crossR121 = this._relativeAnchor1X;
- crossR122 = 0;
- crossR200 = 0;
- crossR201 = -this._relativeAnchor2Z;
- crossR202 = this._relativeAnchor2Y;
- crossR210 = this._relativeAnchor2Z;
- crossR211 = 0;
- crossR212 = -this._relativeAnchor2X;
- crossR220 = -this._relativeAnchor2Y;
- crossR221 = this._relativeAnchor2X;
- crossR222 = 0;
- crossR100 = -crossR100;
- crossR101 = -crossR101;
- crossR102 = -crossR102;
- crossR110 = -crossR110;
- crossR111 = -crossR111;
- crossR112 = -crossR112;
- crossR120 = -crossR120;
- crossR121 = -crossR121;
- crossR122 = -crossR122;
- crossR200 = -crossR200;
- crossR201 = -crossR201;
- crossR202 = -crossR202;
- crossR210 = -crossR210;
- crossR211 = -crossR211;
- crossR212 = -crossR212;
- crossR220 = -crossR220;
- crossR221 = -crossR221;
- crossR222 = -crossR222;
- var impulse = this._impulses[0];
- var row = info.rows[info.numRows++];
- var _this = row.jacobian;
- _this.lin1X = 0;
- _this.lin1Y = 0;
- _this.lin1Z = 0;
- _this.lin2X = 0;
- _this.lin2Y = 0;
- _this.lin2Z = 0;
- _this.ang1X = 0;
- _this.ang1Y = 0;
- _this.ang1Z = 0;
- _this.ang2X = 0;
- _this.ang2Y = 0;
- _this.ang2Z = 0;
- row.rhs = 0;
- row.cfm = 0;
- row.minImpulse = 0;
- row.maxImpulse = 0;
- row.motorSpeed = 0;
- row.motorMaxImpulse = 0;
- row.impulse = null;
- row.impulse = impulse;
- var row1 = row;
- row1.rhs = linRhsX;
- row1.cfm = cfm;
- row1.minImpulse = -1e65536;
- row1.maxImpulse = 1e65536;
- var j = row1.jacobian;
- j.lin1X = 1;
- j.lin1Y = 0;
- j.lin1Z = 0;
- j.lin2X = 1;
- j.lin2Y = 0;
- j.lin2Z = 0;
- j.ang1X = crossR100;
- j.ang1Y = crossR101;
- j.ang1Z = crossR102;
- j.ang2X = crossR200;
- j.ang2Y = crossR201;
- j.ang2Z = crossR202;
- var impulse1 = this._impulses[1];
- var row2 = info.rows[info.numRows++];
- var _this1 = row2.jacobian;
- _this1.lin1X = 0;
- _this1.lin1Y = 0;
- _this1.lin1Z = 0;
- _this1.lin2X = 0;
- _this1.lin2Y = 0;
- _this1.lin2Z = 0;
- _this1.ang1X = 0;
- _this1.ang1Y = 0;
- _this1.ang1Z = 0;
- _this1.ang2X = 0;
- _this1.ang2Y = 0;
- _this1.ang2Z = 0;
- row2.rhs = 0;
- row2.cfm = 0;
- row2.minImpulse = 0;
- row2.maxImpulse = 0;
- row2.motorSpeed = 0;
- row2.motorMaxImpulse = 0;
- row2.impulse = null;
- row2.impulse = impulse1;
- row1 = row2;
- row1.rhs = linRhsY;
- row1.cfm = cfm;
- row1.minImpulse = -1e65536;
- row1.maxImpulse = 1e65536;
- j = row1.jacobian;
- j.lin1X = 0;
- j.lin1Y = 1;
- j.lin1Z = 0;
- j.lin2X = 0;
- j.lin2Y = 1;
- j.lin2Z = 0;
- j.ang1X = crossR110;
- j.ang1Y = crossR111;
- j.ang1Z = crossR112;
- j.ang2X = crossR210;
- j.ang2Y = crossR211;
- j.ang2Z = crossR212;
- var impulse2 = this._impulses[2];
- var row3 = info.rows[info.numRows++];
- var _this2 = row3.jacobian;
- _this2.lin1X = 0;
- _this2.lin1Y = 0;
- _this2.lin1Z = 0;
- _this2.lin2X = 0;
- _this2.lin2Y = 0;
- _this2.lin2Z = 0;
- _this2.ang1X = 0;
- _this2.ang1Y = 0;
- _this2.ang1Z = 0;
- _this2.ang2X = 0;
- _this2.ang2Y = 0;
- _this2.ang2Z = 0;
- row3.rhs = 0;
- row3.cfm = 0;
- row3.minImpulse = 0;
- row3.maxImpulse = 0;
- row3.motorSpeed = 0;
- row3.motorMaxImpulse = 0;
- row3.impulse = null;
- row3.impulse = impulse2;
- row1 = row3;
- row1.rhs = linRhsZ;
- row1.cfm = cfm;
- row1.minImpulse = -1e65536;
- row1.maxImpulse = 1e65536;
- j = row1.jacobian;
- j.lin1X = 0;
- j.lin1Y = 0;
- j.lin1Z = 1;
- j.lin2X = 0;
- j.lin2Y = 0;
- j.lin2Z = 1;
- j.ang1X = crossR120;
- j.ang1Y = crossR121;
- j.ang1Z = crossR122;
- j.ang2X = crossR220;
- j.ang2Y = crossR221;
- j.ang2Z = crossR222;
- }
- _getVelocitySolverInfo(timeStep,info) {
- super._getVelocitySolverInfo(timeStep,info);
- this.getInfo(info,timeStep,false);
- }
- _getPositionSolverInfo(info) {
- super._getPositionSolverInfo(info);
- this.getInfo(info,null,true);
- }
- getSpringDamper() {
- return this._sd;
- }
- }
- oimo.dynamics.constraint.joint.SphericalJointConfig = class oimo_dynamics_constraint_joint_SphericalJointConfig extends oimo.dynamics.constraint.joint.JointConfig {
- constructor() {
- super();
- this.springDamper = new oimo.dynamics.constraint.joint.SpringDamper();
- }
- init(rigidBody1,rigidBody2,worldAnchor) {
- this._init(rigidBody1,rigidBody2,worldAnchor);
- return this;
- }
- }
- oimo.dynamics.constraint.joint.SpringDamper = class oimo_dynamics_constraint_joint_SpringDamper {
- constructor() {
- this.frequency = 0;
- this.dampingRatio = 0;
- this.useSymplecticEuler = false;
- }
- setSpring(frequency,dampingRatio) {
- this.frequency = frequency;
- this.dampingRatio = dampingRatio;
- return this;
- }
- setSymplecticEuler(useSymplecticEuler) {
- this.useSymplecticEuler = useSymplecticEuler;
- return this;
- }
- clone() {
- var sd = new oimo.dynamics.constraint.joint.SpringDamper();
- sd.frequency = this.frequency;
- sd.dampingRatio = this.dampingRatio;
- sd.useSymplecticEuler = this.useSymplecticEuler;
- return sd;
- }
- }
- oimo.dynamics.constraint.joint.TranslationalLimitMotor = class oimo_dynamics_constraint_joint_TranslationalLimitMotor {
- constructor() {
- this.lowerLimit = 1;
- this.upperLimit = 0;
- this.motorForce = 0;
- }
- setLimits(lower,upper) {
- this.lowerLimit = lower;
- this.upperLimit = upper;
- return this;
- }
- setMotor(speed,force) {
- this.motorSpeed = speed;
- this.motorForce = force;
- return this;
- }
- clone() {
- var lm = new oimo.dynamics.constraint.joint.TranslationalLimitMotor();
- lm.lowerLimit = this.lowerLimit;
- lm.upperLimit = this.upperLimit;
- lm.motorSpeed = this.motorSpeed;
- lm.motorForce = this.motorForce;
- return lm;
- }
- }
- oimo.dynamics.constraint.joint.UniversalJoint = class oimo_dynamics_constraint_joint_UniversalJoint extends oimo.dynamics.constraint.joint.Joint {
- constructor(config) {
- super(config,oimo.dynamics.constraint.joint.JointType.UNIVERSAL);
- var v = config.localAxis1;
- this._localBasisX1X = v.x;
- this._localBasisX1Y = v.y;
- this._localBasisX1Z = v.z;
- var v1 = config.localAxis2;
- this._localBasisZ2X = v1.x;
- this._localBasisZ2Y = v1.y;
- this._localBasisZ2Z = v1.z;
- this.buildLocalBasesFromX1Z2();
- this._angleX = 0;
- this._angleY = 0;
- this._angleZ = 0;
- this.xSingular = false;
- this.ySingular = false;
- this.zSingular = false;
- this._sd1 = config.springDamper1.clone();
- this._sd2 = config.springDamper2.clone();
- this._lm1 = config.limitMotor1.clone();
- this._lm2 = config.limitMotor2.clone();
- }
- getInfo(info,timeStep,isPositionPart) {
- var erp = this.getErp(timeStep,isPositionPart);
- var linearRhs;
- var linearRhsX;
- var linearRhsY;
- var linearRhsZ;
- linearRhsX = this.linearErrorX * erp;
- linearRhsY = this.linearErrorY * erp;
- linearRhsZ = this.linearErrorZ * erp;
- var linRhsX = linearRhsX;
- var linRhsY = linearRhsY;
- var linRhsZ = linearRhsZ;
- var angRhsY = this._angleY * erp;
- var crossR1;
- var crossR100;
- var crossR101;
- var crossR102;
- var crossR110;
- var crossR111;
- var crossR112;
- var crossR120;
- var crossR121;
- var crossR122;
- var crossR2;
- var crossR200;
- var crossR201;
- var crossR202;
- var crossR210;
- var crossR211;
- var crossR212;
- var crossR220;
- var crossR221;
- var crossR222;
- crossR100 = 0;
- crossR101 = -this._relativeAnchor1Z;
- crossR102 = this._relativeAnchor1Y;
- crossR110 = this._relativeAnchor1Z;
- crossR111 = 0;
- crossR112 = -this._relativeAnchor1X;
- crossR120 = -this._relativeAnchor1Y;
- crossR121 = this._relativeAnchor1X;
- crossR122 = 0;
- crossR200 = 0;
- crossR201 = -this._relativeAnchor2Z;
- crossR202 = this._relativeAnchor2Y;
- crossR210 = this._relativeAnchor2Z;
- crossR211 = 0;
- crossR212 = -this._relativeAnchor2X;
- crossR220 = -this._relativeAnchor2Y;
- crossR221 = this._relativeAnchor2X;
- crossR222 = 0;
- crossR100 = -crossR100;
- crossR101 = -crossR101;
- crossR102 = -crossR102;
- crossR110 = -crossR110;
- crossR111 = -crossR111;
- crossR112 = -crossR112;
- crossR120 = -crossR120;
- crossR121 = -crossR121;
- crossR122 = -crossR122;
- crossR200 = -crossR200;
- crossR201 = -crossR201;
- crossR202 = -crossR202;
- crossR210 = -crossR210;
- crossR211 = -crossR211;
- crossR212 = -crossR212;
- crossR220 = -crossR220;
- crossR221 = -crossR221;
- crossR222 = -crossR222;
- var motorMassX = this.computeEffectiveInertiaMoment(this._axisXX,this._axisXY,this._axisXZ);
- var motorMassZ = this.computeEffectiveInertiaMoment(this._axisZX,this._axisZY,this._axisZZ);
- var impulse = this._impulses[0];
- var row = info.rows[info.numRows++];
- var _this = row.jacobian;
- _this.lin1X = 0;
- _this.lin1Y = 0;
- _this.lin1Z = 0;
- _this.lin2X = 0;
- _this.lin2Y = 0;
- _this.lin2Z = 0;
- _this.ang1X = 0;
- _this.ang1Y = 0;
- _this.ang1Z = 0;
- _this.ang2X = 0;
- _this.ang2Y = 0;
- _this.ang2Z = 0;
- row.rhs = 0;
- row.cfm = 0;
- row.minImpulse = 0;
- row.maxImpulse = 0;
- row.motorSpeed = 0;
- row.motorMaxImpulse = 0;
- row.impulse = null;
- row.impulse = impulse;
- var row1 = row;
- row1.rhs = linRhsX;
- row1.cfm = 0;
- row1.minImpulse = -1e65536;
- row1.maxImpulse = 1e65536;
- var j = row1.jacobian;
- j.lin1X = 1;
- j.lin1Y = 0;
- j.lin1Z = 0;
- j.lin2X = 1;
- j.lin2Y = 0;
- j.lin2Z = 0;
- j.ang1X = crossR100;
- j.ang1Y = crossR101;
- j.ang1Z = crossR102;
- j.ang2X = crossR200;
- j.ang2Y = crossR201;
- j.ang2Z = crossR202;
- var impulse1 = this._impulses[1];
- var row2 = info.rows[info.numRows++];
- var _this1 = row2.jacobian;
- _this1.lin1X = 0;
- _this1.lin1Y = 0;
- _this1.lin1Z = 0;
- _this1.lin2X = 0;
- _this1.lin2Y = 0;
- _this1.lin2Z = 0;
- _this1.ang1X = 0;
- _this1.ang1Y = 0;
- _this1.ang1Z = 0;
- _this1.ang2X = 0;
- _this1.ang2Y = 0;
- _this1.ang2Z = 0;
- row2.rhs = 0;
- row2.cfm = 0;
- row2.minImpulse = 0;
- row2.maxImpulse = 0;
- row2.motorSpeed = 0;
- row2.motorMaxImpulse = 0;
- row2.impulse = null;
- row2.impulse = impulse1;
- row1 = row2;
- row1.rhs = linRhsY;
- row1.cfm = 0;
- row1.minImpulse = -1e65536;
- row1.maxImpulse = 1e65536;
- j = row1.jacobian;
- j.lin1X = 0;
- j.lin1Y = 1;
- j.lin1Z = 0;
- j.lin2X = 0;
- j.lin2Y = 1;
- j.lin2Z = 0;
- j.ang1X = crossR110;
- j.ang1Y = crossR111;
- j.ang1Z = crossR112;
- j.ang2X = crossR210;
- j.ang2Y = crossR211;
- j.ang2Z = crossR212;
- var impulse2 = this._impulses[2];
- var row3 = info.rows[info.numRows++];
- var _this2 = row3.jacobian;
- _this2.lin1X = 0;
- _this2.lin1Y = 0;
- _this2.lin1Z = 0;
- _this2.lin2X = 0;
- _this2.lin2Y = 0;
- _this2.lin2Z = 0;
- _this2.ang1X = 0;
- _this2.ang1Y = 0;
- _this2.ang1Z = 0;
- _this2.ang2X = 0;
- _this2.ang2Y = 0;
- _this2.ang2Z = 0;
- row3.rhs = 0;
- row3.cfm = 0;
- row3.minImpulse = 0;
- row3.maxImpulse = 0;
- row3.motorSpeed = 0;
- row3.motorMaxImpulse = 0;
- row3.impulse = null;
- row3.impulse = impulse2;
- row1 = row3;
- row1.rhs = linRhsZ;
- row1.cfm = 0;
- row1.minImpulse = -1e65536;
- row1.maxImpulse = 1e65536;
- j = row1.jacobian;
- j.lin1X = 0;
- j.lin1Y = 0;
- j.lin1Z = 1;
- j.lin2X = 0;
- j.lin2Y = 0;
- j.lin2Z = 1;
- j.ang1X = crossR120;
- j.ang1Y = crossR121;
- j.ang1Z = crossR122;
- j.ang2X = crossR220;
- j.ang2Y = crossR221;
- j.ang2Z = crossR222;
- if(!this.xSingular && (this._sd1.frequency <= 0 || !isPositionPart)) {
- var impulse3 = this._impulses[3];
- var row4 = info.rows[info.numRows++];
- var _this3 = row4.jacobian;
- _this3.lin1X = 0;
- _this3.lin1Y = 0;
- _this3.lin1Z = 0;
- _this3.lin2X = 0;
- _this3.lin2Y = 0;
- _this3.lin2Z = 0;
- _this3.ang1X = 0;
- _this3.ang1Y = 0;
- _this3.ang1Z = 0;
- _this3.ang2X = 0;
- _this3.ang2Y = 0;
- _this3.ang2Z = 0;
- row4.rhs = 0;
- row4.cfm = 0;
- row4.minImpulse = 0;
- row4.maxImpulse = 0;
- row4.motorSpeed = 0;
- row4.motorMaxImpulse = 0;
- row4.impulse = null;
- row4.impulse = impulse3;
- row1 = row4;
- this.setSolverInfoRowAngular(row1,this._angleX,this._lm1,motorMassX,this._sd1,timeStep,isPositionPart);
- j = row1.jacobian;
- j.ang1X = this._axisXX;
- j.ang1Y = this._axisXY;
- j.ang1Z = this._axisXZ;
- j.ang2X = this._axisXX;
- j.ang2Y = this._axisXY;
- j.ang2Z = this._axisXZ;
- }
- if(!this.ySingular) {
- var impulse4 = this._impulses[4];
- var row5 = info.rows[info.numRows++];
- var _this4 = row5.jacobian;
- _this4.lin1X = 0;
- _this4.lin1Y = 0;
- _this4.lin1Z = 0;
- _this4.lin2X = 0;
- _this4.lin2Y = 0;
- _this4.lin2Z = 0;
- _this4.ang1X = 0;
- _this4.ang1Y = 0;
- _this4.ang1Z = 0;
- _this4.ang2X = 0;
- _this4.ang2Y = 0;
- _this4.ang2Z = 0;
- row5.rhs = 0;
- row5.cfm = 0;
- row5.minImpulse = 0;
- row5.maxImpulse = 0;
- row5.motorSpeed = 0;
- row5.motorMaxImpulse = 0;
- row5.impulse = null;
- row5.impulse = impulse4;
- row1 = row5;
- row1.rhs = angRhsY;
- row1.cfm = 0;
- row1.minImpulse = -1e65536;
- row1.maxImpulse = 1e65536;
- j = row1.jacobian;
- j.ang1X = this._axisYX;
- j.ang1Y = this._axisYY;
- j.ang1Z = this._axisYZ;
- j.ang2X = this._axisYX;
- j.ang2Y = this._axisYY;
- j.ang2Z = this._axisYZ;
- }
- if(!this.zSingular && (this._sd2.frequency <= 0 || !isPositionPart)) {
- var impulse5 = this._impulses[5];
- var row6 = info.rows[info.numRows++];
- var _this5 = row6.jacobian;
- _this5.lin1X = 0;
- _this5.lin1Y = 0;
- _this5.lin1Z = 0;
- _this5.lin2X = 0;
- _this5.lin2Y = 0;
- _this5.lin2Z = 0;
- _this5.ang1X = 0;
- _this5.ang1Y = 0;
- _this5.ang1Z = 0;
- _this5.ang2X = 0;
- _this5.ang2Y = 0;
- _this5.ang2Z = 0;
- row6.rhs = 0;
- row6.cfm = 0;
- row6.minImpulse = 0;
- row6.maxImpulse = 0;
- row6.motorSpeed = 0;
- row6.motorMaxImpulse = 0;
- row6.impulse = null;
- row6.impulse = impulse5;
- row1 = row6;
- this.setSolverInfoRowAngular(row1,this._angleZ,this._lm2,motorMassZ,this._sd2,timeStep,isPositionPart);
- j = row1.jacobian;
- j.ang1X = this._axisZX;
- j.ang1Y = this._axisZY;
- j.ang1Z = this._axisZZ;
- j.ang2X = this._axisZX;
- j.ang2Y = this._axisZY;
- j.ang2Z = this._axisZZ;
- }
- }
- _syncAnchors() {
- super._syncAnchors();
- var rot1;
- var rot100;
- var rot101;
- var rot102;
- var rot110;
- var rot111;
- var rot112;
- var rot120;
- var rot121;
- var rot122;
- var rot2;
- var rot200;
- var rot201;
- var rot202;
- var rot210;
- var rot211;
- var rot212;
- var rot220;
- var rot221;
- var rot222;
- rot100 = this._basisX1X;
- rot101 = this._basisY1X;
- rot102 = this._basisZ1X;
- rot110 = this._basisX1Y;
- rot111 = this._basisY1Y;
- rot112 = this._basisZ1Y;
- rot120 = this._basisX1Z;
- rot121 = this._basisY1Z;
- rot122 = this._basisZ1Z;
- rot200 = this._basisX2X;
- rot201 = this._basisY2X;
- rot202 = this._basisZ2X;
- rot210 = this._basisX2Y;
- rot211 = this._basisY2Y;
- rot212 = this._basisZ2Y;
- rot220 = this._basisX2Z;
- rot221 = this._basisY2Z;
- rot222 = this._basisZ2Z;
- var relRot;
- var relRot00;
- var relRot01;
- var relRot02;
- var relRot10;
- var relRot11;
- var relRot12;
- var relRot20;
- var relRot21;
- var relRot22;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = rot100 * rot200 + rot110 * rot210 + rot120 * rot220;
- __tmp__01 = rot100 * rot201 + rot110 * rot211 + rot120 * rot221;
- __tmp__02 = rot100 * rot202 + rot110 * rot212 + rot120 * rot222;
- __tmp__10 = rot101 * rot200 + rot111 * rot210 + rot121 * rot220;
- __tmp__11 = rot101 * rot201 + rot111 * rot211 + rot121 * rot221;
- __tmp__12 = rot101 * rot202 + rot111 * rot212 + rot121 * rot222;
- __tmp__20 = rot102 * rot200 + rot112 * rot210 + rot122 * rot220;
- __tmp__21 = rot102 * rot201 + rot112 * rot211 + rot122 * rot221;
- __tmp__22 = rot102 * rot202 + rot112 * rot212 + rot122 * rot222;
- relRot00 = __tmp__00;
- relRot01 = __tmp__01;
- relRot02 = __tmp__02;
- relRot10 = __tmp__10;
- relRot11 = __tmp__11;
- relRot12 = __tmp__12;
- relRot20 = __tmp__20;
- relRot21 = __tmp__21;
- relRot22 = __tmp__22;
- var angleAxisX;
- var angleAxisXX;
- var angleAxisXY;
- var angleAxisXZ;
- var angleAxisY;
- var angleAxisYX;
- var angleAxisYY;
- var angleAxisYZ;
- var angleAxisZ;
- var angleAxisZX;
- var angleAxisZY;
- var angleAxisZZ;
- angleAxisXX = this._basisX1X;
- angleAxisXY = this._basisX1Y;
- angleAxisXZ = this._basisX1Z;
- angleAxisZX = this._basisZ2X;
- angleAxisZY = this._basisZ2Y;
- angleAxisZZ = this._basisZ2Z;
- angleAxisYX = angleAxisZY * angleAxisXZ - angleAxisZZ * angleAxisXY;
- angleAxisYY = angleAxisZZ * angleAxisXX - angleAxisZX * angleAxisXZ;
- angleAxisYZ = angleAxisZX * angleAxisXY - angleAxisZY * angleAxisXX;
- this._axisXX = angleAxisYY * angleAxisZZ - angleAxisYZ * angleAxisZY;
- this._axisXY = angleAxisYZ * angleAxisZX - angleAxisYX * angleAxisZZ;
- this._axisXZ = angleAxisYX * angleAxisZY - angleAxisYY * angleAxisZX;
- this._axisYX = angleAxisYX;
- this._axisYY = angleAxisYY;
- this._axisYZ = angleAxisYZ;
- this._axisZX = angleAxisXY * angleAxisYZ - angleAxisXZ * angleAxisYY;
- this._axisZY = angleAxisXZ * angleAxisYX - angleAxisXX * angleAxisYZ;
- this._axisZZ = angleAxisXX * angleAxisYY - angleAxisXY * angleAxisYX;
- var l = this._axisXX * this._axisXX + this._axisXY * this._axisXY + this._axisXZ * this._axisXZ;
- if(l > 0) {
- l = 1 / Math.sqrt(l);
- }
- this._axisXX *= l;
- this._axisXY *= l;
- this._axisXZ *= l;
- var l1 = this._axisYX * this._axisYX + this._axisYY * this._axisYY + this._axisYZ * this._axisYZ;
- if(l1 > 0) {
- l1 = 1 / Math.sqrt(l1);
- }
- this._axisYX *= l1;
- this._axisYY *= l1;
- this._axisYZ *= l1;
- var l2 = this._axisZX * this._axisZX + this._axisZY * this._axisZY + this._axisZZ * this._axisZZ;
- if(l2 > 0) {
- l2 = 1 / Math.sqrt(l2);
- }
- this._axisZX *= l2;
- this._axisZY *= l2;
- this._axisZZ *= l2;
- this.xSingular = this._axisXX * this._axisXX + this._axisXY * this._axisXY + this._axisXZ * this._axisXZ == 0;
- this.ySingular = this._axisYX * this._axisYX + this._axisYY * this._axisYY + this._axisYZ * this._axisYZ == 0;
- this.zSingular = this._axisZX * this._axisZX + this._axisZY * this._axisZY + this._axisZZ * this._axisZZ == 0;
- var rot11;
- var rot1001;
- var rot1011;
- var rot1021;
- var rot1101;
- var rot1111;
- var rot1121;
- var rot1201;
- var rot1211;
- var rot1221;
- var rot21;
- var rot2001;
- var rot2011;
- var rot2021;
- var rot2101;
- var rot2111;
- var rot2121;
- var rot2201;
- var rot2211;
- var rot2221;
- rot1001 = this._basisX1X;
- rot1011 = this._basisY1X;
- rot1021 = this._basisZ1X;
- rot1101 = this._basisX1Y;
- rot1111 = this._basisY1Y;
- rot1121 = this._basisZ1Y;
- rot1201 = this._basisX1Z;
- rot1211 = this._basisY1Z;
- rot1221 = this._basisZ1Z;
- rot2001 = this._basisX2X;
- rot2011 = this._basisY2X;
- rot2021 = this._basisZ2X;
- rot2101 = this._basisX2Y;
- rot2111 = this._basisY2Y;
- rot2121 = this._basisZ2Y;
- rot2201 = this._basisX2Z;
- rot2211 = this._basisY2Z;
- rot2221 = this._basisZ2Z;
- var relRot1;
- var relRot001;
- var relRot011;
- var relRot021;
- var relRot101;
- var relRot111;
- var relRot121;
- var relRot201;
- var relRot211;
- var relRot221;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = rot1001 * rot2001 + rot1101 * rot2101 + rot1201 * rot2201;
- __tmp__011 = rot1001 * rot2011 + rot1101 * rot2111 + rot1201 * rot2211;
- __tmp__021 = rot1001 * rot2021 + rot1101 * rot2121 + rot1201 * rot2221;
- __tmp__101 = rot1011 * rot2001 + rot1111 * rot2101 + rot1211 * rot2201;
- __tmp__111 = rot1011 * rot2011 + rot1111 * rot2111 + rot1211 * rot2211;
- __tmp__121 = rot1011 * rot2021 + rot1111 * rot2121 + rot1211 * rot2221;
- __tmp__201 = rot1021 * rot2001 + rot1121 * rot2101 + rot1221 * rot2201;
- __tmp__211 = rot1021 * rot2011 + rot1121 * rot2111 + rot1221 * rot2211;
- __tmp__221 = rot1021 * rot2021 + rot1121 * rot2121 + rot1221 * rot2221;
- relRot001 = __tmp__001;
- relRot011 = __tmp__011;
- relRot021 = __tmp__021;
- relRot101 = __tmp__101;
- relRot111 = __tmp__111;
- relRot121 = __tmp__121;
- relRot201 = __tmp__201;
- relRot211 = __tmp__211;
- relRot221 = __tmp__221;
- var angles;
- var anglesX;
- var anglesY;
- var anglesZ;
- var sy = relRot021;
- if(sy <= -1) {
- var xSubZ = Math.atan2(relRot211,relRot111);
- anglesX = xSubZ * 0.5;
- anglesY = -1.570796326794895;
- anglesZ = -xSubZ * 0.5;
- } else if(sy >= 1) {
- var xAddZ = Math.atan2(relRot211,relRot111);
- anglesX = xAddZ * 0.5;
- anglesY = 1.570796326794895;
- anglesZ = xAddZ * 0.5;
- } else {
- var y = Math.asin(sy);
- var x = Math.atan2(-relRot121,relRot221);
- var z = Math.atan2(-relRot011,relRot001);
- anglesX = x;
- anglesY = y;
- anglesZ = z;
- }
- this._angleX = anglesX;
- this._angleY = anglesY;
- this._angleZ = anglesZ;
- this.linearErrorX = this._anchor2X - this._anchor1X;
- this.linearErrorY = this._anchor2Y - this._anchor1Y;
- this.linearErrorZ = this._anchor2Z - this._anchor1Z;
- }
- _getVelocitySolverInfo(timeStep,info) {
- super._getVelocitySolverInfo(timeStep,info);
- this.getInfo(info,timeStep,false);
- }
- _getPositionSolverInfo(info) {
- super._getPositionSolverInfo(info);
- this.getInfo(info,null,true);
- }
- getAxis1() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._basisX1X;
- v1.y = this._basisX1Y;
- v1.z = this._basisX1Z;
- return v;
- }
- getAxis2() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._basisZ2X;
- v1.y = this._basisZ2Y;
- v1.z = this._basisZ2Z;
- return v;
- }
- getAxis1To(axis) {
- var v = axis;
- v.x = this._basisX1X;
- v.y = this._basisX1Y;
- v.z = this._basisX1Z;
- }
- getAxis2To(axis) {
- var v = axis;
- v.x = this._basisZ2X;
- v.y = this._basisZ2Y;
- v.z = this._basisZ2Z;
- }
- getLocalAxis1() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._localBasisX1X;
- v1.y = this._localBasisX1Y;
- v1.z = this._localBasisX1Z;
- return v;
- }
- getLocalAxis2() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._localBasisZ2X;
- v1.y = this._localBasisZ2Y;
- v1.z = this._localBasisZ2Z;
- return v;
- }
- getLocalAxis1To(axis) {
- var v = axis;
- v.x = this._localBasisX1X;
- v.y = this._localBasisX1Y;
- v.z = this._localBasisX1Z;
- }
- getLocalAxis2To(axis) {
- var v = axis;
- v.x = this._localBasisZ2X;
- v.y = this._localBasisZ2Y;
- v.z = this._localBasisZ2Z;
- }
- getSpringDamper1() {
- return this._sd1;
- }
- getSpringDamper2() {
- return this._sd2;
- }
- getLimitMotor1() {
- return this._lm1;
- }
- getLimitMotor2() {
- return this._lm2;
- }
- getAngle1() {
- return this._angleX;
- }
- getAngle2() {
- return this._angleZ;
- }
- }
- oimo.dynamics.constraint.joint.UniversalJointConfig = class oimo_dynamics_constraint_joint_UniversalJointConfig extends oimo.dynamics.constraint.joint.JointConfig {
- constructor() {
- super();
- this.localAxis1 = new oimo.common.Vec3(1,0,0);
- this.localAxis2 = new oimo.common.Vec3(1,0,0);
- this.springDamper1 = new oimo.dynamics.constraint.joint.SpringDamper();
- this.springDamper2 = new oimo.dynamics.constraint.joint.SpringDamper();
- this.limitMotor1 = new oimo.dynamics.constraint.joint.RotationalLimitMotor();
- this.limitMotor2 = new oimo.dynamics.constraint.joint.RotationalLimitMotor();
- }
- init(rigidBody1,rigidBody2,worldAnchor,worldAxis1,worldAxis2) {
- this._init(rigidBody1,rigidBody2,worldAnchor);
- var v;
- var vX;
- var vY;
- var vZ;
- var v1 = worldAxis1;
- vX = v1.x;
- vY = v1.y;
- vZ = v1.z;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = rigidBody1._transform._rotation00 * vX + rigidBody1._transform._rotation10 * vY + rigidBody1._transform._rotation20 * vZ;
- __tmp__Y = rigidBody1._transform._rotation01 * vX + rigidBody1._transform._rotation11 * vY + rigidBody1._transform._rotation21 * vZ;
- __tmp__Z = rigidBody1._transform._rotation02 * vX + rigidBody1._transform._rotation12 * vY + rigidBody1._transform._rotation22 * vZ;
- vX = __tmp__X;
- vY = __tmp__Y;
- vZ = __tmp__Z;
- var v2 = this.localAxis1;
- v2.x = vX;
- v2.y = vY;
- v2.z = vZ;
- var v3;
- var vX1;
- var vY1;
- var vZ1;
- var v4 = worldAxis2;
- vX1 = v4.x;
- vY1 = v4.y;
- vZ1 = v4.z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = rigidBody2._transform._rotation00 * vX1 + rigidBody2._transform._rotation10 * vY1 + rigidBody2._transform._rotation20 * vZ1;
- __tmp__Y1 = rigidBody2._transform._rotation01 * vX1 + rigidBody2._transform._rotation11 * vY1 + rigidBody2._transform._rotation21 * vZ1;
- __tmp__Z1 = rigidBody2._transform._rotation02 * vX1 + rigidBody2._transform._rotation12 * vY1 + rigidBody2._transform._rotation22 * vZ1;
- vX1 = __tmp__X1;
- vY1 = __tmp__Y1;
- vZ1 = __tmp__Z1;
- var v5 = this.localAxis2;
- v5.x = vX1;
- v5.y = vY1;
- v5.z = vZ1;
- return this;
- }
- }
- if(!oimo.dynamics.constraint.solver) oimo.dynamics.constraint.solver = {};
- oimo.dynamics.constraint.solver.ConstraintSolverType = class oimo_dynamics_constraint_solver_ConstraintSolverType {
- }
- if(!oimo.dynamics.constraint.solver.common) oimo.dynamics.constraint.solver.common = {};
- oimo.dynamics.constraint.solver.common.ContactSolverMassDataRow = class oimo_dynamics_constraint_solver_common_ContactSolverMassDataRow {
- constructor() {
- this.invMLinN1X = 0;
- this.invMLinN1Y = 0;
- this.invMLinN1Z = 0;
- this.invMLinN2X = 0;
- this.invMLinN2Y = 0;
- this.invMLinN2Z = 0;
- this.invMAngN1X = 0;
- this.invMAngN1Y = 0;
- this.invMAngN1Z = 0;
- this.invMAngN2X = 0;
- this.invMAngN2Y = 0;
- this.invMAngN2Z = 0;
- this.invMLinT1X = 0;
- this.invMLinT1Y = 0;
- this.invMLinT1Z = 0;
- this.invMLinT2X = 0;
- this.invMLinT2Y = 0;
- this.invMLinT2Z = 0;
- this.invMAngT1X = 0;
- this.invMAngT1Y = 0;
- this.invMAngT1Z = 0;
- this.invMAngT2X = 0;
- this.invMAngT2Y = 0;
- this.invMAngT2Z = 0;
- this.invMLinB1X = 0;
- this.invMLinB1Y = 0;
- this.invMLinB1Z = 0;
- this.invMLinB2X = 0;
- this.invMLinB2Y = 0;
- this.invMLinB2Z = 0;
- this.invMAngB1X = 0;
- this.invMAngB1Y = 0;
- this.invMAngB1Z = 0;
- this.invMAngB2X = 0;
- this.invMAngB2Y = 0;
- this.invMAngB2Z = 0;
- this.massN = 0;
- this.massTB00 = 0;
- this.massTB01 = 0;
- this.massTB10 = 0;
- this.massTB11 = 0;
- }
- }
- oimo.dynamics.constraint.solver.common.JointSolverMassDataRow = class oimo_dynamics_constraint_solver_common_JointSolverMassDataRow {
- constructor() {
- this.invMLin1X = 0;
- this.invMLin1Y = 0;
- this.invMLin1Z = 0;
- this.invMLin2X = 0;
- this.invMLin2Y = 0;
- this.invMLin2Z = 0;
- this.invMAng1X = 0;
- this.invMAng1Y = 0;
- this.invMAng1Z = 0;
- this.invMAng2X = 0;
- this.invMAng2Y = 0;
- this.invMAng2Z = 0;
- this.mass = 0;
- this.massWithoutCfm = 0;
- }
- }
- if(!oimo.dynamics.constraint.solver.direct) oimo.dynamics.constraint.solver.direct = {};
- oimo.dynamics.constraint.solver.direct.Boundary = class oimo_dynamics_constraint_solver_direct_Boundary {
- constructor(maxRows) {
- var this1 = new Array(maxRows);
- this.iBounded = this1;
- var this2 = new Array(maxRows);
- this.iUnbounded = this2;
- var this3 = new Array(maxRows);
- this.signs = this3;
- var this4 = new Array(maxRows);
- this.b = this4;
- this.numBounded = 0;
- this.numUnbounded = 0;
- this.matrixId = 0;
- }
- init(buildInfo) {
- this.numBounded = buildInfo.numBounded;
- var _g = 0;
- var _g1 = this.numBounded;
- while(_g < _g1) {
- var i = _g++;
- this.iBounded[i] = buildInfo.iBounded[i];
- this.signs[i] = buildInfo.signs[i];
- }
- this.numUnbounded = buildInfo.numUnbounded;
- this.matrixId = 0;
- var _g2 = 0;
- var _g3 = this.numUnbounded;
- while(_g2 < _g3) {
- var i1 = _g2++;
- var idx = buildInfo.iUnbounded[i1];
- this.iUnbounded[i1] = idx;
- this.matrixId |= 1 << idx;
- }
- }
- computeImpulses(info,mass,relVels,impulses,dImpulses,impulseFactor,noCheck) {
- var _g = 0;
- var _g1 = this.numUnbounded;
- while(_g < _g1) {
- var i = _g++;
- var idx = this.iUnbounded[i];
- var row = info.rows[idx];
- var relVel = relVels[idx];
- this.b[idx] = row.rhs * impulseFactor - relVel - row.cfm * impulses[idx];
- }
- var invMassWithoutCfm = mass._invMassWithoutCfm;
- var _g2 = 0;
- var _g3 = this.numBounded;
- while(_g2 < _g3) {
- var i1 = _g2++;
- var idx1 = this.iBounded[i1];
- var sign = this.signs[i1];
- var row1 = info.rows[idx1];
- var oldImpulse = impulses[idx1];
- var impulse = sign < 0 ? row1.minImpulse : sign > 0 ? row1.maxImpulse : 0;
- var dImpulse = impulse - oldImpulse;
- dImpulses[idx1] = dImpulse;
- if(dImpulse != 0) {
- var _g21 = 0;
- var _g31 = this.numUnbounded;
- while(_g21 < _g31) {
- var j = _g21++;
- var idx2 = this.iUnbounded[j];
- var dRelVel = invMassWithoutCfm[idx1][idx2] * dImpulse;
- var _g22 = idx2;
- var _g32 = this.b;
- _g32[_g22] = _g32[_g22] - dRelVel;
- }
- }
- }
- var indices = this.iUnbounded;
- var n = this.numUnbounded;
- var id = 0;
- var _g4 = 0;
- var _g11 = n;
- while(_g4 < _g11) {
- var i2 = _g4++;
- id |= 1 << indices[i2];
- }
- var massMatrix;
- if(mass._cacheComputed[id]) {
- massMatrix = mass._cachedSubmatrices[id];
- } else {
- mass.computeSubmatrix(id,indices,n);
- mass._cacheComputed[id] = true;
- massMatrix = mass._cachedSubmatrices[id];
- }
- var ok = true;
- var _g41 = 0;
- var _g5 = this.numUnbounded;
- while(_g41 < _g5) {
- var i3 = _g41++;
- var idx3 = this.iUnbounded[i3];
- var row2 = info.rows[idx3];
- var oldImpulse1 = impulses[idx3];
- var impulse1 = oldImpulse1;
- var _g42 = 0;
- var _g51 = this.numUnbounded;
- while(_g42 < _g51) {
- var j1 = _g42++;
- var idx21 = this.iUnbounded[j1];
- impulse1 += this.b[idx21] * massMatrix[i3][j1];
- }
- if(impulse1 < row2.minImpulse - oimo.common.Setting.directMlcpSolverEps || impulse1 > row2.maxImpulse + oimo.common.Setting.directMlcpSolverEps) {
- ok = false;
- break;
- }
- dImpulses[idx3] = impulse1 - oldImpulse1;
- }
- if(noCheck) {
- return true;
- }
- if(!ok) {
- return false;
- }
- var _g6 = 0;
- var _g7 = this.numBounded;
- while(_g6 < _g7) {
- var i4 = _g6++;
- var idx4 = this.iBounded[i4];
- var row3 = info.rows[idx4];
- var sign1 = this.signs[i4];
- var error = 0;
- var newImpulse = impulses[idx4] + dImpulses[idx4];
- var relVel1 = relVels[idx4];
- var _g61 = 0;
- var _g71 = info.numRows;
- while(_g61 < _g71) {
- var j2 = _g61++;
- relVel1 += invMassWithoutCfm[idx4][j2] * dImpulses[j2];
- }
- error = row3.rhs * impulseFactor - relVel1 - row3.cfm * newImpulse;
- if(sign1 < 0 && error > oimo.common.Setting.directMlcpSolverEps || sign1 > 0 && error < -oimo.common.Setting.directMlcpSolverEps) {
- ok = false;
- break;
- }
- }
- return ok;
- }
- }
- oimo.dynamics.constraint.solver.direct.BoundaryBuildInfo = class oimo_dynamics_constraint_solver_direct_BoundaryBuildInfo {
- constructor(size) {
- this.size = size;
- this.numBounded = 0;
- var this1 = new Array(size);
- this.iBounded = this1;
- var this2 = new Array(size);
- this.signs = this2;
- this.numUnbounded = 0;
- var this3 = new Array(size);
- this.iUnbounded = this3;
- }
- }
- oimo.dynamics.constraint.solver.direct.BoundaryBuilder = class oimo_dynamics_constraint_solver_direct_BoundaryBuilder {
- constructor(maxRows) {
- this.maxRows = maxRows;
- this.numBoundaries = 0;
- var this1 = new Array(1 << maxRows);
- this.boundaries = this1;
- this.bbInfo = new oimo.dynamics.constraint.solver.direct.BoundaryBuildInfo(maxRows);
- }
- buildBoundariesRecursive(info,i) {
- if(i == info.numRows) {
- if(this.boundaries[this.numBoundaries] == null) {
- this.boundaries[this.numBoundaries] = new oimo.dynamics.constraint.solver.direct.Boundary(this.maxRows);
- }
- this.boundaries[this.numBoundaries++].init(this.bbInfo);
- return;
- }
- var row = info.rows[i];
- var lowerLimitEnabled = row.minImpulse > -1e65536;
- var upperLimitEnabled = row.maxImpulse < 1e65536;
- var disabled = row.minImpulse == 0 && row.maxImpulse == 0;
- if(disabled) {
- var _this = this.bbInfo;
- _this.iBounded[_this.numBounded] = i;
- _this.signs[_this.numBounded] = 0;
- _this.numBounded++;
- this.buildBoundariesRecursive(info,i + 1);
- this.bbInfo.numBounded--;
- return;
- }
- var _this1 = this.bbInfo;
- _this1.iUnbounded[_this1.numUnbounded] = i;
- _this1.numUnbounded++;
- this.buildBoundariesRecursive(info,i + 1);
- this.bbInfo.numUnbounded--;
- if(lowerLimitEnabled) {
- var _this2 = this.bbInfo;
- _this2.iBounded[_this2.numBounded] = i;
- _this2.signs[_this2.numBounded] = -1;
- _this2.numBounded++;
- this.buildBoundariesRecursive(info,i + 1);
- this.bbInfo.numBounded--;
- }
- if(upperLimitEnabled) {
- var _this3 = this.bbInfo;
- _this3.iBounded[_this3.numBounded] = i;
- _this3.signs[_this3.numBounded] = 1;
- _this3.numBounded++;
- this.buildBoundariesRecursive(info,i + 1);
- this.bbInfo.numBounded--;
- }
- }
- buildBoundaries(info) {
- this.numBoundaries = 0;
- var _this = this.bbInfo;
- _this.numBounded = 0;
- _this.numUnbounded = 0;
- this.buildBoundariesRecursive(info,0);
- }
- }
- oimo.dynamics.constraint.solver.direct.BoundarySelector = class oimo_dynamics_constraint_solver_direct_BoundarySelector {
- constructor(n) {
- this.n = n;
- var this1 = new Array(n);
- this.indices = this1;
- var this2 = new Array(n);
- this.tmpIndices = this2;
- var _g = 0;
- var _g1 = n;
- while(_g < _g1) {
- var i = _g++;
- this.indices[i] = i;
- }
- }
- getIndex(i) {
- return this.indices[i];
- }
- select(index) {
- var i = 0;
- while(this.indices[i] != index) ++i;
- while(i > 0) {
- var tmp = this.indices[i];
- this.indices[i] = this.indices[i - 1];
- this.indices[i - 1] = tmp;
- --i;
- }
- }
- setSize(size) {
- var numSmaller = 0;
- var numGreater = 0;
- var _g = 0;
- var _g1 = this.n;
- while(_g < _g1) {
- var i = _g++;
- var idx = this.indices[i];
- if(idx < size) {
- this.tmpIndices[numSmaller] = idx;
- ++numSmaller;
- } else {
- this.tmpIndices[size + numGreater] = idx;
- ++numGreater;
- }
- }
- var tmp = this.indices;
- this.indices = this.tmpIndices;
- this.tmpIndices = tmp;
- }
- }
- oimo.dynamics.constraint.solver.direct.DirectJointConstraintSolver = class oimo_dynamics_constraint_solver_direct_DirectJointConstraintSolver extends oimo.dynamics.constraint.ConstraintSolver {
- constructor(joint) {
- super();
- this.joint = joint;
- this.info = new oimo.dynamics.constraint.info.joint.JointSolverInfo();
- var maxRows = oimo.common.Setting.maxJacobianRows;
- this.massMatrix = new oimo.dynamics.constraint.solver.direct.MassMatrix(maxRows);
- this.boundaryBuilder = new oimo.dynamics.constraint.solver.direct.BoundaryBuilder(maxRows);
- var this1 = new Array(maxRows);
- this.massData = this1;
- var _g = 0;
- var _g1 = this.massData.length;
- while(_g < _g1) {
- var i = _g++;
- this.massData[i] = new oimo.dynamics.constraint.solver.common.JointSolverMassDataRow();
- }
- var numMaxBoundaries = this.boundaryBuilder.boundaries.length;
- this.velBoundarySelector = new oimo.dynamics.constraint.solver.direct.BoundarySelector(numMaxBoundaries);
- this.posBoundarySelector = new oimo.dynamics.constraint.solver.direct.BoundarySelector(numMaxBoundaries);
- var this2 = new Array(maxRows);
- this.relVels = this2;
- var this3 = new Array(maxRows);
- this.impulses = this3;
- var this4 = new Array(maxRows);
- this.dImpulses = this4;
- var this5 = new Array(maxRows);
- this.dTotalImpulses = this5;
- var _g2 = 0;
- var _g3 = maxRows;
- while(_g2 < _g3) {
- var i1 = _g2++;
- this.relVels[i1] = 0;
- this.impulses[i1] = 0;
- this.dImpulses[i1] = 0;
- this.dTotalImpulses[i1] = 0;
- }
- }
- preSolveVelocity(timeStep) {
- this.joint._syncAnchors();
- this.joint._getVelocitySolverInfo(timeStep,this.info);
- this._b1 = this.info.b1;
- this._b2 = this.info.b2;
- this.massMatrix.computeInvMass(this.info,this.massData);
- var _this = this.boundaryBuilder;
- _this.numBoundaries = 0;
- var _this1 = _this.bbInfo;
- _this1.numBounded = 0;
- _this1.numUnbounded = 0;
- _this.buildBoundariesRecursive(this.info,0);
- var _this2 = this.velBoundarySelector;
- var size = this.boundaryBuilder.numBoundaries;
- var numSmaller = 0;
- var numGreater = 0;
- var _g = 0;
- var _g1 = _this2.n;
- while(_g < _g1) {
- var i = _g++;
- var idx = _this2.indices[i];
- if(idx < size) {
- _this2.tmpIndices[numSmaller] = idx;
- ++numSmaller;
- } else {
- _this2.tmpIndices[size + numGreater] = idx;
- ++numGreater;
- }
- }
- var tmp = _this2.indices;
- _this2.indices = _this2.tmpIndices;
- _this2.tmpIndices = tmp;
- }
- warmStart(timeStep) {
- var factor = this.joint._positionCorrectionAlgorithm == oimo.dynamics.constraint.PositionCorrectionAlgorithm.BAUMGARTE ? oimo.common.Setting.jointWarmStartingFactorForBaungarte : oimo.common.Setting.jointWarmStartingFactor;
- factor *= timeStep.dtRatio;
- if(factor <= 0) {
- var _g = 0;
- var _g1 = this.info.numRows;
- while(_g < _g1) {
- var i = _g++;
- var row = this.info.rows[i];
- var _this = row.impulse;
- _this.impulse = 0;
- _this.impulseM = 0;
- _this.impulseP = 0;
- }
- return;
- }
- var _g2 = 0;
- var _g11 = this.info.numRows;
- while(_g2 < _g11) {
- var i1 = _g2++;
- var row1 = this.info.rows[i1];
- var imp = row1.impulse;
- var impulse = imp.impulse * factor;
- if(impulse < row1.minImpulse) {
- impulse = row1.minImpulse;
- } else if(impulse > row1.maxImpulse) {
- impulse = row1.maxImpulse;
- }
- imp.impulse = impulse;
- if(row1.motorMaxImpulse > 0) {
- var impulseM = imp.impulseM * factor;
- var max = row1.motorMaxImpulse;
- if(impulseM < -max) {
- impulseM = -max;
- } else if(impulseM > max) {
- impulseM = max;
- }
- imp.impulseM = impulseM;
- } else {
- imp.impulseM = 0;
- }
- this.dImpulses[i1] = imp.impulse + imp.impulseM;
- }
- var impulses = this.dImpulses;
- var linearSet = false;
- var angularSet = false;
- var lv1;
- var lv1X;
- var lv1Y;
- var lv1Z;
- var lv2;
- var lv2X;
- var lv2Y;
- var lv2Z;
- var av1;
- var av1X;
- var av1Y;
- var av1Z;
- var av2;
- var av2X;
- var av2Y;
- var av2Z;
- lv1X = this._b1._velX;
- lv1Y = this._b1._velY;
- lv1Z = this._b1._velZ;
- lv2X = this._b2._velX;
- lv2Y = this._b2._velY;
- lv2Z = this._b2._velZ;
- av1X = this._b1._angVelX;
- av1Y = this._b1._angVelY;
- av1Z = this._b1._angVelZ;
- av2X = this._b2._angVelX;
- av2Y = this._b2._angVelY;
- av2Z = this._b2._angVelZ;
- var _g3 = 0;
- var _g12 = this.info.numRows;
- while(_g3 < _g12) {
- var i2 = _g3++;
- var row2 = this.info.rows[i2];
- var j = row2.jacobian;
- var md = this.massData[i2];
- var imp1 = impulses[i2];
- if((j.flag & 1) != 0) {
- lv1X += md.invMLin1X * imp1;
- lv1Y += md.invMLin1Y * imp1;
- lv1Z += md.invMLin1Z * imp1;
- lv2X += md.invMLin2X * -imp1;
- lv2Y += md.invMLin2Y * -imp1;
- lv2Z += md.invMLin2Z * -imp1;
- linearSet = true;
- }
- if((j.flag & 2) != 0) {
- av1X += md.invMAng1X * imp1;
- av1Y += md.invMAng1Y * imp1;
- av1Z += md.invMAng1Z * imp1;
- av2X += md.invMAng2X * -imp1;
- av2Y += md.invMAng2Y * -imp1;
- av2Z += md.invMAng2Z * -imp1;
- angularSet = true;
- }
- }
- if(linearSet) {
- this._b1._velX = lv1X;
- this._b1._velY = lv1Y;
- this._b1._velZ = lv1Z;
- this._b2._velX = lv2X;
- this._b2._velY = lv2Y;
- this._b2._velZ = lv2Z;
- }
- if(angularSet) {
- this._b1._angVelX = av1X;
- this._b1._angVelY = av1Y;
- this._b1._angVelZ = av1Z;
- this._b2._angVelX = av2X;
- this._b2._angVelY = av2Y;
- this._b2._angVelZ = av2Z;
- }
- }
- solveVelocity() {
- var numRows = this.info.numRows;
- var lv1;
- var lv1X;
- var lv1Y;
- var lv1Z;
- var lv2;
- var lv2X;
- var lv2Y;
- var lv2Z;
- var av1;
- var av1X;
- var av1Y;
- var av1Z;
- var av2;
- var av2X;
- var av2Y;
- var av2Z;
- lv1X = this._b1._velX;
- lv1Y = this._b1._velY;
- lv1Z = this._b1._velZ;
- lv2X = this._b2._velX;
- lv2Y = this._b2._velY;
- lv2Z = this._b2._velZ;
- av1X = this._b1._angVelX;
- av1Y = this._b1._angVelY;
- av1Z = this._b1._angVelZ;
- av2X = this._b2._angVelX;
- av2Y = this._b2._angVelY;
- av2Z = this._b2._angVelZ;
- var _g = 0;
- var _g1 = numRows;
- while(_g < _g1) {
- var i = _g++;
- var row = this.info.rows[i];
- var imp = row.impulse;
- var j = row.jacobian;
- var relVel = 0;
- relVel += lv1X * j.lin1X + lv1Y * j.lin1Y + lv1Z * j.lin1Z;
- relVel -= lv2X * j.lin2X + lv2Y * j.lin2Y + lv2Z * j.lin2Z;
- relVel += av1X * j.ang1X + av1Y * j.ang1Y + av1Z * j.ang1Z;
- relVel -= av2X * j.ang2X + av2Y * j.ang2Y + av2Z * j.ang2Z;
- this.relVels[i] = relVel;
- this.impulses[i] = imp.impulse;
- this.dTotalImpulses[i] = 0;
- }
- var invMass = this.massMatrix._invMassWithoutCfm;
- var _g2 = 0;
- var _g3 = numRows;
- while(_g2 < _g3) {
- var i1 = _g2++;
- var row1 = this.info.rows[i1];
- var imp1 = row1.impulse;
- var md = this.massData[i1];
- if(row1.motorMaxImpulse > 0) {
- var oldImpulseM = imp1.impulseM;
- var impulseM = oldImpulseM + md.massWithoutCfm * (-row1.motorSpeed - this.relVels[i1]);
- var maxImpulseM = row1.motorMaxImpulse;
- if(impulseM < -maxImpulseM) {
- impulseM = -maxImpulseM;
- } else if(impulseM > maxImpulseM) {
- impulseM = maxImpulseM;
- }
- imp1.impulseM = impulseM;
- var dImpulseM = impulseM - oldImpulseM;
- this.dTotalImpulses[i1] = dImpulseM;
- var _g21 = 0;
- var _g31 = numRows;
- while(_g21 < _g31) {
- var j1 = _g21++;
- var _g22 = j1;
- var _g32 = this.relVels;
- _g32[_g22] = _g32[_g22] + dImpulseM * invMass[i1][j1];
- }
- }
- }
- var solved = false;
- var _g4 = 0;
- var _g5 = this.boundaryBuilder.numBoundaries;
- while(_g4 < _g5) {
- var i2 = _g4++;
- var idx = this.velBoundarySelector.indices[i2];
- var b = this.boundaryBuilder.boundaries[idx];
- if(b.computeImpulses(this.info,this.massMatrix,this.relVels,this.impulses,this.dImpulses,1,false)) {
- var _g41 = 0;
- var _g51 = numRows;
- while(_g41 < _g51) {
- var j2 = _g41++;
- var row2 = this.info.rows[j2];
- var imp2 = row2.impulse;
- var dimp = this.dImpulses[j2];
- imp2.impulse += dimp;
- var _g42 = j2;
- var _g52 = this.dTotalImpulses;
- _g52[_g42] = _g52[_g42] + dimp;
- }
- var impulses = this.dTotalImpulses;
- var linearSet = false;
- var angularSet = false;
- var lv11;
- var lv1X1;
- var lv1Y1;
- var lv1Z1;
- var lv21;
- var lv2X1;
- var lv2Y1;
- var lv2Z1;
- var av11;
- var av1X1;
- var av1Y1;
- var av1Z1;
- var av21;
- var av2X1;
- var av2Y1;
- var av2Z1;
- lv1X1 = this._b1._velX;
- lv1Y1 = this._b1._velY;
- lv1Z1 = this._b1._velZ;
- lv2X1 = this._b2._velX;
- lv2Y1 = this._b2._velY;
- lv2Z1 = this._b2._velZ;
- av1X1 = this._b1._angVelX;
- av1Y1 = this._b1._angVelY;
- av1Z1 = this._b1._angVelZ;
- av2X1 = this._b2._angVelX;
- av2Y1 = this._b2._angVelY;
- av2Z1 = this._b2._angVelZ;
- var _g6 = 0;
- var _g11 = this.info.numRows;
- while(_g6 < _g11) {
- var i3 = _g6++;
- var row3 = this.info.rows[i3];
- var j3 = row3.jacobian;
- var md1 = this.massData[i3];
- var imp3 = impulses[i3];
- if((j3.flag & 1) != 0) {
- lv1X1 += md1.invMLin1X * imp3;
- lv1Y1 += md1.invMLin1Y * imp3;
- lv1Z1 += md1.invMLin1Z * imp3;
- lv2X1 += md1.invMLin2X * -imp3;
- lv2Y1 += md1.invMLin2Y * -imp3;
- lv2Z1 += md1.invMLin2Z * -imp3;
- linearSet = true;
- }
- if((j3.flag & 2) != 0) {
- av1X1 += md1.invMAng1X * imp3;
- av1Y1 += md1.invMAng1Y * imp3;
- av1Z1 += md1.invMAng1Z * imp3;
- av2X1 += md1.invMAng2X * -imp3;
- av2Y1 += md1.invMAng2Y * -imp3;
- av2Z1 += md1.invMAng2Z * -imp3;
- angularSet = true;
- }
- }
- if(linearSet) {
- this._b1._velX = lv1X1;
- this._b1._velY = lv1Y1;
- this._b1._velZ = lv1Z1;
- this._b2._velX = lv2X1;
- this._b2._velY = lv2Y1;
- this._b2._velZ = lv2Z1;
- }
- if(angularSet) {
- this._b1._angVelX = av1X1;
- this._b1._angVelY = av1Y1;
- this._b1._angVelZ = av1Z1;
- this._b2._angVelX = av2X1;
- this._b2._angVelY = av2Y1;
- this._b2._angVelZ = av2Z1;
- }
- var _this = this.velBoundarySelector;
- var i4 = 0;
- while(_this.indices[i4] != idx) ++i4;
- while(i4 > 0) {
- var tmp = _this.indices[i4];
- _this.indices[i4] = _this.indices[i4 - 1];
- _this.indices[i4 - 1] = tmp;
- --i4;
- }
- solved = true;
- break;
- }
- }
- if(!solved) {
- console.log("src/oimo/dynamics/constraint/solver/direct/DirectJointConstraintSolver.hx:335:","could not find solution. (velocity)");
- return;
- }
- }
- postSolveVelocity(timeStep) {
- var lin;
- var linX;
- var linY;
- var linZ;
- var ang;
- var angX;
- var angY;
- var angZ;
- linX = 0;
- linY = 0;
- linZ = 0;
- angX = 0;
- angY = 0;
- angZ = 0;
- var _g = 0;
- var _g1 = this.info.numRows;
- while(_g < _g1) {
- var i = _g++;
- var row = this.info.rows[i];
- var imp = row.impulse;
- var j = row.jacobian;
- if((j.flag & 1) != 0) {
- linX += j.lin1X * imp.impulse;
- linY += j.lin1Y * imp.impulse;
- linZ += j.lin1Z * imp.impulse;
- } else if((j.flag & 2) != 0) {
- angX += j.ang1X * imp.impulse;
- angY += j.ang1Y * imp.impulse;
- angZ += j.ang1Z * imp.impulse;
- }
- }
- this.joint._appliedForceX = linX * timeStep.invDt;
- this.joint._appliedForceY = linY * timeStep.invDt;
- this.joint._appliedForceZ = linZ * timeStep.invDt;
- this.joint._appliedTorqueX = angX * timeStep.invDt;
- this.joint._appliedTorqueY = angY * timeStep.invDt;
- this.joint._appliedTorqueZ = angZ * timeStep.invDt;
- }
- preSolvePosition(timeStep) {
- this.joint._syncAnchors();
- this.joint._getPositionSolverInfo(this.info);
- this._b1 = this.info.b1;
- this._b2 = this.info.b2;
- this.massMatrix.computeInvMass(this.info,this.massData);
- var _this = this.boundaryBuilder;
- _this.numBoundaries = 0;
- var _this1 = _this.bbInfo;
- _this1.numBounded = 0;
- _this1.numUnbounded = 0;
- _this.buildBoundariesRecursive(this.info,0);
- var _this2 = this.posBoundarySelector;
- var size = this.boundaryBuilder.numBoundaries;
- var numSmaller = 0;
- var numGreater = 0;
- var _g = 0;
- var _g1 = _this2.n;
- while(_g < _g1) {
- var i = _g++;
- var idx = _this2.indices[i];
- if(idx < size) {
- _this2.tmpIndices[numSmaller] = idx;
- ++numSmaller;
- } else {
- _this2.tmpIndices[size + numGreater] = idx;
- ++numGreater;
- }
- }
- var tmp = _this2.indices;
- _this2.indices = _this2.tmpIndices;
- _this2.tmpIndices = tmp;
- var _g2 = 0;
- var _g11 = this.info.numRows;
- while(_g2 < _g11) {
- var i1 = _g2++;
- this.info.rows[i1].impulse.impulseP = 0;
- }
- }
- solvePositionSplitImpulse() {
- var numRows = this.info.numRows;
- var lv1;
- var lv1X;
- var lv1Y;
- var lv1Z;
- var lv2;
- var lv2X;
- var lv2Y;
- var lv2Z;
- var av1;
- var av1X;
- var av1Y;
- var av1Z;
- var av2;
- var av2X;
- var av2Y;
- var av2Z;
- lv1X = this._b1._pseudoVelX;
- lv1Y = this._b1._pseudoVelY;
- lv1Z = this._b1._pseudoVelZ;
- lv2X = this._b2._pseudoVelX;
- lv2Y = this._b2._pseudoVelY;
- lv2Z = this._b2._pseudoVelZ;
- av1X = this._b1._angPseudoVelX;
- av1Y = this._b1._angPseudoVelY;
- av1Z = this._b1._angPseudoVelZ;
- av2X = this._b2._angPseudoVelX;
- av2Y = this._b2._angPseudoVelY;
- av2Z = this._b2._angPseudoVelZ;
- var _g = 0;
- var _g1 = numRows;
- while(_g < _g1) {
- var i = _g++;
- var row = this.info.rows[i];
- var imp = row.impulse;
- var j = row.jacobian;
- var relVel = 0;
- relVel += lv1X * j.lin1X + lv1Y * j.lin1Y + lv1Z * j.lin1Z;
- relVel -= lv2X * j.lin2X + lv2Y * j.lin2Y + lv2Z * j.lin2Z;
- relVel += av1X * j.ang1X + av1Y * j.ang1Y + av1Z * j.ang1Z;
- relVel -= av2X * j.ang2X + av2Y * j.ang2Y + av2Z * j.ang2Z;
- this.relVels[i] = relVel;
- this.impulses[i] = imp.impulseP;
- }
- var solved = false;
- var _g2 = 0;
- var _g3 = this.boundaryBuilder.numBoundaries;
- while(_g2 < _g3) {
- var i1 = _g2++;
- var idx = this.posBoundarySelector.indices[i1];
- var b = this.boundaryBuilder.boundaries[idx];
- if(b.computeImpulses(this.info,this.massMatrix,this.relVels,this.impulses,this.dImpulses,oimo.common.Setting.positionSplitImpulseBaumgarte,false)) {
- var _g21 = 0;
- var _g31 = numRows;
- while(_g21 < _g31) {
- var j1 = _g21++;
- var row1 = this.info.rows[j1];
- var imp1 = row1.impulse;
- var dimp = this.dImpulses[j1];
- imp1.impulseP += dimp;
- }
- var impulses = this.dImpulses;
- var linearSet = false;
- var angularSet = false;
- var lv11;
- var lv1X1;
- var lv1Y1;
- var lv1Z1;
- var lv21;
- var lv2X1;
- var lv2Y1;
- var lv2Z1;
- var av11;
- var av1X1;
- var av1Y1;
- var av1Z1;
- var av21;
- var av2X1;
- var av2Y1;
- var av2Z1;
- lv1X1 = this._b1._pseudoVelX;
- lv1Y1 = this._b1._pseudoVelY;
- lv1Z1 = this._b1._pseudoVelZ;
- lv2X1 = this._b2._pseudoVelX;
- lv2Y1 = this._b2._pseudoVelY;
- lv2Z1 = this._b2._pseudoVelZ;
- av1X1 = this._b1._angPseudoVelX;
- av1Y1 = this._b1._angPseudoVelY;
- av1Z1 = this._b1._angPseudoVelZ;
- av2X1 = this._b2._angPseudoVelX;
- av2Y1 = this._b2._angPseudoVelY;
- av2Z1 = this._b2._angPseudoVelZ;
- var _g4 = 0;
- var _g11 = this.info.numRows;
- while(_g4 < _g11) {
- var i2 = _g4++;
- var row2 = this.info.rows[i2];
- var j2 = row2.jacobian;
- var md = this.massData[i2];
- var imp2 = impulses[i2];
- if((j2.flag & 1) != 0) {
- lv1X1 += md.invMLin1X * imp2;
- lv1Y1 += md.invMLin1Y * imp2;
- lv1Z1 += md.invMLin1Z * imp2;
- lv2X1 += md.invMLin2X * -imp2;
- lv2Y1 += md.invMLin2Y * -imp2;
- lv2Z1 += md.invMLin2Z * -imp2;
- linearSet = true;
- }
- if((j2.flag & 2) != 0) {
- av1X1 += md.invMAng1X * imp2;
- av1Y1 += md.invMAng1Y * imp2;
- av1Z1 += md.invMAng1Z * imp2;
- av2X1 += md.invMAng2X * -imp2;
- av2Y1 += md.invMAng2Y * -imp2;
- av2Z1 += md.invMAng2Z * -imp2;
- angularSet = true;
- }
- }
- if(linearSet) {
- this._b1._pseudoVelX = lv1X1;
- this._b1._pseudoVelY = lv1Y1;
- this._b1._pseudoVelZ = lv1Z1;
- this._b2._pseudoVelX = lv2X1;
- this._b2._pseudoVelY = lv2Y1;
- this._b2._pseudoVelZ = lv2Z1;
- }
- if(angularSet) {
- this._b1._angPseudoVelX = av1X1;
- this._b1._angPseudoVelY = av1Y1;
- this._b1._angPseudoVelZ = av1Z1;
- this._b2._angPseudoVelX = av2X1;
- this._b2._angPseudoVelY = av2Y1;
- this._b2._angPseudoVelZ = av2Z1;
- }
- var _this = this.posBoundarySelector;
- var i3 = 0;
- while(_this.indices[i3] != idx) ++i3;
- while(i3 > 0) {
- var tmp = _this.indices[i3];
- _this.indices[i3] = _this.indices[i3 - 1];
- _this.indices[i3 - 1] = tmp;
- --i3;
- }
- solved = true;
- break;
- }
- }
- if(!solved) {
- console.log("src/oimo/dynamics/constraint/solver/direct/DirectJointConstraintSolver.hx:450:","could not find solution. (split impulse)");
- return;
- }
- }
- solvePositionNgs(timeStep) {
- this.joint._syncAnchors();
- this.joint._getPositionSolverInfo(this.info);
- this._b1 = this.info.b1;
- this._b2 = this.info.b2;
- this.massMatrix.computeInvMass(this.info,this.massData);
- var _this = this.boundaryBuilder;
- _this.numBoundaries = 0;
- var _this1 = _this.bbInfo;
- _this1.numBounded = 0;
- _this1.numUnbounded = 0;
- _this.buildBoundariesRecursive(this.info,0);
- var _this2 = this.posBoundarySelector;
- var size = this.boundaryBuilder.numBoundaries;
- var numSmaller = 0;
- var numGreater = 0;
- var _g = 0;
- var _g1 = _this2.n;
- while(_g < _g1) {
- var i = _g++;
- var idx = _this2.indices[i];
- if(idx < size) {
- _this2.tmpIndices[numSmaller] = idx;
- ++numSmaller;
- } else {
- _this2.tmpIndices[size + numGreater] = idx;
- ++numGreater;
- }
- }
- var tmp = _this2.indices;
- _this2.indices = _this2.tmpIndices;
- _this2.tmpIndices = tmp;
- var numRows = this.info.numRows;
- var _g2 = 0;
- var _g11 = numRows;
- while(_g2 < _g11) {
- var i1 = _g2++;
- var row = this.info.rows[i1];
- var imp = row.impulse;
- var j = row.jacobian;
- this.relVels[i1] = 0;
- this.impulses[i1] = imp.impulseP;
- }
- var solved = false;
- var _g21 = 0;
- var _g3 = this.boundaryBuilder.numBoundaries;
- while(_g21 < _g3) {
- var i2 = _g21++;
- var idx1 = this.posBoundarySelector.indices[i2];
- var b = this.boundaryBuilder.boundaries[idx1];
- if(b.computeImpulses(this.info,this.massMatrix,this.relVels,this.impulses,this.dImpulses,oimo.common.Setting.positionNgsBaumgarte,false)) {
- var _g22 = 0;
- var _g31 = numRows;
- while(_g22 < _g31) {
- var j1 = _g22++;
- var row1 = this.info.rows[j1];
- var imp1 = row1.impulse;
- var dimp = this.dImpulses[j1];
- imp1.impulseP += dimp;
- }
- var impulses = this.dImpulses;
- var linearSet = false;
- var angularSet = false;
- var lv1;
- var lv1X;
- var lv1Y;
- var lv1Z;
- var lv2;
- var lv2X;
- var lv2Y;
- var lv2Z;
- var av1;
- var av1X;
- var av1Y;
- var av1Z;
- var av2;
- var av2X;
- var av2Y;
- var av2Z;
- lv1X = 0;
- lv1Y = 0;
- lv1Z = 0;
- lv2X = 0;
- lv2Y = 0;
- lv2Z = 0;
- av1X = 0;
- av1Y = 0;
- av1Z = 0;
- av2X = 0;
- av2Y = 0;
- av2Z = 0;
- var _g4 = 0;
- var _g12 = this.info.numRows;
- while(_g4 < _g12) {
- var i3 = _g4++;
- var row2 = this.info.rows[i3];
- var j2 = row2.jacobian;
- var md = this.massData[i3];
- var imp2 = impulses[i3];
- if((j2.flag & 1) != 0) {
- lv1X += md.invMLin1X * imp2;
- lv1Y += md.invMLin1Y * imp2;
- lv1Z += md.invMLin1Z * imp2;
- lv2X += md.invMLin2X * -imp2;
- lv2Y += md.invMLin2Y * -imp2;
- lv2Z += md.invMLin2Z * -imp2;
- linearSet = true;
- }
- if((j2.flag & 2) != 0) {
- av1X += md.invMAng1X * imp2;
- av1Y += md.invMAng1Y * imp2;
- av1Z += md.invMAng1Z * imp2;
- av2X += md.invMAng2X * -imp2;
- av2Y += md.invMAng2Y * -imp2;
- av2Z += md.invMAng2Z * -imp2;
- angularSet = true;
- }
- }
- if(linearSet) {
- var _this3 = this._b1;
- _this3._transform._positionX += lv1X;
- _this3._transform._positionY += lv1Y;
- _this3._transform._positionZ += lv1Z;
- var _this4 = this._b2;
- _this4._transform._positionX += lv2X;
- _this4._transform._positionY += lv2Y;
- _this4._transform._positionZ += lv2Z;
- }
- if(angularSet) {
- var _this5 = this._b1;
- var theta = Math.sqrt(av1X * av1X + av1Y * av1Y + av1Z * av1Z);
- var halfTheta = theta * 0.5;
- var rotationToSinAxisFactor;
- var cosHalfTheta;
- if(halfTheta < 0.5) {
- var ht2 = halfTheta * halfTheta;
- rotationToSinAxisFactor = 0.5 * (1 - ht2 * 0.166666666666666657 + ht2 * ht2 * 0.00833333333333333322);
- cosHalfTheta = 1 - ht2 * 0.5 + ht2 * ht2 * 0.0416666666666666644;
- } else {
- rotationToSinAxisFactor = Math.sin(halfTheta) / theta;
- cosHalfTheta = Math.cos(halfTheta);
- }
- var sinAxis;
- var sinAxisX;
- var sinAxisY;
- var sinAxisZ;
- sinAxisX = av1X * rotationToSinAxisFactor;
- sinAxisY = av1Y * rotationToSinAxisFactor;
- sinAxisZ = av1Z * rotationToSinAxisFactor;
- var dq;
- var dqX;
- var dqY;
- var dqZ;
- var dqW;
- dqX = sinAxisX;
- dqY = sinAxisY;
- dqZ = sinAxisZ;
- dqW = cosHalfTheta;
- var q;
- var qX;
- var qY;
- var qZ;
- var qW;
- var e00 = _this5._transform._rotation00;
- var e11 = _this5._transform._rotation11;
- var e22 = _this5._transform._rotation22;
- var t = e00 + e11 + e22;
- var s;
- if(t > 0) {
- s = Math.sqrt(t + 1);
- qW = 0.5 * s;
- s = 0.5 / s;
- qX = (_this5._transform._rotation21 - _this5._transform._rotation12) * s;
- qY = (_this5._transform._rotation02 - _this5._transform._rotation20) * s;
- qZ = (_this5._transform._rotation10 - _this5._transform._rotation01) * s;
- } else if(e00 > e11) {
- if(e00 > e22) {
- s = Math.sqrt(e00 - e11 - e22 + 1);
- qX = 0.5 * s;
- s = 0.5 / s;
- qY = (_this5._transform._rotation01 + _this5._transform._rotation10) * s;
- qZ = (_this5._transform._rotation02 + _this5._transform._rotation20) * s;
- qW = (_this5._transform._rotation21 - _this5._transform._rotation12) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- qZ = 0.5 * s;
- s = 0.5 / s;
- qX = (_this5._transform._rotation02 + _this5._transform._rotation20) * s;
- qY = (_this5._transform._rotation12 + _this5._transform._rotation21) * s;
- qW = (_this5._transform._rotation10 - _this5._transform._rotation01) * s;
- }
- } else if(e11 > e22) {
- s = Math.sqrt(e11 - e22 - e00 + 1);
- qY = 0.5 * s;
- s = 0.5 / s;
- qX = (_this5._transform._rotation01 + _this5._transform._rotation10) * s;
- qZ = (_this5._transform._rotation12 + _this5._transform._rotation21) * s;
- qW = (_this5._transform._rotation02 - _this5._transform._rotation20) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- qZ = 0.5 * s;
- s = 0.5 / s;
- qX = (_this5._transform._rotation02 + _this5._transform._rotation20) * s;
- qY = (_this5._transform._rotation12 + _this5._transform._rotation21) * s;
- qW = (_this5._transform._rotation10 - _this5._transform._rotation01) * s;
- }
- qX = dqW * qX + dqX * qW + dqY * qZ - dqZ * qY;
- qY = dqW * qY - dqX * qZ + dqY * qW + dqZ * qX;
- qZ = dqW * qZ + dqX * qY - dqY * qX + dqZ * qW;
- qW = dqW * qW - dqX * qX - dqY * qY - dqZ * qZ;
- var l = qX * qX + qY * qY + qZ * qZ + qW * qW;
- if(l > 1e-32) {
- l = 1 / Math.sqrt(l);
- }
- qX *= l;
- qY *= l;
- qZ *= l;
- qW *= l;
- var x = qX;
- var y = qY;
- var z = qZ;
- var w = qW;
- var x2 = 2 * x;
- var y2 = 2 * y;
- var z2 = 2 * z;
- var xx = x * x2;
- var yy = y * y2;
- var zz = z * z2;
- var xy = x * y2;
- var yz = y * z2;
- var xz = x * z2;
- var wx = w * x2;
- var wy = w * y2;
- var wz = w * z2;
- _this5._transform._rotation00 = 1 - yy - zz;
- _this5._transform._rotation01 = xy - wz;
- _this5._transform._rotation02 = xz + wy;
- _this5._transform._rotation10 = xy + wz;
- _this5._transform._rotation11 = 1 - xx - zz;
- _this5._transform._rotation12 = yz - wx;
- _this5._transform._rotation20 = xz - wy;
- _this5._transform._rotation21 = yz + wx;
- _this5._transform._rotation22 = 1 - xx - yy;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = _this5._transform._rotation00 * _this5._invLocalInertia00 + _this5._transform._rotation01 * _this5._invLocalInertia10 + _this5._transform._rotation02 * _this5._invLocalInertia20;
- __tmp__01 = _this5._transform._rotation00 * _this5._invLocalInertia01 + _this5._transform._rotation01 * _this5._invLocalInertia11 + _this5._transform._rotation02 * _this5._invLocalInertia21;
- __tmp__02 = _this5._transform._rotation00 * _this5._invLocalInertia02 + _this5._transform._rotation01 * _this5._invLocalInertia12 + _this5._transform._rotation02 * _this5._invLocalInertia22;
- __tmp__10 = _this5._transform._rotation10 * _this5._invLocalInertia00 + _this5._transform._rotation11 * _this5._invLocalInertia10 + _this5._transform._rotation12 * _this5._invLocalInertia20;
- __tmp__11 = _this5._transform._rotation10 * _this5._invLocalInertia01 + _this5._transform._rotation11 * _this5._invLocalInertia11 + _this5._transform._rotation12 * _this5._invLocalInertia21;
- __tmp__12 = _this5._transform._rotation10 * _this5._invLocalInertia02 + _this5._transform._rotation11 * _this5._invLocalInertia12 + _this5._transform._rotation12 * _this5._invLocalInertia22;
- __tmp__20 = _this5._transform._rotation20 * _this5._invLocalInertia00 + _this5._transform._rotation21 * _this5._invLocalInertia10 + _this5._transform._rotation22 * _this5._invLocalInertia20;
- __tmp__21 = _this5._transform._rotation20 * _this5._invLocalInertia01 + _this5._transform._rotation21 * _this5._invLocalInertia11 + _this5._transform._rotation22 * _this5._invLocalInertia21;
- __tmp__22 = _this5._transform._rotation20 * _this5._invLocalInertia02 + _this5._transform._rotation21 * _this5._invLocalInertia12 + _this5._transform._rotation22 * _this5._invLocalInertia22;
- _this5._invInertia00 = __tmp__00;
- _this5._invInertia01 = __tmp__01;
- _this5._invInertia02 = __tmp__02;
- _this5._invInertia10 = __tmp__10;
- _this5._invInertia11 = __tmp__11;
- _this5._invInertia12 = __tmp__12;
- _this5._invInertia20 = __tmp__20;
- _this5._invInertia21 = __tmp__21;
- _this5._invInertia22 = __tmp__22;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = _this5._invInertia00 * _this5._transform._rotation00 + _this5._invInertia01 * _this5._transform._rotation01 + _this5._invInertia02 * _this5._transform._rotation02;
- __tmp__011 = _this5._invInertia00 * _this5._transform._rotation10 + _this5._invInertia01 * _this5._transform._rotation11 + _this5._invInertia02 * _this5._transform._rotation12;
- __tmp__021 = _this5._invInertia00 * _this5._transform._rotation20 + _this5._invInertia01 * _this5._transform._rotation21 + _this5._invInertia02 * _this5._transform._rotation22;
- __tmp__101 = _this5._invInertia10 * _this5._transform._rotation00 + _this5._invInertia11 * _this5._transform._rotation01 + _this5._invInertia12 * _this5._transform._rotation02;
- __tmp__111 = _this5._invInertia10 * _this5._transform._rotation10 + _this5._invInertia11 * _this5._transform._rotation11 + _this5._invInertia12 * _this5._transform._rotation12;
- __tmp__121 = _this5._invInertia10 * _this5._transform._rotation20 + _this5._invInertia11 * _this5._transform._rotation21 + _this5._invInertia12 * _this5._transform._rotation22;
- __tmp__201 = _this5._invInertia20 * _this5._transform._rotation00 + _this5._invInertia21 * _this5._transform._rotation01 + _this5._invInertia22 * _this5._transform._rotation02;
- __tmp__211 = _this5._invInertia20 * _this5._transform._rotation10 + _this5._invInertia21 * _this5._transform._rotation11 + _this5._invInertia22 * _this5._transform._rotation12;
- __tmp__221 = _this5._invInertia20 * _this5._transform._rotation20 + _this5._invInertia21 * _this5._transform._rotation21 + _this5._invInertia22 * _this5._transform._rotation22;
- _this5._invInertia00 = __tmp__001;
- _this5._invInertia01 = __tmp__011;
- _this5._invInertia02 = __tmp__021;
- _this5._invInertia10 = __tmp__101;
- _this5._invInertia11 = __tmp__111;
- _this5._invInertia12 = __tmp__121;
- _this5._invInertia20 = __tmp__201;
- _this5._invInertia21 = __tmp__211;
- _this5._invInertia22 = __tmp__221;
- _this5._invInertia00 *= _this5._rotFactor.x;
- _this5._invInertia01 *= _this5._rotFactor.x;
- _this5._invInertia02 *= _this5._rotFactor.x;
- _this5._invInertia10 *= _this5._rotFactor.y;
- _this5._invInertia11 *= _this5._rotFactor.y;
- _this5._invInertia12 *= _this5._rotFactor.y;
- _this5._invInertia20 *= _this5._rotFactor.z;
- _this5._invInertia21 *= _this5._rotFactor.z;
- _this5._invInertia22 *= _this5._rotFactor.z;
- var _this6 = this._b2;
- var theta1 = Math.sqrt(av2X * av2X + av2Y * av2Y + av2Z * av2Z);
- var halfTheta1 = theta1 * 0.5;
- var rotationToSinAxisFactor1;
- var cosHalfTheta1;
- if(halfTheta1 < 0.5) {
- var ht21 = halfTheta1 * halfTheta1;
- rotationToSinAxisFactor1 = 0.5 * (1 - ht21 * 0.166666666666666657 + ht21 * ht21 * 0.00833333333333333322);
- cosHalfTheta1 = 1 - ht21 * 0.5 + ht21 * ht21 * 0.0416666666666666644;
- } else {
- rotationToSinAxisFactor1 = Math.sin(halfTheta1) / theta1;
- cosHalfTheta1 = Math.cos(halfTheta1);
- }
- var sinAxis1;
- var sinAxisX1;
- var sinAxisY1;
- var sinAxisZ1;
- sinAxisX1 = av2X * rotationToSinAxisFactor1;
- sinAxisY1 = av2Y * rotationToSinAxisFactor1;
- sinAxisZ1 = av2Z * rotationToSinAxisFactor1;
- var dq1;
- var dqX1;
- var dqY1;
- var dqZ1;
- var dqW1;
- dqX1 = sinAxisX1;
- dqY1 = sinAxisY1;
- dqZ1 = sinAxisZ1;
- dqW1 = cosHalfTheta1;
- var q1;
- var qX1;
- var qY1;
- var qZ1;
- var qW1;
- var e001 = _this6._transform._rotation00;
- var e111 = _this6._transform._rotation11;
- var e221 = _this6._transform._rotation22;
- var t1 = e001 + e111 + e221;
- var s1;
- if(t1 > 0) {
- s1 = Math.sqrt(t1 + 1);
- qW1 = 0.5 * s1;
- s1 = 0.5 / s1;
- qX1 = (_this6._transform._rotation21 - _this6._transform._rotation12) * s1;
- qY1 = (_this6._transform._rotation02 - _this6._transform._rotation20) * s1;
- qZ1 = (_this6._transform._rotation10 - _this6._transform._rotation01) * s1;
- } else if(e001 > e111) {
- if(e001 > e221) {
- s1 = Math.sqrt(e001 - e111 - e221 + 1);
- qX1 = 0.5 * s1;
- s1 = 0.5 / s1;
- qY1 = (_this6._transform._rotation01 + _this6._transform._rotation10) * s1;
- qZ1 = (_this6._transform._rotation02 + _this6._transform._rotation20) * s1;
- qW1 = (_this6._transform._rotation21 - _this6._transform._rotation12) * s1;
- } else {
- s1 = Math.sqrt(e221 - e001 - e111 + 1);
- qZ1 = 0.5 * s1;
- s1 = 0.5 / s1;
- qX1 = (_this6._transform._rotation02 + _this6._transform._rotation20) * s1;
- qY1 = (_this6._transform._rotation12 + _this6._transform._rotation21) * s1;
- qW1 = (_this6._transform._rotation10 - _this6._transform._rotation01) * s1;
- }
- } else if(e111 > e221) {
- s1 = Math.sqrt(e111 - e221 - e001 + 1);
- qY1 = 0.5 * s1;
- s1 = 0.5 / s1;
- qX1 = (_this6._transform._rotation01 + _this6._transform._rotation10) * s1;
- qZ1 = (_this6._transform._rotation12 + _this6._transform._rotation21) * s1;
- qW1 = (_this6._transform._rotation02 - _this6._transform._rotation20) * s1;
- } else {
- s1 = Math.sqrt(e221 - e001 - e111 + 1);
- qZ1 = 0.5 * s1;
- s1 = 0.5 / s1;
- qX1 = (_this6._transform._rotation02 + _this6._transform._rotation20) * s1;
- qY1 = (_this6._transform._rotation12 + _this6._transform._rotation21) * s1;
- qW1 = (_this6._transform._rotation10 - _this6._transform._rotation01) * s1;
- }
- qX1 = dqW1 * qX1 + dqX1 * qW1 + dqY1 * qZ1 - dqZ1 * qY1;
- qY1 = dqW1 * qY1 - dqX1 * qZ1 + dqY1 * qW1 + dqZ1 * qX1;
- qZ1 = dqW1 * qZ1 + dqX1 * qY1 - dqY1 * qX1 + dqZ1 * qW1;
- qW1 = dqW1 * qW1 - dqX1 * qX1 - dqY1 * qY1 - dqZ1 * qZ1;
- var l1 = qX1 * qX1 + qY1 * qY1 + qZ1 * qZ1 + qW1 * qW1;
- if(l1 > 1e-32) {
- l1 = 1 / Math.sqrt(l1);
- }
- qX1 *= l1;
- qY1 *= l1;
- qZ1 *= l1;
- qW1 *= l1;
- var x1 = qX1;
- var y1 = qY1;
- var z1 = qZ1;
- var w1 = qW1;
- var x21 = 2 * x1;
- var y21 = 2 * y1;
- var z21 = 2 * z1;
- var xx1 = x1 * x21;
- var yy1 = y1 * y21;
- var zz1 = z1 * z21;
- var xy1 = x1 * y21;
- var yz1 = y1 * z21;
- var xz1 = x1 * z21;
- var wx1 = w1 * x21;
- var wy1 = w1 * y21;
- var wz1 = w1 * z21;
- _this6._transform._rotation00 = 1 - yy1 - zz1;
- _this6._transform._rotation01 = xy1 - wz1;
- _this6._transform._rotation02 = xz1 + wy1;
- _this6._transform._rotation10 = xy1 + wz1;
- _this6._transform._rotation11 = 1 - xx1 - zz1;
- _this6._transform._rotation12 = yz1 - wx1;
- _this6._transform._rotation20 = xz1 - wy1;
- _this6._transform._rotation21 = yz1 + wx1;
- _this6._transform._rotation22 = 1 - xx1 - yy1;
- var __tmp__002;
- var __tmp__012;
- var __tmp__022;
- var __tmp__102;
- var __tmp__112;
- var __tmp__122;
- var __tmp__202;
- var __tmp__212;
- var __tmp__222;
- __tmp__002 = _this6._transform._rotation00 * _this6._invLocalInertia00 + _this6._transform._rotation01 * _this6._invLocalInertia10 + _this6._transform._rotation02 * _this6._invLocalInertia20;
- __tmp__012 = _this6._transform._rotation00 * _this6._invLocalInertia01 + _this6._transform._rotation01 * _this6._invLocalInertia11 + _this6._transform._rotation02 * _this6._invLocalInertia21;
- __tmp__022 = _this6._transform._rotation00 * _this6._invLocalInertia02 + _this6._transform._rotation01 * _this6._invLocalInertia12 + _this6._transform._rotation02 * _this6._invLocalInertia22;
- __tmp__102 = _this6._transform._rotation10 * _this6._invLocalInertia00 + _this6._transform._rotation11 * _this6._invLocalInertia10 + _this6._transform._rotation12 * _this6._invLocalInertia20;
- __tmp__112 = _this6._transform._rotation10 * _this6._invLocalInertia01 + _this6._transform._rotation11 * _this6._invLocalInertia11 + _this6._transform._rotation12 * _this6._invLocalInertia21;
- __tmp__122 = _this6._transform._rotation10 * _this6._invLocalInertia02 + _this6._transform._rotation11 * _this6._invLocalInertia12 + _this6._transform._rotation12 * _this6._invLocalInertia22;
- __tmp__202 = _this6._transform._rotation20 * _this6._invLocalInertia00 + _this6._transform._rotation21 * _this6._invLocalInertia10 + _this6._transform._rotation22 * _this6._invLocalInertia20;
- __tmp__212 = _this6._transform._rotation20 * _this6._invLocalInertia01 + _this6._transform._rotation21 * _this6._invLocalInertia11 + _this6._transform._rotation22 * _this6._invLocalInertia21;
- __tmp__222 = _this6._transform._rotation20 * _this6._invLocalInertia02 + _this6._transform._rotation21 * _this6._invLocalInertia12 + _this6._transform._rotation22 * _this6._invLocalInertia22;
- _this6._invInertia00 = __tmp__002;
- _this6._invInertia01 = __tmp__012;
- _this6._invInertia02 = __tmp__022;
- _this6._invInertia10 = __tmp__102;
- _this6._invInertia11 = __tmp__112;
- _this6._invInertia12 = __tmp__122;
- _this6._invInertia20 = __tmp__202;
- _this6._invInertia21 = __tmp__212;
- _this6._invInertia22 = __tmp__222;
- var __tmp__003;
- var __tmp__013;
- var __tmp__023;
- var __tmp__103;
- var __tmp__113;
- var __tmp__123;
- var __tmp__203;
- var __tmp__213;
- var __tmp__223;
- __tmp__003 = _this6._invInertia00 * _this6._transform._rotation00 + _this6._invInertia01 * _this6._transform._rotation01 + _this6._invInertia02 * _this6._transform._rotation02;
- __tmp__013 = _this6._invInertia00 * _this6._transform._rotation10 + _this6._invInertia01 * _this6._transform._rotation11 + _this6._invInertia02 * _this6._transform._rotation12;
- __tmp__023 = _this6._invInertia00 * _this6._transform._rotation20 + _this6._invInertia01 * _this6._transform._rotation21 + _this6._invInertia02 * _this6._transform._rotation22;
- __tmp__103 = _this6._invInertia10 * _this6._transform._rotation00 + _this6._invInertia11 * _this6._transform._rotation01 + _this6._invInertia12 * _this6._transform._rotation02;
- __tmp__113 = _this6._invInertia10 * _this6._transform._rotation10 + _this6._invInertia11 * _this6._transform._rotation11 + _this6._invInertia12 * _this6._transform._rotation12;
- __tmp__123 = _this6._invInertia10 * _this6._transform._rotation20 + _this6._invInertia11 * _this6._transform._rotation21 + _this6._invInertia12 * _this6._transform._rotation22;
- __tmp__203 = _this6._invInertia20 * _this6._transform._rotation00 + _this6._invInertia21 * _this6._transform._rotation01 + _this6._invInertia22 * _this6._transform._rotation02;
- __tmp__213 = _this6._invInertia20 * _this6._transform._rotation10 + _this6._invInertia21 * _this6._transform._rotation11 + _this6._invInertia22 * _this6._transform._rotation12;
- __tmp__223 = _this6._invInertia20 * _this6._transform._rotation20 + _this6._invInertia21 * _this6._transform._rotation21 + _this6._invInertia22 * _this6._transform._rotation22;
- _this6._invInertia00 = __tmp__003;
- _this6._invInertia01 = __tmp__013;
- _this6._invInertia02 = __tmp__023;
- _this6._invInertia10 = __tmp__103;
- _this6._invInertia11 = __tmp__113;
- _this6._invInertia12 = __tmp__123;
- _this6._invInertia20 = __tmp__203;
- _this6._invInertia21 = __tmp__213;
- _this6._invInertia22 = __tmp__223;
- _this6._invInertia00 *= _this6._rotFactor.x;
- _this6._invInertia01 *= _this6._rotFactor.x;
- _this6._invInertia02 *= _this6._rotFactor.x;
- _this6._invInertia10 *= _this6._rotFactor.y;
- _this6._invInertia11 *= _this6._rotFactor.y;
- _this6._invInertia12 *= _this6._rotFactor.y;
- _this6._invInertia20 *= _this6._rotFactor.z;
- _this6._invInertia21 *= _this6._rotFactor.z;
- _this6._invInertia22 *= _this6._rotFactor.z;
- }
- var _this7 = this.posBoundarySelector;
- var i4 = 0;
- while(_this7.indices[i4] != idx1) ++i4;
- while(i4 > 0) {
- var tmp1 = _this7.indices[i4];
- _this7.indices[i4] = _this7.indices[i4 - 1];
- _this7.indices[i4 - 1] = tmp1;
- --i4;
- }
- solved = true;
- break;
- }
- }
- if(!solved) {
- console.log("src/oimo/dynamics/constraint/solver/direct/DirectJointConstraintSolver.hx:502:","could not find solution. (NGS)");
- return;
- }
- }
- postSolve() {
- this.joint._syncAnchors();
- this.joint._checkDestruction();
- }
- }
- oimo.dynamics.constraint.solver.direct.MassMatrix = class oimo_dynamics_constraint_solver_direct_MassMatrix {
- constructor(size) {
- this._size = size;
- var this1 = new Array(this._size);
- this.tmpMatrix = this1;
- var this2 = new Array(this._size);
- this._invMass = this2;
- var this3 = new Array(this._size);
- this._invMassWithoutCfm = this3;
- var _g = 0;
- var _g1 = this._size;
- while(_g < _g1) {
- var i = _g++;
- var this4 = this.tmpMatrix;
- var this5 = new Array(this._size);
- this4[i] = this5;
- var this6 = this._invMass;
- var this7 = new Array(this._size);
- this6[i] = this7;
- var this8 = this._invMassWithoutCfm;
- var this9 = new Array(this._size);
- this8[i] = this9;
- var _g2 = 0;
- var _g11 = this._size;
- while(_g2 < _g11) {
- var j = _g2++;
- this.tmpMatrix[i][j] = 0;
- this._invMass[i][j] = 0;
- this._invMassWithoutCfm[i][j] = 0;
- }
- }
- this._maxSubmatrixId = 1 << this._size;
- var this10 = new Array(this._maxSubmatrixId);
- this._cacheComputed = this10;
- var this11 = new Array(this._maxSubmatrixId);
- this._cachedSubmatrices = this11;
- var _g21 = 0;
- var _g3 = this._maxSubmatrixId;
- while(_g21 < _g3) {
- var i1 = _g21++;
- var t = i1;
- t = (t & 85) + (t >> 1 & 85);
- t = (t & 51) + (t >> 2 & 51);
- t = (t & 15) + (t >> 4 & 15);
- var matrixSize = t;
- var this12 = new Array(matrixSize);
- var subMatrix = this12;
- var _g22 = 0;
- var _g31 = matrixSize;
- while(_g22 < _g31) {
- var j1 = _g22++;
- var this13 = new Array(matrixSize);
- subMatrix[j1] = this13;
- var _g23 = 0;
- var _g32 = matrixSize;
- while(_g23 < _g32) {
- var k = _g23++;
- subMatrix[j1][k] = 0;
- }
- }
- this._cacheComputed[i1] = false;
- this._cachedSubmatrices[i1] = subMatrix;
- }
- }
- computeSubmatrix(id,indices,size) {
- var _g = 0;
- var _g1 = size;
- while(_g < _g1) {
- var i = _g++;
- var ii = indices[i];
- var _g2 = 0;
- var _g11 = size;
- while(_g2 < _g11) {
- var j = _g2++;
- this.tmpMatrix[i][j] = this._invMass[ii][indices[j]];
- }
- }
- var src = this.tmpMatrix;
- var dst = this._cachedSubmatrices[id];
- var srci;
- var dsti;
- var srcj;
- var dstj;
- var diag;
- switch(size) {
- case 4:
- srci = src[0];
- dsti = dst[0];
- diag = 1 / srci[0];
- dsti[0] = diag;
- srci[1] = srci[1] * diag;
- srci[2] = srci[2] * diag;
- srci[3] = srci[3] * diag;
- srcj = src[1];
- dstj = dst[1];
- dstj[0] = -diag * srcj[0];
- srcj[1] = srcj[1] - srci[1] * srcj[0];
- srcj[2] = srcj[2] - srci[2] * srcj[0];
- srcj[3] = srcj[3] - srci[3] * srcj[0];
- srcj = src[2];
- dstj = dst[2];
- dstj[0] = -diag * srcj[0];
- srcj[1] = srcj[1] - srci[1] * srcj[0];
- srcj[2] = srcj[2] - srci[2] * srcj[0];
- srcj[3] = srcj[3] - srci[3] * srcj[0];
- srcj = src[3];
- dstj = dst[3];
- dstj[0] = -diag * srcj[0];
- srcj[1] = srcj[1] - srci[1] * srcj[0];
- srcj[2] = srcj[2] - srci[2] * srcj[0];
- srcj[3] = srcj[3] - srci[3] * srcj[0];
- srci = src[1];
- dsti = dst[1];
- diag = 1 / srci[1];
- dsti[1] = diag;
- dsti[0] = dsti[0] * diag;
- srci[2] = srci[2] * diag;
- srci[3] = srci[3] * diag;
- srcj = src[0];
- dstj = dst[0];
- dstj[0] = dstj[0] - dsti[0] * srcj[1];
- srcj[2] = srcj[2] - srci[2] * srcj[1];
- srcj[3] = srcj[3] - srci[3] * srcj[1];
- srcj = src[2];
- dstj = dst[2];
- dstj[0] = dstj[0] - dsti[0] * srcj[1];
- dstj[1] = -diag * srcj[1];
- srcj[2] = srcj[2] - srci[2] * srcj[1];
- srcj[3] = srcj[3] - srci[3] * srcj[1];
- srcj = src[3];
- dstj = dst[3];
- dstj[0] = dstj[0] - dsti[0] * srcj[1];
- dstj[1] = -diag * srcj[1];
- srcj[2] = srcj[2] - srci[2] * srcj[1];
- srcj[3] = srcj[3] - srci[3] * srcj[1];
- srci = src[2];
- dsti = dst[2];
- diag = 1 / srci[2];
- dsti[2] = diag;
- dsti[0] = dsti[0] * diag;
- dsti[1] = dsti[1] * diag;
- srci[3] = srci[3] * diag;
- srcj = src[0];
- dstj = dst[0];
- dstj[0] = dstj[0] - dsti[0] * srcj[2];
- srcj[3] = srcj[3] - srci[3] * srcj[2];
- srcj = src[1];
- dstj = dst[1];
- dstj[0] = dstj[0] - dsti[0] * srcj[2];
- dstj[1] = dstj[1] - dsti[1] * srcj[2];
- srcj[3] = srcj[3] - srci[3] * srcj[2];
- srcj = src[3];
- dstj = dst[3];
- dstj[0] = dstj[0] - dsti[0] * srcj[2];
- dstj[1] = dstj[1] - dsti[1] * srcj[2];
- dstj[2] = -diag * srcj[2];
- srcj[3] = srcj[3] - srci[3] * srcj[2];
- srci = src[3];
- dsti = dst[3];
- diag = 1 / srci[3];
- dsti[3] = diag;
- dsti[0] = dsti[0] * diag;
- dsti[1] = dsti[1] * diag;
- dsti[2] = dsti[2] * diag;
- srcj = src[0];
- dstj = dst[0];
- dstj[0] = dstj[0] - dsti[0] * srcj[3];
- srcj = src[1];
- dstj = dst[1];
- dstj[0] = dstj[0] - dsti[0] * srcj[3];
- dstj[1] = dstj[1] - dsti[1] * srcj[3];
- srcj = src[2];
- dstj = dst[2];
- dstj[0] = dstj[0] - dsti[0] * srcj[3];
- dstj[1] = dstj[1] - dsti[1] * srcj[3];
- dstj[2] = dstj[2] - dsti[2] * srcj[3];
- dsti = dst[1];
- dst[0][1] = dsti[0];
- dsti = dst[2];
- dst[0][2] = dsti[0];
- dst[1][2] = dsti[1];
- dsti = dst[3];
- dst[0][3] = dsti[0];
- dst[1][3] = dsti[1];
- dst[2][3] = dsti[2];
- break;
- case 5:
- srci = src[0];
- dsti = dst[0];
- diag = 1 / srci[0];
- dsti[0] = diag;
- srci[1] = srci[1] * diag;
- srci[2] = srci[2] * diag;
- srci[3] = srci[3] * diag;
- srci[4] = srci[4] * diag;
- srcj = src[1];
- dstj = dst[1];
- dstj[0] = -diag * srcj[0];
- srcj[1] = srcj[1] - srci[1] * srcj[0];
- srcj[2] = srcj[2] - srci[2] * srcj[0];
- srcj[3] = srcj[3] - srci[3] * srcj[0];
- srcj[4] = srcj[4] - srci[4] * srcj[0];
- srcj = src[2];
- dstj = dst[2];
- dstj[0] = -diag * srcj[0];
- srcj[1] = srcj[1] - srci[1] * srcj[0];
- srcj[2] = srcj[2] - srci[2] * srcj[0];
- srcj[3] = srcj[3] - srci[3] * srcj[0];
- srcj[4] = srcj[4] - srci[4] * srcj[0];
- srcj = src[3];
- dstj = dst[3];
- dstj[0] = -diag * srcj[0];
- srcj[1] = srcj[1] - srci[1] * srcj[0];
- srcj[2] = srcj[2] - srci[2] * srcj[0];
- srcj[3] = srcj[3] - srci[3] * srcj[0];
- srcj[4] = srcj[4] - srci[4] * srcj[0];
- srcj = src[4];
- dstj = dst[4];
- dstj[0] = -diag * srcj[0];
- srcj[1] = srcj[1] - srci[1] * srcj[0];
- srcj[2] = srcj[2] - srci[2] * srcj[0];
- srcj[3] = srcj[3] - srci[3] * srcj[0];
- srcj[4] = srcj[4] - srci[4] * srcj[0];
- srci = src[1];
- dsti = dst[1];
- diag = 1 / srci[1];
- dsti[1] = diag;
- dsti[0] = dsti[0] * diag;
- srci[2] = srci[2] * diag;
- srci[3] = srci[3] * diag;
- srci[4] = srci[4] * diag;
- srcj = src[0];
- dstj = dst[0];
- dstj[0] = dstj[0] - dsti[0] * srcj[1];
- srcj[2] = srcj[2] - srci[2] * srcj[1];
- srcj[3] = srcj[3] - srci[3] * srcj[1];
- srcj[4] = srcj[4] - srci[4] * srcj[1];
- srcj = src[2];
- dstj = dst[2];
- dstj[0] = dstj[0] - dsti[0] * srcj[1];
- dstj[1] = -diag * srcj[1];
- srcj[2] = srcj[2] - srci[2] * srcj[1];
- srcj[3] = srcj[3] - srci[3] * srcj[1];
- srcj[4] = srcj[4] - srci[4] * srcj[1];
- srcj = src[3];
- dstj = dst[3];
- dstj[0] = dstj[0] - dsti[0] * srcj[1];
- dstj[1] = -diag * srcj[1];
- srcj[2] = srcj[2] - srci[2] * srcj[1];
- srcj[3] = srcj[3] - srci[3] * srcj[1];
- srcj[4] = srcj[4] - srci[4] * srcj[1];
- srcj = src[4];
- dstj = dst[4];
- dstj[0] = dstj[0] - dsti[0] * srcj[1];
- dstj[1] = -diag * srcj[1];
- srcj[2] = srcj[2] - srci[2] * srcj[1];
- srcj[3] = srcj[3] - srci[3] * srcj[1];
- srcj[4] = srcj[4] - srci[4] * srcj[1];
- srci = src[2];
- dsti = dst[2];
- diag = 1 / srci[2];
- dsti[2] = diag;
- dsti[0] = dsti[0] * diag;
- dsti[1] = dsti[1] * diag;
- srci[3] = srci[3] * diag;
- srci[4] = srci[4] * diag;
- srcj = src[0];
- dstj = dst[0];
- dstj[0] = dstj[0] - dsti[0] * srcj[2];
- srcj[3] = srcj[3] - srci[3] * srcj[2];
- srcj[4] = srcj[4] - srci[4] * srcj[2];
- srcj = src[1];
- dstj = dst[1];
- dstj[0] = dstj[0] - dsti[0] * srcj[2];
- dstj[1] = dstj[1] - dsti[1] * srcj[2];
- srcj[3] = srcj[3] - srci[3] * srcj[2];
- srcj[4] = srcj[4] - srci[4] * srcj[2];
- srcj = src[3];
- dstj = dst[3];
- dstj[0] = dstj[0] - dsti[0] * srcj[2];
- dstj[1] = dstj[1] - dsti[1] * srcj[2];
- dstj[2] = -diag * srcj[2];
- srcj[3] = srcj[3] - srci[3] * srcj[2];
- srcj[4] = srcj[4] - srci[4] * srcj[2];
- srcj = src[4];
- dstj = dst[4];
- dstj[0] = dstj[0] - dsti[0] * srcj[2];
- dstj[1] = dstj[1] - dsti[1] * srcj[2];
- dstj[2] = -diag * srcj[2];
- srcj[3] = srcj[3] - srci[3] * srcj[2];
- srcj[4] = srcj[4] - srci[4] * srcj[2];
- srci = src[3];
- dsti = dst[3];
- diag = 1 / srci[3];
- dsti[3] = diag;
- dsti[0] = dsti[0] * diag;
- dsti[1] = dsti[1] * diag;
- dsti[2] = dsti[2] * diag;
- srci[4] = srci[4] * diag;
- srcj = src[0];
- dstj = dst[0];
- dstj[0] = dstj[0] - dsti[0] * srcj[3];
- srcj[4] = srcj[4] - srci[4] * srcj[3];
- srcj = src[1];
- dstj = dst[1];
- dstj[0] = dstj[0] - dsti[0] * srcj[3];
- dstj[1] = dstj[1] - dsti[1] * srcj[3];
- srcj[4] = srcj[4] - srci[4] * srcj[3];
- srcj = src[2];
- dstj = dst[2];
- dstj[0] = dstj[0] - dsti[0] * srcj[3];
- dstj[1] = dstj[1] - dsti[1] * srcj[3];
- dstj[2] = dstj[2] - dsti[2] * srcj[3];
- srcj[4] = srcj[4] - srci[4] * srcj[3];
- srcj = src[4];
- dstj = dst[4];
- dstj[0] = dstj[0] - dsti[0] * srcj[3];
- dstj[1] = dstj[1] - dsti[1] * srcj[3];
- dstj[2] = dstj[2] - dsti[2] * srcj[3];
- dstj[3] = -diag * srcj[3];
- srcj[4] = srcj[4] - srci[4] * srcj[3];
- srci = src[4];
- dsti = dst[4];
- diag = 1 / srci[4];
- dsti[4] = diag;
- dsti[0] = dsti[0] * diag;
- dsti[1] = dsti[1] * diag;
- dsti[2] = dsti[2] * diag;
- dsti[3] = dsti[3] * diag;
- srcj = src[0];
- dstj = dst[0];
- dstj[0] = dstj[0] - dsti[0] * srcj[4];
- srcj = src[1];
- dstj = dst[1];
- dstj[0] = dstj[0] - dsti[0] * srcj[4];
- dstj[1] = dstj[1] - dsti[1] * srcj[4];
- srcj = src[2];
- dstj = dst[2];
- dstj[0] = dstj[0] - dsti[0] * srcj[4];
- dstj[1] = dstj[1] - dsti[1] * srcj[4];
- dstj[2] = dstj[2] - dsti[2] * srcj[4];
- srcj = src[3];
- dstj = dst[3];
- dstj[0] = dstj[0] - dsti[0] * srcj[4];
- dstj[1] = dstj[1] - dsti[1] * srcj[4];
- dstj[2] = dstj[2] - dsti[2] * srcj[4];
- dstj[3] = dstj[3] - dsti[3] * srcj[4];
- dsti = dst[1];
- dst[0][1] = dsti[0];
- dsti = dst[2];
- dst[0][2] = dsti[0];
- dst[1][2] = dsti[1];
- dsti = dst[3];
- dst[0][3] = dsti[0];
- dst[1][3] = dsti[1];
- dst[2][3] = dsti[2];
- dsti = dst[4];
- dst[0][4] = dsti[0];
- dst[1][4] = dsti[1];
- dst[2][4] = dsti[2];
- dst[3][4] = dsti[3];
- break;
- case 6:
- srci = src[0];
- dsti = dst[0];
- diag = 1 / srci[0];
- dsti[0] = diag;
- srci[1] = srci[1] * diag;
- srci[2] = srci[2] * diag;
- srci[3] = srci[3] * diag;
- srci[4] = srci[4] * diag;
- srci[5] = srci[5] * diag;
- srcj = src[1];
- dstj = dst[1];
- dstj[0] = -diag * srcj[0];
- srcj[1] = srcj[1] - srci[1] * srcj[0];
- srcj[2] = srcj[2] - srci[2] * srcj[0];
- srcj[3] = srcj[3] - srci[3] * srcj[0];
- srcj[4] = srcj[4] - srci[4] * srcj[0];
- srcj[5] = srcj[5] - srci[5] * srcj[0];
- srcj = src[2];
- dstj = dst[2];
- dstj[0] = -diag * srcj[0];
- srcj[1] = srcj[1] - srci[1] * srcj[0];
- srcj[2] = srcj[2] - srci[2] * srcj[0];
- srcj[3] = srcj[3] - srci[3] * srcj[0];
- srcj[4] = srcj[4] - srci[4] * srcj[0];
- srcj[5] = srcj[5] - srci[5] * srcj[0];
- srcj = src[3];
- dstj = dst[3];
- dstj[0] = -diag * srcj[0];
- srcj[1] = srcj[1] - srci[1] * srcj[0];
- srcj[2] = srcj[2] - srci[2] * srcj[0];
- srcj[3] = srcj[3] - srci[3] * srcj[0];
- srcj[4] = srcj[4] - srci[4] * srcj[0];
- srcj[5] = srcj[5] - srci[5] * srcj[0];
- srcj = src[4];
- dstj = dst[4];
- dstj[0] = -diag * srcj[0];
- srcj[1] = srcj[1] - srci[1] * srcj[0];
- srcj[2] = srcj[2] - srci[2] * srcj[0];
- srcj[3] = srcj[3] - srci[3] * srcj[0];
- srcj[4] = srcj[4] - srci[4] * srcj[0];
- srcj[5] = srcj[5] - srci[5] * srcj[0];
- srcj = src[5];
- dstj = dst[5];
- dstj[0] = -diag * srcj[0];
- srcj[1] = srcj[1] - srci[1] * srcj[0];
- srcj[2] = srcj[2] - srci[2] * srcj[0];
- srcj[3] = srcj[3] - srci[3] * srcj[0];
- srcj[4] = srcj[4] - srci[4] * srcj[0];
- srcj[5] = srcj[5] - srci[5] * srcj[0];
- srci = src[1];
- dsti = dst[1];
- diag = 1 / srci[1];
- dsti[1] = diag;
- dsti[0] = dsti[0] * diag;
- srci[2] = srci[2] * diag;
- srci[3] = srci[3] * diag;
- srci[4] = srci[4] * diag;
- srci[5] = srci[5] * diag;
- srcj = src[0];
- dstj = dst[0];
- dstj[0] = dstj[0] - dsti[0] * srcj[1];
- srcj[2] = srcj[2] - srci[2] * srcj[1];
- srcj[3] = srcj[3] - srci[3] * srcj[1];
- srcj[4] = srcj[4] - srci[4] * srcj[1];
- srcj[5] = srcj[5] - srci[5] * srcj[1];
- srcj = src[2];
- dstj = dst[2];
- dstj[0] = dstj[0] - dsti[0] * srcj[1];
- dstj[1] = -diag * srcj[1];
- srcj[2] = srcj[2] - srci[2] * srcj[1];
- srcj[3] = srcj[3] - srci[3] * srcj[1];
- srcj[4] = srcj[4] - srci[4] * srcj[1];
- srcj[5] = srcj[5] - srci[5] * srcj[1];
- srcj = src[3];
- dstj = dst[3];
- dstj[0] = dstj[0] - dsti[0] * srcj[1];
- dstj[1] = -diag * srcj[1];
- srcj[2] = srcj[2] - srci[2] * srcj[1];
- srcj[3] = srcj[3] - srci[3] * srcj[1];
- srcj[4] = srcj[4] - srci[4] * srcj[1];
- srcj[5] = srcj[5] - srci[5] * srcj[1];
- srcj = src[4];
- dstj = dst[4];
- dstj[0] = dstj[0] - dsti[0] * srcj[1];
- dstj[1] = -diag * srcj[1];
- srcj[2] = srcj[2] - srci[2] * srcj[1];
- srcj[3] = srcj[3] - srci[3] * srcj[1];
- srcj[4] = srcj[4] - srci[4] * srcj[1];
- srcj[5] = srcj[5] - srci[5] * srcj[1];
- srcj = src[5];
- dstj = dst[5];
- dstj[0] = dstj[0] - dsti[0] * srcj[1];
- dstj[1] = -diag * srcj[1];
- srcj[2] = srcj[2] - srci[2] * srcj[1];
- srcj[3] = srcj[3] - srci[3] * srcj[1];
- srcj[4] = srcj[4] - srci[4] * srcj[1];
- srcj[5] = srcj[5] - srci[5] * srcj[1];
- srci = src[2];
- dsti = dst[2];
- diag = 1 / srci[2];
- dsti[2] = diag;
- dsti[0] = dsti[0] * diag;
- dsti[1] = dsti[1] * diag;
- srci[3] = srci[3] * diag;
- srci[4] = srci[4] * diag;
- srci[5] = srci[5] * diag;
- srcj = src[0];
- dstj = dst[0];
- dstj[0] = dstj[0] - dsti[0] * srcj[2];
- srcj[3] = srcj[3] - srci[3] * srcj[2];
- srcj[4] = srcj[4] - srci[4] * srcj[2];
- srcj[5] = srcj[5] - srci[5] * srcj[2];
- srcj = src[1];
- dstj = dst[1];
- dstj[0] = dstj[0] - dsti[0] * srcj[2];
- dstj[1] = dstj[1] - dsti[1] * srcj[2];
- srcj[3] = srcj[3] - srci[3] * srcj[2];
- srcj[4] = srcj[4] - srci[4] * srcj[2];
- srcj[5] = srcj[5] - srci[5] * srcj[2];
- srcj = src[3];
- dstj = dst[3];
- dstj[0] = dstj[0] - dsti[0] * srcj[2];
- dstj[1] = dstj[1] - dsti[1] * srcj[2];
- dstj[2] = -diag * srcj[2];
- srcj[3] = srcj[3] - srci[3] * srcj[2];
- srcj[4] = srcj[4] - srci[4] * srcj[2];
- srcj[5] = srcj[5] - srci[5] * srcj[2];
- srcj = src[4];
- dstj = dst[4];
- dstj[0] = dstj[0] - dsti[0] * srcj[2];
- dstj[1] = dstj[1] - dsti[1] * srcj[2];
- dstj[2] = -diag * srcj[2];
- srcj[3] = srcj[3] - srci[3] * srcj[2];
- srcj[4] = srcj[4] - srci[4] * srcj[2];
- srcj[5] = srcj[5] - srci[5] * srcj[2];
- srcj = src[5];
- dstj = dst[5];
- dstj[0] = dstj[0] - dsti[0] * srcj[2];
- dstj[1] = dstj[1] - dsti[1] * srcj[2];
- dstj[2] = -diag * srcj[2];
- srcj[3] = srcj[3] - srci[3] * srcj[2];
- srcj[4] = srcj[4] - srci[4] * srcj[2];
- srcj[5] = srcj[5] - srci[5] * srcj[2];
- srci = src[3];
- dsti = dst[3];
- diag = 1 / srci[3];
- dsti[3] = diag;
- dsti[0] = dsti[0] * diag;
- dsti[1] = dsti[1] * diag;
- dsti[2] = dsti[2] * diag;
- srci[4] = srci[4] * diag;
- srci[5] = srci[5] * diag;
- srcj = src[0];
- dstj = dst[0];
- dstj[0] = dstj[0] - dsti[0] * srcj[3];
- srcj[4] = srcj[4] - srci[4] * srcj[3];
- srcj[5] = srcj[5] - srci[5] * srcj[3];
- srcj = src[1];
- dstj = dst[1];
- dstj[0] = dstj[0] - dsti[0] * srcj[3];
- dstj[1] = dstj[1] - dsti[1] * srcj[3];
- srcj[4] = srcj[4] - srci[4] * srcj[3];
- srcj[5] = srcj[5] - srci[5] * srcj[3];
- srcj = src[2];
- dstj = dst[2];
- dstj[0] = dstj[0] - dsti[0] * srcj[3];
- dstj[1] = dstj[1] - dsti[1] * srcj[3];
- dstj[2] = dstj[2] - dsti[2] * srcj[3];
- srcj[4] = srcj[4] - srci[4] * srcj[3];
- srcj[5] = srcj[5] - srci[5] * srcj[3];
- srcj = src[4];
- dstj = dst[4];
- dstj[0] = dstj[0] - dsti[0] * srcj[3];
- dstj[1] = dstj[1] - dsti[1] * srcj[3];
- dstj[2] = dstj[2] - dsti[2] * srcj[3];
- dstj[3] = -diag * srcj[3];
- srcj[4] = srcj[4] - srci[4] * srcj[3];
- srcj[5] = srcj[5] - srci[5] * srcj[3];
- srcj = src[5];
- dstj = dst[5];
- dstj[0] = dstj[0] - dsti[0] * srcj[3];
- dstj[1] = dstj[1] - dsti[1] * srcj[3];
- dstj[2] = dstj[2] - dsti[2] * srcj[3];
- dstj[3] = -diag * srcj[3];
- srcj[4] = srcj[4] - srci[4] * srcj[3];
- srcj[5] = srcj[5] - srci[5] * srcj[3];
- srci = src[4];
- dsti = dst[4];
- diag = 1 / srci[4];
- dsti[4] = diag;
- dsti[0] = dsti[0] * diag;
- dsti[1] = dsti[1] * diag;
- dsti[2] = dsti[2] * diag;
- dsti[3] = dsti[3] * diag;
- srci[5] = srci[5] * diag;
- srcj = src[0];
- dstj = dst[0];
- dstj[0] = dstj[0] - dsti[0] * srcj[4];
- srcj[5] = srcj[5] - srci[5] * srcj[4];
- srcj = src[1];
- dstj = dst[1];
- dstj[0] = dstj[0] - dsti[0] * srcj[4];
- dstj[1] = dstj[1] - dsti[1] * srcj[4];
- srcj[5] = srcj[5] - srci[5] * srcj[4];
- srcj = src[2];
- dstj = dst[2];
- dstj[0] = dstj[0] - dsti[0] * srcj[4];
- dstj[1] = dstj[1] - dsti[1] * srcj[4];
- dstj[2] = dstj[2] - dsti[2] * srcj[4];
- srcj[5] = srcj[5] - srci[5] * srcj[4];
- srcj = src[3];
- dstj = dst[3];
- dstj[0] = dstj[0] - dsti[0] * srcj[4];
- dstj[1] = dstj[1] - dsti[1] * srcj[4];
- dstj[2] = dstj[2] - dsti[2] * srcj[4];
- dstj[3] = dstj[3] - dsti[3] * srcj[4];
- srcj[5] = srcj[5] - srci[5] * srcj[4];
- srcj = src[5];
- dstj = dst[5];
- dstj[0] = dstj[0] - dsti[0] * srcj[4];
- dstj[1] = dstj[1] - dsti[1] * srcj[4];
- dstj[2] = dstj[2] - dsti[2] * srcj[4];
- dstj[3] = dstj[3] - dsti[3] * srcj[4];
- dstj[4] = -diag * srcj[4];
- srcj[5] = srcj[5] - srci[5] * srcj[4];
- srci = src[5];
- dsti = dst[5];
- diag = 1 / srci[5];
- dsti[5] = diag;
- dsti[0] = dsti[0] * diag;
- dsti[1] = dsti[1] * diag;
- dsti[2] = dsti[2] * diag;
- dsti[3] = dsti[3] * diag;
- dsti[4] = dsti[4] * diag;
- srcj = src[0];
- dstj = dst[0];
- dstj[0] = dstj[0] - dsti[0] * srcj[5];
- srcj = src[1];
- dstj = dst[1];
- dstj[0] = dstj[0] - dsti[0] * srcj[5];
- dstj[1] = dstj[1] - dsti[1] * srcj[5];
- srcj = src[2];
- dstj = dst[2];
- dstj[0] = dstj[0] - dsti[0] * srcj[5];
- dstj[1] = dstj[1] - dsti[1] * srcj[5];
- dstj[2] = dstj[2] - dsti[2] * srcj[5];
- srcj = src[3];
- dstj = dst[3];
- dstj[0] = dstj[0] - dsti[0] * srcj[5];
- dstj[1] = dstj[1] - dsti[1] * srcj[5];
- dstj[2] = dstj[2] - dsti[2] * srcj[5];
- dstj[3] = dstj[3] - dsti[3] * srcj[5];
- srcj = src[4];
- dstj = dst[4];
- dstj[0] = dstj[0] - dsti[0] * srcj[5];
- dstj[1] = dstj[1] - dsti[1] * srcj[5];
- dstj[2] = dstj[2] - dsti[2] * srcj[5];
- dstj[3] = dstj[3] - dsti[3] * srcj[5];
- dstj[4] = dstj[4] - dsti[4] * srcj[5];
- dsti = dst[1];
- dst[0][1] = dsti[0];
- dsti = dst[2];
- dst[0][2] = dsti[0];
- dst[1][2] = dsti[1];
- dsti = dst[3];
- dst[0][3] = dsti[0];
- dst[1][3] = dsti[1];
- dst[2][3] = dsti[2];
- dsti = dst[4];
- dst[0][4] = dsti[0];
- dst[1][4] = dsti[1];
- dst[2][4] = dsti[2];
- dst[3][4] = dsti[3];
- dsti = dst[5];
- dst[0][5] = dsti[0];
- dst[1][5] = dsti[1];
- dst[2][5] = dsti[2];
- dst[3][5] = dsti[3];
- dst[4][5] = dsti[4];
- break;
- default:
- var _g21 = 0;
- var _g3 = size;
- while(_g21 < _g3) {
- var i1 = _g21++;
- srci = src[i1];
- dsti = dst[i1];
- var diag1 = 1 / srci[i1];
- dsti[i1] = diag1;
- var _g22 = 0;
- var _g31 = i1;
- while(_g22 < _g31) {
- var j1 = _g22++;
- dsti[j1] = dsti[j1] * diag1;
- }
- var _g4 = i1 + 1;
- var _g5 = size;
- while(_g4 < _g5) {
- var j2 = _g4++;
- srci[j2] = srci[j2] * diag1;
- }
- var _g6 = 0;
- var _g7 = i1;
- while(_g6 < _g7) {
- var j3 = _g6++;
- srcj = src[j3];
- dstj = dst[j3];
- var _g61 = 0;
- var _g71 = j3 + 1;
- while(_g61 < _g71) {
- var k = _g61++;
- dstj[k] = dstj[k] - dsti[k] * srcj[i1];
- }
- var _g8 = i1 + 1;
- var _g9 = size;
- while(_g8 < _g9) {
- var k1 = _g8++;
- srcj[k1] = srcj[k1] - srci[k1] * srcj[i1];
- }
- }
- var _g81 = i1 + 1;
- var _g91 = size;
- while(_g81 < _g91) {
- var j4 = _g81++;
- srcj = src[j4];
- dstj = dst[j4];
- var _g82 = 0;
- var _g92 = i1;
- while(_g82 < _g92) {
- var k2 = _g82++;
- dstj[k2] = dstj[k2] - dsti[k2] * srcj[i1];
- }
- dstj[i1] = -diag1 * srcj[i1];
- var _g10 = i1 + 1;
- var _g111 = size;
- while(_g10 < _g111) {
- var k3 = _g10++;
- srcj[k3] = srcj[k3] - srci[k3] * srcj[i1];
- }
- }
- }
- var _g41 = 1;
- var _g51 = size;
- while(_g41 < _g51) {
- var i2 = _g41++;
- dsti = dst[i2];
- var _g42 = 0;
- var _g52 = i2;
- while(_g42 < _g52) {
- var j5 = _g42++;
- dst[j5][i2] = dsti[j5];
- }
- }
- }
- }
- computeInvMass(info,massData) {
- var invMass = this._invMass;
- var invMassWithoutCfm = this._invMassWithoutCfm;
- var numRows = info.numRows;
- var b1 = info.b1;
- var b2 = info.b2;
- var invM1 = b1._invMass;
- var invM2 = b2._invMass;
- var invI1;
- var invI100;
- var invI101;
- var invI102;
- var invI110;
- var invI111;
- var invI112;
- var invI120;
- var invI121;
- var invI122;
- var invI2;
- var invI200;
- var invI201;
- var invI202;
- var invI210;
- var invI211;
- var invI212;
- var invI220;
- var invI221;
- var invI222;
- invI100 = b1._invInertia00;
- invI101 = b1._invInertia01;
- invI102 = b1._invInertia02;
- invI110 = b1._invInertia10;
- invI111 = b1._invInertia11;
- invI112 = b1._invInertia12;
- invI120 = b1._invInertia20;
- invI121 = b1._invInertia21;
- invI122 = b1._invInertia22;
- invI200 = b2._invInertia00;
- invI201 = b2._invInertia01;
- invI202 = b2._invInertia02;
- invI210 = b2._invInertia10;
- invI211 = b2._invInertia11;
- invI212 = b2._invInertia12;
- invI220 = b2._invInertia20;
- invI221 = b2._invInertia21;
- invI222 = b2._invInertia22;
- var _g = 0;
- var _g1 = numRows;
- while(_g < _g1) {
- var i = _g++;
- var j = info.rows[i].jacobian;
- var md = massData[i];
- j.updateSparsity();
- if((j.flag & 1) != 0) {
- md.invMLin1X = j.lin1X * invM1;
- md.invMLin1Y = j.lin1Y * invM1;
- md.invMLin1Z = j.lin1Z * invM1;
- md.invMLin2X = j.lin2X * invM2;
- md.invMLin2Y = j.lin2Y * invM2;
- md.invMLin2Z = j.lin2Z * invM2;
- } else {
- md.invMLin1X = 0;
- md.invMLin1Y = 0;
- md.invMLin1Z = 0;
- md.invMLin2X = 0;
- md.invMLin2Y = 0;
- md.invMLin2Z = 0;
- }
- if((j.flag & 2) != 0) {
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = invI100 * j.ang1X + invI101 * j.ang1Y + invI102 * j.ang1Z;
- __tmp__Y = invI110 * j.ang1X + invI111 * j.ang1Y + invI112 * j.ang1Z;
- __tmp__Z = invI120 * j.ang1X + invI121 * j.ang1Y + invI122 * j.ang1Z;
- md.invMAng1X = __tmp__X;
- md.invMAng1Y = __tmp__Y;
- md.invMAng1Z = __tmp__Z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = invI200 * j.ang2X + invI201 * j.ang2Y + invI202 * j.ang2Z;
- __tmp__Y1 = invI210 * j.ang2X + invI211 * j.ang2Y + invI212 * j.ang2Z;
- __tmp__Z1 = invI220 * j.ang2X + invI221 * j.ang2Y + invI222 * j.ang2Z;
- md.invMAng2X = __tmp__X1;
- md.invMAng2Y = __tmp__Y1;
- md.invMAng2Z = __tmp__Z1;
- } else {
- md.invMAng1X = 0;
- md.invMAng1Y = 0;
- md.invMAng1Z = 0;
- md.invMAng2X = 0;
- md.invMAng2Y = 0;
- md.invMAng2Z = 0;
- }
- }
- var _g2 = 0;
- var _g3 = numRows;
- while(_g2 < _g3) {
- var i1 = _g2++;
- var j1 = info.rows[i1].jacobian;
- var _g21 = i1;
- var _g31 = numRows;
- while(_g21 < _g31) {
- var j2 = _g21++;
- var j21 = info.rows[j2].jacobian;
- var md2 = massData[j2];
- var val = j1.lin1X * md2.invMLin1X + j1.lin1Y * md2.invMLin1Y + j1.lin1Z * md2.invMLin1Z + (j1.ang1X * md2.invMAng1X + j1.ang1Y * md2.invMAng1Y + j1.ang1Z * md2.invMAng1Z) + (j1.lin2X * md2.invMLin2X + j1.lin2Y * md2.invMLin2Y + j1.lin2Z * md2.invMLin2Z) + (j1.ang2X * md2.invMAng2X + j1.ang2Y * md2.invMAng2Y + j1.ang2Z * md2.invMAng2Z);
- if(i1 == j2) {
- invMass[i1][j2] = val + info.rows[i1].cfm;
- invMassWithoutCfm[i1][j2] = val;
- md2.mass = val + info.rows[i1].cfm;
- md2.massWithoutCfm = val;
- if(md2.mass != 0) {
- md2.mass = 1 / md2.mass;
- }
- if(md2.massWithoutCfm != 0) {
- md2.massWithoutCfm = 1 / md2.massWithoutCfm;
- }
- } else {
- invMass[i1][j2] = val;
- invMass[j2][i1] = val;
- invMassWithoutCfm[i1][j2] = val;
- invMassWithoutCfm[j2][i1] = val;
- }
- }
- }
- var _g4 = 0;
- var _g11 = this._maxSubmatrixId;
- while(_g4 < _g11) {
- var i2 = _g4++;
- this._cacheComputed[i2] = false;
- }
- }
- }
- if(!oimo.dynamics.constraint.solver.pgs) oimo.dynamics.constraint.solver.pgs = {};
- oimo.dynamics.constraint.solver.pgs.PgsContactConstraintSolver = class oimo_dynamics_constraint_solver_pgs_PgsContactConstraintSolver extends oimo.dynamics.constraint.ConstraintSolver {
- constructor(constraint) {
- super();
- this.constraint = constraint;
- this.info = new oimo.dynamics.constraint.info.contact.ContactSolverInfo();
- var this1 = new Array(oimo.common.Setting.maxManifoldPoints);
- this.massData = this1;
- var _g = 0;
- var _g1 = this.massData.length;
- while(_g < _g1) {
- var i = _g++;
- this.massData[i] = new oimo.dynamics.constraint.solver.common.ContactSolverMassDataRow();
- }
- }
- preSolveVelocity(timeStep) {
- this.constraint._getVelocitySolverInfo(timeStep,this.info);
- this._b1 = this.info.b1;
- this._b2 = this.info.b2;
- var invM1 = this._b1._invMass;
- var invM2 = this._b2._invMass;
- var invI1;
- var invI100;
- var invI101;
- var invI102;
- var invI110;
- var invI111;
- var invI112;
- var invI120;
- var invI121;
- var invI122;
- var invI2;
- var invI200;
- var invI201;
- var invI202;
- var invI210;
- var invI211;
- var invI212;
- var invI220;
- var invI221;
- var invI222;
- invI100 = this._b1._invInertia00;
- invI101 = this._b1._invInertia01;
- invI102 = this._b1._invInertia02;
- invI110 = this._b1._invInertia10;
- invI111 = this._b1._invInertia11;
- invI112 = this._b1._invInertia12;
- invI120 = this._b1._invInertia20;
- invI121 = this._b1._invInertia21;
- invI122 = this._b1._invInertia22;
- invI200 = this._b2._invInertia00;
- invI201 = this._b2._invInertia01;
- invI202 = this._b2._invInertia02;
- invI210 = this._b2._invInertia10;
- invI211 = this._b2._invInertia11;
- invI212 = this._b2._invInertia12;
- invI220 = this._b2._invInertia20;
- invI221 = this._b2._invInertia21;
- invI222 = this._b2._invInertia22;
- var _g = 0;
- var _g1 = this.info.numRows;
- while(_g < _g1) {
- var i = _g++;
- var row = this.info.rows[i];
- var md = this.massData[i];
- var j = row.jacobianN;
- md.invMLinN1X = j.lin1X * invM1;
- md.invMLinN1Y = j.lin1Y * invM1;
- md.invMLinN1Z = j.lin1Z * invM1;
- md.invMLinN2X = j.lin2X * invM2;
- md.invMLinN2Y = j.lin2Y * invM2;
- md.invMLinN2Z = j.lin2Z * invM2;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = invI100 * j.ang1X + invI101 * j.ang1Y + invI102 * j.ang1Z;
- __tmp__Y = invI110 * j.ang1X + invI111 * j.ang1Y + invI112 * j.ang1Z;
- __tmp__Z = invI120 * j.ang1X + invI121 * j.ang1Y + invI122 * j.ang1Z;
- md.invMAngN1X = __tmp__X;
- md.invMAngN1Y = __tmp__Y;
- md.invMAngN1Z = __tmp__Z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = invI200 * j.ang2X + invI201 * j.ang2Y + invI202 * j.ang2Z;
- __tmp__Y1 = invI210 * j.ang2X + invI211 * j.ang2Y + invI212 * j.ang2Z;
- __tmp__Z1 = invI220 * j.ang2X + invI221 * j.ang2Y + invI222 * j.ang2Z;
- md.invMAngN2X = __tmp__X1;
- md.invMAngN2Y = __tmp__Y1;
- md.invMAngN2Z = __tmp__Z1;
- md.massN = invM1 + invM2 + (md.invMAngN1X * j.ang1X + md.invMAngN1Y * j.ang1Y + md.invMAngN1Z * j.ang1Z) + (md.invMAngN2X * j.ang2X + md.invMAngN2Y * j.ang2Y + md.invMAngN2Z * j.ang2Z);
- if(md.massN != 0) {
- md.massN = 1 / md.massN;
- }
- var jt = row.jacobianT;
- var jb = row.jacobianB;
- md.invMLinT1X = jt.lin1X * invM1;
- md.invMLinT1Y = jt.lin1Y * invM1;
- md.invMLinT1Z = jt.lin1Z * invM1;
- md.invMLinT2X = jt.lin2X * invM2;
- md.invMLinT2Y = jt.lin2Y * invM2;
- md.invMLinT2Z = jt.lin2Z * invM2;
- md.invMLinB1X = jb.lin1X * invM1;
- md.invMLinB1Y = jb.lin1Y * invM1;
- md.invMLinB1Z = jb.lin1Z * invM1;
- md.invMLinB2X = jb.lin2X * invM2;
- md.invMLinB2Y = jb.lin2Y * invM2;
- md.invMLinB2Z = jb.lin2Z * invM2;
- var __tmp__X2;
- var __tmp__Y2;
- var __tmp__Z2;
- __tmp__X2 = invI100 * jt.ang1X + invI101 * jt.ang1Y + invI102 * jt.ang1Z;
- __tmp__Y2 = invI110 * jt.ang1X + invI111 * jt.ang1Y + invI112 * jt.ang1Z;
- __tmp__Z2 = invI120 * jt.ang1X + invI121 * jt.ang1Y + invI122 * jt.ang1Z;
- md.invMAngT1X = __tmp__X2;
- md.invMAngT1Y = __tmp__Y2;
- md.invMAngT1Z = __tmp__Z2;
- var __tmp__X3;
- var __tmp__Y3;
- var __tmp__Z3;
- __tmp__X3 = invI200 * jt.ang2X + invI201 * jt.ang2Y + invI202 * jt.ang2Z;
- __tmp__Y3 = invI210 * jt.ang2X + invI211 * jt.ang2Y + invI212 * jt.ang2Z;
- __tmp__Z3 = invI220 * jt.ang2X + invI221 * jt.ang2Y + invI222 * jt.ang2Z;
- md.invMAngT2X = __tmp__X3;
- md.invMAngT2Y = __tmp__Y3;
- md.invMAngT2Z = __tmp__Z3;
- var __tmp__X4;
- var __tmp__Y4;
- var __tmp__Z4;
- __tmp__X4 = invI100 * jb.ang1X + invI101 * jb.ang1Y + invI102 * jb.ang1Z;
- __tmp__Y4 = invI110 * jb.ang1X + invI111 * jb.ang1Y + invI112 * jb.ang1Z;
- __tmp__Z4 = invI120 * jb.ang1X + invI121 * jb.ang1Y + invI122 * jb.ang1Z;
- md.invMAngB1X = __tmp__X4;
- md.invMAngB1Y = __tmp__Y4;
- md.invMAngB1Z = __tmp__Z4;
- var __tmp__X5;
- var __tmp__Y5;
- var __tmp__Z5;
- __tmp__X5 = invI200 * jb.ang2X + invI201 * jb.ang2Y + invI202 * jb.ang2Z;
- __tmp__Y5 = invI210 * jb.ang2X + invI211 * jb.ang2Y + invI212 * jb.ang2Z;
- __tmp__Z5 = invI220 * jb.ang2X + invI221 * jb.ang2Y + invI222 * jb.ang2Z;
- md.invMAngB2X = __tmp__X5;
- md.invMAngB2Y = __tmp__Y5;
- md.invMAngB2Z = __tmp__Z5;
- var invMassTB00 = invM1 + invM2 + (md.invMAngT1X * jt.ang1X + md.invMAngT1Y * jt.ang1Y + md.invMAngT1Z * jt.ang1Z) + (md.invMAngT2X * jt.ang2X + md.invMAngT2Y * jt.ang2Y + md.invMAngT2Z * jt.ang2Z);
- var invMassTB01 = md.invMAngT1X * jb.ang1X + md.invMAngT1Y * jb.ang1Y + md.invMAngT1Z * jb.ang1Z + (md.invMAngT2X * jb.ang2X + md.invMAngT2Y * jb.ang2Y + md.invMAngT2Z * jb.ang2Z);
- var invMassTB10 = invMassTB01;
- var invMassTB11 = invM1 + invM2 + (md.invMAngB1X * jb.ang1X + md.invMAngB1Y * jb.ang1Y + md.invMAngB1Z * jb.ang1Z) + (md.invMAngB2X * jb.ang2X + md.invMAngB2Y * jb.ang2Y + md.invMAngB2Z * jb.ang2Z);
- var invDet = invMassTB00 * invMassTB11 - invMassTB01 * invMassTB10;
- if(invDet != 0) {
- invDet = 1 / invDet;
- }
- md.massTB00 = invMassTB11 * invDet;
- md.massTB01 = -invMassTB01 * invDet;
- md.massTB10 = -invMassTB10 * invDet;
- md.massTB11 = invMassTB00 * invDet;
- }
- }
- warmStart(timeStep) {
- var lv1;
- var lv1X;
- var lv1Y;
- var lv1Z;
- var lv2;
- var lv2X;
- var lv2Y;
- var lv2Z;
- var av1;
- var av1X;
- var av1Y;
- var av1Z;
- var av2;
- var av2X;
- var av2Y;
- var av2Z;
- lv1X = this._b1._velX;
- lv1Y = this._b1._velY;
- lv1Z = this._b1._velZ;
- lv2X = this._b2._velX;
- lv2Y = this._b2._velY;
- lv2Z = this._b2._velZ;
- av1X = this._b1._angVelX;
- av1Y = this._b1._angVelY;
- av1Z = this._b1._angVelZ;
- av2X = this._b2._angVelX;
- av2Y = this._b2._angVelY;
- av2Z = this._b2._angVelZ;
- var _g = 0;
- var _g1 = this.info.numRows;
- while(_g < _g1) {
- var i = _g++;
- var row = this.info.rows[i];
- var imp = row.impulse;
- var md = this.massData[i];
- var jt = row.jacobianT;
- var jb = row.jacobianB;
- var impulseN = imp.impulseN;
- var impulseT = imp.impulseLX * jt.lin1X + imp.impulseLY * jt.lin1Y + imp.impulseLZ * jt.lin1Z;
- var impulseB = imp.impulseLX * jb.lin1X + imp.impulseLY * jb.lin1Y + imp.impulseLZ * jb.lin1Z;
- imp.impulseT = impulseT;
- imp.impulseB = impulseB;
- imp.impulseN *= timeStep.dtRatio;
- imp.impulseT *= timeStep.dtRatio;
- imp.impulseB *= timeStep.dtRatio;
- lv1X += md.invMLinN1X * impulseN;
- lv1Y += md.invMLinN1Y * impulseN;
- lv1Z += md.invMLinN1Z * impulseN;
- lv1X += md.invMLinT1X * impulseT;
- lv1Y += md.invMLinT1Y * impulseT;
- lv1Z += md.invMLinT1Z * impulseT;
- lv1X += md.invMLinB1X * impulseB;
- lv1Y += md.invMLinB1Y * impulseB;
- lv1Z += md.invMLinB1Z * impulseB;
- lv2X += md.invMLinN2X * -impulseN;
- lv2Y += md.invMLinN2Y * -impulseN;
- lv2Z += md.invMLinN2Z * -impulseN;
- lv2X += md.invMLinT2X * -impulseT;
- lv2Y += md.invMLinT2Y * -impulseT;
- lv2Z += md.invMLinT2Z * -impulseT;
- lv2X += md.invMLinB2X * -impulseB;
- lv2Y += md.invMLinB2Y * -impulseB;
- lv2Z += md.invMLinB2Z * -impulseB;
- av1X += md.invMAngN1X * impulseN;
- av1Y += md.invMAngN1Y * impulseN;
- av1Z += md.invMAngN1Z * impulseN;
- av1X += md.invMAngT1X * impulseT;
- av1Y += md.invMAngT1Y * impulseT;
- av1Z += md.invMAngT1Z * impulseT;
- av1X += md.invMAngB1X * impulseB;
- av1Y += md.invMAngB1Y * impulseB;
- av1Z += md.invMAngB1Z * impulseB;
- av2X += md.invMAngN2X * -impulseN;
- av2Y += md.invMAngN2Y * -impulseN;
- av2Z += md.invMAngN2Z * -impulseN;
- av2X += md.invMAngT2X * -impulseT;
- av2Y += md.invMAngT2Y * -impulseT;
- av2Z += md.invMAngT2Z * -impulseT;
- av2X += md.invMAngB2X * -impulseB;
- av2Y += md.invMAngB2Y * -impulseB;
- av2Z += md.invMAngB2Z * -impulseB;
- }
- this._b1._velX = lv1X;
- this._b1._velY = lv1Y;
- this._b1._velZ = lv1Z;
- this._b2._velX = lv2X;
- this._b2._velY = lv2Y;
- this._b2._velZ = lv2Z;
- this._b1._angVelX = av1X;
- this._b1._angVelY = av1Y;
- this._b1._angVelZ = av1Z;
- this._b2._angVelX = av2X;
- this._b2._angVelY = av2Y;
- this._b2._angVelZ = av2Z;
- }
- solveVelocity() {
- var lv1;
- var lv1X;
- var lv1Y;
- var lv1Z;
- var lv2;
- var lv2X;
- var lv2Y;
- var lv2Z;
- var av1;
- var av1X;
- var av1Y;
- var av1Z;
- var av2;
- var av2X;
- var av2Y;
- var av2Z;
- lv1X = this._b1._velX;
- lv1Y = this._b1._velY;
- lv1Z = this._b1._velZ;
- lv2X = this._b2._velX;
- lv2Y = this._b2._velY;
- lv2Z = this._b2._velZ;
- av1X = this._b1._angVelX;
- av1Y = this._b1._angVelY;
- av1Z = this._b1._angVelZ;
- av2X = this._b2._angVelX;
- av2Y = this._b2._angVelY;
- av2Z = this._b2._angVelZ;
- var _g = 0;
- var _g1 = this.info.numRows;
- while(_g < _g1) {
- var i = _g++;
- var row = this.info.rows[i];
- var md = this.massData[i];
- var imp = row.impulse;
- var rvt = 0;
- var j = row.jacobianT;
- rvt += lv1X * j.lin1X + lv1Y * j.lin1Y + lv1Z * j.lin1Z;
- rvt -= lv2X * j.lin2X + lv2Y * j.lin2Y + lv2Z * j.lin2Z;
- rvt += av1X * j.ang1X + av1Y * j.ang1Y + av1Z * j.ang1Z;
- rvt -= av2X * j.ang2X + av2Y * j.ang2Y + av2Z * j.ang2Z;
- var rvb = 0;
- j = row.jacobianB;
- rvb += lv1X * j.lin1X + lv1Y * j.lin1Y + lv1Z * j.lin1Z;
- rvb -= lv2X * j.lin2X + lv2Y * j.lin2Y + lv2Z * j.lin2Z;
- rvb += av1X * j.ang1X + av1Y * j.ang1Y + av1Z * j.ang1Z;
- rvb -= av2X * j.ang2X + av2Y * j.ang2Y + av2Z * j.ang2Z;
- var impulseT = -(rvt * md.massTB00 + rvb * md.massTB01);
- var impulseB = -(rvt * md.massTB10 + rvb * md.massTB11);
- var oldImpulseT = imp.impulseT;
- var oldImpulseB = imp.impulseB;
- imp.impulseT += impulseT;
- imp.impulseB += impulseB;
- var maxImpulse = row.friction * imp.impulseN;
- if(maxImpulse == 0) {
- imp.impulseT = 0;
- imp.impulseB = 0;
- } else {
- var impulseLengthSq = imp.impulseT * imp.impulseT + imp.impulseB * imp.impulseB;
- if(impulseLengthSq > maxImpulse * maxImpulse) {
- var invL = maxImpulse / Math.sqrt(impulseLengthSq);
- imp.impulseT *= invL;
- imp.impulseB *= invL;
- }
- }
- impulseT = imp.impulseT - oldImpulseT;
- impulseB = imp.impulseB - oldImpulseB;
- lv1X += md.invMLinT1X * impulseT;
- lv1Y += md.invMLinT1Y * impulseT;
- lv1Z += md.invMLinT1Z * impulseT;
- lv1X += md.invMLinB1X * impulseB;
- lv1Y += md.invMLinB1Y * impulseB;
- lv1Z += md.invMLinB1Z * impulseB;
- lv2X += md.invMLinT2X * -impulseT;
- lv2Y += md.invMLinT2Y * -impulseT;
- lv2Z += md.invMLinT2Z * -impulseT;
- lv2X += md.invMLinB2X * -impulseB;
- lv2Y += md.invMLinB2Y * -impulseB;
- lv2Z += md.invMLinB2Z * -impulseB;
- av1X += md.invMAngT1X * impulseT;
- av1Y += md.invMAngT1Y * impulseT;
- av1Z += md.invMAngT1Z * impulseT;
- av1X += md.invMAngB1X * impulseB;
- av1Y += md.invMAngB1Y * impulseB;
- av1Z += md.invMAngB1Z * impulseB;
- av2X += md.invMAngT2X * -impulseT;
- av2Y += md.invMAngT2Y * -impulseT;
- av2Z += md.invMAngT2Z * -impulseT;
- av2X += md.invMAngB2X * -impulseB;
- av2Y += md.invMAngB2Y * -impulseB;
- av2Z += md.invMAngB2Z * -impulseB;
- }
- var _g2 = 0;
- var _g3 = this.info.numRows;
- while(_g2 < _g3) {
- var i1 = _g2++;
- var row1 = this.info.rows[i1];
- var md1 = this.massData[i1];
- var imp1 = row1.impulse;
- var rvn = 0;
- var j1 = row1.jacobianN;
- rvn += lv1X * j1.lin1X + lv1Y * j1.lin1Y + lv1Z * j1.lin1Z;
- rvn -= lv2X * j1.lin2X + lv2Y * j1.lin2Y + lv2Z * j1.lin2Z;
- rvn += av1X * j1.ang1X + av1Y * j1.ang1Y + av1Z * j1.ang1Z;
- rvn -= av2X * j1.ang2X + av2Y * j1.ang2Y + av2Z * j1.ang2Z;
- var impulseN = (row1.rhs - rvn) * md1.massN;
- var oldImpulseN = imp1.impulseN;
- imp1.impulseN += impulseN;
- if(imp1.impulseN < 0) {
- imp1.impulseN = 0;
- }
- impulseN = imp1.impulseN - oldImpulseN;
- lv1X += md1.invMLinN1X * impulseN;
- lv1Y += md1.invMLinN1Y * impulseN;
- lv1Z += md1.invMLinN1Z * impulseN;
- lv2X += md1.invMLinN2X * -impulseN;
- lv2Y += md1.invMLinN2Y * -impulseN;
- lv2Z += md1.invMLinN2Z * -impulseN;
- av1X += md1.invMAngN1X * impulseN;
- av1Y += md1.invMAngN1Y * impulseN;
- av1Z += md1.invMAngN1Z * impulseN;
- av2X += md1.invMAngN2X * -impulseN;
- av2Y += md1.invMAngN2Y * -impulseN;
- av2Z += md1.invMAngN2Z * -impulseN;
- }
- this._b1._velX = lv1X;
- this._b1._velY = lv1Y;
- this._b1._velZ = lv1Z;
- this._b2._velX = lv2X;
- this._b2._velY = lv2Y;
- this._b2._velZ = lv2Z;
- this._b1._angVelX = av1X;
- this._b1._angVelY = av1Y;
- this._b1._angVelZ = av1Z;
- this._b2._angVelX = av2X;
- this._b2._angVelY = av2Y;
- this._b2._angVelZ = av2Z;
- }
- preSolvePosition(timeStep) {
- this.constraint._syncManifold();
- this.constraint._getPositionSolverInfo(this.info);
- var invM1 = this._b1._invMass;
- var invM2 = this._b2._invMass;
- var invI1;
- var invI100;
- var invI101;
- var invI102;
- var invI110;
- var invI111;
- var invI112;
- var invI120;
- var invI121;
- var invI122;
- var invI2;
- var invI200;
- var invI201;
- var invI202;
- var invI210;
- var invI211;
- var invI212;
- var invI220;
- var invI221;
- var invI222;
- invI100 = this._b1._invInertia00;
- invI101 = this._b1._invInertia01;
- invI102 = this._b1._invInertia02;
- invI110 = this._b1._invInertia10;
- invI111 = this._b1._invInertia11;
- invI112 = this._b1._invInertia12;
- invI120 = this._b1._invInertia20;
- invI121 = this._b1._invInertia21;
- invI122 = this._b1._invInertia22;
- invI200 = this._b2._invInertia00;
- invI201 = this._b2._invInertia01;
- invI202 = this._b2._invInertia02;
- invI210 = this._b2._invInertia10;
- invI211 = this._b2._invInertia11;
- invI212 = this._b2._invInertia12;
- invI220 = this._b2._invInertia20;
- invI221 = this._b2._invInertia21;
- invI222 = this._b2._invInertia22;
- var _g = 0;
- var _g1 = this.info.numRows;
- while(_g < _g1) {
- var i = _g++;
- var row = this.info.rows[i];
- var md = this.massData[i];
- var j = row.jacobianN;
- md.invMLinN1X = j.lin1X * invM1;
- md.invMLinN1Y = j.lin1Y * invM1;
- md.invMLinN1Z = j.lin1Z * invM1;
- md.invMLinN2X = j.lin2X * invM2;
- md.invMLinN2Y = j.lin2Y * invM2;
- md.invMLinN2Z = j.lin2Z * invM2;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = invI100 * j.ang1X + invI101 * j.ang1Y + invI102 * j.ang1Z;
- __tmp__Y = invI110 * j.ang1X + invI111 * j.ang1Y + invI112 * j.ang1Z;
- __tmp__Z = invI120 * j.ang1X + invI121 * j.ang1Y + invI122 * j.ang1Z;
- md.invMAngN1X = __tmp__X;
- md.invMAngN1Y = __tmp__Y;
- md.invMAngN1Z = __tmp__Z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = invI200 * j.ang2X + invI201 * j.ang2Y + invI202 * j.ang2Z;
- __tmp__Y1 = invI210 * j.ang2X + invI211 * j.ang2Y + invI212 * j.ang2Z;
- __tmp__Z1 = invI220 * j.ang2X + invI221 * j.ang2Y + invI222 * j.ang2Z;
- md.invMAngN2X = __tmp__X1;
- md.invMAngN2Y = __tmp__Y1;
- md.invMAngN2Z = __tmp__Z1;
- md.massN = invM1 + invM2 + (md.invMAngN1X * j.ang1X + md.invMAngN1Y * j.ang1Y + md.invMAngN1Z * j.ang1Z) + (md.invMAngN2X * j.ang2X + md.invMAngN2Y * j.ang2Y + md.invMAngN2Z * j.ang2Z);
- if(md.massN != 0) {
- md.massN = 1 / md.massN;
- }
- }
- var _g2 = 0;
- var _g11 = this.info.numRows;
- while(_g2 < _g11) {
- var i1 = _g2++;
- this.info.rows[i1].impulse.impulseP = 0;
- }
- }
- solvePositionSplitImpulse() {
- var lv1;
- var lv1X;
- var lv1Y;
- var lv1Z;
- var lv2;
- var lv2X;
- var lv2Y;
- var lv2Z;
- var av1;
- var av1X;
- var av1Y;
- var av1Z;
- var av2;
- var av2X;
- var av2Y;
- var av2Z;
- lv1X = this._b1._pseudoVelX;
- lv1Y = this._b1._pseudoVelY;
- lv1Z = this._b1._pseudoVelZ;
- lv2X = this._b2._pseudoVelX;
- lv2Y = this._b2._pseudoVelY;
- lv2Z = this._b2._pseudoVelZ;
- av1X = this._b1._angPseudoVelX;
- av1Y = this._b1._angPseudoVelY;
- av1Z = this._b1._angPseudoVelZ;
- av2X = this._b2._angPseudoVelX;
- av2Y = this._b2._angPseudoVelY;
- av2Z = this._b2._angPseudoVelZ;
- var _g = 0;
- var _g1 = this.info.numRows;
- while(_g < _g1) {
- var i = _g++;
- var row = this.info.rows[i];
- var md = this.massData[i];
- var imp = row.impulse;
- var j = row.jacobianN;
- var rvn = 0;
- rvn += lv1X * j.lin1X + lv1Y * j.lin1Y + lv1Z * j.lin1Z;
- rvn -= lv2X * j.lin2X + lv2Y * j.lin2Y + lv2Z * j.lin2Z;
- rvn += av1X * j.ang1X + av1Y * j.ang1Y + av1Z * j.ang1Z;
- rvn -= av2X * j.ang2X + av2Y * j.ang2Y + av2Z * j.ang2Z;
- var impulseP = (row.rhs - rvn) * md.massN * oimo.common.Setting.positionSplitImpulseBaumgarte;
- var oldImpulseP = imp.impulseP;
- imp.impulseP += impulseP;
- if(imp.impulseP < 0) {
- imp.impulseP = 0;
- }
- impulseP = imp.impulseP - oldImpulseP;
- lv1X += md.invMLinN1X * impulseP;
- lv1Y += md.invMLinN1Y * impulseP;
- lv1Z += md.invMLinN1Z * impulseP;
- lv2X += md.invMLinN2X * -impulseP;
- lv2Y += md.invMLinN2Y * -impulseP;
- lv2Z += md.invMLinN2Z * -impulseP;
- av1X += md.invMAngN1X * impulseP;
- av1Y += md.invMAngN1Y * impulseP;
- av1Z += md.invMAngN1Z * impulseP;
- av2X += md.invMAngN2X * -impulseP;
- av2Y += md.invMAngN2Y * -impulseP;
- av2Z += md.invMAngN2Z * -impulseP;
- }
- this._b1._pseudoVelX = lv1X;
- this._b1._pseudoVelY = lv1Y;
- this._b1._pseudoVelZ = lv1Z;
- this._b2._pseudoVelX = lv2X;
- this._b2._pseudoVelY = lv2Y;
- this._b2._pseudoVelZ = lv2Z;
- this._b1._angPseudoVelX = av1X;
- this._b1._angPseudoVelY = av1Y;
- this._b1._angPseudoVelZ = av1Z;
- this._b2._angPseudoVelX = av2X;
- this._b2._angPseudoVelY = av2Y;
- this._b2._angPseudoVelZ = av2Z;
- }
- solvePositionNgs(timeStep) {
- this.constraint._syncManifold();
- this.constraint._getPositionSolverInfo(this.info);
- var invM1 = this._b1._invMass;
- var invM2 = this._b2._invMass;
- var invI1;
- var invI100;
- var invI101;
- var invI102;
- var invI110;
- var invI111;
- var invI112;
- var invI120;
- var invI121;
- var invI122;
- var invI2;
- var invI200;
- var invI201;
- var invI202;
- var invI210;
- var invI211;
- var invI212;
- var invI220;
- var invI221;
- var invI222;
- invI100 = this._b1._invInertia00;
- invI101 = this._b1._invInertia01;
- invI102 = this._b1._invInertia02;
- invI110 = this._b1._invInertia10;
- invI111 = this._b1._invInertia11;
- invI112 = this._b1._invInertia12;
- invI120 = this._b1._invInertia20;
- invI121 = this._b1._invInertia21;
- invI122 = this._b1._invInertia22;
- invI200 = this._b2._invInertia00;
- invI201 = this._b2._invInertia01;
- invI202 = this._b2._invInertia02;
- invI210 = this._b2._invInertia10;
- invI211 = this._b2._invInertia11;
- invI212 = this._b2._invInertia12;
- invI220 = this._b2._invInertia20;
- invI221 = this._b2._invInertia21;
- invI222 = this._b2._invInertia22;
- var _g = 0;
- var _g1 = this.info.numRows;
- while(_g < _g1) {
- var i = _g++;
- var row = this.info.rows[i];
- var md = this.massData[i];
- var j = row.jacobianN;
- md.invMLinN1X = j.lin1X * invM1;
- md.invMLinN1Y = j.lin1Y * invM1;
- md.invMLinN1Z = j.lin1Z * invM1;
- md.invMLinN2X = j.lin2X * invM2;
- md.invMLinN2Y = j.lin2Y * invM2;
- md.invMLinN2Z = j.lin2Z * invM2;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = invI100 * j.ang1X + invI101 * j.ang1Y + invI102 * j.ang1Z;
- __tmp__Y = invI110 * j.ang1X + invI111 * j.ang1Y + invI112 * j.ang1Z;
- __tmp__Z = invI120 * j.ang1X + invI121 * j.ang1Y + invI122 * j.ang1Z;
- md.invMAngN1X = __tmp__X;
- md.invMAngN1Y = __tmp__Y;
- md.invMAngN1Z = __tmp__Z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = invI200 * j.ang2X + invI201 * j.ang2Y + invI202 * j.ang2Z;
- __tmp__Y1 = invI210 * j.ang2X + invI211 * j.ang2Y + invI212 * j.ang2Z;
- __tmp__Z1 = invI220 * j.ang2X + invI221 * j.ang2Y + invI222 * j.ang2Z;
- md.invMAngN2X = __tmp__X1;
- md.invMAngN2Y = __tmp__Y1;
- md.invMAngN2Z = __tmp__Z1;
- md.massN = invM1 + invM2 + (md.invMAngN1X * j.ang1X + md.invMAngN1Y * j.ang1Y + md.invMAngN1Z * j.ang1Z) + (md.invMAngN2X * j.ang2X + md.invMAngN2Y * j.ang2Y + md.invMAngN2Z * j.ang2Z);
- if(md.massN != 0) {
- md.massN = 1 / md.massN;
- }
- }
- var lv1;
- var lv1X;
- var lv1Y;
- var lv1Z;
- var lv2;
- var lv2X;
- var lv2Y;
- var lv2Z;
- var av1;
- var av1X;
- var av1Y;
- var av1Z;
- var av2;
- var av2X;
- var av2Y;
- var av2Z;
- lv1X = 0;
- lv1Y = 0;
- lv1Z = 0;
- lv2X = 0;
- lv2Y = 0;
- lv2Z = 0;
- av1X = 0;
- av1Y = 0;
- av1Z = 0;
- av2X = 0;
- av2Y = 0;
- av2Z = 0;
- var _g2 = 0;
- var _g11 = this.info.numRows;
- while(_g2 < _g11) {
- var i1 = _g2++;
- var row1 = this.info.rows[i1];
- var md1 = this.massData[i1];
- var imp = row1.impulse;
- var j1 = row1.jacobianN;
- var rvn = 0;
- rvn += lv1X * j1.lin1X + lv1Y * j1.lin1Y + lv1Z * j1.lin1Z;
- rvn -= lv2X * j1.lin2X + lv2Y * j1.lin2Y + lv2Z * j1.lin2Z;
- rvn += av1X * j1.ang1X + av1Y * j1.ang1Y + av1Z * j1.ang1Z;
- rvn -= av2X * j1.ang2X + av2Y * j1.ang2Y + av2Z * j1.ang2Z;
- var impulseP = (row1.rhs - rvn) * md1.massN * oimo.common.Setting.positionNgsBaumgarte;
- var oldImpulseP = imp.impulseP;
- imp.impulseP += impulseP;
- if(imp.impulseP < 0) {
- imp.impulseP = 0;
- }
- impulseP = imp.impulseP - oldImpulseP;
- lv1X += md1.invMLinN1X * impulseP;
- lv1Y += md1.invMLinN1Y * impulseP;
- lv1Z += md1.invMLinN1Z * impulseP;
- lv2X += md1.invMLinN2X * -impulseP;
- lv2Y += md1.invMLinN2Y * -impulseP;
- lv2Z += md1.invMLinN2Z * -impulseP;
- av1X += md1.invMAngN1X * impulseP;
- av1Y += md1.invMAngN1Y * impulseP;
- av1Z += md1.invMAngN1Z * impulseP;
- av2X += md1.invMAngN2X * -impulseP;
- av2Y += md1.invMAngN2Y * -impulseP;
- av2Z += md1.invMAngN2Z * -impulseP;
- }
- var _this = this._b1;
- _this._transform._positionX += lv1X;
- _this._transform._positionY += lv1Y;
- _this._transform._positionZ += lv1Z;
- var _this1 = this._b2;
- _this1._transform._positionX += lv2X;
- _this1._transform._positionY += lv2Y;
- _this1._transform._positionZ += lv2Z;
- var _this2 = this._b1;
- var theta = Math.sqrt(av1X * av1X + av1Y * av1Y + av1Z * av1Z);
- var halfTheta = theta * 0.5;
- var rotationToSinAxisFactor;
- var cosHalfTheta;
- if(halfTheta < 0.5) {
- var ht2 = halfTheta * halfTheta;
- rotationToSinAxisFactor = 0.5 * (1 - ht2 * 0.166666666666666657 + ht2 * ht2 * 0.00833333333333333322);
- cosHalfTheta = 1 - ht2 * 0.5 + ht2 * ht2 * 0.0416666666666666644;
- } else {
- rotationToSinAxisFactor = Math.sin(halfTheta) / theta;
- cosHalfTheta = Math.cos(halfTheta);
- }
- var sinAxis;
- var sinAxisX;
- var sinAxisY;
- var sinAxisZ;
- sinAxisX = av1X * rotationToSinAxisFactor;
- sinAxisY = av1Y * rotationToSinAxisFactor;
- sinAxisZ = av1Z * rotationToSinAxisFactor;
- var dq;
- var dqX;
- var dqY;
- var dqZ;
- var dqW;
- dqX = sinAxisX;
- dqY = sinAxisY;
- dqZ = sinAxisZ;
- dqW = cosHalfTheta;
- var q;
- var qX;
- var qY;
- var qZ;
- var qW;
- var e00 = _this2._transform._rotation00;
- var e11 = _this2._transform._rotation11;
- var e22 = _this2._transform._rotation22;
- var t = e00 + e11 + e22;
- var s;
- if(t > 0) {
- s = Math.sqrt(t + 1);
- qW = 0.5 * s;
- s = 0.5 / s;
- qX = (_this2._transform._rotation21 - _this2._transform._rotation12) * s;
- qY = (_this2._transform._rotation02 - _this2._transform._rotation20) * s;
- qZ = (_this2._transform._rotation10 - _this2._transform._rotation01) * s;
- } else if(e00 > e11) {
- if(e00 > e22) {
- s = Math.sqrt(e00 - e11 - e22 + 1);
- qX = 0.5 * s;
- s = 0.5 / s;
- qY = (_this2._transform._rotation01 + _this2._transform._rotation10) * s;
- qZ = (_this2._transform._rotation02 + _this2._transform._rotation20) * s;
- qW = (_this2._transform._rotation21 - _this2._transform._rotation12) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- qZ = 0.5 * s;
- s = 0.5 / s;
- qX = (_this2._transform._rotation02 + _this2._transform._rotation20) * s;
- qY = (_this2._transform._rotation12 + _this2._transform._rotation21) * s;
- qW = (_this2._transform._rotation10 - _this2._transform._rotation01) * s;
- }
- } else if(e11 > e22) {
- s = Math.sqrt(e11 - e22 - e00 + 1);
- qY = 0.5 * s;
- s = 0.5 / s;
- qX = (_this2._transform._rotation01 + _this2._transform._rotation10) * s;
- qZ = (_this2._transform._rotation12 + _this2._transform._rotation21) * s;
- qW = (_this2._transform._rotation02 - _this2._transform._rotation20) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- qZ = 0.5 * s;
- s = 0.5 / s;
- qX = (_this2._transform._rotation02 + _this2._transform._rotation20) * s;
- qY = (_this2._transform._rotation12 + _this2._transform._rotation21) * s;
- qW = (_this2._transform._rotation10 - _this2._transform._rotation01) * s;
- }
- qX = dqW * qX + dqX * qW + dqY * qZ - dqZ * qY;
- qY = dqW * qY - dqX * qZ + dqY * qW + dqZ * qX;
- qZ = dqW * qZ + dqX * qY - dqY * qX + dqZ * qW;
- qW = dqW * qW - dqX * qX - dqY * qY - dqZ * qZ;
- var l = qX * qX + qY * qY + qZ * qZ + qW * qW;
- if(l > 1e-32) {
- l = 1 / Math.sqrt(l);
- }
- qX *= l;
- qY *= l;
- qZ *= l;
- qW *= l;
- var x = qX;
- var y = qY;
- var z = qZ;
- var w = qW;
- var x2 = 2 * x;
- var y2 = 2 * y;
- var z2 = 2 * z;
- var xx = x * x2;
- var yy = y * y2;
- var zz = z * z2;
- var xy = x * y2;
- var yz = y * z2;
- var xz = x * z2;
- var wx = w * x2;
- var wy = w * y2;
- var wz = w * z2;
- _this2._transform._rotation00 = 1 - yy - zz;
- _this2._transform._rotation01 = xy - wz;
- _this2._transform._rotation02 = xz + wy;
- _this2._transform._rotation10 = xy + wz;
- _this2._transform._rotation11 = 1 - xx - zz;
- _this2._transform._rotation12 = yz - wx;
- _this2._transform._rotation20 = xz - wy;
- _this2._transform._rotation21 = yz + wx;
- _this2._transform._rotation22 = 1 - xx - yy;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = _this2._transform._rotation00 * _this2._invLocalInertia00 + _this2._transform._rotation01 * _this2._invLocalInertia10 + _this2._transform._rotation02 * _this2._invLocalInertia20;
- __tmp__01 = _this2._transform._rotation00 * _this2._invLocalInertia01 + _this2._transform._rotation01 * _this2._invLocalInertia11 + _this2._transform._rotation02 * _this2._invLocalInertia21;
- __tmp__02 = _this2._transform._rotation00 * _this2._invLocalInertia02 + _this2._transform._rotation01 * _this2._invLocalInertia12 + _this2._transform._rotation02 * _this2._invLocalInertia22;
- __tmp__10 = _this2._transform._rotation10 * _this2._invLocalInertia00 + _this2._transform._rotation11 * _this2._invLocalInertia10 + _this2._transform._rotation12 * _this2._invLocalInertia20;
- __tmp__11 = _this2._transform._rotation10 * _this2._invLocalInertia01 + _this2._transform._rotation11 * _this2._invLocalInertia11 + _this2._transform._rotation12 * _this2._invLocalInertia21;
- __tmp__12 = _this2._transform._rotation10 * _this2._invLocalInertia02 + _this2._transform._rotation11 * _this2._invLocalInertia12 + _this2._transform._rotation12 * _this2._invLocalInertia22;
- __tmp__20 = _this2._transform._rotation20 * _this2._invLocalInertia00 + _this2._transform._rotation21 * _this2._invLocalInertia10 + _this2._transform._rotation22 * _this2._invLocalInertia20;
- __tmp__21 = _this2._transform._rotation20 * _this2._invLocalInertia01 + _this2._transform._rotation21 * _this2._invLocalInertia11 + _this2._transform._rotation22 * _this2._invLocalInertia21;
- __tmp__22 = _this2._transform._rotation20 * _this2._invLocalInertia02 + _this2._transform._rotation21 * _this2._invLocalInertia12 + _this2._transform._rotation22 * _this2._invLocalInertia22;
- _this2._invInertia00 = __tmp__00;
- _this2._invInertia01 = __tmp__01;
- _this2._invInertia02 = __tmp__02;
- _this2._invInertia10 = __tmp__10;
- _this2._invInertia11 = __tmp__11;
- _this2._invInertia12 = __tmp__12;
- _this2._invInertia20 = __tmp__20;
- _this2._invInertia21 = __tmp__21;
- _this2._invInertia22 = __tmp__22;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = _this2._invInertia00 * _this2._transform._rotation00 + _this2._invInertia01 * _this2._transform._rotation01 + _this2._invInertia02 * _this2._transform._rotation02;
- __tmp__011 = _this2._invInertia00 * _this2._transform._rotation10 + _this2._invInertia01 * _this2._transform._rotation11 + _this2._invInertia02 * _this2._transform._rotation12;
- __tmp__021 = _this2._invInertia00 * _this2._transform._rotation20 + _this2._invInertia01 * _this2._transform._rotation21 + _this2._invInertia02 * _this2._transform._rotation22;
- __tmp__101 = _this2._invInertia10 * _this2._transform._rotation00 + _this2._invInertia11 * _this2._transform._rotation01 + _this2._invInertia12 * _this2._transform._rotation02;
- __tmp__111 = _this2._invInertia10 * _this2._transform._rotation10 + _this2._invInertia11 * _this2._transform._rotation11 + _this2._invInertia12 * _this2._transform._rotation12;
- __tmp__121 = _this2._invInertia10 * _this2._transform._rotation20 + _this2._invInertia11 * _this2._transform._rotation21 + _this2._invInertia12 * _this2._transform._rotation22;
- __tmp__201 = _this2._invInertia20 * _this2._transform._rotation00 + _this2._invInertia21 * _this2._transform._rotation01 + _this2._invInertia22 * _this2._transform._rotation02;
- __tmp__211 = _this2._invInertia20 * _this2._transform._rotation10 + _this2._invInertia21 * _this2._transform._rotation11 + _this2._invInertia22 * _this2._transform._rotation12;
- __tmp__221 = _this2._invInertia20 * _this2._transform._rotation20 + _this2._invInertia21 * _this2._transform._rotation21 + _this2._invInertia22 * _this2._transform._rotation22;
- _this2._invInertia00 = __tmp__001;
- _this2._invInertia01 = __tmp__011;
- _this2._invInertia02 = __tmp__021;
- _this2._invInertia10 = __tmp__101;
- _this2._invInertia11 = __tmp__111;
- _this2._invInertia12 = __tmp__121;
- _this2._invInertia20 = __tmp__201;
- _this2._invInertia21 = __tmp__211;
- _this2._invInertia22 = __tmp__221;
- _this2._invInertia00 *= _this2._rotFactor.x;
- _this2._invInertia01 *= _this2._rotFactor.x;
- _this2._invInertia02 *= _this2._rotFactor.x;
- _this2._invInertia10 *= _this2._rotFactor.y;
- _this2._invInertia11 *= _this2._rotFactor.y;
- _this2._invInertia12 *= _this2._rotFactor.y;
- _this2._invInertia20 *= _this2._rotFactor.z;
- _this2._invInertia21 *= _this2._rotFactor.z;
- _this2._invInertia22 *= _this2._rotFactor.z;
- var _this3 = this._b2;
- var theta1 = Math.sqrt(av2X * av2X + av2Y * av2Y + av2Z * av2Z);
- var halfTheta1 = theta1 * 0.5;
- var rotationToSinAxisFactor1;
- var cosHalfTheta1;
- if(halfTheta1 < 0.5) {
- var ht21 = halfTheta1 * halfTheta1;
- rotationToSinAxisFactor1 = 0.5 * (1 - ht21 * 0.166666666666666657 + ht21 * ht21 * 0.00833333333333333322);
- cosHalfTheta1 = 1 - ht21 * 0.5 + ht21 * ht21 * 0.0416666666666666644;
- } else {
- rotationToSinAxisFactor1 = Math.sin(halfTheta1) / theta1;
- cosHalfTheta1 = Math.cos(halfTheta1);
- }
- var sinAxis1;
- var sinAxisX1;
- var sinAxisY1;
- var sinAxisZ1;
- sinAxisX1 = av2X * rotationToSinAxisFactor1;
- sinAxisY1 = av2Y * rotationToSinAxisFactor1;
- sinAxisZ1 = av2Z * rotationToSinAxisFactor1;
- var dq1;
- var dqX1;
- var dqY1;
- var dqZ1;
- var dqW1;
- dqX1 = sinAxisX1;
- dqY1 = sinAxisY1;
- dqZ1 = sinAxisZ1;
- dqW1 = cosHalfTheta1;
- var q1;
- var qX1;
- var qY1;
- var qZ1;
- var qW1;
- var e001 = _this3._transform._rotation00;
- var e111 = _this3._transform._rotation11;
- var e221 = _this3._transform._rotation22;
- var t1 = e001 + e111 + e221;
- var s1;
- if(t1 > 0) {
- s1 = Math.sqrt(t1 + 1);
- qW1 = 0.5 * s1;
- s1 = 0.5 / s1;
- qX1 = (_this3._transform._rotation21 - _this3._transform._rotation12) * s1;
- qY1 = (_this3._transform._rotation02 - _this3._transform._rotation20) * s1;
- qZ1 = (_this3._transform._rotation10 - _this3._transform._rotation01) * s1;
- } else if(e001 > e111) {
- if(e001 > e221) {
- s1 = Math.sqrt(e001 - e111 - e221 + 1);
- qX1 = 0.5 * s1;
- s1 = 0.5 / s1;
- qY1 = (_this3._transform._rotation01 + _this3._transform._rotation10) * s1;
- qZ1 = (_this3._transform._rotation02 + _this3._transform._rotation20) * s1;
- qW1 = (_this3._transform._rotation21 - _this3._transform._rotation12) * s1;
- } else {
- s1 = Math.sqrt(e221 - e001 - e111 + 1);
- qZ1 = 0.5 * s1;
- s1 = 0.5 / s1;
- qX1 = (_this3._transform._rotation02 + _this3._transform._rotation20) * s1;
- qY1 = (_this3._transform._rotation12 + _this3._transform._rotation21) * s1;
- qW1 = (_this3._transform._rotation10 - _this3._transform._rotation01) * s1;
- }
- } else if(e111 > e221) {
- s1 = Math.sqrt(e111 - e221 - e001 + 1);
- qY1 = 0.5 * s1;
- s1 = 0.5 / s1;
- qX1 = (_this3._transform._rotation01 + _this3._transform._rotation10) * s1;
- qZ1 = (_this3._transform._rotation12 + _this3._transform._rotation21) * s1;
- qW1 = (_this3._transform._rotation02 - _this3._transform._rotation20) * s1;
- } else {
- s1 = Math.sqrt(e221 - e001 - e111 + 1);
- qZ1 = 0.5 * s1;
- s1 = 0.5 / s1;
- qX1 = (_this3._transform._rotation02 + _this3._transform._rotation20) * s1;
- qY1 = (_this3._transform._rotation12 + _this3._transform._rotation21) * s1;
- qW1 = (_this3._transform._rotation10 - _this3._transform._rotation01) * s1;
- }
- qX1 = dqW1 * qX1 + dqX1 * qW1 + dqY1 * qZ1 - dqZ1 * qY1;
- qY1 = dqW1 * qY1 - dqX1 * qZ1 + dqY1 * qW1 + dqZ1 * qX1;
- qZ1 = dqW1 * qZ1 + dqX1 * qY1 - dqY1 * qX1 + dqZ1 * qW1;
- qW1 = dqW1 * qW1 - dqX1 * qX1 - dqY1 * qY1 - dqZ1 * qZ1;
- var l1 = qX1 * qX1 + qY1 * qY1 + qZ1 * qZ1 + qW1 * qW1;
- if(l1 > 1e-32) {
- l1 = 1 / Math.sqrt(l1);
- }
- qX1 *= l1;
- qY1 *= l1;
- qZ1 *= l1;
- qW1 *= l1;
- var x1 = qX1;
- var y1 = qY1;
- var z1 = qZ1;
- var w1 = qW1;
- var x21 = 2 * x1;
- var y21 = 2 * y1;
- var z21 = 2 * z1;
- var xx1 = x1 * x21;
- var yy1 = y1 * y21;
- var zz1 = z1 * z21;
- var xy1 = x1 * y21;
- var yz1 = y1 * z21;
- var xz1 = x1 * z21;
- var wx1 = w1 * x21;
- var wy1 = w1 * y21;
- var wz1 = w1 * z21;
- _this3._transform._rotation00 = 1 - yy1 - zz1;
- _this3._transform._rotation01 = xy1 - wz1;
- _this3._transform._rotation02 = xz1 + wy1;
- _this3._transform._rotation10 = xy1 + wz1;
- _this3._transform._rotation11 = 1 - xx1 - zz1;
- _this3._transform._rotation12 = yz1 - wx1;
- _this3._transform._rotation20 = xz1 - wy1;
- _this3._transform._rotation21 = yz1 + wx1;
- _this3._transform._rotation22 = 1 - xx1 - yy1;
- var __tmp__002;
- var __tmp__012;
- var __tmp__022;
- var __tmp__102;
- var __tmp__112;
- var __tmp__122;
- var __tmp__202;
- var __tmp__212;
- var __tmp__222;
- __tmp__002 = _this3._transform._rotation00 * _this3._invLocalInertia00 + _this3._transform._rotation01 * _this3._invLocalInertia10 + _this3._transform._rotation02 * _this3._invLocalInertia20;
- __tmp__012 = _this3._transform._rotation00 * _this3._invLocalInertia01 + _this3._transform._rotation01 * _this3._invLocalInertia11 + _this3._transform._rotation02 * _this3._invLocalInertia21;
- __tmp__022 = _this3._transform._rotation00 * _this3._invLocalInertia02 + _this3._transform._rotation01 * _this3._invLocalInertia12 + _this3._transform._rotation02 * _this3._invLocalInertia22;
- __tmp__102 = _this3._transform._rotation10 * _this3._invLocalInertia00 + _this3._transform._rotation11 * _this3._invLocalInertia10 + _this3._transform._rotation12 * _this3._invLocalInertia20;
- __tmp__112 = _this3._transform._rotation10 * _this3._invLocalInertia01 + _this3._transform._rotation11 * _this3._invLocalInertia11 + _this3._transform._rotation12 * _this3._invLocalInertia21;
- __tmp__122 = _this3._transform._rotation10 * _this3._invLocalInertia02 + _this3._transform._rotation11 * _this3._invLocalInertia12 + _this3._transform._rotation12 * _this3._invLocalInertia22;
- __tmp__202 = _this3._transform._rotation20 * _this3._invLocalInertia00 + _this3._transform._rotation21 * _this3._invLocalInertia10 + _this3._transform._rotation22 * _this3._invLocalInertia20;
- __tmp__212 = _this3._transform._rotation20 * _this3._invLocalInertia01 + _this3._transform._rotation21 * _this3._invLocalInertia11 + _this3._transform._rotation22 * _this3._invLocalInertia21;
- __tmp__222 = _this3._transform._rotation20 * _this3._invLocalInertia02 + _this3._transform._rotation21 * _this3._invLocalInertia12 + _this3._transform._rotation22 * _this3._invLocalInertia22;
- _this3._invInertia00 = __tmp__002;
- _this3._invInertia01 = __tmp__012;
- _this3._invInertia02 = __tmp__022;
- _this3._invInertia10 = __tmp__102;
- _this3._invInertia11 = __tmp__112;
- _this3._invInertia12 = __tmp__122;
- _this3._invInertia20 = __tmp__202;
- _this3._invInertia21 = __tmp__212;
- _this3._invInertia22 = __tmp__222;
- var __tmp__003;
- var __tmp__013;
- var __tmp__023;
- var __tmp__103;
- var __tmp__113;
- var __tmp__123;
- var __tmp__203;
- var __tmp__213;
- var __tmp__223;
- __tmp__003 = _this3._invInertia00 * _this3._transform._rotation00 + _this3._invInertia01 * _this3._transform._rotation01 + _this3._invInertia02 * _this3._transform._rotation02;
- __tmp__013 = _this3._invInertia00 * _this3._transform._rotation10 + _this3._invInertia01 * _this3._transform._rotation11 + _this3._invInertia02 * _this3._transform._rotation12;
- __tmp__023 = _this3._invInertia00 * _this3._transform._rotation20 + _this3._invInertia01 * _this3._transform._rotation21 + _this3._invInertia02 * _this3._transform._rotation22;
- __tmp__103 = _this3._invInertia10 * _this3._transform._rotation00 + _this3._invInertia11 * _this3._transform._rotation01 + _this3._invInertia12 * _this3._transform._rotation02;
- __tmp__113 = _this3._invInertia10 * _this3._transform._rotation10 + _this3._invInertia11 * _this3._transform._rotation11 + _this3._invInertia12 * _this3._transform._rotation12;
- __tmp__123 = _this3._invInertia10 * _this3._transform._rotation20 + _this3._invInertia11 * _this3._transform._rotation21 + _this3._invInertia12 * _this3._transform._rotation22;
- __tmp__203 = _this3._invInertia20 * _this3._transform._rotation00 + _this3._invInertia21 * _this3._transform._rotation01 + _this3._invInertia22 * _this3._transform._rotation02;
- __tmp__213 = _this3._invInertia20 * _this3._transform._rotation10 + _this3._invInertia21 * _this3._transform._rotation11 + _this3._invInertia22 * _this3._transform._rotation12;
- __tmp__223 = _this3._invInertia20 * _this3._transform._rotation20 + _this3._invInertia21 * _this3._transform._rotation21 + _this3._invInertia22 * _this3._transform._rotation22;
- _this3._invInertia00 = __tmp__003;
- _this3._invInertia01 = __tmp__013;
- _this3._invInertia02 = __tmp__023;
- _this3._invInertia10 = __tmp__103;
- _this3._invInertia11 = __tmp__113;
- _this3._invInertia12 = __tmp__123;
- _this3._invInertia20 = __tmp__203;
- _this3._invInertia21 = __tmp__213;
- _this3._invInertia22 = __tmp__223;
- _this3._invInertia00 *= _this3._rotFactor.x;
- _this3._invInertia01 *= _this3._rotFactor.x;
- _this3._invInertia02 *= _this3._rotFactor.x;
- _this3._invInertia10 *= _this3._rotFactor.y;
- _this3._invInertia11 *= _this3._rotFactor.y;
- _this3._invInertia12 *= _this3._rotFactor.y;
- _this3._invInertia20 *= _this3._rotFactor.z;
- _this3._invInertia21 *= _this3._rotFactor.z;
- _this3._invInertia22 *= _this3._rotFactor.z;
- }
- postSolve() {
- var lin1;
- var lin1X;
- var lin1Y;
- var lin1Z;
- var ang1;
- var ang1X;
- var ang1Y;
- var ang1Z;
- var ang2;
- var ang2X;
- var ang2Y;
- var ang2Z;
- lin1X = 0;
- lin1Y = 0;
- lin1Z = 0;
- ang1X = 0;
- ang1Y = 0;
- ang1Z = 0;
- ang2X = 0;
- ang2Y = 0;
- ang2Z = 0;
- var _g = 0;
- var _g1 = this.info.numRows;
- while(_g < _g1) {
- var i = _g++;
- var row = this.info.rows[i];
- var imp = row.impulse;
- var jn = row.jacobianN;
- var jt = row.jacobianT;
- var jb = row.jacobianB;
- var impN = imp.impulseN;
- var impT = imp.impulseT;
- var impB = imp.impulseB;
- var impulseL;
- var impulseLX;
- var impulseLY;
- var impulseLZ;
- impulseLX = 0;
- impulseLY = 0;
- impulseLZ = 0;
- impulseLX += jt.lin1X * impT;
- impulseLY += jt.lin1Y * impT;
- impulseLZ += jt.lin1Z * impT;
- impulseLX += jb.lin1X * impB;
- impulseLY += jb.lin1Y * impB;
- impulseLZ += jb.lin1Z * impB;
- imp.impulseLX = impulseLX;
- imp.impulseLY = impulseLY;
- imp.impulseLZ = impulseLZ;
- lin1X += jn.lin1X * impN;
- lin1Y += jn.lin1Y * impN;
- lin1Z += jn.lin1Z * impN;
- ang1X += jn.ang1X * impN;
- ang1Y += jn.ang1Y * impN;
- ang1Z += jn.ang1Z * impN;
- ang2X += jn.ang2X * impN;
- ang2Y += jn.ang2Y * impN;
- ang2Z += jn.ang2Z * impN;
- lin1X += jt.lin1X * impT;
- lin1Y += jt.lin1Y * impT;
- lin1Z += jt.lin1Z * impT;
- ang1X += jt.ang1X * impT;
- ang1Y += jt.ang1Y * impT;
- ang1Z += jt.ang1Z * impT;
- ang2X += jt.ang2X * impT;
- ang2Y += jt.ang2Y * impT;
- ang2Z += jt.ang2Z * impT;
- lin1X += jb.lin1X * impB;
- lin1Y += jb.lin1Y * impB;
- lin1Z += jb.lin1Z * impB;
- ang1X += jb.ang1X * impB;
- ang1Y += jb.ang1Y * impB;
- ang1Z += jb.ang1Z * impB;
- ang2X += jb.ang2X * impB;
- ang2Y += jb.ang2Y * impB;
- ang2Z += jb.ang2Z * impB;
- }
- this._b1._linearContactImpulseX += lin1X;
- this._b1._linearContactImpulseY += lin1Y;
- this._b1._linearContactImpulseZ += lin1Z;
- this._b1._angularContactImpulseX += ang1X;
- this._b1._angularContactImpulseY += ang1Y;
- this._b1._angularContactImpulseZ += ang1Z;
- this._b2._linearContactImpulseX -= lin1X;
- this._b2._linearContactImpulseY -= lin1Y;
- this._b2._linearContactImpulseZ -= lin1Z;
- this._b2._angularContactImpulseX -= ang2X;
- this._b2._angularContactImpulseY -= ang2Y;
- this._b2._angularContactImpulseZ -= ang2Z;
- this.constraint._syncManifold();
- }
- }
- oimo.dynamics.constraint.solver.pgs.PgsJointConstraintSolver = class oimo_dynamics_constraint_solver_pgs_PgsJointConstraintSolver extends oimo.dynamics.constraint.ConstraintSolver {
- constructor(joint) {
- super();
- this.joint = joint;
- this.info = new oimo.dynamics.constraint.info.joint.JointSolverInfo();
- var this1 = new Array(oimo.common.Setting.maxJacobianRows);
- this.massData = this1;
- var _g = 0;
- var _g1 = this.massData.length;
- while(_g < _g1) {
- var i = _g++;
- this.massData[i] = new oimo.dynamics.constraint.solver.common.JointSolverMassDataRow();
- }
- }
- preSolveVelocity(timeStep) {
- this.joint._syncAnchors();
- this.joint._getVelocitySolverInfo(timeStep,this.info);
- this._b1 = this.info.b1;
- this._b2 = this.info.b2;
- var invM1 = this._b1._invMass;
- var invM2 = this._b2._invMass;
- var invI1;
- var invI100;
- var invI101;
- var invI102;
- var invI110;
- var invI111;
- var invI112;
- var invI120;
- var invI121;
- var invI122;
- var invI2;
- var invI200;
- var invI201;
- var invI202;
- var invI210;
- var invI211;
- var invI212;
- var invI220;
- var invI221;
- var invI222;
- invI100 = this._b1._invInertia00;
- invI101 = this._b1._invInertia01;
- invI102 = this._b1._invInertia02;
- invI110 = this._b1._invInertia10;
- invI111 = this._b1._invInertia11;
- invI112 = this._b1._invInertia12;
- invI120 = this._b1._invInertia20;
- invI121 = this._b1._invInertia21;
- invI122 = this._b1._invInertia22;
- invI200 = this._b2._invInertia00;
- invI201 = this._b2._invInertia01;
- invI202 = this._b2._invInertia02;
- invI210 = this._b2._invInertia10;
- invI211 = this._b2._invInertia11;
- invI212 = this._b2._invInertia12;
- invI220 = this._b2._invInertia20;
- invI221 = this._b2._invInertia21;
- invI222 = this._b2._invInertia22;
- var _g = 0;
- var _g1 = this.info.numRows;
- while(_g < _g1) {
- var i = _g++;
- var row = this.info.rows[i];
- var md = this.massData[i];
- var j = row.jacobian;
- j.updateSparsity();
- if((j.flag & 1) != 0) {
- md.invMLin1X = j.lin1X * invM1;
- md.invMLin1Y = j.lin1Y * invM1;
- md.invMLin1Z = j.lin1Z * invM1;
- md.invMLin2X = j.lin2X * invM2;
- md.invMLin2Y = j.lin2Y * invM2;
- md.invMLin2Z = j.lin2Z * invM2;
- } else {
- md.invMLin1X = 0;
- md.invMLin1Y = 0;
- md.invMLin1Z = 0;
- md.invMLin2X = 0;
- md.invMLin2Y = 0;
- md.invMLin2Z = 0;
- }
- if((j.flag & 2) != 0) {
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = invI100 * j.ang1X + invI101 * j.ang1Y + invI102 * j.ang1Z;
- __tmp__Y = invI110 * j.ang1X + invI111 * j.ang1Y + invI112 * j.ang1Z;
- __tmp__Z = invI120 * j.ang1X + invI121 * j.ang1Y + invI122 * j.ang1Z;
- md.invMAng1X = __tmp__X;
- md.invMAng1Y = __tmp__Y;
- md.invMAng1Z = __tmp__Z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = invI200 * j.ang2X + invI201 * j.ang2Y + invI202 * j.ang2Z;
- __tmp__Y1 = invI210 * j.ang2X + invI211 * j.ang2Y + invI212 * j.ang2Z;
- __tmp__Z1 = invI220 * j.ang2X + invI221 * j.ang2Y + invI222 * j.ang2Z;
- md.invMAng2X = __tmp__X1;
- md.invMAng2Y = __tmp__Y1;
- md.invMAng2Z = __tmp__Z1;
- } else {
- md.invMAng1X = 0;
- md.invMAng1Y = 0;
- md.invMAng1Z = 0;
- md.invMAng2X = 0;
- md.invMAng2Y = 0;
- md.invMAng2Z = 0;
- }
- md.massWithoutCfm = md.invMLin1X * j.lin1X + md.invMLin1Y * j.lin1Y + md.invMLin1Z * j.lin1Z + (md.invMLin2X * j.lin2X + md.invMLin2Y * j.lin2Y + md.invMLin2Z * j.lin2Z) + (md.invMAng1X * j.ang1X + md.invMAng1Y * j.ang1Y + md.invMAng1Z * j.ang1Z) + (md.invMAng2X * j.ang2X + md.invMAng2Y * j.ang2Y + md.invMAng2Z * j.ang2Z);
- md.mass = md.massWithoutCfm + row.cfm;
- if(md.massWithoutCfm != 0) {
- md.massWithoutCfm = 1 / md.massWithoutCfm;
- }
- if(md.mass != 0) {
- md.mass = 1 / md.mass;
- }
- }
- }
- warmStart(timeStep) {
- var factor = this.joint._positionCorrectionAlgorithm == oimo.dynamics.constraint.PositionCorrectionAlgorithm.BAUMGARTE ? oimo.common.Setting.jointWarmStartingFactorForBaungarte : oimo.common.Setting.jointWarmStartingFactor;
- factor *= timeStep.dtRatio;
- if(factor <= 0) {
- var _g = 0;
- var _g1 = this.info.numRows;
- while(_g < _g1) {
- var i = _g++;
- var row = this.info.rows[i];
- var _this = row.impulse;
- _this.impulse = 0;
- _this.impulseM = 0;
- _this.impulseP = 0;
- }
- return;
- }
- var lv1;
- var lv1X;
- var lv1Y;
- var lv1Z;
- var lv2;
- var lv2X;
- var lv2Y;
- var lv2Z;
- var av1;
- var av1X;
- var av1Y;
- var av1Z;
- var av2;
- var av2X;
- var av2Y;
- var av2Z;
- lv1X = this._b1._velX;
- lv1Y = this._b1._velY;
- lv1Z = this._b1._velZ;
- lv2X = this._b2._velX;
- lv2Y = this._b2._velY;
- lv2Z = this._b2._velZ;
- av1X = this._b1._angVelX;
- av1Y = this._b1._angVelY;
- av1Z = this._b1._angVelZ;
- av2X = this._b2._angVelX;
- av2Y = this._b2._angVelY;
- av2Z = this._b2._angVelZ;
- var _g2 = 0;
- var _g11 = this.info.numRows;
- while(_g2 < _g11) {
- var i1 = _g2++;
- var row1 = this.info.rows[i1];
- var md = this.massData[i1];
- var imp = row1.impulse;
- var j = row1.jacobian;
- imp.impulse *= factor;
- imp.impulseM *= factor;
- var impulse = imp.impulse + imp.impulseM;
- lv1X += md.invMLin1X * impulse;
- lv1Y += md.invMLin1Y * impulse;
- lv1Z += md.invMLin1Z * impulse;
- lv2X += md.invMLin2X * -impulse;
- lv2Y += md.invMLin2Y * -impulse;
- lv2Z += md.invMLin2Z * -impulse;
- av1X += md.invMAng1X * impulse;
- av1Y += md.invMAng1Y * impulse;
- av1Z += md.invMAng1Z * impulse;
- av2X += md.invMAng2X * -impulse;
- av2Y += md.invMAng2Y * -impulse;
- av2Z += md.invMAng2Z * -impulse;
- }
- this._b1._velX = lv1X;
- this._b1._velY = lv1Y;
- this._b1._velZ = lv1Z;
- this._b2._velX = lv2X;
- this._b2._velY = lv2Y;
- this._b2._velZ = lv2Z;
- this._b1._angVelX = av1X;
- this._b1._angVelY = av1Y;
- this._b1._angVelZ = av1Z;
- this._b2._angVelX = av2X;
- this._b2._angVelY = av2Y;
- this._b2._angVelZ = av2Z;
- }
- solveVelocity() {
- var lv1;
- var lv1X;
- var lv1Y;
- var lv1Z;
- var lv2;
- var lv2X;
- var lv2Y;
- var lv2Z;
- var av1;
- var av1X;
- var av1Y;
- var av1Z;
- var av2;
- var av2X;
- var av2Y;
- var av2Z;
- lv1X = this._b1._velX;
- lv1Y = this._b1._velY;
- lv1Z = this._b1._velZ;
- lv2X = this._b2._velX;
- lv2Y = this._b2._velY;
- lv2Z = this._b2._velZ;
- av1X = this._b1._angVelX;
- av1Y = this._b1._angVelY;
- av1Z = this._b1._angVelZ;
- av2X = this._b2._angVelX;
- av2Y = this._b2._angVelY;
- av2Z = this._b2._angVelZ;
- var _g = 0;
- var _g1 = this.info.numRows;
- while(_g < _g1) {
- var i = _g++;
- var row = this.info.rows[i];
- var md = this.massData[i];
- var imp = row.impulse;
- var j = row.jacobian;
- if(row.motorMaxImpulse == 0) {
- continue;
- }
- var rv = 0;
- rv += lv1X * j.lin1X + lv1Y * j.lin1Y + lv1Z * j.lin1Z;
- rv -= lv2X * j.lin2X + lv2Y * j.lin2Y + lv2Z * j.lin2Z;
- rv += av1X * j.ang1X + av1Y * j.ang1Y + av1Z * j.ang1Z;
- rv -= av2X * j.ang2X + av2Y * j.ang2Y + av2Z * j.ang2Z;
- var impulseM = (-row.motorSpeed - rv) * md.massWithoutCfm;
- var oldImpulseM = imp.impulseM;
- imp.impulseM += impulseM;
- if(imp.impulseM < -row.motorMaxImpulse) {
- imp.impulseM = -row.motorMaxImpulse;
- } else if(imp.impulseM > row.motorMaxImpulse) {
- imp.impulseM = row.motorMaxImpulse;
- }
- impulseM = imp.impulseM - oldImpulseM;
- if((j.flag & 1) != 0) {
- lv1X += md.invMLin1X * impulseM;
- lv1Y += md.invMLin1Y * impulseM;
- lv1Z += md.invMLin1Z * impulseM;
- lv2X += md.invMLin2X * -impulseM;
- lv2Y += md.invMLin2Y * -impulseM;
- lv2Z += md.invMLin2Z * -impulseM;
- }
- if((j.flag & 2) != 0) {
- av1X += md.invMAng1X * impulseM;
- av1Y += md.invMAng1Y * impulseM;
- av1Z += md.invMAng1Z * impulseM;
- av2X += md.invMAng2X * -impulseM;
- av2Y += md.invMAng2Y * -impulseM;
- av2Z += md.invMAng2Z * -impulseM;
- }
- }
- var _g2 = 0;
- var _g3 = this.info.numRows;
- while(_g2 < _g3) {
- var i1 = _g2++;
- var row1 = this.info.rows[i1];
- var md1 = this.massData[i1];
- var imp1 = row1.impulse;
- var j1 = row1.jacobian;
- var rv1 = 0;
- rv1 += lv1X * j1.lin1X + lv1Y * j1.lin1Y + lv1Z * j1.lin1Z;
- rv1 -= lv2X * j1.lin2X + lv2Y * j1.lin2Y + lv2Z * j1.lin2Z;
- rv1 += av1X * j1.ang1X + av1Y * j1.ang1Y + av1Z * j1.ang1Z;
- rv1 -= av2X * j1.ang2X + av2Y * j1.ang2Y + av2Z * j1.ang2Z;
- var impulse = (row1.rhs - rv1 - imp1.impulse * row1.cfm) * md1.mass;
- var oldImpulse = imp1.impulse;
- imp1.impulse += impulse;
- if(imp1.impulse < row1.minImpulse) {
- imp1.impulse = row1.minImpulse;
- } else if(imp1.impulse > row1.maxImpulse) {
- imp1.impulse = row1.maxImpulse;
- }
- impulse = imp1.impulse - oldImpulse;
- if((j1.flag & 1) != 0) {
- lv1X += md1.invMLin1X * impulse;
- lv1Y += md1.invMLin1Y * impulse;
- lv1Z += md1.invMLin1Z * impulse;
- lv2X += md1.invMLin2X * -impulse;
- lv2Y += md1.invMLin2Y * -impulse;
- lv2Z += md1.invMLin2Z * -impulse;
- }
- if((j1.flag & 2) != 0) {
- av1X += md1.invMAng1X * impulse;
- av1Y += md1.invMAng1Y * impulse;
- av1Z += md1.invMAng1Z * impulse;
- av2X += md1.invMAng2X * -impulse;
- av2Y += md1.invMAng2Y * -impulse;
- av2Z += md1.invMAng2Z * -impulse;
- }
- }
- this._b1._velX = lv1X;
- this._b1._velY = lv1Y;
- this._b1._velZ = lv1Z;
- this._b2._velX = lv2X;
- this._b2._velY = lv2Y;
- this._b2._velZ = lv2Z;
- this._b1._angVelX = av1X;
- this._b1._angVelY = av1Y;
- this._b1._angVelZ = av1Z;
- this._b2._angVelX = av2X;
- this._b2._angVelY = av2Y;
- this._b2._angVelZ = av2Z;
- }
- postSolveVelocity(timeStep) {
- var lin;
- var linX;
- var linY;
- var linZ;
- var ang;
- var angX;
- var angY;
- var angZ;
- linX = 0;
- linY = 0;
- linZ = 0;
- angX = 0;
- angY = 0;
- angZ = 0;
- var _g = 0;
- var _g1 = this.info.numRows;
- while(_g < _g1) {
- var i = _g++;
- var row = this.info.rows[i];
- var imp = row.impulse;
- var j = row.jacobian;
- if((j.flag & 1) != 0) {
- linX += j.lin1X * imp.impulse;
- linY += j.lin1Y * imp.impulse;
- linZ += j.lin1Z * imp.impulse;
- } else if((j.flag & 2) != 0) {
- angX += j.ang1X * imp.impulse;
- angY += j.ang1Y * imp.impulse;
- angZ += j.ang1Z * imp.impulse;
- }
- }
- this.joint._appliedForceX = linX * timeStep.invDt;
- this.joint._appliedForceY = linY * timeStep.invDt;
- this.joint._appliedForceZ = linZ * timeStep.invDt;
- this.joint._appliedTorqueX = angX * timeStep.invDt;
- this.joint._appliedTorqueY = angY * timeStep.invDt;
- this.joint._appliedTorqueZ = angZ * timeStep.invDt;
- }
- preSolvePosition(timeStep) {
- this.joint._syncAnchors();
- this.joint._getPositionSolverInfo(this.info);
- this._b1 = this.info.b1;
- this._b2 = this.info.b2;
- var invM1 = this._b1._invMass;
- var invM2 = this._b2._invMass;
- var invI1;
- var invI100;
- var invI101;
- var invI102;
- var invI110;
- var invI111;
- var invI112;
- var invI120;
- var invI121;
- var invI122;
- var invI2;
- var invI200;
- var invI201;
- var invI202;
- var invI210;
- var invI211;
- var invI212;
- var invI220;
- var invI221;
- var invI222;
- invI100 = this._b1._invInertia00;
- invI101 = this._b1._invInertia01;
- invI102 = this._b1._invInertia02;
- invI110 = this._b1._invInertia10;
- invI111 = this._b1._invInertia11;
- invI112 = this._b1._invInertia12;
- invI120 = this._b1._invInertia20;
- invI121 = this._b1._invInertia21;
- invI122 = this._b1._invInertia22;
- invI200 = this._b2._invInertia00;
- invI201 = this._b2._invInertia01;
- invI202 = this._b2._invInertia02;
- invI210 = this._b2._invInertia10;
- invI211 = this._b2._invInertia11;
- invI212 = this._b2._invInertia12;
- invI220 = this._b2._invInertia20;
- invI221 = this._b2._invInertia21;
- invI222 = this._b2._invInertia22;
- var _g = 0;
- var _g1 = this.info.numRows;
- while(_g < _g1) {
- var i = _g++;
- var row = this.info.rows[i];
- var md = this.massData[i];
- var imp = row.impulse;
- var j = row.jacobian;
- md.invMLin1X = j.lin1X * invM1;
- md.invMLin1Y = j.lin1Y * invM1;
- md.invMLin1Z = j.lin1Z * invM1;
- md.invMLin2X = j.lin2X * invM2;
- md.invMLin2Y = j.lin2Y * invM2;
- md.invMLin2Z = j.lin2Z * invM2;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = invI100 * j.ang1X + invI101 * j.ang1Y + invI102 * j.ang1Z;
- __tmp__Y = invI110 * j.ang1X + invI111 * j.ang1Y + invI112 * j.ang1Z;
- __tmp__Z = invI120 * j.ang1X + invI121 * j.ang1Y + invI122 * j.ang1Z;
- md.invMAng1X = __tmp__X;
- md.invMAng1Y = __tmp__Y;
- md.invMAng1Z = __tmp__Z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = invI200 * j.ang2X + invI201 * j.ang2Y + invI202 * j.ang2Z;
- __tmp__Y1 = invI210 * j.ang2X + invI211 * j.ang2Y + invI212 * j.ang2Z;
- __tmp__Z1 = invI220 * j.ang2X + invI221 * j.ang2Y + invI222 * j.ang2Z;
- md.invMAng2X = __tmp__X1;
- md.invMAng2Y = __tmp__Y1;
- md.invMAng2Z = __tmp__Z1;
- md.mass = md.invMLin1X * j.lin1X + md.invMLin1Y * j.lin1Y + md.invMLin1Z * j.lin1Z + (md.invMLin2X * j.lin2X + md.invMLin2Y * j.lin2Y + md.invMLin2Z * j.lin2Z) + (md.invMAng1X * j.ang1X + md.invMAng1Y * j.ang1Y + md.invMAng1Z * j.ang1Z) + (md.invMAng2X * j.ang2X + md.invMAng2Y * j.ang2Y + md.invMAng2Z * j.ang2Z);
- if(md.mass != 0) {
- md.mass = 1 / md.mass;
- }
- }
- var _g2 = 0;
- var _g11 = this.info.numRows;
- while(_g2 < _g11) {
- var i1 = _g2++;
- this.info.rows[i1].impulse.impulseP = 0;
- }
- }
- solvePositionSplitImpulse() {
- var lv1;
- var lv1X;
- var lv1Y;
- var lv1Z;
- var lv2;
- var lv2X;
- var lv2Y;
- var lv2Z;
- var av1;
- var av1X;
- var av1Y;
- var av1Z;
- var av2;
- var av2X;
- var av2Y;
- var av2Z;
- lv1X = this._b1._pseudoVelX;
- lv1Y = this._b1._pseudoVelY;
- lv1Z = this._b1._pseudoVelZ;
- lv2X = this._b2._pseudoVelX;
- lv2Y = this._b2._pseudoVelY;
- lv2Z = this._b2._pseudoVelZ;
- av1X = this._b1._angPseudoVelX;
- av1Y = this._b1._angPseudoVelY;
- av1Z = this._b1._angPseudoVelZ;
- av2X = this._b2._angPseudoVelX;
- av2Y = this._b2._angPseudoVelY;
- av2Z = this._b2._angPseudoVelZ;
- var _g = 0;
- var _g1 = this.info.numRows;
- while(_g < _g1) {
- var i = _g++;
- var row = this.info.rows[i];
- var md = this.massData[i];
- var imp = row.impulse;
- var j = row.jacobian;
- var rv = 0;
- rv += lv1X * j.lin1X + lv1Y * j.lin1Y + lv1Z * j.lin1Z;
- rv -= lv2X * j.lin2X + lv2Y * j.lin2Y + lv2Z * j.lin2Z;
- rv += av1X * j.ang1X + av1Y * j.ang1Y + av1Z * j.ang1Z;
- rv -= av2X * j.ang2X + av2Y * j.ang2Y + av2Z * j.ang2Z;
- var impulseP = (row.rhs * oimo.common.Setting.positionSplitImpulseBaumgarte - rv) * md.mass;
- var oldImpulseP = imp.impulseP;
- imp.impulseP += impulseP;
- if(imp.impulseP < row.minImpulse) {
- imp.impulseP = row.minImpulse;
- } else if(imp.impulseP > row.maxImpulse) {
- imp.impulseP = row.maxImpulse;
- }
- impulseP = imp.impulseP - oldImpulseP;
- lv1X += md.invMLin1X * impulseP;
- lv1Y += md.invMLin1Y * impulseP;
- lv1Z += md.invMLin1Z * impulseP;
- lv2X += md.invMLin2X * -impulseP;
- lv2Y += md.invMLin2Y * -impulseP;
- lv2Z += md.invMLin2Z * -impulseP;
- av1X += md.invMAng1X * impulseP;
- av1Y += md.invMAng1Y * impulseP;
- av1Z += md.invMAng1Z * impulseP;
- av2X += md.invMAng2X * -impulseP;
- av2Y += md.invMAng2Y * -impulseP;
- av2Z += md.invMAng2Z * -impulseP;
- }
- this._b1._pseudoVelX = lv1X;
- this._b1._pseudoVelY = lv1Y;
- this._b1._pseudoVelZ = lv1Z;
- this._b2._pseudoVelX = lv2X;
- this._b2._pseudoVelY = lv2Y;
- this._b2._pseudoVelZ = lv2Z;
- this._b1._angPseudoVelX = av1X;
- this._b1._angPseudoVelY = av1Y;
- this._b1._angPseudoVelZ = av1Z;
- this._b2._angPseudoVelX = av2X;
- this._b2._angPseudoVelY = av2Y;
- this._b2._angPseudoVelZ = av2Z;
- }
- solvePositionNgs(timeStep) {
- this.joint._syncAnchors();
- this.joint._getPositionSolverInfo(this.info);
- this._b1 = this.info.b1;
- this._b2 = this.info.b2;
- var invM1 = this._b1._invMass;
- var invM2 = this._b2._invMass;
- var invI1;
- var invI100;
- var invI101;
- var invI102;
- var invI110;
- var invI111;
- var invI112;
- var invI120;
- var invI121;
- var invI122;
- var invI2;
- var invI200;
- var invI201;
- var invI202;
- var invI210;
- var invI211;
- var invI212;
- var invI220;
- var invI221;
- var invI222;
- invI100 = this._b1._invInertia00;
- invI101 = this._b1._invInertia01;
- invI102 = this._b1._invInertia02;
- invI110 = this._b1._invInertia10;
- invI111 = this._b1._invInertia11;
- invI112 = this._b1._invInertia12;
- invI120 = this._b1._invInertia20;
- invI121 = this._b1._invInertia21;
- invI122 = this._b1._invInertia22;
- invI200 = this._b2._invInertia00;
- invI201 = this._b2._invInertia01;
- invI202 = this._b2._invInertia02;
- invI210 = this._b2._invInertia10;
- invI211 = this._b2._invInertia11;
- invI212 = this._b2._invInertia12;
- invI220 = this._b2._invInertia20;
- invI221 = this._b2._invInertia21;
- invI222 = this._b2._invInertia22;
- var _g = 0;
- var _g1 = this.info.numRows;
- while(_g < _g1) {
- var i = _g++;
- var row = this.info.rows[i];
- var md = this.massData[i];
- var imp = row.impulse;
- var j = row.jacobian;
- md.invMLin1X = j.lin1X * invM1;
- md.invMLin1Y = j.lin1Y * invM1;
- md.invMLin1Z = j.lin1Z * invM1;
- md.invMLin2X = j.lin2X * invM2;
- md.invMLin2Y = j.lin2Y * invM2;
- md.invMLin2Z = j.lin2Z * invM2;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = invI100 * j.ang1X + invI101 * j.ang1Y + invI102 * j.ang1Z;
- __tmp__Y = invI110 * j.ang1X + invI111 * j.ang1Y + invI112 * j.ang1Z;
- __tmp__Z = invI120 * j.ang1X + invI121 * j.ang1Y + invI122 * j.ang1Z;
- md.invMAng1X = __tmp__X;
- md.invMAng1Y = __tmp__Y;
- md.invMAng1Z = __tmp__Z;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = invI200 * j.ang2X + invI201 * j.ang2Y + invI202 * j.ang2Z;
- __tmp__Y1 = invI210 * j.ang2X + invI211 * j.ang2Y + invI212 * j.ang2Z;
- __tmp__Z1 = invI220 * j.ang2X + invI221 * j.ang2Y + invI222 * j.ang2Z;
- md.invMAng2X = __tmp__X1;
- md.invMAng2Y = __tmp__Y1;
- md.invMAng2Z = __tmp__Z1;
- md.mass = md.invMLin1X * j.lin1X + md.invMLin1Y * j.lin1Y + md.invMLin1Z * j.lin1Z + (md.invMLin2X * j.lin2X + md.invMLin2Y * j.lin2Y + md.invMLin2Z * j.lin2Z) + (md.invMAng1X * j.ang1X + md.invMAng1Y * j.ang1Y + md.invMAng1Z * j.ang1Z) + (md.invMAng2X * j.ang2X + md.invMAng2Y * j.ang2Y + md.invMAng2Z * j.ang2Z);
- if(md.mass != 0) {
- md.mass = 1 / md.mass;
- }
- }
- var lv1;
- var lv1X;
- var lv1Y;
- var lv1Z;
- var lv2;
- var lv2X;
- var lv2Y;
- var lv2Z;
- var av1;
- var av1X;
- var av1Y;
- var av1Z;
- var av2;
- var av2X;
- var av2Y;
- var av2Z;
- lv1X = 0;
- lv1Y = 0;
- lv1Z = 0;
- lv2X = 0;
- lv2Y = 0;
- lv2Z = 0;
- av1X = 0;
- av1Y = 0;
- av1Z = 0;
- av2X = 0;
- av2Y = 0;
- av2Z = 0;
- var _g2 = 0;
- var _g11 = this.info.numRows;
- while(_g2 < _g11) {
- var i1 = _g2++;
- var row1 = this.info.rows[i1];
- var md1 = this.massData[i1];
- var imp1 = row1.impulse;
- var j1 = row1.jacobian;
- var rv = 0;
- rv += lv1X * j1.lin1X + lv1Y * j1.lin1Y + lv1Z * j1.lin1Z;
- rv -= lv2X * j1.lin2X + lv2Y * j1.lin2Y + lv2Z * j1.lin2Z;
- rv += av1X * j1.ang1X + av1Y * j1.ang1Y + av1Z * j1.ang1Z;
- rv -= av2X * j1.ang2X + av2Y * j1.ang2Y + av2Z * j1.ang2Z;
- var impulseP = (row1.rhs * oimo.common.Setting.positionNgsBaumgarte - rv) * md1.mass;
- var oldImpulseP = imp1.impulseP;
- imp1.impulseP += impulseP;
- if(imp1.impulseP < row1.minImpulse) {
- imp1.impulseP = row1.minImpulse;
- } else if(imp1.impulseP > row1.maxImpulse) {
- imp1.impulseP = row1.maxImpulse;
- }
- impulseP = imp1.impulseP - oldImpulseP;
- lv1X += md1.invMLin1X * impulseP;
- lv1Y += md1.invMLin1Y * impulseP;
- lv1Z += md1.invMLin1Z * impulseP;
- lv2X += md1.invMLin2X * -impulseP;
- lv2Y += md1.invMLin2Y * -impulseP;
- lv2Z += md1.invMLin2Z * -impulseP;
- av1X += md1.invMAng1X * impulseP;
- av1Y += md1.invMAng1Y * impulseP;
- av1Z += md1.invMAng1Z * impulseP;
- av2X += md1.invMAng2X * -impulseP;
- av2Y += md1.invMAng2Y * -impulseP;
- av2Z += md1.invMAng2Z * -impulseP;
- }
- var _this = this._b1;
- _this._transform._positionX += lv1X;
- _this._transform._positionY += lv1Y;
- _this._transform._positionZ += lv1Z;
- var _this1 = this._b2;
- _this1._transform._positionX += lv2X;
- _this1._transform._positionY += lv2Y;
- _this1._transform._positionZ += lv2Z;
- var _this2 = this._b1;
- var theta = Math.sqrt(av1X * av1X + av1Y * av1Y + av1Z * av1Z);
- var halfTheta = theta * 0.5;
- var rotationToSinAxisFactor;
- var cosHalfTheta;
- if(halfTheta < 0.5) {
- var ht2 = halfTheta * halfTheta;
- rotationToSinAxisFactor = 0.5 * (1 - ht2 * 0.166666666666666657 + ht2 * ht2 * 0.00833333333333333322);
- cosHalfTheta = 1 - ht2 * 0.5 + ht2 * ht2 * 0.0416666666666666644;
- } else {
- rotationToSinAxisFactor = Math.sin(halfTheta) / theta;
- cosHalfTheta = Math.cos(halfTheta);
- }
- var sinAxis;
- var sinAxisX;
- var sinAxisY;
- var sinAxisZ;
- sinAxisX = av1X * rotationToSinAxisFactor;
- sinAxisY = av1Y * rotationToSinAxisFactor;
- sinAxisZ = av1Z * rotationToSinAxisFactor;
- var dq;
- var dqX;
- var dqY;
- var dqZ;
- var dqW;
- dqX = sinAxisX;
- dqY = sinAxisY;
- dqZ = sinAxisZ;
- dqW = cosHalfTheta;
- var q;
- var qX;
- var qY;
- var qZ;
- var qW;
- var e00 = _this2._transform._rotation00;
- var e11 = _this2._transform._rotation11;
- var e22 = _this2._transform._rotation22;
- var t = e00 + e11 + e22;
- var s;
- if(t > 0) {
- s = Math.sqrt(t + 1);
- qW = 0.5 * s;
- s = 0.5 / s;
- qX = (_this2._transform._rotation21 - _this2._transform._rotation12) * s;
- qY = (_this2._transform._rotation02 - _this2._transform._rotation20) * s;
- qZ = (_this2._transform._rotation10 - _this2._transform._rotation01) * s;
- } else if(e00 > e11) {
- if(e00 > e22) {
- s = Math.sqrt(e00 - e11 - e22 + 1);
- qX = 0.5 * s;
- s = 0.5 / s;
- qY = (_this2._transform._rotation01 + _this2._transform._rotation10) * s;
- qZ = (_this2._transform._rotation02 + _this2._transform._rotation20) * s;
- qW = (_this2._transform._rotation21 - _this2._transform._rotation12) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- qZ = 0.5 * s;
- s = 0.5 / s;
- qX = (_this2._transform._rotation02 + _this2._transform._rotation20) * s;
- qY = (_this2._transform._rotation12 + _this2._transform._rotation21) * s;
- qW = (_this2._transform._rotation10 - _this2._transform._rotation01) * s;
- }
- } else if(e11 > e22) {
- s = Math.sqrt(e11 - e22 - e00 + 1);
- qY = 0.5 * s;
- s = 0.5 / s;
- qX = (_this2._transform._rotation01 + _this2._transform._rotation10) * s;
- qZ = (_this2._transform._rotation12 + _this2._transform._rotation21) * s;
- qW = (_this2._transform._rotation02 - _this2._transform._rotation20) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- qZ = 0.5 * s;
- s = 0.5 / s;
- qX = (_this2._transform._rotation02 + _this2._transform._rotation20) * s;
- qY = (_this2._transform._rotation12 + _this2._transform._rotation21) * s;
- qW = (_this2._transform._rotation10 - _this2._transform._rotation01) * s;
- }
- qX = dqW * qX + dqX * qW + dqY * qZ - dqZ * qY;
- qY = dqW * qY - dqX * qZ + dqY * qW + dqZ * qX;
- qZ = dqW * qZ + dqX * qY - dqY * qX + dqZ * qW;
- qW = dqW * qW - dqX * qX - dqY * qY - dqZ * qZ;
- var l = qX * qX + qY * qY + qZ * qZ + qW * qW;
- if(l > 1e-32) {
- l = 1 / Math.sqrt(l);
- }
- qX *= l;
- qY *= l;
- qZ *= l;
- qW *= l;
- var x = qX;
- var y = qY;
- var z = qZ;
- var w = qW;
- var x2 = 2 * x;
- var y2 = 2 * y;
- var z2 = 2 * z;
- var xx = x * x2;
- var yy = y * y2;
- var zz = z * z2;
- var xy = x * y2;
- var yz = y * z2;
- var xz = x * z2;
- var wx = w * x2;
- var wy = w * y2;
- var wz = w * z2;
- _this2._transform._rotation00 = 1 - yy - zz;
- _this2._transform._rotation01 = xy - wz;
- _this2._transform._rotation02 = xz + wy;
- _this2._transform._rotation10 = xy + wz;
- _this2._transform._rotation11 = 1 - xx - zz;
- _this2._transform._rotation12 = yz - wx;
- _this2._transform._rotation20 = xz - wy;
- _this2._transform._rotation21 = yz + wx;
- _this2._transform._rotation22 = 1 - xx - yy;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = _this2._transform._rotation00 * _this2._invLocalInertia00 + _this2._transform._rotation01 * _this2._invLocalInertia10 + _this2._transform._rotation02 * _this2._invLocalInertia20;
- __tmp__01 = _this2._transform._rotation00 * _this2._invLocalInertia01 + _this2._transform._rotation01 * _this2._invLocalInertia11 + _this2._transform._rotation02 * _this2._invLocalInertia21;
- __tmp__02 = _this2._transform._rotation00 * _this2._invLocalInertia02 + _this2._transform._rotation01 * _this2._invLocalInertia12 + _this2._transform._rotation02 * _this2._invLocalInertia22;
- __tmp__10 = _this2._transform._rotation10 * _this2._invLocalInertia00 + _this2._transform._rotation11 * _this2._invLocalInertia10 + _this2._transform._rotation12 * _this2._invLocalInertia20;
- __tmp__11 = _this2._transform._rotation10 * _this2._invLocalInertia01 + _this2._transform._rotation11 * _this2._invLocalInertia11 + _this2._transform._rotation12 * _this2._invLocalInertia21;
- __tmp__12 = _this2._transform._rotation10 * _this2._invLocalInertia02 + _this2._transform._rotation11 * _this2._invLocalInertia12 + _this2._transform._rotation12 * _this2._invLocalInertia22;
- __tmp__20 = _this2._transform._rotation20 * _this2._invLocalInertia00 + _this2._transform._rotation21 * _this2._invLocalInertia10 + _this2._transform._rotation22 * _this2._invLocalInertia20;
- __tmp__21 = _this2._transform._rotation20 * _this2._invLocalInertia01 + _this2._transform._rotation21 * _this2._invLocalInertia11 + _this2._transform._rotation22 * _this2._invLocalInertia21;
- __tmp__22 = _this2._transform._rotation20 * _this2._invLocalInertia02 + _this2._transform._rotation21 * _this2._invLocalInertia12 + _this2._transform._rotation22 * _this2._invLocalInertia22;
- _this2._invInertia00 = __tmp__00;
- _this2._invInertia01 = __tmp__01;
- _this2._invInertia02 = __tmp__02;
- _this2._invInertia10 = __tmp__10;
- _this2._invInertia11 = __tmp__11;
- _this2._invInertia12 = __tmp__12;
- _this2._invInertia20 = __tmp__20;
- _this2._invInertia21 = __tmp__21;
- _this2._invInertia22 = __tmp__22;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = _this2._invInertia00 * _this2._transform._rotation00 + _this2._invInertia01 * _this2._transform._rotation01 + _this2._invInertia02 * _this2._transform._rotation02;
- __tmp__011 = _this2._invInertia00 * _this2._transform._rotation10 + _this2._invInertia01 * _this2._transform._rotation11 + _this2._invInertia02 * _this2._transform._rotation12;
- __tmp__021 = _this2._invInertia00 * _this2._transform._rotation20 + _this2._invInertia01 * _this2._transform._rotation21 + _this2._invInertia02 * _this2._transform._rotation22;
- __tmp__101 = _this2._invInertia10 * _this2._transform._rotation00 + _this2._invInertia11 * _this2._transform._rotation01 + _this2._invInertia12 * _this2._transform._rotation02;
- __tmp__111 = _this2._invInertia10 * _this2._transform._rotation10 + _this2._invInertia11 * _this2._transform._rotation11 + _this2._invInertia12 * _this2._transform._rotation12;
- __tmp__121 = _this2._invInertia10 * _this2._transform._rotation20 + _this2._invInertia11 * _this2._transform._rotation21 + _this2._invInertia12 * _this2._transform._rotation22;
- __tmp__201 = _this2._invInertia20 * _this2._transform._rotation00 + _this2._invInertia21 * _this2._transform._rotation01 + _this2._invInertia22 * _this2._transform._rotation02;
- __tmp__211 = _this2._invInertia20 * _this2._transform._rotation10 + _this2._invInertia21 * _this2._transform._rotation11 + _this2._invInertia22 * _this2._transform._rotation12;
- __tmp__221 = _this2._invInertia20 * _this2._transform._rotation20 + _this2._invInertia21 * _this2._transform._rotation21 + _this2._invInertia22 * _this2._transform._rotation22;
- _this2._invInertia00 = __tmp__001;
- _this2._invInertia01 = __tmp__011;
- _this2._invInertia02 = __tmp__021;
- _this2._invInertia10 = __tmp__101;
- _this2._invInertia11 = __tmp__111;
- _this2._invInertia12 = __tmp__121;
- _this2._invInertia20 = __tmp__201;
- _this2._invInertia21 = __tmp__211;
- _this2._invInertia22 = __tmp__221;
- _this2._invInertia00 *= _this2._rotFactor.x;
- _this2._invInertia01 *= _this2._rotFactor.x;
- _this2._invInertia02 *= _this2._rotFactor.x;
- _this2._invInertia10 *= _this2._rotFactor.y;
- _this2._invInertia11 *= _this2._rotFactor.y;
- _this2._invInertia12 *= _this2._rotFactor.y;
- _this2._invInertia20 *= _this2._rotFactor.z;
- _this2._invInertia21 *= _this2._rotFactor.z;
- _this2._invInertia22 *= _this2._rotFactor.z;
- var _this3 = this._b2;
- var theta1 = Math.sqrt(av2X * av2X + av2Y * av2Y + av2Z * av2Z);
- var halfTheta1 = theta1 * 0.5;
- var rotationToSinAxisFactor1;
- var cosHalfTheta1;
- if(halfTheta1 < 0.5) {
- var ht21 = halfTheta1 * halfTheta1;
- rotationToSinAxisFactor1 = 0.5 * (1 - ht21 * 0.166666666666666657 + ht21 * ht21 * 0.00833333333333333322);
- cosHalfTheta1 = 1 - ht21 * 0.5 + ht21 * ht21 * 0.0416666666666666644;
- } else {
- rotationToSinAxisFactor1 = Math.sin(halfTheta1) / theta1;
- cosHalfTheta1 = Math.cos(halfTheta1);
- }
- var sinAxis1;
- var sinAxisX1;
- var sinAxisY1;
- var sinAxisZ1;
- sinAxisX1 = av2X * rotationToSinAxisFactor1;
- sinAxisY1 = av2Y * rotationToSinAxisFactor1;
- sinAxisZ1 = av2Z * rotationToSinAxisFactor1;
- var dq1;
- var dqX1;
- var dqY1;
- var dqZ1;
- var dqW1;
- dqX1 = sinAxisX1;
- dqY1 = sinAxisY1;
- dqZ1 = sinAxisZ1;
- dqW1 = cosHalfTheta1;
- var q1;
- var qX1;
- var qY1;
- var qZ1;
- var qW1;
- var e001 = _this3._transform._rotation00;
- var e111 = _this3._transform._rotation11;
- var e221 = _this3._transform._rotation22;
- var t1 = e001 + e111 + e221;
- var s1;
- if(t1 > 0) {
- s1 = Math.sqrt(t1 + 1);
- qW1 = 0.5 * s1;
- s1 = 0.5 / s1;
- qX1 = (_this3._transform._rotation21 - _this3._transform._rotation12) * s1;
- qY1 = (_this3._transform._rotation02 - _this3._transform._rotation20) * s1;
- qZ1 = (_this3._transform._rotation10 - _this3._transform._rotation01) * s1;
- } else if(e001 > e111) {
- if(e001 > e221) {
- s1 = Math.sqrt(e001 - e111 - e221 + 1);
- qX1 = 0.5 * s1;
- s1 = 0.5 / s1;
- qY1 = (_this3._transform._rotation01 + _this3._transform._rotation10) * s1;
- qZ1 = (_this3._transform._rotation02 + _this3._transform._rotation20) * s1;
- qW1 = (_this3._transform._rotation21 - _this3._transform._rotation12) * s1;
- } else {
- s1 = Math.sqrt(e221 - e001 - e111 + 1);
- qZ1 = 0.5 * s1;
- s1 = 0.5 / s1;
- qX1 = (_this3._transform._rotation02 + _this3._transform._rotation20) * s1;
- qY1 = (_this3._transform._rotation12 + _this3._transform._rotation21) * s1;
- qW1 = (_this3._transform._rotation10 - _this3._transform._rotation01) * s1;
- }
- } else if(e111 > e221) {
- s1 = Math.sqrt(e111 - e221 - e001 + 1);
- qY1 = 0.5 * s1;
- s1 = 0.5 / s1;
- qX1 = (_this3._transform._rotation01 + _this3._transform._rotation10) * s1;
- qZ1 = (_this3._transform._rotation12 + _this3._transform._rotation21) * s1;
- qW1 = (_this3._transform._rotation02 - _this3._transform._rotation20) * s1;
- } else {
- s1 = Math.sqrt(e221 - e001 - e111 + 1);
- qZ1 = 0.5 * s1;
- s1 = 0.5 / s1;
- qX1 = (_this3._transform._rotation02 + _this3._transform._rotation20) * s1;
- qY1 = (_this3._transform._rotation12 + _this3._transform._rotation21) * s1;
- qW1 = (_this3._transform._rotation10 - _this3._transform._rotation01) * s1;
- }
- qX1 = dqW1 * qX1 + dqX1 * qW1 + dqY1 * qZ1 - dqZ1 * qY1;
- qY1 = dqW1 * qY1 - dqX1 * qZ1 + dqY1 * qW1 + dqZ1 * qX1;
- qZ1 = dqW1 * qZ1 + dqX1 * qY1 - dqY1 * qX1 + dqZ1 * qW1;
- qW1 = dqW1 * qW1 - dqX1 * qX1 - dqY1 * qY1 - dqZ1 * qZ1;
- var l1 = qX1 * qX1 + qY1 * qY1 + qZ1 * qZ1 + qW1 * qW1;
- if(l1 > 1e-32) {
- l1 = 1 / Math.sqrt(l1);
- }
- qX1 *= l1;
- qY1 *= l1;
- qZ1 *= l1;
- qW1 *= l1;
- var x1 = qX1;
- var y1 = qY1;
- var z1 = qZ1;
- var w1 = qW1;
- var x21 = 2 * x1;
- var y21 = 2 * y1;
- var z21 = 2 * z1;
- var xx1 = x1 * x21;
- var yy1 = y1 * y21;
- var zz1 = z1 * z21;
- var xy1 = x1 * y21;
- var yz1 = y1 * z21;
- var xz1 = x1 * z21;
- var wx1 = w1 * x21;
- var wy1 = w1 * y21;
- var wz1 = w1 * z21;
- _this3._transform._rotation00 = 1 - yy1 - zz1;
- _this3._transform._rotation01 = xy1 - wz1;
- _this3._transform._rotation02 = xz1 + wy1;
- _this3._transform._rotation10 = xy1 + wz1;
- _this3._transform._rotation11 = 1 - xx1 - zz1;
- _this3._transform._rotation12 = yz1 - wx1;
- _this3._transform._rotation20 = xz1 - wy1;
- _this3._transform._rotation21 = yz1 + wx1;
- _this3._transform._rotation22 = 1 - xx1 - yy1;
- var __tmp__002;
- var __tmp__012;
- var __tmp__022;
- var __tmp__102;
- var __tmp__112;
- var __tmp__122;
- var __tmp__202;
- var __tmp__212;
- var __tmp__222;
- __tmp__002 = _this3._transform._rotation00 * _this3._invLocalInertia00 + _this3._transform._rotation01 * _this3._invLocalInertia10 + _this3._transform._rotation02 * _this3._invLocalInertia20;
- __tmp__012 = _this3._transform._rotation00 * _this3._invLocalInertia01 + _this3._transform._rotation01 * _this3._invLocalInertia11 + _this3._transform._rotation02 * _this3._invLocalInertia21;
- __tmp__022 = _this3._transform._rotation00 * _this3._invLocalInertia02 + _this3._transform._rotation01 * _this3._invLocalInertia12 + _this3._transform._rotation02 * _this3._invLocalInertia22;
- __tmp__102 = _this3._transform._rotation10 * _this3._invLocalInertia00 + _this3._transform._rotation11 * _this3._invLocalInertia10 + _this3._transform._rotation12 * _this3._invLocalInertia20;
- __tmp__112 = _this3._transform._rotation10 * _this3._invLocalInertia01 + _this3._transform._rotation11 * _this3._invLocalInertia11 + _this3._transform._rotation12 * _this3._invLocalInertia21;
- __tmp__122 = _this3._transform._rotation10 * _this3._invLocalInertia02 + _this3._transform._rotation11 * _this3._invLocalInertia12 + _this3._transform._rotation12 * _this3._invLocalInertia22;
- __tmp__202 = _this3._transform._rotation20 * _this3._invLocalInertia00 + _this3._transform._rotation21 * _this3._invLocalInertia10 + _this3._transform._rotation22 * _this3._invLocalInertia20;
- __tmp__212 = _this3._transform._rotation20 * _this3._invLocalInertia01 + _this3._transform._rotation21 * _this3._invLocalInertia11 + _this3._transform._rotation22 * _this3._invLocalInertia21;
- __tmp__222 = _this3._transform._rotation20 * _this3._invLocalInertia02 + _this3._transform._rotation21 * _this3._invLocalInertia12 + _this3._transform._rotation22 * _this3._invLocalInertia22;
- _this3._invInertia00 = __tmp__002;
- _this3._invInertia01 = __tmp__012;
- _this3._invInertia02 = __tmp__022;
- _this3._invInertia10 = __tmp__102;
- _this3._invInertia11 = __tmp__112;
- _this3._invInertia12 = __tmp__122;
- _this3._invInertia20 = __tmp__202;
- _this3._invInertia21 = __tmp__212;
- _this3._invInertia22 = __tmp__222;
- var __tmp__003;
- var __tmp__013;
- var __tmp__023;
- var __tmp__103;
- var __tmp__113;
- var __tmp__123;
- var __tmp__203;
- var __tmp__213;
- var __tmp__223;
- __tmp__003 = _this3._invInertia00 * _this3._transform._rotation00 + _this3._invInertia01 * _this3._transform._rotation01 + _this3._invInertia02 * _this3._transform._rotation02;
- __tmp__013 = _this3._invInertia00 * _this3._transform._rotation10 + _this3._invInertia01 * _this3._transform._rotation11 + _this3._invInertia02 * _this3._transform._rotation12;
- __tmp__023 = _this3._invInertia00 * _this3._transform._rotation20 + _this3._invInertia01 * _this3._transform._rotation21 + _this3._invInertia02 * _this3._transform._rotation22;
- __tmp__103 = _this3._invInertia10 * _this3._transform._rotation00 + _this3._invInertia11 * _this3._transform._rotation01 + _this3._invInertia12 * _this3._transform._rotation02;
- __tmp__113 = _this3._invInertia10 * _this3._transform._rotation10 + _this3._invInertia11 * _this3._transform._rotation11 + _this3._invInertia12 * _this3._transform._rotation12;
- __tmp__123 = _this3._invInertia10 * _this3._transform._rotation20 + _this3._invInertia11 * _this3._transform._rotation21 + _this3._invInertia12 * _this3._transform._rotation22;
- __tmp__203 = _this3._invInertia20 * _this3._transform._rotation00 + _this3._invInertia21 * _this3._transform._rotation01 + _this3._invInertia22 * _this3._transform._rotation02;
- __tmp__213 = _this3._invInertia20 * _this3._transform._rotation10 + _this3._invInertia21 * _this3._transform._rotation11 + _this3._invInertia22 * _this3._transform._rotation12;
- __tmp__223 = _this3._invInertia20 * _this3._transform._rotation20 + _this3._invInertia21 * _this3._transform._rotation21 + _this3._invInertia22 * _this3._transform._rotation22;
- _this3._invInertia00 = __tmp__003;
- _this3._invInertia01 = __tmp__013;
- _this3._invInertia02 = __tmp__023;
- _this3._invInertia10 = __tmp__103;
- _this3._invInertia11 = __tmp__113;
- _this3._invInertia12 = __tmp__123;
- _this3._invInertia20 = __tmp__203;
- _this3._invInertia21 = __tmp__213;
- _this3._invInertia22 = __tmp__223;
- _this3._invInertia00 *= _this3._rotFactor.x;
- _this3._invInertia01 *= _this3._rotFactor.x;
- _this3._invInertia02 *= _this3._rotFactor.x;
- _this3._invInertia10 *= _this3._rotFactor.y;
- _this3._invInertia11 *= _this3._rotFactor.y;
- _this3._invInertia12 *= _this3._rotFactor.y;
- _this3._invInertia20 *= _this3._rotFactor.z;
- _this3._invInertia21 *= _this3._rotFactor.z;
- _this3._invInertia22 *= _this3._rotFactor.z;
- }
- postSolve() {
- this.joint._syncAnchors();
- this.joint._checkDestruction();
- }
- }
- if(!oimo.dynamics.rigidbody) oimo.dynamics.rigidbody = {};
- oimo.dynamics.rigidbody.MassData = class oimo_dynamics_rigidbody_MassData {
- constructor() {
- this.mass = 0;
- this.localInertia = new oimo.common.Mat3();
- }
- }
- oimo.dynamics.rigidbody.RigidBody = class oimo_dynamics_rigidbody_RigidBody {
- constructor(config) {
- this._next = null;
- this._prev = null;
- this._shapeList = null;
- this._shapeListLast = null;
- this._numShapes = 0;
- this._contactLinkList = null;
- this._contactLinkListLast = null;
- this._numContactLinks = 0;
- this._jointLinkList = null;
- this._jointLinkListLast = null;
- this._numJointLinks = 0;
- var v = config.linearVelocity;
- this._velX = v.x;
- this._velY = v.y;
- this._velZ = v.z;
- var v1 = config.angularVelocity;
- this._angVelX = v1.x;
- this._angVelY = v1.y;
- this._angVelZ = v1.z;
- this._pseudoVelX = 0;
- this._pseudoVelY = 0;
- this._pseudoVelZ = 0;
- this._angPseudoVelX = 0;
- this._angPseudoVelY = 0;
- this._angPseudoVelZ = 0;
- this._ptransform = new oimo.common.Transform();
- this._transform = new oimo.common.Transform();
- var v2 = config.position;
- this._ptransform._positionX = v2.x;
- this._ptransform._positionY = v2.y;
- this._ptransform._positionZ = v2.z;
- var m = config.rotation;
- this._ptransform._rotation00 = m.e00;
- this._ptransform._rotation01 = m.e01;
- this._ptransform._rotation02 = m.e02;
- this._ptransform._rotation10 = m.e10;
- this._ptransform._rotation11 = m.e11;
- this._ptransform._rotation12 = m.e12;
- this._ptransform._rotation20 = m.e20;
- this._ptransform._rotation21 = m.e21;
- this._ptransform._rotation22 = m.e22;
- var dst = this._transform;
- var src = this._ptransform;
- dst._positionX = src._positionX;
- dst._positionY = src._positionY;
- dst._positionZ = src._positionZ;
- dst._rotation00 = src._rotation00;
- dst._rotation01 = src._rotation01;
- dst._rotation02 = src._rotation02;
- dst._rotation10 = src._rotation10;
- dst._rotation11 = src._rotation11;
- dst._rotation12 = src._rotation12;
- dst._rotation20 = src._rotation20;
- dst._rotation21 = src._rotation21;
- dst._rotation22 = src._rotation22;
- this._type = config.type;
- this._sleepTime = 0;
- this._sleeping = false;
- this._autoSleep = config.autoSleep;
- this._mass = 0;
- this._invMass = 0;
- this._localInertia00 = 0;
- this._localInertia01 = 0;
- this._localInertia02 = 0;
- this._localInertia10 = 0;
- this._localInertia11 = 0;
- this._localInertia12 = 0;
- this._localInertia20 = 0;
- this._localInertia21 = 0;
- this._localInertia22 = 0;
- this._invLocalInertia00 = 0;
- this._invLocalInertia01 = 0;
- this._invLocalInertia02 = 0;
- this._invLocalInertia10 = 0;
- this._invLocalInertia11 = 0;
- this._invLocalInertia12 = 0;
- this._invLocalInertia20 = 0;
- this._invLocalInertia21 = 0;
- this._invLocalInertia22 = 0;
- this._invLocalInertiaWithoutRotFactor00 = 0;
- this._invLocalInertiaWithoutRotFactor01 = 0;
- this._invLocalInertiaWithoutRotFactor02 = 0;
- this._invLocalInertiaWithoutRotFactor10 = 0;
- this._invLocalInertiaWithoutRotFactor11 = 0;
- this._invLocalInertiaWithoutRotFactor12 = 0;
- this._invLocalInertiaWithoutRotFactor20 = 0;
- this._invLocalInertiaWithoutRotFactor21 = 0;
- this._invLocalInertiaWithoutRotFactor22 = 0;
- this._invInertia00 = 0;
- this._invInertia01 = 0;
- this._invInertia02 = 0;
- this._invInertia10 = 0;
- this._invInertia11 = 0;
- this._invInertia12 = 0;
- this._invInertia20 = 0;
- this._invInertia21 = 0;
- this._invInertia22 = 0;
- this._linearDamping = config.linearDamping;
- this._angularDamping = config.angularDamping;
- this._forceX = 0;
- this._forceY = 0;
- this._forceZ = 0;
- this._torqueX = 0;
- this._torqueY = 0;
- this._torqueZ = 0;
- this._linearContactImpulseX = 0;
- this._linearContactImpulseY = 0;
- this._linearContactImpulseZ = 0;
- this._angularContactImpulseX = 0;
- this._angularContactImpulseY = 0;
- this._angularContactImpulseZ = 0;
- this._rotFactor = new oimo.common.Vec3(1,1,1);
- this._addedToIsland = false;
- this._gravityScale = 1;
- this._world = null;
- }
- _integrate(dt) {
- switch(this._type) {
- case 1:
- this._velX = 0;
- this._velY = 0;
- this._velZ = 0;
- this._angVelX = 0;
- this._angVelY = 0;
- this._angVelZ = 0;
- this._pseudoVelX = 0;
- this._pseudoVelY = 0;
- this._pseudoVelZ = 0;
- this._angPseudoVelX = 0;
- this._angPseudoVelY = 0;
- this._angPseudoVelZ = 0;
- break;
- case 0:case 2:
- var translation;
- var translationX;
- var translationY;
- var translationZ;
- var rotation;
- var rotationX;
- var rotationY;
- var rotationZ;
- translationX = this._velX * dt;
- translationY = this._velY * dt;
- translationZ = this._velZ * dt;
- rotationX = this._angVelX * dt;
- rotationY = this._angVelY * dt;
- rotationZ = this._angVelZ * dt;
- var translationLengthSq = translationX * translationX + translationY * translationY + translationZ * translationZ;
- var rotationLengthSq = rotationX * rotationX + rotationY * rotationY + rotationZ * rotationZ;
- if(translationLengthSq == 0 && rotationLengthSq == 0) {
- return;
- }
- if(translationLengthSq > oimo.common.Setting.maxTranslationPerStep * oimo.common.Setting.maxTranslationPerStep) {
- var l = oimo.common.Setting.maxTranslationPerStep / Math.sqrt(translationLengthSq);
- this._velX *= l;
- this._velY *= l;
- this._velZ *= l;
- translationX *= l;
- translationY *= l;
- translationZ *= l;
- }
- if(rotationLengthSq > oimo.common.Setting.maxRotationPerStep * oimo.common.Setting.maxRotationPerStep) {
- var l1 = oimo.common.Setting.maxRotationPerStep / Math.sqrt(rotationLengthSq);
- this._angVelX *= l1;
- this._angVelY *= l1;
- this._angVelZ *= l1;
- rotationX *= l1;
- rotationY *= l1;
- rotationZ *= l1;
- }
- this._transform._positionX += translationX;
- this._transform._positionY += translationY;
- this._transform._positionZ += translationZ;
- var theta = Math.sqrt(rotationX * rotationX + rotationY * rotationY + rotationZ * rotationZ);
- var halfTheta = theta * 0.5;
- var rotationToSinAxisFactor;
- var cosHalfTheta;
- if(halfTheta < 0.5) {
- var ht2 = halfTheta * halfTheta;
- rotationToSinAxisFactor = 0.5 * (1 - ht2 * 0.166666666666666657 + ht2 * ht2 * 0.00833333333333333322);
- cosHalfTheta = 1 - ht2 * 0.5 + ht2 * ht2 * 0.0416666666666666644;
- } else {
- rotationToSinAxisFactor = Math.sin(halfTheta) / theta;
- cosHalfTheta = Math.cos(halfTheta);
- }
- var sinAxis;
- var sinAxisX;
- var sinAxisY;
- var sinAxisZ;
- sinAxisX = rotationX * rotationToSinAxisFactor;
- sinAxisY = rotationY * rotationToSinAxisFactor;
- sinAxisZ = rotationZ * rotationToSinAxisFactor;
- var dq;
- var dqX;
- var dqY;
- var dqZ;
- var dqW;
- dqX = sinAxisX;
- dqY = sinAxisY;
- dqZ = sinAxisZ;
- dqW = cosHalfTheta;
- var q;
- var qX;
- var qY;
- var qZ;
- var qW;
- var e00 = this._transform._rotation00;
- var e11 = this._transform._rotation11;
- var e22 = this._transform._rotation22;
- var t = e00 + e11 + e22;
- var s;
- if(t > 0) {
- s = Math.sqrt(t + 1);
- qW = 0.5 * s;
- s = 0.5 / s;
- qX = (this._transform._rotation21 - this._transform._rotation12) * s;
- qY = (this._transform._rotation02 - this._transform._rotation20) * s;
- qZ = (this._transform._rotation10 - this._transform._rotation01) * s;
- } else if(e00 > e11) {
- if(e00 > e22) {
- s = Math.sqrt(e00 - e11 - e22 + 1);
- qX = 0.5 * s;
- s = 0.5 / s;
- qY = (this._transform._rotation01 + this._transform._rotation10) * s;
- qZ = (this._transform._rotation02 + this._transform._rotation20) * s;
- qW = (this._transform._rotation21 - this._transform._rotation12) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- qZ = 0.5 * s;
- s = 0.5 / s;
- qX = (this._transform._rotation02 + this._transform._rotation20) * s;
- qY = (this._transform._rotation12 + this._transform._rotation21) * s;
- qW = (this._transform._rotation10 - this._transform._rotation01) * s;
- }
- } else if(e11 > e22) {
- s = Math.sqrt(e11 - e22 - e00 + 1);
- qY = 0.5 * s;
- s = 0.5 / s;
- qX = (this._transform._rotation01 + this._transform._rotation10) * s;
- qZ = (this._transform._rotation12 + this._transform._rotation21) * s;
- qW = (this._transform._rotation02 - this._transform._rotation20) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- qZ = 0.5 * s;
- s = 0.5 / s;
- qX = (this._transform._rotation02 + this._transform._rotation20) * s;
- qY = (this._transform._rotation12 + this._transform._rotation21) * s;
- qW = (this._transform._rotation10 - this._transform._rotation01) * s;
- }
- qX = dqW * qX + dqX * qW + dqY * qZ - dqZ * qY;
- qY = dqW * qY - dqX * qZ + dqY * qW + dqZ * qX;
- qZ = dqW * qZ + dqX * qY - dqY * qX + dqZ * qW;
- qW = dqW * qW - dqX * qX - dqY * qY - dqZ * qZ;
- var l2 = qX * qX + qY * qY + qZ * qZ + qW * qW;
- if(l2 > 1e-32) {
- l2 = 1 / Math.sqrt(l2);
- }
- qX *= l2;
- qY *= l2;
- qZ *= l2;
- qW *= l2;
- var x = qX;
- var y = qY;
- var z = qZ;
- var w = qW;
- var x2 = 2 * x;
- var y2 = 2 * y;
- var z2 = 2 * z;
- var xx = x * x2;
- var yy = y * y2;
- var zz = z * z2;
- var xy = x * y2;
- var yz = y * z2;
- var xz = x * z2;
- var wx = w * x2;
- var wy = w * y2;
- var wz = w * z2;
- this._transform._rotation00 = 1 - yy - zz;
- this._transform._rotation01 = xy - wz;
- this._transform._rotation02 = xz + wy;
- this._transform._rotation10 = xy + wz;
- this._transform._rotation11 = 1 - xx - zz;
- this._transform._rotation12 = yz - wx;
- this._transform._rotation20 = xz - wy;
- this._transform._rotation21 = yz + wx;
- this._transform._rotation22 = 1 - xx - yy;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
- __tmp__01 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
- __tmp__02 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
- __tmp__10 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
- __tmp__11 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
- __tmp__12 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
- __tmp__20 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
- __tmp__21 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
- __tmp__22 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
- this._invInertia00 = __tmp__00;
- this._invInertia01 = __tmp__01;
- this._invInertia02 = __tmp__02;
- this._invInertia10 = __tmp__10;
- this._invInertia11 = __tmp__11;
- this._invInertia12 = __tmp__12;
- this._invInertia20 = __tmp__20;
- this._invInertia21 = __tmp__21;
- this._invInertia22 = __tmp__22;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
- __tmp__011 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
- __tmp__021 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
- __tmp__101 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
- __tmp__111 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
- __tmp__121 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
- __tmp__201 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
- __tmp__211 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
- __tmp__221 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
- this._invInertia00 = __tmp__001;
- this._invInertia01 = __tmp__011;
- this._invInertia02 = __tmp__021;
- this._invInertia10 = __tmp__101;
- this._invInertia11 = __tmp__111;
- this._invInertia12 = __tmp__121;
- this._invInertia20 = __tmp__201;
- this._invInertia21 = __tmp__211;
- this._invInertia22 = __tmp__221;
- this._invInertia00 *= this._rotFactor.x;
- this._invInertia01 *= this._rotFactor.x;
- this._invInertia02 *= this._rotFactor.x;
- this._invInertia10 *= this._rotFactor.y;
- this._invInertia11 *= this._rotFactor.y;
- this._invInertia12 *= this._rotFactor.y;
- this._invInertia20 *= this._rotFactor.z;
- this._invInertia21 *= this._rotFactor.z;
- this._invInertia22 *= this._rotFactor.z;
- break;
- }
- }
- _integratePseudoVelocity() {
- var pseudoVelLengthSq = this._pseudoVelX * this._pseudoVelX + this._pseudoVelY * this._pseudoVelY + this._pseudoVelZ * this._pseudoVelZ;
- var angPseudoVelLengthSq = this._angPseudoVelX * this._angPseudoVelX + this._angPseudoVelY * this._angPseudoVelY + this._angPseudoVelZ * this._angPseudoVelZ;
- if(pseudoVelLengthSq == 0 && angPseudoVelLengthSq == 0) {
- return;
- }
- switch(this._type) {
- case 1:
- this._pseudoVelX = 0;
- this._pseudoVelY = 0;
- this._pseudoVelZ = 0;
- this._angPseudoVelX = 0;
- this._angPseudoVelY = 0;
- this._angPseudoVelZ = 0;
- break;
- case 0:case 2:
- var translation;
- var translationX;
- var translationY;
- var translationZ;
- var rotation;
- var rotationX;
- var rotationY;
- var rotationZ;
- translationX = this._pseudoVelX;
- translationY = this._pseudoVelY;
- translationZ = this._pseudoVelZ;
- rotationX = this._angPseudoVelX;
- rotationY = this._angPseudoVelY;
- rotationZ = this._angPseudoVelZ;
- this._pseudoVelX = 0;
- this._pseudoVelY = 0;
- this._pseudoVelZ = 0;
- this._angPseudoVelX = 0;
- this._angPseudoVelY = 0;
- this._angPseudoVelZ = 0;
- this._transform._positionX += translationX;
- this._transform._positionY += translationY;
- this._transform._positionZ += translationZ;
- var theta = Math.sqrt(rotationX * rotationX + rotationY * rotationY + rotationZ * rotationZ);
- var halfTheta = theta * 0.5;
- var rotationToSinAxisFactor;
- var cosHalfTheta;
- if(halfTheta < 0.5) {
- var ht2 = halfTheta * halfTheta;
- rotationToSinAxisFactor = 0.5 * (1 - ht2 * 0.166666666666666657 + ht2 * ht2 * 0.00833333333333333322);
- cosHalfTheta = 1 - ht2 * 0.5 + ht2 * ht2 * 0.0416666666666666644;
- } else {
- rotationToSinAxisFactor = Math.sin(halfTheta) / theta;
- cosHalfTheta = Math.cos(halfTheta);
- }
- var sinAxis;
- var sinAxisX;
- var sinAxisY;
- var sinAxisZ;
- sinAxisX = rotationX * rotationToSinAxisFactor;
- sinAxisY = rotationY * rotationToSinAxisFactor;
- sinAxisZ = rotationZ * rotationToSinAxisFactor;
- var dq;
- var dqX;
- var dqY;
- var dqZ;
- var dqW;
- dqX = sinAxisX;
- dqY = sinAxisY;
- dqZ = sinAxisZ;
- dqW = cosHalfTheta;
- var q;
- var qX;
- var qY;
- var qZ;
- var qW;
- var e00 = this._transform._rotation00;
- var e11 = this._transform._rotation11;
- var e22 = this._transform._rotation22;
- var t = e00 + e11 + e22;
- var s;
- if(t > 0) {
- s = Math.sqrt(t + 1);
- qW = 0.5 * s;
- s = 0.5 / s;
- qX = (this._transform._rotation21 - this._transform._rotation12) * s;
- qY = (this._transform._rotation02 - this._transform._rotation20) * s;
- qZ = (this._transform._rotation10 - this._transform._rotation01) * s;
- } else if(e00 > e11) {
- if(e00 > e22) {
- s = Math.sqrt(e00 - e11 - e22 + 1);
- qX = 0.5 * s;
- s = 0.5 / s;
- qY = (this._transform._rotation01 + this._transform._rotation10) * s;
- qZ = (this._transform._rotation02 + this._transform._rotation20) * s;
- qW = (this._transform._rotation21 - this._transform._rotation12) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- qZ = 0.5 * s;
- s = 0.5 / s;
- qX = (this._transform._rotation02 + this._transform._rotation20) * s;
- qY = (this._transform._rotation12 + this._transform._rotation21) * s;
- qW = (this._transform._rotation10 - this._transform._rotation01) * s;
- }
- } else if(e11 > e22) {
- s = Math.sqrt(e11 - e22 - e00 + 1);
- qY = 0.5 * s;
- s = 0.5 / s;
- qX = (this._transform._rotation01 + this._transform._rotation10) * s;
- qZ = (this._transform._rotation12 + this._transform._rotation21) * s;
- qW = (this._transform._rotation02 - this._transform._rotation20) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- qZ = 0.5 * s;
- s = 0.5 / s;
- qX = (this._transform._rotation02 + this._transform._rotation20) * s;
- qY = (this._transform._rotation12 + this._transform._rotation21) * s;
- qW = (this._transform._rotation10 - this._transform._rotation01) * s;
- }
- qX = dqW * qX + dqX * qW + dqY * qZ - dqZ * qY;
- qY = dqW * qY - dqX * qZ + dqY * qW + dqZ * qX;
- qZ = dqW * qZ + dqX * qY - dqY * qX + dqZ * qW;
- qW = dqW * qW - dqX * qX - dqY * qY - dqZ * qZ;
- var l = qX * qX + qY * qY + qZ * qZ + qW * qW;
- if(l > 1e-32) {
- l = 1 / Math.sqrt(l);
- }
- qX *= l;
- qY *= l;
- qZ *= l;
- qW *= l;
- var x = qX;
- var y = qY;
- var z = qZ;
- var w = qW;
- var x2 = 2 * x;
- var y2 = 2 * y;
- var z2 = 2 * z;
- var xx = x * x2;
- var yy = y * y2;
- var zz = z * z2;
- var xy = x * y2;
- var yz = y * z2;
- var xz = x * z2;
- var wx = w * x2;
- var wy = w * y2;
- var wz = w * z2;
- this._transform._rotation00 = 1 - yy - zz;
- this._transform._rotation01 = xy - wz;
- this._transform._rotation02 = xz + wy;
- this._transform._rotation10 = xy + wz;
- this._transform._rotation11 = 1 - xx - zz;
- this._transform._rotation12 = yz - wx;
- this._transform._rotation20 = xz - wy;
- this._transform._rotation21 = yz + wx;
- this._transform._rotation22 = 1 - xx - yy;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
- __tmp__01 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
- __tmp__02 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
- __tmp__10 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
- __tmp__11 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
- __tmp__12 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
- __tmp__20 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
- __tmp__21 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
- __tmp__22 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
- this._invInertia00 = __tmp__00;
- this._invInertia01 = __tmp__01;
- this._invInertia02 = __tmp__02;
- this._invInertia10 = __tmp__10;
- this._invInertia11 = __tmp__11;
- this._invInertia12 = __tmp__12;
- this._invInertia20 = __tmp__20;
- this._invInertia21 = __tmp__21;
- this._invInertia22 = __tmp__22;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
- __tmp__011 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
- __tmp__021 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
- __tmp__101 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
- __tmp__111 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
- __tmp__121 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
- __tmp__201 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
- __tmp__211 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
- __tmp__221 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
- this._invInertia00 = __tmp__001;
- this._invInertia01 = __tmp__011;
- this._invInertia02 = __tmp__021;
- this._invInertia10 = __tmp__101;
- this._invInertia11 = __tmp__111;
- this._invInertia12 = __tmp__121;
- this._invInertia20 = __tmp__201;
- this._invInertia21 = __tmp__211;
- this._invInertia22 = __tmp__221;
- this._invInertia00 *= this._rotFactor.x;
- this._invInertia01 *= this._rotFactor.x;
- this._invInertia02 *= this._rotFactor.x;
- this._invInertia10 *= this._rotFactor.y;
- this._invInertia11 *= this._rotFactor.y;
- this._invInertia12 *= this._rotFactor.y;
- this._invInertia20 *= this._rotFactor.z;
- this._invInertia21 *= this._rotFactor.z;
- this._invInertia22 *= this._rotFactor.z;
- break;
- }
- }
- updateMass() {
- var totalInertia;
- var totalInertia00;
- var totalInertia01;
- var totalInertia02;
- var totalInertia10;
- var totalInertia11;
- var totalInertia12;
- var totalInertia20;
- var totalInertia21;
- var totalInertia22;
- totalInertia00 = 0;
- totalInertia01 = 0;
- totalInertia02 = 0;
- totalInertia10 = 0;
- totalInertia11 = 0;
- totalInertia12 = 0;
- totalInertia20 = 0;
- totalInertia21 = 0;
- totalInertia22 = 0;
- var totalMass = 0;
- var s = this._shapeList;
- while(s != null) {
- var n = s._next;
- var g = s._geom;
- g._updateMass();
- var mass = s._density * g._volume;
- var inertia;
- var inertia00;
- var inertia01;
- var inertia02;
- var inertia10;
- var inertia11;
- var inertia12;
- var inertia20;
- var inertia21;
- var inertia22;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = s._localTransform._rotation00 * g._inertiaCoeff00 + s._localTransform._rotation01 * g._inertiaCoeff10 + s._localTransform._rotation02 * g._inertiaCoeff20;
- __tmp__01 = s._localTransform._rotation00 * g._inertiaCoeff01 + s._localTransform._rotation01 * g._inertiaCoeff11 + s._localTransform._rotation02 * g._inertiaCoeff21;
- __tmp__02 = s._localTransform._rotation00 * g._inertiaCoeff02 + s._localTransform._rotation01 * g._inertiaCoeff12 + s._localTransform._rotation02 * g._inertiaCoeff22;
- __tmp__10 = s._localTransform._rotation10 * g._inertiaCoeff00 + s._localTransform._rotation11 * g._inertiaCoeff10 + s._localTransform._rotation12 * g._inertiaCoeff20;
- __tmp__11 = s._localTransform._rotation10 * g._inertiaCoeff01 + s._localTransform._rotation11 * g._inertiaCoeff11 + s._localTransform._rotation12 * g._inertiaCoeff21;
- __tmp__12 = s._localTransform._rotation10 * g._inertiaCoeff02 + s._localTransform._rotation11 * g._inertiaCoeff12 + s._localTransform._rotation12 * g._inertiaCoeff22;
- __tmp__20 = s._localTransform._rotation20 * g._inertiaCoeff00 + s._localTransform._rotation21 * g._inertiaCoeff10 + s._localTransform._rotation22 * g._inertiaCoeff20;
- __tmp__21 = s._localTransform._rotation20 * g._inertiaCoeff01 + s._localTransform._rotation21 * g._inertiaCoeff11 + s._localTransform._rotation22 * g._inertiaCoeff21;
- __tmp__22 = s._localTransform._rotation20 * g._inertiaCoeff02 + s._localTransform._rotation21 * g._inertiaCoeff12 + s._localTransform._rotation22 * g._inertiaCoeff22;
- inertia00 = __tmp__00;
- inertia01 = __tmp__01;
- inertia02 = __tmp__02;
- inertia10 = __tmp__10;
- inertia11 = __tmp__11;
- inertia12 = __tmp__12;
- inertia20 = __tmp__20;
- inertia21 = __tmp__21;
- inertia22 = __tmp__22;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = inertia00 * s._localTransform._rotation00 + inertia01 * s._localTransform._rotation01 + inertia02 * s._localTransform._rotation02;
- __tmp__011 = inertia00 * s._localTransform._rotation10 + inertia01 * s._localTransform._rotation11 + inertia02 * s._localTransform._rotation12;
- __tmp__021 = inertia00 * s._localTransform._rotation20 + inertia01 * s._localTransform._rotation21 + inertia02 * s._localTransform._rotation22;
- __tmp__101 = inertia10 * s._localTransform._rotation00 + inertia11 * s._localTransform._rotation01 + inertia12 * s._localTransform._rotation02;
- __tmp__111 = inertia10 * s._localTransform._rotation10 + inertia11 * s._localTransform._rotation11 + inertia12 * s._localTransform._rotation12;
- __tmp__121 = inertia10 * s._localTransform._rotation20 + inertia11 * s._localTransform._rotation21 + inertia12 * s._localTransform._rotation22;
- __tmp__201 = inertia20 * s._localTransform._rotation00 + inertia21 * s._localTransform._rotation01 + inertia22 * s._localTransform._rotation02;
- __tmp__211 = inertia20 * s._localTransform._rotation10 + inertia21 * s._localTransform._rotation11 + inertia22 * s._localTransform._rotation12;
- __tmp__221 = inertia20 * s._localTransform._rotation20 + inertia21 * s._localTransform._rotation21 + inertia22 * s._localTransform._rotation22;
- inertia00 = __tmp__001;
- inertia01 = __tmp__011;
- inertia02 = __tmp__021;
- inertia10 = __tmp__101;
- inertia11 = __tmp__111;
- inertia12 = __tmp__121;
- inertia20 = __tmp__201;
- inertia21 = __tmp__211;
- inertia22 = __tmp__221;
- inertia00 *= mass;
- inertia01 *= mass;
- inertia02 *= mass;
- inertia10 *= mass;
- inertia11 *= mass;
- inertia12 *= mass;
- inertia20 *= mass;
- inertia21 *= mass;
- inertia22 *= mass;
- var cogInertia;
- var cogInertia00;
- var cogInertia01;
- var cogInertia02;
- var cogInertia10;
- var cogInertia11;
- var cogInertia12;
- var cogInertia20;
- var cogInertia21;
- var cogInertia22;
- var xx = s._localTransform._positionX * s._localTransform._positionX;
- var yy = s._localTransform._positionY * s._localTransform._positionY;
- var zz = s._localTransform._positionZ * s._localTransform._positionZ;
- var xy = -s._localTransform._positionX * s._localTransform._positionY;
- var yz = -s._localTransform._positionY * s._localTransform._positionZ;
- var zx = -s._localTransform._positionZ * s._localTransform._positionX;
- cogInertia00 = yy + zz;
- cogInertia01 = xy;
- cogInertia02 = zx;
- cogInertia10 = xy;
- cogInertia11 = xx + zz;
- cogInertia12 = yz;
- cogInertia20 = zx;
- cogInertia21 = yz;
- cogInertia22 = xx + yy;
- inertia00 += cogInertia00 * mass;
- inertia01 += cogInertia01 * mass;
- inertia02 += cogInertia02 * mass;
- inertia10 += cogInertia10 * mass;
- inertia11 += cogInertia11 * mass;
- inertia12 += cogInertia12 * mass;
- inertia20 += cogInertia20 * mass;
- inertia21 += cogInertia21 * mass;
- inertia22 += cogInertia22 * mass;
- totalMass += mass;
- totalInertia00 += inertia00;
- totalInertia01 += inertia01;
- totalInertia02 += inertia02;
- totalInertia10 += inertia10;
- totalInertia11 += inertia11;
- totalInertia12 += inertia12;
- totalInertia20 += inertia20;
- totalInertia21 += inertia21;
- totalInertia22 += inertia22;
- s = n;
- }
- this._mass = totalMass;
- this._localInertia00 = totalInertia00;
- this._localInertia01 = totalInertia01;
- this._localInertia02 = totalInertia02;
- this._localInertia10 = totalInertia10;
- this._localInertia11 = totalInertia11;
- this._localInertia12 = totalInertia12;
- this._localInertia20 = totalInertia20;
- this._localInertia21 = totalInertia21;
- this._localInertia22 = totalInertia22;
- var d00 = this._localInertia11 * this._localInertia22 - this._localInertia12 * this._localInertia21;
- var d01 = this._localInertia10 * this._localInertia22 - this._localInertia12 * this._localInertia20;
- var d02 = this._localInertia10 * this._localInertia21 - this._localInertia11 * this._localInertia20;
- var det = this._localInertia00 * d00 - this._localInertia01 * d01 + this._localInertia02 * d02;
- if(this._mass > 0 && det > 0 && this._type == 0) {
- this._invMass = 1 / this._mass;
- var d001 = this._localInertia11 * this._localInertia22 - this._localInertia12 * this._localInertia21;
- var d011 = this._localInertia10 * this._localInertia22 - this._localInertia12 * this._localInertia20;
- var d021 = this._localInertia10 * this._localInertia21 - this._localInertia11 * this._localInertia20;
- var d10 = this._localInertia01 * this._localInertia22 - this._localInertia02 * this._localInertia21;
- var d11 = this._localInertia00 * this._localInertia22 - this._localInertia02 * this._localInertia20;
- var d12 = this._localInertia00 * this._localInertia21 - this._localInertia01 * this._localInertia20;
- var d20 = this._localInertia01 * this._localInertia12 - this._localInertia02 * this._localInertia11;
- var d21 = this._localInertia00 * this._localInertia12 - this._localInertia02 * this._localInertia10;
- var d22 = this._localInertia00 * this._localInertia11 - this._localInertia01 * this._localInertia10;
- var d = this._localInertia00 * d001 - this._localInertia01 * d011 + this._localInertia02 * d021;
- if(d < -1e-32 || d > 1e-32) {
- d = 1 / d;
- }
- this._invLocalInertia00 = d001 * d;
- this._invLocalInertia01 = -d10 * d;
- this._invLocalInertia02 = d20 * d;
- this._invLocalInertia10 = -d011 * d;
- this._invLocalInertia11 = d11 * d;
- this._invLocalInertia12 = -d21 * d;
- this._invLocalInertia20 = d021 * d;
- this._invLocalInertia21 = -d12 * d;
- this._invLocalInertia22 = d22 * d;
- this._invLocalInertiaWithoutRotFactor00 = this._invLocalInertia00;
- this._invLocalInertiaWithoutRotFactor01 = this._invLocalInertia01;
- this._invLocalInertiaWithoutRotFactor02 = this._invLocalInertia02;
- this._invLocalInertiaWithoutRotFactor10 = this._invLocalInertia10;
- this._invLocalInertiaWithoutRotFactor11 = this._invLocalInertia11;
- this._invLocalInertiaWithoutRotFactor12 = this._invLocalInertia12;
- this._invLocalInertiaWithoutRotFactor20 = this._invLocalInertia20;
- this._invLocalInertiaWithoutRotFactor21 = this._invLocalInertia21;
- this._invLocalInertiaWithoutRotFactor22 = this._invLocalInertia22;
- this._invLocalInertia00 = this._invLocalInertiaWithoutRotFactor00 * this._rotFactor.x;
- this._invLocalInertia01 = this._invLocalInertiaWithoutRotFactor01 * this._rotFactor.x;
- this._invLocalInertia02 = this._invLocalInertiaWithoutRotFactor02 * this._rotFactor.x;
- this._invLocalInertia10 = this._invLocalInertiaWithoutRotFactor10 * this._rotFactor.y;
- this._invLocalInertia11 = this._invLocalInertiaWithoutRotFactor11 * this._rotFactor.y;
- this._invLocalInertia12 = this._invLocalInertiaWithoutRotFactor12 * this._rotFactor.y;
- this._invLocalInertia20 = this._invLocalInertiaWithoutRotFactor20 * this._rotFactor.z;
- this._invLocalInertia21 = this._invLocalInertiaWithoutRotFactor21 * this._rotFactor.z;
- this._invLocalInertia22 = this._invLocalInertiaWithoutRotFactor22 * this._rotFactor.z;
- } else {
- this._invMass = 0;
- this._invLocalInertia00 = 0;
- this._invLocalInertia01 = 0;
- this._invLocalInertia02 = 0;
- this._invLocalInertia10 = 0;
- this._invLocalInertia11 = 0;
- this._invLocalInertia12 = 0;
- this._invLocalInertia20 = 0;
- this._invLocalInertia21 = 0;
- this._invLocalInertia22 = 0;
- this._invLocalInertiaWithoutRotFactor00 = 0;
- this._invLocalInertiaWithoutRotFactor01 = 0;
- this._invLocalInertiaWithoutRotFactor02 = 0;
- this._invLocalInertiaWithoutRotFactor10 = 0;
- this._invLocalInertiaWithoutRotFactor11 = 0;
- this._invLocalInertiaWithoutRotFactor12 = 0;
- this._invLocalInertiaWithoutRotFactor20 = 0;
- this._invLocalInertiaWithoutRotFactor21 = 0;
- this._invLocalInertiaWithoutRotFactor22 = 0;
- if(this._type == 0) {
- this._type = 1;
- }
- }
- var __tmp__002;
- var __tmp__012;
- var __tmp__022;
- var __tmp__102;
- var __tmp__112;
- var __tmp__122;
- var __tmp__202;
- var __tmp__212;
- var __tmp__222;
- __tmp__002 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
- __tmp__012 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
- __tmp__022 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
- __tmp__102 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
- __tmp__112 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
- __tmp__122 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
- __tmp__202 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
- __tmp__212 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
- __tmp__222 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
- this._invInertia00 = __tmp__002;
- this._invInertia01 = __tmp__012;
- this._invInertia02 = __tmp__022;
- this._invInertia10 = __tmp__102;
- this._invInertia11 = __tmp__112;
- this._invInertia12 = __tmp__122;
- this._invInertia20 = __tmp__202;
- this._invInertia21 = __tmp__212;
- this._invInertia22 = __tmp__222;
- var __tmp__003;
- var __tmp__013;
- var __tmp__023;
- var __tmp__103;
- var __tmp__113;
- var __tmp__123;
- var __tmp__203;
- var __tmp__213;
- var __tmp__223;
- __tmp__003 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
- __tmp__013 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
- __tmp__023 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
- __tmp__103 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
- __tmp__113 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
- __tmp__123 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
- __tmp__203 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
- __tmp__213 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
- __tmp__223 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
- this._invInertia00 = __tmp__003;
- this._invInertia01 = __tmp__013;
- this._invInertia02 = __tmp__023;
- this._invInertia10 = __tmp__103;
- this._invInertia11 = __tmp__113;
- this._invInertia12 = __tmp__123;
- this._invInertia20 = __tmp__203;
- this._invInertia21 = __tmp__213;
- this._invInertia22 = __tmp__223;
- this._invInertia00 *= this._rotFactor.x;
- this._invInertia01 *= this._rotFactor.x;
- this._invInertia02 *= this._rotFactor.x;
- this._invInertia10 *= this._rotFactor.y;
- this._invInertia11 *= this._rotFactor.y;
- this._invInertia12 *= this._rotFactor.y;
- this._invInertia20 *= this._rotFactor.z;
- this._invInertia21 *= this._rotFactor.z;
- this._invInertia22 *= this._rotFactor.z;
- this._sleeping = false;
- this._sleepTime = 0;
- }
- getPosition() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._transform._positionX;
- v1.y = this._transform._positionY;
- v1.z = this._transform._positionZ;
- return v;
- }
- getPositionTo(position) {
- var v = position;
- v.x = this._transform._positionX;
- v.y = this._transform._positionY;
- v.z = this._transform._positionZ;
- }
- setPosition(position) {
- var v = position;
- this._transform._positionX = v.x;
- this._transform._positionY = v.y;
- this._transform._positionZ = v.z;
- var dst = this._ptransform;
- var src = this._transform;
- dst._positionX = src._positionX;
- dst._positionY = src._positionY;
- dst._positionZ = src._positionZ;
- dst._rotation00 = src._rotation00;
- dst._rotation01 = src._rotation01;
- dst._rotation02 = src._rotation02;
- dst._rotation10 = src._rotation10;
- dst._rotation11 = src._rotation11;
- dst._rotation12 = src._rotation12;
- dst._rotation20 = src._rotation20;
- dst._rotation21 = src._rotation21;
- dst._rotation22 = src._rotation22;
- var s = this._shapeList;
- while(s != null) {
- var n = s._next;
- var dst1 = s._ptransform;
- var src1 = s._localTransform;
- var src2 = this._ptransform;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
- __tmp__01 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
- __tmp__02 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
- __tmp__10 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
- __tmp__11 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
- __tmp__12 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
- __tmp__20 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
- __tmp__21 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
- __tmp__22 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
- dst1._rotation00 = __tmp__00;
- dst1._rotation01 = __tmp__01;
- dst1._rotation02 = __tmp__02;
- dst1._rotation10 = __tmp__10;
- dst1._rotation11 = __tmp__11;
- dst1._rotation12 = __tmp__12;
- dst1._rotation20 = __tmp__20;
- dst1._rotation21 = __tmp__21;
- dst1._rotation22 = __tmp__22;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
- __tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
- __tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
- dst1._positionX = __tmp__X;
- dst1._positionY = __tmp__Y;
- dst1._positionZ = __tmp__Z;
- dst1._positionX += src2._positionX;
- dst1._positionY += src2._positionY;
- dst1._positionZ += src2._positionZ;
- var dst2 = s._transform;
- var src11 = s._localTransform;
- var src21 = this._transform;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
- __tmp__011 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
- __tmp__021 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
- __tmp__101 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
- __tmp__111 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
- __tmp__121 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
- __tmp__201 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
- __tmp__211 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
- __tmp__221 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
- dst2._rotation00 = __tmp__001;
- dst2._rotation01 = __tmp__011;
- dst2._rotation02 = __tmp__021;
- dst2._rotation10 = __tmp__101;
- dst2._rotation11 = __tmp__111;
- dst2._rotation12 = __tmp__121;
- dst2._rotation20 = __tmp__201;
- dst2._rotation21 = __tmp__211;
- dst2._rotation22 = __tmp__221;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
- __tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
- __tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
- dst2._positionX = __tmp__X1;
- dst2._positionY = __tmp__Y1;
- dst2._positionZ = __tmp__Z1;
- dst2._positionX += src21._positionX;
- dst2._positionY += src21._positionY;
- dst2._positionZ += src21._positionZ;
- var min;
- var minX;
- var minY;
- var minZ;
- var max;
- var maxX;
- var maxY;
- var maxZ;
- s._geom._computeAabb(s._aabb,s._ptransform);
- minX = s._aabb._minX;
- minY = s._aabb._minY;
- minZ = s._aabb._minZ;
- maxX = s._aabb._maxX;
- maxY = s._aabb._maxY;
- maxZ = s._aabb._maxZ;
- s._geom._computeAabb(s._aabb,s._transform);
- s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
- s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
- s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
- s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
- s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
- s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
- if(s._proxy != null) {
- var d;
- var dX;
- var dY;
- var dZ;
- dX = s._transform._positionX - s._ptransform._positionX;
- dY = s._transform._positionY - s._ptransform._positionY;
- dZ = s._transform._positionZ - s._ptransform._positionZ;
- var v1 = s.displacement;
- v1.x = dX;
- v1.y = dY;
- v1.z = dZ;
- s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
- }
- s = n;
- }
- this._sleeping = false;
- this._sleepTime = 0;
- }
- translate(translation) {
- var diff;
- var diffX;
- var diffY;
- var diffZ;
- var v = translation;
- diffX = v.x;
- diffY = v.y;
- diffZ = v.z;
- this._transform._positionX += diffX;
- this._transform._positionY += diffY;
- this._transform._positionZ += diffZ;
- var dst = this._ptransform;
- var src = this._transform;
- dst._positionX = src._positionX;
- dst._positionY = src._positionY;
- dst._positionZ = src._positionZ;
- dst._rotation00 = src._rotation00;
- dst._rotation01 = src._rotation01;
- dst._rotation02 = src._rotation02;
- dst._rotation10 = src._rotation10;
- dst._rotation11 = src._rotation11;
- dst._rotation12 = src._rotation12;
- dst._rotation20 = src._rotation20;
- dst._rotation21 = src._rotation21;
- dst._rotation22 = src._rotation22;
- var s = this._shapeList;
- while(s != null) {
- var n = s._next;
- var dst1 = s._ptransform;
- var src1 = s._localTransform;
- var src2 = this._ptransform;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
- __tmp__01 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
- __tmp__02 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
- __tmp__10 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
- __tmp__11 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
- __tmp__12 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
- __tmp__20 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
- __tmp__21 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
- __tmp__22 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
- dst1._rotation00 = __tmp__00;
- dst1._rotation01 = __tmp__01;
- dst1._rotation02 = __tmp__02;
- dst1._rotation10 = __tmp__10;
- dst1._rotation11 = __tmp__11;
- dst1._rotation12 = __tmp__12;
- dst1._rotation20 = __tmp__20;
- dst1._rotation21 = __tmp__21;
- dst1._rotation22 = __tmp__22;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
- __tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
- __tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
- dst1._positionX = __tmp__X;
- dst1._positionY = __tmp__Y;
- dst1._positionZ = __tmp__Z;
- dst1._positionX += src2._positionX;
- dst1._positionY += src2._positionY;
- dst1._positionZ += src2._positionZ;
- var dst2 = s._transform;
- var src11 = s._localTransform;
- var src21 = this._transform;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
- __tmp__011 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
- __tmp__021 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
- __tmp__101 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
- __tmp__111 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
- __tmp__121 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
- __tmp__201 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
- __tmp__211 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
- __tmp__221 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
- dst2._rotation00 = __tmp__001;
- dst2._rotation01 = __tmp__011;
- dst2._rotation02 = __tmp__021;
- dst2._rotation10 = __tmp__101;
- dst2._rotation11 = __tmp__111;
- dst2._rotation12 = __tmp__121;
- dst2._rotation20 = __tmp__201;
- dst2._rotation21 = __tmp__211;
- dst2._rotation22 = __tmp__221;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
- __tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
- __tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
- dst2._positionX = __tmp__X1;
- dst2._positionY = __tmp__Y1;
- dst2._positionZ = __tmp__Z1;
- dst2._positionX += src21._positionX;
- dst2._positionY += src21._positionY;
- dst2._positionZ += src21._positionZ;
- var min;
- var minX;
- var minY;
- var minZ;
- var max;
- var maxX;
- var maxY;
- var maxZ;
- s._geom._computeAabb(s._aabb,s._ptransform);
- minX = s._aabb._minX;
- minY = s._aabb._minY;
- minZ = s._aabb._minZ;
- maxX = s._aabb._maxX;
- maxY = s._aabb._maxY;
- maxZ = s._aabb._maxZ;
- s._geom._computeAabb(s._aabb,s._transform);
- s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
- s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
- s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
- s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
- s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
- s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
- if(s._proxy != null) {
- var d;
- var dX;
- var dY;
- var dZ;
- dX = s._transform._positionX - s._ptransform._positionX;
- dY = s._transform._positionY - s._ptransform._positionY;
- dZ = s._transform._positionZ - s._ptransform._positionZ;
- var v1 = s.displacement;
- v1.x = dX;
- v1.y = dY;
- v1.z = dZ;
- s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
- }
- s = n;
- }
- this._sleeping = false;
- this._sleepTime = 0;
- }
- getRotation() {
- var m = new oimo.common.Mat3();
- var m1 = m;
- m1.e00 = this._transform._rotation00;
- m1.e01 = this._transform._rotation01;
- m1.e02 = this._transform._rotation02;
- m1.e10 = this._transform._rotation10;
- m1.e11 = this._transform._rotation11;
- m1.e12 = this._transform._rotation12;
- m1.e20 = this._transform._rotation20;
- m1.e21 = this._transform._rotation21;
- m1.e22 = this._transform._rotation22;
- return m;
- }
- getRotationTo(rotation) {
- var m = rotation;
- m.e00 = this._transform._rotation00;
- m.e01 = this._transform._rotation01;
- m.e02 = this._transform._rotation02;
- m.e10 = this._transform._rotation10;
- m.e11 = this._transform._rotation11;
- m.e12 = this._transform._rotation12;
- m.e20 = this._transform._rotation20;
- m.e21 = this._transform._rotation21;
- m.e22 = this._transform._rotation22;
- }
- setRotation(rotation) {
- var m = rotation;
- this._transform._rotation00 = m.e00;
- this._transform._rotation01 = m.e01;
- this._transform._rotation02 = m.e02;
- this._transform._rotation10 = m.e10;
- this._transform._rotation11 = m.e11;
- this._transform._rotation12 = m.e12;
- this._transform._rotation20 = m.e20;
- this._transform._rotation21 = m.e21;
- this._transform._rotation22 = m.e22;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
- __tmp__01 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
- __tmp__02 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
- __tmp__10 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
- __tmp__11 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
- __tmp__12 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
- __tmp__20 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
- __tmp__21 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
- __tmp__22 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
- this._invInertia00 = __tmp__00;
- this._invInertia01 = __tmp__01;
- this._invInertia02 = __tmp__02;
- this._invInertia10 = __tmp__10;
- this._invInertia11 = __tmp__11;
- this._invInertia12 = __tmp__12;
- this._invInertia20 = __tmp__20;
- this._invInertia21 = __tmp__21;
- this._invInertia22 = __tmp__22;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
- __tmp__011 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
- __tmp__021 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
- __tmp__101 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
- __tmp__111 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
- __tmp__121 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
- __tmp__201 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
- __tmp__211 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
- __tmp__221 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
- this._invInertia00 = __tmp__001;
- this._invInertia01 = __tmp__011;
- this._invInertia02 = __tmp__021;
- this._invInertia10 = __tmp__101;
- this._invInertia11 = __tmp__111;
- this._invInertia12 = __tmp__121;
- this._invInertia20 = __tmp__201;
- this._invInertia21 = __tmp__211;
- this._invInertia22 = __tmp__221;
- this._invInertia00 *= this._rotFactor.x;
- this._invInertia01 *= this._rotFactor.x;
- this._invInertia02 *= this._rotFactor.x;
- this._invInertia10 *= this._rotFactor.y;
- this._invInertia11 *= this._rotFactor.y;
- this._invInertia12 *= this._rotFactor.y;
- this._invInertia20 *= this._rotFactor.z;
- this._invInertia21 *= this._rotFactor.z;
- this._invInertia22 *= this._rotFactor.z;
- var dst = this._ptransform;
- var src = this._transform;
- dst._positionX = src._positionX;
- dst._positionY = src._positionY;
- dst._positionZ = src._positionZ;
- dst._rotation00 = src._rotation00;
- dst._rotation01 = src._rotation01;
- dst._rotation02 = src._rotation02;
- dst._rotation10 = src._rotation10;
- dst._rotation11 = src._rotation11;
- dst._rotation12 = src._rotation12;
- dst._rotation20 = src._rotation20;
- dst._rotation21 = src._rotation21;
- dst._rotation22 = src._rotation22;
- var s = this._shapeList;
- while(s != null) {
- var n = s._next;
- var dst1 = s._ptransform;
- var src1 = s._localTransform;
- var src2 = this._ptransform;
- var __tmp__002;
- var __tmp__012;
- var __tmp__022;
- var __tmp__102;
- var __tmp__112;
- var __tmp__122;
- var __tmp__202;
- var __tmp__212;
- var __tmp__222;
- __tmp__002 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
- __tmp__012 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
- __tmp__022 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
- __tmp__102 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
- __tmp__112 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
- __tmp__122 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
- __tmp__202 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
- __tmp__212 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
- __tmp__222 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
- dst1._rotation00 = __tmp__002;
- dst1._rotation01 = __tmp__012;
- dst1._rotation02 = __tmp__022;
- dst1._rotation10 = __tmp__102;
- dst1._rotation11 = __tmp__112;
- dst1._rotation12 = __tmp__122;
- dst1._rotation20 = __tmp__202;
- dst1._rotation21 = __tmp__212;
- dst1._rotation22 = __tmp__222;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
- __tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
- __tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
- dst1._positionX = __tmp__X;
- dst1._positionY = __tmp__Y;
- dst1._positionZ = __tmp__Z;
- dst1._positionX += src2._positionX;
- dst1._positionY += src2._positionY;
- dst1._positionZ += src2._positionZ;
- var dst2 = s._transform;
- var src11 = s._localTransform;
- var src21 = this._transform;
- var __tmp__003;
- var __tmp__013;
- var __tmp__023;
- var __tmp__103;
- var __tmp__113;
- var __tmp__123;
- var __tmp__203;
- var __tmp__213;
- var __tmp__223;
- __tmp__003 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
- __tmp__013 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
- __tmp__023 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
- __tmp__103 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
- __tmp__113 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
- __tmp__123 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
- __tmp__203 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
- __tmp__213 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
- __tmp__223 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
- dst2._rotation00 = __tmp__003;
- dst2._rotation01 = __tmp__013;
- dst2._rotation02 = __tmp__023;
- dst2._rotation10 = __tmp__103;
- dst2._rotation11 = __tmp__113;
- dst2._rotation12 = __tmp__123;
- dst2._rotation20 = __tmp__203;
- dst2._rotation21 = __tmp__213;
- dst2._rotation22 = __tmp__223;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
- __tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
- __tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
- dst2._positionX = __tmp__X1;
- dst2._positionY = __tmp__Y1;
- dst2._positionZ = __tmp__Z1;
- dst2._positionX += src21._positionX;
- dst2._positionY += src21._positionY;
- dst2._positionZ += src21._positionZ;
- var min;
- var minX;
- var minY;
- var minZ;
- var max;
- var maxX;
- var maxY;
- var maxZ;
- s._geom._computeAabb(s._aabb,s._ptransform);
- minX = s._aabb._minX;
- minY = s._aabb._minY;
- minZ = s._aabb._minZ;
- maxX = s._aabb._maxX;
- maxY = s._aabb._maxY;
- maxZ = s._aabb._maxZ;
- s._geom._computeAabb(s._aabb,s._transform);
- s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
- s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
- s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
- s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
- s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
- s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
- if(s._proxy != null) {
- var d;
- var dX;
- var dY;
- var dZ;
- dX = s._transform._positionX - s._ptransform._positionX;
- dY = s._transform._positionY - s._ptransform._positionY;
- dZ = s._transform._positionZ - s._ptransform._positionZ;
- var v = s.displacement;
- v.x = dX;
- v.y = dY;
- v.z = dZ;
- s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
- }
- s = n;
- }
- this._sleeping = false;
- this._sleepTime = 0;
- }
- setRotationXyz(eulerAngles) {
- var xyz;
- var xyzX;
- var xyzY;
- var xyzZ;
- var v = eulerAngles;
- xyzX = v.x;
- xyzY = v.y;
- xyzZ = v.z;
- var sx = Math.sin(xyzX);
- var sy = Math.sin(xyzY);
- var sz = Math.sin(xyzZ);
- var cx = Math.cos(xyzX);
- var cy = Math.cos(xyzY);
- var cz = Math.cos(xyzZ);
- this._transform._rotation00 = cy * cz;
- this._transform._rotation01 = -cy * sz;
- this._transform._rotation02 = sy;
- this._transform._rotation10 = cx * sz + cz * sx * sy;
- this._transform._rotation11 = cx * cz - sx * sy * sz;
- this._transform._rotation12 = -cy * sx;
- this._transform._rotation20 = sx * sz - cx * cz * sy;
- this._transform._rotation21 = cz * sx + cx * sy * sz;
- this._transform._rotation22 = cx * cy;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
- __tmp__01 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
- __tmp__02 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
- __tmp__10 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
- __tmp__11 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
- __tmp__12 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
- __tmp__20 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
- __tmp__21 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
- __tmp__22 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
- this._invInertia00 = __tmp__00;
- this._invInertia01 = __tmp__01;
- this._invInertia02 = __tmp__02;
- this._invInertia10 = __tmp__10;
- this._invInertia11 = __tmp__11;
- this._invInertia12 = __tmp__12;
- this._invInertia20 = __tmp__20;
- this._invInertia21 = __tmp__21;
- this._invInertia22 = __tmp__22;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
- __tmp__011 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
- __tmp__021 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
- __tmp__101 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
- __tmp__111 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
- __tmp__121 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
- __tmp__201 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
- __tmp__211 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
- __tmp__221 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
- this._invInertia00 = __tmp__001;
- this._invInertia01 = __tmp__011;
- this._invInertia02 = __tmp__021;
- this._invInertia10 = __tmp__101;
- this._invInertia11 = __tmp__111;
- this._invInertia12 = __tmp__121;
- this._invInertia20 = __tmp__201;
- this._invInertia21 = __tmp__211;
- this._invInertia22 = __tmp__221;
- this._invInertia00 *= this._rotFactor.x;
- this._invInertia01 *= this._rotFactor.x;
- this._invInertia02 *= this._rotFactor.x;
- this._invInertia10 *= this._rotFactor.y;
- this._invInertia11 *= this._rotFactor.y;
- this._invInertia12 *= this._rotFactor.y;
- this._invInertia20 *= this._rotFactor.z;
- this._invInertia21 *= this._rotFactor.z;
- this._invInertia22 *= this._rotFactor.z;
- var dst = this._ptransform;
- var src = this._transform;
- dst._positionX = src._positionX;
- dst._positionY = src._positionY;
- dst._positionZ = src._positionZ;
- dst._rotation00 = src._rotation00;
- dst._rotation01 = src._rotation01;
- dst._rotation02 = src._rotation02;
- dst._rotation10 = src._rotation10;
- dst._rotation11 = src._rotation11;
- dst._rotation12 = src._rotation12;
- dst._rotation20 = src._rotation20;
- dst._rotation21 = src._rotation21;
- dst._rotation22 = src._rotation22;
- var s = this._shapeList;
- while(s != null) {
- var n = s._next;
- var dst1 = s._ptransform;
- var src1 = s._localTransform;
- var src2 = this._ptransform;
- var __tmp__002;
- var __tmp__012;
- var __tmp__022;
- var __tmp__102;
- var __tmp__112;
- var __tmp__122;
- var __tmp__202;
- var __tmp__212;
- var __tmp__222;
- __tmp__002 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
- __tmp__012 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
- __tmp__022 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
- __tmp__102 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
- __tmp__112 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
- __tmp__122 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
- __tmp__202 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
- __tmp__212 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
- __tmp__222 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
- dst1._rotation00 = __tmp__002;
- dst1._rotation01 = __tmp__012;
- dst1._rotation02 = __tmp__022;
- dst1._rotation10 = __tmp__102;
- dst1._rotation11 = __tmp__112;
- dst1._rotation12 = __tmp__122;
- dst1._rotation20 = __tmp__202;
- dst1._rotation21 = __tmp__212;
- dst1._rotation22 = __tmp__222;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
- __tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
- __tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
- dst1._positionX = __tmp__X;
- dst1._positionY = __tmp__Y;
- dst1._positionZ = __tmp__Z;
- dst1._positionX += src2._positionX;
- dst1._positionY += src2._positionY;
- dst1._positionZ += src2._positionZ;
- var dst2 = s._transform;
- var src11 = s._localTransform;
- var src21 = this._transform;
- var __tmp__003;
- var __tmp__013;
- var __tmp__023;
- var __tmp__103;
- var __tmp__113;
- var __tmp__123;
- var __tmp__203;
- var __tmp__213;
- var __tmp__223;
- __tmp__003 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
- __tmp__013 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
- __tmp__023 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
- __tmp__103 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
- __tmp__113 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
- __tmp__123 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
- __tmp__203 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
- __tmp__213 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
- __tmp__223 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
- dst2._rotation00 = __tmp__003;
- dst2._rotation01 = __tmp__013;
- dst2._rotation02 = __tmp__023;
- dst2._rotation10 = __tmp__103;
- dst2._rotation11 = __tmp__113;
- dst2._rotation12 = __tmp__123;
- dst2._rotation20 = __tmp__203;
- dst2._rotation21 = __tmp__213;
- dst2._rotation22 = __tmp__223;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
- __tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
- __tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
- dst2._positionX = __tmp__X1;
- dst2._positionY = __tmp__Y1;
- dst2._positionZ = __tmp__Z1;
- dst2._positionX += src21._positionX;
- dst2._positionY += src21._positionY;
- dst2._positionZ += src21._positionZ;
- var min;
- var minX;
- var minY;
- var minZ;
- var max;
- var maxX;
- var maxY;
- var maxZ;
- s._geom._computeAabb(s._aabb,s._ptransform);
- minX = s._aabb._minX;
- minY = s._aabb._minY;
- minZ = s._aabb._minZ;
- maxX = s._aabb._maxX;
- maxY = s._aabb._maxY;
- maxZ = s._aabb._maxZ;
- s._geom._computeAabb(s._aabb,s._transform);
- s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
- s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
- s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
- s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
- s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
- s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
- if(s._proxy != null) {
- var d;
- var dX;
- var dY;
- var dZ;
- dX = s._transform._positionX - s._ptransform._positionX;
- dY = s._transform._positionY - s._ptransform._positionY;
- dZ = s._transform._positionZ - s._ptransform._positionZ;
- var v1 = s.displacement;
- v1.x = dX;
- v1.y = dY;
- v1.z = dZ;
- s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
- }
- s = n;
- }
- this._sleeping = false;
- this._sleepTime = 0;
- }
- rotate(rotation) {
- var rot;
- var rot00;
- var rot01;
- var rot02;
- var rot10;
- var rot11;
- var rot12;
- var rot20;
- var rot21;
- var rot22;
- var m = rotation;
- rot00 = m.e00;
- rot01 = m.e01;
- rot02 = m.e02;
- rot10 = m.e10;
- rot11 = m.e11;
- rot12 = m.e12;
- rot20 = m.e20;
- rot21 = m.e21;
- rot22 = m.e22;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = rot00 * this._transform._rotation00 + rot01 * this._transform._rotation10 + rot02 * this._transform._rotation20;
- __tmp__01 = rot00 * this._transform._rotation01 + rot01 * this._transform._rotation11 + rot02 * this._transform._rotation21;
- __tmp__02 = rot00 * this._transform._rotation02 + rot01 * this._transform._rotation12 + rot02 * this._transform._rotation22;
- __tmp__10 = rot10 * this._transform._rotation00 + rot11 * this._transform._rotation10 + rot12 * this._transform._rotation20;
- __tmp__11 = rot10 * this._transform._rotation01 + rot11 * this._transform._rotation11 + rot12 * this._transform._rotation21;
- __tmp__12 = rot10 * this._transform._rotation02 + rot11 * this._transform._rotation12 + rot12 * this._transform._rotation22;
- __tmp__20 = rot20 * this._transform._rotation00 + rot21 * this._transform._rotation10 + rot22 * this._transform._rotation20;
- __tmp__21 = rot20 * this._transform._rotation01 + rot21 * this._transform._rotation11 + rot22 * this._transform._rotation21;
- __tmp__22 = rot20 * this._transform._rotation02 + rot21 * this._transform._rotation12 + rot22 * this._transform._rotation22;
- this._transform._rotation00 = __tmp__00;
- this._transform._rotation01 = __tmp__01;
- this._transform._rotation02 = __tmp__02;
- this._transform._rotation10 = __tmp__10;
- this._transform._rotation11 = __tmp__11;
- this._transform._rotation12 = __tmp__12;
- this._transform._rotation20 = __tmp__20;
- this._transform._rotation21 = __tmp__21;
- this._transform._rotation22 = __tmp__22;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
- __tmp__011 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
- __tmp__021 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
- __tmp__101 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
- __tmp__111 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
- __tmp__121 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
- __tmp__201 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
- __tmp__211 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
- __tmp__221 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
- this._invInertia00 = __tmp__001;
- this._invInertia01 = __tmp__011;
- this._invInertia02 = __tmp__021;
- this._invInertia10 = __tmp__101;
- this._invInertia11 = __tmp__111;
- this._invInertia12 = __tmp__121;
- this._invInertia20 = __tmp__201;
- this._invInertia21 = __tmp__211;
- this._invInertia22 = __tmp__221;
- var __tmp__002;
- var __tmp__012;
- var __tmp__022;
- var __tmp__102;
- var __tmp__112;
- var __tmp__122;
- var __tmp__202;
- var __tmp__212;
- var __tmp__222;
- __tmp__002 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
- __tmp__012 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
- __tmp__022 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
- __tmp__102 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
- __tmp__112 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
- __tmp__122 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
- __tmp__202 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
- __tmp__212 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
- __tmp__222 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
- this._invInertia00 = __tmp__002;
- this._invInertia01 = __tmp__012;
- this._invInertia02 = __tmp__022;
- this._invInertia10 = __tmp__102;
- this._invInertia11 = __tmp__112;
- this._invInertia12 = __tmp__122;
- this._invInertia20 = __tmp__202;
- this._invInertia21 = __tmp__212;
- this._invInertia22 = __tmp__222;
- this._invInertia00 *= this._rotFactor.x;
- this._invInertia01 *= this._rotFactor.x;
- this._invInertia02 *= this._rotFactor.x;
- this._invInertia10 *= this._rotFactor.y;
- this._invInertia11 *= this._rotFactor.y;
- this._invInertia12 *= this._rotFactor.y;
- this._invInertia20 *= this._rotFactor.z;
- this._invInertia21 *= this._rotFactor.z;
- this._invInertia22 *= this._rotFactor.z;
- var dst = this._ptransform;
- var src = this._transform;
- dst._positionX = src._positionX;
- dst._positionY = src._positionY;
- dst._positionZ = src._positionZ;
- dst._rotation00 = src._rotation00;
- dst._rotation01 = src._rotation01;
- dst._rotation02 = src._rotation02;
- dst._rotation10 = src._rotation10;
- dst._rotation11 = src._rotation11;
- dst._rotation12 = src._rotation12;
- dst._rotation20 = src._rotation20;
- dst._rotation21 = src._rotation21;
- dst._rotation22 = src._rotation22;
- var s = this._shapeList;
- while(s != null) {
- var n = s._next;
- var dst1 = s._ptransform;
- var src1 = s._localTransform;
- var src2 = this._ptransform;
- var __tmp__003;
- var __tmp__013;
- var __tmp__023;
- var __tmp__103;
- var __tmp__113;
- var __tmp__123;
- var __tmp__203;
- var __tmp__213;
- var __tmp__223;
- __tmp__003 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
- __tmp__013 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
- __tmp__023 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
- __tmp__103 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
- __tmp__113 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
- __tmp__123 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
- __tmp__203 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
- __tmp__213 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
- __tmp__223 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
- dst1._rotation00 = __tmp__003;
- dst1._rotation01 = __tmp__013;
- dst1._rotation02 = __tmp__023;
- dst1._rotation10 = __tmp__103;
- dst1._rotation11 = __tmp__113;
- dst1._rotation12 = __tmp__123;
- dst1._rotation20 = __tmp__203;
- dst1._rotation21 = __tmp__213;
- dst1._rotation22 = __tmp__223;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
- __tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
- __tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
- dst1._positionX = __tmp__X;
- dst1._positionY = __tmp__Y;
- dst1._positionZ = __tmp__Z;
- dst1._positionX += src2._positionX;
- dst1._positionY += src2._positionY;
- dst1._positionZ += src2._positionZ;
- var dst2 = s._transform;
- var src11 = s._localTransform;
- var src21 = this._transform;
- var __tmp__004;
- var __tmp__014;
- var __tmp__024;
- var __tmp__104;
- var __tmp__114;
- var __tmp__124;
- var __tmp__204;
- var __tmp__214;
- var __tmp__224;
- __tmp__004 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
- __tmp__014 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
- __tmp__024 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
- __tmp__104 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
- __tmp__114 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
- __tmp__124 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
- __tmp__204 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
- __tmp__214 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
- __tmp__224 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
- dst2._rotation00 = __tmp__004;
- dst2._rotation01 = __tmp__014;
- dst2._rotation02 = __tmp__024;
- dst2._rotation10 = __tmp__104;
- dst2._rotation11 = __tmp__114;
- dst2._rotation12 = __tmp__124;
- dst2._rotation20 = __tmp__204;
- dst2._rotation21 = __tmp__214;
- dst2._rotation22 = __tmp__224;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
- __tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
- __tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
- dst2._positionX = __tmp__X1;
- dst2._positionY = __tmp__Y1;
- dst2._positionZ = __tmp__Z1;
- dst2._positionX += src21._positionX;
- dst2._positionY += src21._positionY;
- dst2._positionZ += src21._positionZ;
- var min;
- var minX;
- var minY;
- var minZ;
- var max;
- var maxX;
- var maxY;
- var maxZ;
- s._geom._computeAabb(s._aabb,s._ptransform);
- minX = s._aabb._minX;
- minY = s._aabb._minY;
- minZ = s._aabb._minZ;
- maxX = s._aabb._maxX;
- maxY = s._aabb._maxY;
- maxZ = s._aabb._maxZ;
- s._geom._computeAabb(s._aabb,s._transform);
- s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
- s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
- s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
- s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
- s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
- s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
- if(s._proxy != null) {
- var d;
- var dX;
- var dY;
- var dZ;
- dX = s._transform._positionX - s._ptransform._positionX;
- dY = s._transform._positionY - s._ptransform._positionY;
- dZ = s._transform._positionZ - s._ptransform._positionZ;
- var v = s.displacement;
- v.x = dX;
- v.y = dY;
- v.z = dZ;
- s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
- }
- s = n;
- }
- this._sleeping = false;
- this._sleepTime = 0;
- }
- rotateXyz(eulerAngles) {
- var xyz;
- var xyzX;
- var xyzY;
- var xyzZ;
- var rot;
- var rot00;
- var rot01;
- var rot02;
- var rot10;
- var rot11;
- var rot12;
- var rot20;
- var rot21;
- var rot22;
- var v = eulerAngles;
- xyzX = v.x;
- xyzY = v.y;
- xyzZ = v.z;
- var sx = Math.sin(xyzX);
- var sy = Math.sin(xyzY);
- var sz = Math.sin(xyzZ);
- var cx = Math.cos(xyzX);
- var cy = Math.cos(xyzY);
- var cz = Math.cos(xyzZ);
- rot00 = cy * cz;
- rot01 = -cy * sz;
- rot02 = sy;
- rot10 = cx * sz + cz * sx * sy;
- rot11 = cx * cz - sx * sy * sz;
- rot12 = -cy * sx;
- rot20 = sx * sz - cx * cz * sy;
- rot21 = cz * sx + cx * sy * sz;
- rot22 = cx * cy;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = rot00 * this._transform._rotation00 + rot01 * this._transform._rotation10 + rot02 * this._transform._rotation20;
- __tmp__01 = rot00 * this._transform._rotation01 + rot01 * this._transform._rotation11 + rot02 * this._transform._rotation21;
- __tmp__02 = rot00 * this._transform._rotation02 + rot01 * this._transform._rotation12 + rot02 * this._transform._rotation22;
- __tmp__10 = rot10 * this._transform._rotation00 + rot11 * this._transform._rotation10 + rot12 * this._transform._rotation20;
- __tmp__11 = rot10 * this._transform._rotation01 + rot11 * this._transform._rotation11 + rot12 * this._transform._rotation21;
- __tmp__12 = rot10 * this._transform._rotation02 + rot11 * this._transform._rotation12 + rot12 * this._transform._rotation22;
- __tmp__20 = rot20 * this._transform._rotation00 + rot21 * this._transform._rotation10 + rot22 * this._transform._rotation20;
- __tmp__21 = rot20 * this._transform._rotation01 + rot21 * this._transform._rotation11 + rot22 * this._transform._rotation21;
- __tmp__22 = rot20 * this._transform._rotation02 + rot21 * this._transform._rotation12 + rot22 * this._transform._rotation22;
- this._transform._rotation00 = __tmp__00;
- this._transform._rotation01 = __tmp__01;
- this._transform._rotation02 = __tmp__02;
- this._transform._rotation10 = __tmp__10;
- this._transform._rotation11 = __tmp__11;
- this._transform._rotation12 = __tmp__12;
- this._transform._rotation20 = __tmp__20;
- this._transform._rotation21 = __tmp__21;
- this._transform._rotation22 = __tmp__22;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
- __tmp__011 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
- __tmp__021 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
- __tmp__101 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
- __tmp__111 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
- __tmp__121 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
- __tmp__201 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
- __tmp__211 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
- __tmp__221 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
- this._invInertia00 = __tmp__001;
- this._invInertia01 = __tmp__011;
- this._invInertia02 = __tmp__021;
- this._invInertia10 = __tmp__101;
- this._invInertia11 = __tmp__111;
- this._invInertia12 = __tmp__121;
- this._invInertia20 = __tmp__201;
- this._invInertia21 = __tmp__211;
- this._invInertia22 = __tmp__221;
- var __tmp__002;
- var __tmp__012;
- var __tmp__022;
- var __tmp__102;
- var __tmp__112;
- var __tmp__122;
- var __tmp__202;
- var __tmp__212;
- var __tmp__222;
- __tmp__002 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
- __tmp__012 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
- __tmp__022 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
- __tmp__102 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
- __tmp__112 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
- __tmp__122 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
- __tmp__202 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
- __tmp__212 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
- __tmp__222 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
- this._invInertia00 = __tmp__002;
- this._invInertia01 = __tmp__012;
- this._invInertia02 = __tmp__022;
- this._invInertia10 = __tmp__102;
- this._invInertia11 = __tmp__112;
- this._invInertia12 = __tmp__122;
- this._invInertia20 = __tmp__202;
- this._invInertia21 = __tmp__212;
- this._invInertia22 = __tmp__222;
- this._invInertia00 *= this._rotFactor.x;
- this._invInertia01 *= this._rotFactor.x;
- this._invInertia02 *= this._rotFactor.x;
- this._invInertia10 *= this._rotFactor.y;
- this._invInertia11 *= this._rotFactor.y;
- this._invInertia12 *= this._rotFactor.y;
- this._invInertia20 *= this._rotFactor.z;
- this._invInertia21 *= this._rotFactor.z;
- this._invInertia22 *= this._rotFactor.z;
- var dst = this._ptransform;
- var src = this._transform;
- dst._positionX = src._positionX;
- dst._positionY = src._positionY;
- dst._positionZ = src._positionZ;
- dst._rotation00 = src._rotation00;
- dst._rotation01 = src._rotation01;
- dst._rotation02 = src._rotation02;
- dst._rotation10 = src._rotation10;
- dst._rotation11 = src._rotation11;
- dst._rotation12 = src._rotation12;
- dst._rotation20 = src._rotation20;
- dst._rotation21 = src._rotation21;
- dst._rotation22 = src._rotation22;
- var s = this._shapeList;
- while(s != null) {
- var n = s._next;
- var dst1 = s._ptransform;
- var src1 = s._localTransform;
- var src2 = this._ptransform;
- var __tmp__003;
- var __tmp__013;
- var __tmp__023;
- var __tmp__103;
- var __tmp__113;
- var __tmp__123;
- var __tmp__203;
- var __tmp__213;
- var __tmp__223;
- __tmp__003 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
- __tmp__013 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
- __tmp__023 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
- __tmp__103 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
- __tmp__113 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
- __tmp__123 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
- __tmp__203 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
- __tmp__213 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
- __tmp__223 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
- dst1._rotation00 = __tmp__003;
- dst1._rotation01 = __tmp__013;
- dst1._rotation02 = __tmp__023;
- dst1._rotation10 = __tmp__103;
- dst1._rotation11 = __tmp__113;
- dst1._rotation12 = __tmp__123;
- dst1._rotation20 = __tmp__203;
- dst1._rotation21 = __tmp__213;
- dst1._rotation22 = __tmp__223;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
- __tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
- __tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
- dst1._positionX = __tmp__X;
- dst1._positionY = __tmp__Y;
- dst1._positionZ = __tmp__Z;
- dst1._positionX += src2._positionX;
- dst1._positionY += src2._positionY;
- dst1._positionZ += src2._positionZ;
- var dst2 = s._transform;
- var src11 = s._localTransform;
- var src21 = this._transform;
- var __tmp__004;
- var __tmp__014;
- var __tmp__024;
- var __tmp__104;
- var __tmp__114;
- var __tmp__124;
- var __tmp__204;
- var __tmp__214;
- var __tmp__224;
- __tmp__004 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
- __tmp__014 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
- __tmp__024 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
- __tmp__104 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
- __tmp__114 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
- __tmp__124 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
- __tmp__204 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
- __tmp__214 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
- __tmp__224 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
- dst2._rotation00 = __tmp__004;
- dst2._rotation01 = __tmp__014;
- dst2._rotation02 = __tmp__024;
- dst2._rotation10 = __tmp__104;
- dst2._rotation11 = __tmp__114;
- dst2._rotation12 = __tmp__124;
- dst2._rotation20 = __tmp__204;
- dst2._rotation21 = __tmp__214;
- dst2._rotation22 = __tmp__224;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
- __tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
- __tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
- dst2._positionX = __tmp__X1;
- dst2._positionY = __tmp__Y1;
- dst2._positionZ = __tmp__Z1;
- dst2._positionX += src21._positionX;
- dst2._positionY += src21._positionY;
- dst2._positionZ += src21._positionZ;
- var min;
- var minX;
- var minY;
- var minZ;
- var max;
- var maxX;
- var maxY;
- var maxZ;
- s._geom._computeAabb(s._aabb,s._ptransform);
- minX = s._aabb._minX;
- minY = s._aabb._minY;
- minZ = s._aabb._minZ;
- maxX = s._aabb._maxX;
- maxY = s._aabb._maxY;
- maxZ = s._aabb._maxZ;
- s._geom._computeAabb(s._aabb,s._transform);
- s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
- s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
- s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
- s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
- s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
- s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
- if(s._proxy != null) {
- var d;
- var dX;
- var dY;
- var dZ;
- dX = s._transform._positionX - s._ptransform._positionX;
- dY = s._transform._positionY - s._ptransform._positionY;
- dZ = s._transform._positionZ - s._ptransform._positionZ;
- var v1 = s.displacement;
- v1.x = dX;
- v1.y = dY;
- v1.z = dZ;
- s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
- }
- s = n;
- }
- this._sleeping = false;
- this._sleepTime = 0;
- }
- getOrientation() {
- var q = new oimo.common.Quat();
- var iq;
- var iqX;
- var iqY;
- var iqZ;
- var iqW;
- var e00 = this._transform._rotation00;
- var e11 = this._transform._rotation11;
- var e22 = this._transform._rotation22;
- var t = e00 + e11 + e22;
- var s;
- if(t > 0) {
- s = Math.sqrt(t + 1);
- iqW = 0.5 * s;
- s = 0.5 / s;
- iqX = (this._transform._rotation21 - this._transform._rotation12) * s;
- iqY = (this._transform._rotation02 - this._transform._rotation20) * s;
- iqZ = (this._transform._rotation10 - this._transform._rotation01) * s;
- } else if(e00 > e11) {
- if(e00 > e22) {
- s = Math.sqrt(e00 - e11 - e22 + 1);
- iqX = 0.5 * s;
- s = 0.5 / s;
- iqY = (this._transform._rotation01 + this._transform._rotation10) * s;
- iqZ = (this._transform._rotation02 + this._transform._rotation20) * s;
- iqW = (this._transform._rotation21 - this._transform._rotation12) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- iqZ = 0.5 * s;
- s = 0.5 / s;
- iqX = (this._transform._rotation02 + this._transform._rotation20) * s;
- iqY = (this._transform._rotation12 + this._transform._rotation21) * s;
- iqW = (this._transform._rotation10 - this._transform._rotation01) * s;
- }
- } else if(e11 > e22) {
- s = Math.sqrt(e11 - e22 - e00 + 1);
- iqY = 0.5 * s;
- s = 0.5 / s;
- iqX = (this._transform._rotation01 + this._transform._rotation10) * s;
- iqZ = (this._transform._rotation12 + this._transform._rotation21) * s;
- iqW = (this._transform._rotation02 - this._transform._rotation20) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- iqZ = 0.5 * s;
- s = 0.5 / s;
- iqX = (this._transform._rotation02 + this._transform._rotation20) * s;
- iqY = (this._transform._rotation12 + this._transform._rotation21) * s;
- iqW = (this._transform._rotation10 - this._transform._rotation01) * s;
- }
- var q1 = q;
- q1.x = iqX;
- q1.y = iqY;
- q1.z = iqZ;
- q1.w = iqW;
- return q;
- }
- getOrientationTo(orientation) {
- var iq;
- var iqX;
- var iqY;
- var iqZ;
- var iqW;
- var e00 = this._transform._rotation00;
- var e11 = this._transform._rotation11;
- var e22 = this._transform._rotation22;
- var t = e00 + e11 + e22;
- var s;
- if(t > 0) {
- s = Math.sqrt(t + 1);
- iqW = 0.5 * s;
- s = 0.5 / s;
- iqX = (this._transform._rotation21 - this._transform._rotation12) * s;
- iqY = (this._transform._rotation02 - this._transform._rotation20) * s;
- iqZ = (this._transform._rotation10 - this._transform._rotation01) * s;
- } else if(e00 > e11) {
- if(e00 > e22) {
- s = Math.sqrt(e00 - e11 - e22 + 1);
- iqX = 0.5 * s;
- s = 0.5 / s;
- iqY = (this._transform._rotation01 + this._transform._rotation10) * s;
- iqZ = (this._transform._rotation02 + this._transform._rotation20) * s;
- iqW = (this._transform._rotation21 - this._transform._rotation12) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- iqZ = 0.5 * s;
- s = 0.5 / s;
- iqX = (this._transform._rotation02 + this._transform._rotation20) * s;
- iqY = (this._transform._rotation12 + this._transform._rotation21) * s;
- iqW = (this._transform._rotation10 - this._transform._rotation01) * s;
- }
- } else if(e11 > e22) {
- s = Math.sqrt(e11 - e22 - e00 + 1);
- iqY = 0.5 * s;
- s = 0.5 / s;
- iqX = (this._transform._rotation01 + this._transform._rotation10) * s;
- iqZ = (this._transform._rotation12 + this._transform._rotation21) * s;
- iqW = (this._transform._rotation02 - this._transform._rotation20) * s;
- } else {
- s = Math.sqrt(e22 - e00 - e11 + 1);
- iqZ = 0.5 * s;
- s = 0.5 / s;
- iqX = (this._transform._rotation02 + this._transform._rotation20) * s;
- iqY = (this._transform._rotation12 + this._transform._rotation21) * s;
- iqW = (this._transform._rotation10 - this._transform._rotation01) * s;
- }
- var q = orientation;
- q.x = iqX;
- q.y = iqY;
- q.z = iqZ;
- q.w = iqW;
- }
- setOrientation(quaternion) {
- var q;
- var qX;
- var qY;
- var qZ;
- var qW;
- var q1 = quaternion;
- qX = q1.x;
- qY = q1.y;
- qZ = q1.z;
- qW = q1.w;
- var x = qX;
- var y = qY;
- var z = qZ;
- var w = qW;
- var x2 = 2 * x;
- var y2 = 2 * y;
- var z2 = 2 * z;
- var xx = x * x2;
- var yy = y * y2;
- var zz = z * z2;
- var xy = x * y2;
- var yz = y * z2;
- var xz = x * z2;
- var wx = w * x2;
- var wy = w * y2;
- var wz = w * z2;
- this._transform._rotation00 = 1 - yy - zz;
- this._transform._rotation01 = xy - wz;
- this._transform._rotation02 = xz + wy;
- this._transform._rotation10 = xy + wz;
- this._transform._rotation11 = 1 - xx - zz;
- this._transform._rotation12 = yz - wx;
- this._transform._rotation20 = xz - wy;
- this._transform._rotation21 = yz + wx;
- this._transform._rotation22 = 1 - xx - yy;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
- __tmp__01 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
- __tmp__02 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
- __tmp__10 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
- __tmp__11 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
- __tmp__12 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
- __tmp__20 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
- __tmp__21 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
- __tmp__22 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
- this._invInertia00 = __tmp__00;
- this._invInertia01 = __tmp__01;
- this._invInertia02 = __tmp__02;
- this._invInertia10 = __tmp__10;
- this._invInertia11 = __tmp__11;
- this._invInertia12 = __tmp__12;
- this._invInertia20 = __tmp__20;
- this._invInertia21 = __tmp__21;
- this._invInertia22 = __tmp__22;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
- __tmp__011 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
- __tmp__021 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
- __tmp__101 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
- __tmp__111 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
- __tmp__121 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
- __tmp__201 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
- __tmp__211 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
- __tmp__221 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
- this._invInertia00 = __tmp__001;
- this._invInertia01 = __tmp__011;
- this._invInertia02 = __tmp__021;
- this._invInertia10 = __tmp__101;
- this._invInertia11 = __tmp__111;
- this._invInertia12 = __tmp__121;
- this._invInertia20 = __tmp__201;
- this._invInertia21 = __tmp__211;
- this._invInertia22 = __tmp__221;
- this._invInertia00 *= this._rotFactor.x;
- this._invInertia01 *= this._rotFactor.x;
- this._invInertia02 *= this._rotFactor.x;
- this._invInertia10 *= this._rotFactor.y;
- this._invInertia11 *= this._rotFactor.y;
- this._invInertia12 *= this._rotFactor.y;
- this._invInertia20 *= this._rotFactor.z;
- this._invInertia21 *= this._rotFactor.z;
- this._invInertia22 *= this._rotFactor.z;
- var dst = this._ptransform;
- var src = this._transform;
- dst._positionX = src._positionX;
- dst._positionY = src._positionY;
- dst._positionZ = src._positionZ;
- dst._rotation00 = src._rotation00;
- dst._rotation01 = src._rotation01;
- dst._rotation02 = src._rotation02;
- dst._rotation10 = src._rotation10;
- dst._rotation11 = src._rotation11;
- dst._rotation12 = src._rotation12;
- dst._rotation20 = src._rotation20;
- dst._rotation21 = src._rotation21;
- dst._rotation22 = src._rotation22;
- var s = this._shapeList;
- while(s != null) {
- var n = s._next;
- var dst1 = s._ptransform;
- var src1 = s._localTransform;
- var src2 = this._ptransform;
- var __tmp__002;
- var __tmp__012;
- var __tmp__022;
- var __tmp__102;
- var __tmp__112;
- var __tmp__122;
- var __tmp__202;
- var __tmp__212;
- var __tmp__222;
- __tmp__002 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
- __tmp__012 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
- __tmp__022 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
- __tmp__102 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
- __tmp__112 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
- __tmp__122 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
- __tmp__202 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
- __tmp__212 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
- __tmp__222 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
- dst1._rotation00 = __tmp__002;
- dst1._rotation01 = __tmp__012;
- dst1._rotation02 = __tmp__022;
- dst1._rotation10 = __tmp__102;
- dst1._rotation11 = __tmp__112;
- dst1._rotation12 = __tmp__122;
- dst1._rotation20 = __tmp__202;
- dst1._rotation21 = __tmp__212;
- dst1._rotation22 = __tmp__222;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
- __tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
- __tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
- dst1._positionX = __tmp__X;
- dst1._positionY = __tmp__Y;
- dst1._positionZ = __tmp__Z;
- dst1._positionX += src2._positionX;
- dst1._positionY += src2._positionY;
- dst1._positionZ += src2._positionZ;
- var dst2 = s._transform;
- var src11 = s._localTransform;
- var src21 = this._transform;
- var __tmp__003;
- var __tmp__013;
- var __tmp__023;
- var __tmp__103;
- var __tmp__113;
- var __tmp__123;
- var __tmp__203;
- var __tmp__213;
- var __tmp__223;
- __tmp__003 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
- __tmp__013 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
- __tmp__023 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
- __tmp__103 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
- __tmp__113 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
- __tmp__123 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
- __tmp__203 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
- __tmp__213 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
- __tmp__223 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
- dst2._rotation00 = __tmp__003;
- dst2._rotation01 = __tmp__013;
- dst2._rotation02 = __tmp__023;
- dst2._rotation10 = __tmp__103;
- dst2._rotation11 = __tmp__113;
- dst2._rotation12 = __tmp__123;
- dst2._rotation20 = __tmp__203;
- dst2._rotation21 = __tmp__213;
- dst2._rotation22 = __tmp__223;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
- __tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
- __tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
- dst2._positionX = __tmp__X1;
- dst2._positionY = __tmp__Y1;
- dst2._positionZ = __tmp__Z1;
- dst2._positionX += src21._positionX;
- dst2._positionY += src21._positionY;
- dst2._positionZ += src21._positionZ;
- var min;
- var minX;
- var minY;
- var minZ;
- var max;
- var maxX;
- var maxY;
- var maxZ;
- s._geom._computeAabb(s._aabb,s._ptransform);
- minX = s._aabb._minX;
- minY = s._aabb._minY;
- minZ = s._aabb._minZ;
- maxX = s._aabb._maxX;
- maxY = s._aabb._maxY;
- maxZ = s._aabb._maxZ;
- s._geom._computeAabb(s._aabb,s._transform);
- s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
- s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
- s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
- s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
- s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
- s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
- if(s._proxy != null) {
- var d;
- var dX;
- var dY;
- var dZ;
- dX = s._transform._positionX - s._ptransform._positionX;
- dY = s._transform._positionY - s._ptransform._positionY;
- dZ = s._transform._positionZ - s._ptransform._positionZ;
- var v = s.displacement;
- v.x = dX;
- v.y = dY;
- v.z = dZ;
- s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
- }
- s = n;
- }
- this._sleeping = false;
- this._sleepTime = 0;
- }
- getTransform() {
- var _this = this._transform;
- var tf = new oimo.common.Transform();
- tf._positionX = _this._positionX;
- tf._positionY = _this._positionY;
- tf._positionZ = _this._positionZ;
- tf._rotation00 = _this._rotation00;
- tf._rotation01 = _this._rotation01;
- tf._rotation02 = _this._rotation02;
- tf._rotation10 = _this._rotation10;
- tf._rotation11 = _this._rotation11;
- tf._rotation12 = _this._rotation12;
- tf._rotation20 = _this._rotation20;
- tf._rotation21 = _this._rotation21;
- tf._rotation22 = _this._rotation22;
- return tf;
- }
- getTransformTo(transform) {
- var transform1 = this._transform;
- transform._positionX = transform1._positionX;
- transform._positionY = transform1._positionY;
- transform._positionZ = transform1._positionZ;
- transform._rotation00 = transform1._rotation00;
- transform._rotation01 = transform1._rotation01;
- transform._rotation02 = transform1._rotation02;
- transform._rotation10 = transform1._rotation10;
- transform._rotation11 = transform1._rotation11;
- transform._rotation12 = transform1._rotation12;
- transform._rotation20 = transform1._rotation20;
- transform._rotation21 = transform1._rotation21;
- transform._rotation22 = transform1._rotation22;
- }
- setTransform(transform) {
- this._transform._positionX = transform._positionX;
- this._transform._positionY = transform._positionY;
- this._transform._positionZ = transform._positionZ;
- this._transform._rotation00 = transform._rotation00;
- this._transform._rotation01 = transform._rotation01;
- this._transform._rotation02 = transform._rotation02;
- this._transform._rotation10 = transform._rotation10;
- this._transform._rotation11 = transform._rotation11;
- this._transform._rotation12 = transform._rotation12;
- this._transform._rotation20 = transform._rotation20;
- this._transform._rotation21 = transform._rotation21;
- this._transform._rotation22 = transform._rotation22;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
- __tmp__01 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
- __tmp__02 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
- __tmp__10 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
- __tmp__11 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
- __tmp__12 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
- __tmp__20 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
- __tmp__21 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
- __tmp__22 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
- this._invInertia00 = __tmp__00;
- this._invInertia01 = __tmp__01;
- this._invInertia02 = __tmp__02;
- this._invInertia10 = __tmp__10;
- this._invInertia11 = __tmp__11;
- this._invInertia12 = __tmp__12;
- this._invInertia20 = __tmp__20;
- this._invInertia21 = __tmp__21;
- this._invInertia22 = __tmp__22;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
- __tmp__011 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
- __tmp__021 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
- __tmp__101 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
- __tmp__111 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
- __tmp__121 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
- __tmp__201 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
- __tmp__211 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
- __tmp__221 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
- this._invInertia00 = __tmp__001;
- this._invInertia01 = __tmp__011;
- this._invInertia02 = __tmp__021;
- this._invInertia10 = __tmp__101;
- this._invInertia11 = __tmp__111;
- this._invInertia12 = __tmp__121;
- this._invInertia20 = __tmp__201;
- this._invInertia21 = __tmp__211;
- this._invInertia22 = __tmp__221;
- this._invInertia00 *= this._rotFactor.x;
- this._invInertia01 *= this._rotFactor.x;
- this._invInertia02 *= this._rotFactor.x;
- this._invInertia10 *= this._rotFactor.y;
- this._invInertia11 *= this._rotFactor.y;
- this._invInertia12 *= this._rotFactor.y;
- this._invInertia20 *= this._rotFactor.z;
- this._invInertia21 *= this._rotFactor.z;
- this._invInertia22 *= this._rotFactor.z;
- var dst = this._ptransform;
- var src = this._transform;
- dst._positionX = src._positionX;
- dst._positionY = src._positionY;
- dst._positionZ = src._positionZ;
- dst._rotation00 = src._rotation00;
- dst._rotation01 = src._rotation01;
- dst._rotation02 = src._rotation02;
- dst._rotation10 = src._rotation10;
- dst._rotation11 = src._rotation11;
- dst._rotation12 = src._rotation12;
- dst._rotation20 = src._rotation20;
- dst._rotation21 = src._rotation21;
- dst._rotation22 = src._rotation22;
- var s = this._shapeList;
- while(s != null) {
- var n = s._next;
- var dst1 = s._ptransform;
- var src1 = s._localTransform;
- var src2 = this._ptransform;
- var __tmp__002;
- var __tmp__012;
- var __tmp__022;
- var __tmp__102;
- var __tmp__112;
- var __tmp__122;
- var __tmp__202;
- var __tmp__212;
- var __tmp__222;
- __tmp__002 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
- __tmp__012 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
- __tmp__022 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
- __tmp__102 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
- __tmp__112 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
- __tmp__122 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
- __tmp__202 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
- __tmp__212 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
- __tmp__222 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
- dst1._rotation00 = __tmp__002;
- dst1._rotation01 = __tmp__012;
- dst1._rotation02 = __tmp__022;
- dst1._rotation10 = __tmp__102;
- dst1._rotation11 = __tmp__112;
- dst1._rotation12 = __tmp__122;
- dst1._rotation20 = __tmp__202;
- dst1._rotation21 = __tmp__212;
- dst1._rotation22 = __tmp__222;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
- __tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
- __tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
- dst1._positionX = __tmp__X;
- dst1._positionY = __tmp__Y;
- dst1._positionZ = __tmp__Z;
- dst1._positionX += src2._positionX;
- dst1._positionY += src2._positionY;
- dst1._positionZ += src2._positionZ;
- var dst2 = s._transform;
- var src11 = s._localTransform;
- var src21 = this._transform;
- var __tmp__003;
- var __tmp__013;
- var __tmp__023;
- var __tmp__103;
- var __tmp__113;
- var __tmp__123;
- var __tmp__203;
- var __tmp__213;
- var __tmp__223;
- __tmp__003 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
- __tmp__013 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
- __tmp__023 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
- __tmp__103 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
- __tmp__113 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
- __tmp__123 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
- __tmp__203 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
- __tmp__213 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
- __tmp__223 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
- dst2._rotation00 = __tmp__003;
- dst2._rotation01 = __tmp__013;
- dst2._rotation02 = __tmp__023;
- dst2._rotation10 = __tmp__103;
- dst2._rotation11 = __tmp__113;
- dst2._rotation12 = __tmp__123;
- dst2._rotation20 = __tmp__203;
- dst2._rotation21 = __tmp__213;
- dst2._rotation22 = __tmp__223;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
- __tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
- __tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
- dst2._positionX = __tmp__X1;
- dst2._positionY = __tmp__Y1;
- dst2._positionZ = __tmp__Z1;
- dst2._positionX += src21._positionX;
- dst2._positionY += src21._positionY;
- dst2._positionZ += src21._positionZ;
- var min;
- var minX;
- var minY;
- var minZ;
- var max;
- var maxX;
- var maxY;
- var maxZ;
- s._geom._computeAabb(s._aabb,s._ptransform);
- minX = s._aabb._minX;
- minY = s._aabb._minY;
- minZ = s._aabb._minZ;
- maxX = s._aabb._maxX;
- maxY = s._aabb._maxY;
- maxZ = s._aabb._maxZ;
- s._geom._computeAabb(s._aabb,s._transform);
- s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
- s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
- s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
- s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
- s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
- s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
- if(s._proxy != null) {
- var d;
- var dX;
- var dY;
- var dZ;
- dX = s._transform._positionX - s._ptransform._positionX;
- dY = s._transform._positionY - s._ptransform._positionY;
- dZ = s._transform._positionZ - s._ptransform._positionZ;
- var v = s.displacement;
- v.x = dX;
- v.y = dY;
- v.z = dZ;
- s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
- }
- s = n;
- }
- this._sleeping = false;
- this._sleepTime = 0;
- }
- getMass() {
- return this._mass;
- }
- getLocalInertia() {
- var m = new oimo.common.Mat3();
- var m1 = m;
- m1.e00 = this._localInertia00;
- m1.e01 = this._localInertia01;
- m1.e02 = this._localInertia02;
- m1.e10 = this._localInertia10;
- m1.e11 = this._localInertia11;
- m1.e12 = this._localInertia12;
- m1.e20 = this._localInertia20;
- m1.e21 = this._localInertia21;
- m1.e22 = this._localInertia22;
- return m;
- }
- getLocalInertiaTo(inertia) {
- var m = inertia;
- m.e00 = this._localInertia00;
- m.e01 = this._localInertia01;
- m.e02 = this._localInertia02;
- m.e10 = this._localInertia10;
- m.e11 = this._localInertia11;
- m.e12 = this._localInertia12;
- m.e20 = this._localInertia20;
- m.e21 = this._localInertia21;
- m.e22 = this._localInertia22;
- }
- getMassData() {
- var md = new oimo.dynamics.rigidbody.MassData();
- md.mass = this._mass;
- var m = md.localInertia;
- m.e00 = this._localInertia00;
- m.e01 = this._localInertia01;
- m.e02 = this._localInertia02;
- m.e10 = this._localInertia10;
- m.e11 = this._localInertia11;
- m.e12 = this._localInertia12;
- m.e20 = this._localInertia20;
- m.e21 = this._localInertia21;
- m.e22 = this._localInertia22;
- return md;
- }
- getMassDataTo(massData) {
- massData.mass = this._mass;
- var m = massData.localInertia;
- m.e00 = this._localInertia00;
- m.e01 = this._localInertia01;
- m.e02 = this._localInertia02;
- m.e10 = this._localInertia10;
- m.e11 = this._localInertia11;
- m.e12 = this._localInertia12;
- m.e20 = this._localInertia20;
- m.e21 = this._localInertia21;
- m.e22 = this._localInertia22;
- }
- setMassData(massData) {
- this._mass = massData.mass;
- var m = massData.localInertia;
- this._localInertia00 = m.e00;
- this._localInertia01 = m.e01;
- this._localInertia02 = m.e02;
- this._localInertia10 = m.e10;
- this._localInertia11 = m.e11;
- this._localInertia12 = m.e12;
- this._localInertia20 = m.e20;
- this._localInertia21 = m.e21;
- this._localInertia22 = m.e22;
- var d00 = this._localInertia11 * this._localInertia22 - this._localInertia12 * this._localInertia21;
- var d01 = this._localInertia10 * this._localInertia22 - this._localInertia12 * this._localInertia20;
- var d02 = this._localInertia10 * this._localInertia21 - this._localInertia11 * this._localInertia20;
- var det = this._localInertia00 * d00 - this._localInertia01 * d01 + this._localInertia02 * d02;
- if(this._mass > 0 && det > 0 && this._type == 0) {
- this._invMass = 1 / this._mass;
- var d001 = this._localInertia11 * this._localInertia22 - this._localInertia12 * this._localInertia21;
- var d011 = this._localInertia10 * this._localInertia22 - this._localInertia12 * this._localInertia20;
- var d021 = this._localInertia10 * this._localInertia21 - this._localInertia11 * this._localInertia20;
- var d10 = this._localInertia01 * this._localInertia22 - this._localInertia02 * this._localInertia21;
- var d11 = this._localInertia00 * this._localInertia22 - this._localInertia02 * this._localInertia20;
- var d12 = this._localInertia00 * this._localInertia21 - this._localInertia01 * this._localInertia20;
- var d20 = this._localInertia01 * this._localInertia12 - this._localInertia02 * this._localInertia11;
- var d21 = this._localInertia00 * this._localInertia12 - this._localInertia02 * this._localInertia10;
- var d22 = this._localInertia00 * this._localInertia11 - this._localInertia01 * this._localInertia10;
- var d = this._localInertia00 * d001 - this._localInertia01 * d011 + this._localInertia02 * d021;
- if(d < -1e-32 || d > 1e-32) {
- d = 1 / d;
- }
- this._invLocalInertia00 = d001 * d;
- this._invLocalInertia01 = -d10 * d;
- this._invLocalInertia02 = d20 * d;
- this._invLocalInertia10 = -d011 * d;
- this._invLocalInertia11 = d11 * d;
- this._invLocalInertia12 = -d21 * d;
- this._invLocalInertia20 = d021 * d;
- this._invLocalInertia21 = -d12 * d;
- this._invLocalInertia22 = d22 * d;
- this._invLocalInertiaWithoutRotFactor00 = this._invLocalInertia00;
- this._invLocalInertiaWithoutRotFactor01 = this._invLocalInertia01;
- this._invLocalInertiaWithoutRotFactor02 = this._invLocalInertia02;
- this._invLocalInertiaWithoutRotFactor10 = this._invLocalInertia10;
- this._invLocalInertiaWithoutRotFactor11 = this._invLocalInertia11;
- this._invLocalInertiaWithoutRotFactor12 = this._invLocalInertia12;
- this._invLocalInertiaWithoutRotFactor20 = this._invLocalInertia20;
- this._invLocalInertiaWithoutRotFactor21 = this._invLocalInertia21;
- this._invLocalInertiaWithoutRotFactor22 = this._invLocalInertia22;
- this._invLocalInertia00 = this._invLocalInertiaWithoutRotFactor00 * this._rotFactor.x;
- this._invLocalInertia01 = this._invLocalInertiaWithoutRotFactor01 * this._rotFactor.x;
- this._invLocalInertia02 = this._invLocalInertiaWithoutRotFactor02 * this._rotFactor.x;
- this._invLocalInertia10 = this._invLocalInertiaWithoutRotFactor10 * this._rotFactor.y;
- this._invLocalInertia11 = this._invLocalInertiaWithoutRotFactor11 * this._rotFactor.y;
- this._invLocalInertia12 = this._invLocalInertiaWithoutRotFactor12 * this._rotFactor.y;
- this._invLocalInertia20 = this._invLocalInertiaWithoutRotFactor20 * this._rotFactor.z;
- this._invLocalInertia21 = this._invLocalInertiaWithoutRotFactor21 * this._rotFactor.z;
- this._invLocalInertia22 = this._invLocalInertiaWithoutRotFactor22 * this._rotFactor.z;
- } else {
- this._invMass = 0;
- this._invLocalInertia00 = 0;
- this._invLocalInertia01 = 0;
- this._invLocalInertia02 = 0;
- this._invLocalInertia10 = 0;
- this._invLocalInertia11 = 0;
- this._invLocalInertia12 = 0;
- this._invLocalInertia20 = 0;
- this._invLocalInertia21 = 0;
- this._invLocalInertia22 = 0;
- this._invLocalInertiaWithoutRotFactor00 = 0;
- this._invLocalInertiaWithoutRotFactor01 = 0;
- this._invLocalInertiaWithoutRotFactor02 = 0;
- this._invLocalInertiaWithoutRotFactor10 = 0;
- this._invLocalInertiaWithoutRotFactor11 = 0;
- this._invLocalInertiaWithoutRotFactor12 = 0;
- this._invLocalInertiaWithoutRotFactor20 = 0;
- this._invLocalInertiaWithoutRotFactor21 = 0;
- this._invLocalInertiaWithoutRotFactor22 = 0;
- if(this._type == 0) {
- this._type = 1;
- }
- }
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
- __tmp__01 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
- __tmp__02 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
- __tmp__10 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
- __tmp__11 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
- __tmp__12 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
- __tmp__20 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
- __tmp__21 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
- __tmp__22 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
- this._invInertia00 = __tmp__00;
- this._invInertia01 = __tmp__01;
- this._invInertia02 = __tmp__02;
- this._invInertia10 = __tmp__10;
- this._invInertia11 = __tmp__11;
- this._invInertia12 = __tmp__12;
- this._invInertia20 = __tmp__20;
- this._invInertia21 = __tmp__21;
- this._invInertia22 = __tmp__22;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
- __tmp__011 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
- __tmp__021 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
- __tmp__101 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
- __tmp__111 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
- __tmp__121 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
- __tmp__201 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
- __tmp__211 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
- __tmp__221 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
- this._invInertia00 = __tmp__001;
- this._invInertia01 = __tmp__011;
- this._invInertia02 = __tmp__021;
- this._invInertia10 = __tmp__101;
- this._invInertia11 = __tmp__111;
- this._invInertia12 = __tmp__121;
- this._invInertia20 = __tmp__201;
- this._invInertia21 = __tmp__211;
- this._invInertia22 = __tmp__221;
- this._invInertia00 *= this._rotFactor.x;
- this._invInertia01 *= this._rotFactor.x;
- this._invInertia02 *= this._rotFactor.x;
- this._invInertia10 *= this._rotFactor.y;
- this._invInertia11 *= this._rotFactor.y;
- this._invInertia12 *= this._rotFactor.y;
- this._invInertia20 *= this._rotFactor.z;
- this._invInertia21 *= this._rotFactor.z;
- this._invInertia22 *= this._rotFactor.z;
- this._sleeping = false;
- this._sleepTime = 0;
- }
- getRotationFactor() {
- var _this = this._rotFactor;
- return new oimo.common.Vec3(_this.x,_this.y,_this.z);
- }
- setRotationFactor(rotationFactor) {
- var _this = this._rotFactor;
- _this.x = rotationFactor.x;
- _this.y = rotationFactor.y;
- _this.z = rotationFactor.z;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = this._transform._rotation00 * this._invLocalInertia00 + this._transform._rotation01 * this._invLocalInertia10 + this._transform._rotation02 * this._invLocalInertia20;
- __tmp__01 = this._transform._rotation00 * this._invLocalInertia01 + this._transform._rotation01 * this._invLocalInertia11 + this._transform._rotation02 * this._invLocalInertia21;
- __tmp__02 = this._transform._rotation00 * this._invLocalInertia02 + this._transform._rotation01 * this._invLocalInertia12 + this._transform._rotation02 * this._invLocalInertia22;
- __tmp__10 = this._transform._rotation10 * this._invLocalInertia00 + this._transform._rotation11 * this._invLocalInertia10 + this._transform._rotation12 * this._invLocalInertia20;
- __tmp__11 = this._transform._rotation10 * this._invLocalInertia01 + this._transform._rotation11 * this._invLocalInertia11 + this._transform._rotation12 * this._invLocalInertia21;
- __tmp__12 = this._transform._rotation10 * this._invLocalInertia02 + this._transform._rotation11 * this._invLocalInertia12 + this._transform._rotation12 * this._invLocalInertia22;
- __tmp__20 = this._transform._rotation20 * this._invLocalInertia00 + this._transform._rotation21 * this._invLocalInertia10 + this._transform._rotation22 * this._invLocalInertia20;
- __tmp__21 = this._transform._rotation20 * this._invLocalInertia01 + this._transform._rotation21 * this._invLocalInertia11 + this._transform._rotation22 * this._invLocalInertia21;
- __tmp__22 = this._transform._rotation20 * this._invLocalInertia02 + this._transform._rotation21 * this._invLocalInertia12 + this._transform._rotation22 * this._invLocalInertia22;
- this._invInertia00 = __tmp__00;
- this._invInertia01 = __tmp__01;
- this._invInertia02 = __tmp__02;
- this._invInertia10 = __tmp__10;
- this._invInertia11 = __tmp__11;
- this._invInertia12 = __tmp__12;
- this._invInertia20 = __tmp__20;
- this._invInertia21 = __tmp__21;
- this._invInertia22 = __tmp__22;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = this._invInertia00 * this._transform._rotation00 + this._invInertia01 * this._transform._rotation01 + this._invInertia02 * this._transform._rotation02;
- __tmp__011 = this._invInertia00 * this._transform._rotation10 + this._invInertia01 * this._transform._rotation11 + this._invInertia02 * this._transform._rotation12;
- __tmp__021 = this._invInertia00 * this._transform._rotation20 + this._invInertia01 * this._transform._rotation21 + this._invInertia02 * this._transform._rotation22;
- __tmp__101 = this._invInertia10 * this._transform._rotation00 + this._invInertia11 * this._transform._rotation01 + this._invInertia12 * this._transform._rotation02;
- __tmp__111 = this._invInertia10 * this._transform._rotation10 + this._invInertia11 * this._transform._rotation11 + this._invInertia12 * this._transform._rotation12;
- __tmp__121 = this._invInertia10 * this._transform._rotation20 + this._invInertia11 * this._transform._rotation21 + this._invInertia12 * this._transform._rotation22;
- __tmp__201 = this._invInertia20 * this._transform._rotation00 + this._invInertia21 * this._transform._rotation01 + this._invInertia22 * this._transform._rotation02;
- __tmp__211 = this._invInertia20 * this._transform._rotation10 + this._invInertia21 * this._transform._rotation11 + this._invInertia22 * this._transform._rotation12;
- __tmp__221 = this._invInertia20 * this._transform._rotation20 + this._invInertia21 * this._transform._rotation21 + this._invInertia22 * this._transform._rotation22;
- this._invInertia00 = __tmp__001;
- this._invInertia01 = __tmp__011;
- this._invInertia02 = __tmp__021;
- this._invInertia10 = __tmp__101;
- this._invInertia11 = __tmp__111;
- this._invInertia12 = __tmp__121;
- this._invInertia20 = __tmp__201;
- this._invInertia21 = __tmp__211;
- this._invInertia22 = __tmp__221;
- this._invInertia00 *= this._rotFactor.x;
- this._invInertia01 *= this._rotFactor.x;
- this._invInertia02 *= this._rotFactor.x;
- this._invInertia10 *= this._rotFactor.y;
- this._invInertia11 *= this._rotFactor.y;
- this._invInertia12 *= this._rotFactor.y;
- this._invInertia20 *= this._rotFactor.z;
- this._invInertia21 *= this._rotFactor.z;
- this._invInertia22 *= this._rotFactor.z;
- this._sleeping = false;
- this._sleepTime = 0;
- }
- getLinearVelocity() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._velX;
- v1.y = this._velY;
- v1.z = this._velZ;
- return v;
- }
- getLinearVelocityTo(linearVelocity) {
- var v = linearVelocity;
- v.x = this._velX;
- v.y = this._velY;
- v.z = this._velZ;
- }
- setLinearVelocity(linearVelocity) {
- if(this._type == 1) {
- this._velX = 0;
- this._velY = 0;
- this._velZ = 0;
- } else {
- var v = linearVelocity;
- this._velX = v.x;
- this._velY = v.y;
- this._velZ = v.z;
- }
- this._sleeping = false;
- this._sleepTime = 0;
- }
- getAngularVelocity() {
- var v = new oimo.common.Vec3();
- var v1 = v;
- v1.x = this._angVelX;
- v1.y = this._angVelY;
- v1.z = this._angVelZ;
- return v;
- }
- getAngularVelocityTo(angularVelocity) {
- var v = angularVelocity;
- v.x = this._velX;
- v.y = this._velY;
- v.z = this._velZ;
- }
- setAngularVelocity(angularVelocity) {
- if(this._type == 1) {
- this._angVelX = 0;
- this._angVelY = 0;
- this._angVelZ = 0;
- } else {
- var v = angularVelocity;
- this._angVelX = v.x;
- this._angVelY = v.y;
- this._angVelZ = v.z;
- }
- this._sleeping = false;
- this._sleepTime = 0;
- }
- addLinearVelocity(linearVelocityChange) {
- if(this._type != 1) {
- var d;
- var dX;
- var dY;
- var dZ;
- var v = linearVelocityChange;
- dX = v.x;
- dY = v.y;
- dZ = v.z;
- this._velX += dX;
- this._velY += dY;
- this._velZ += dZ;
- }
- this._sleeping = false;
- this._sleepTime = 0;
- }
- addAngularVelocity(angularVelocityChange) {
- if(this._type != 1) {
- var d;
- var dX;
- var dY;
- var dZ;
- var v = angularVelocityChange;
- dX = v.x;
- dY = v.y;
- dZ = v.z;
- this._angVelX += dX;
- this._angVelY += dY;
- this._angVelZ += dZ;
- }
- this._sleeping = false;
- this._sleepTime = 0;
- }
- applyImpulse(impulse,positionInWorld) {
- var imp;
- var impX;
- var impY;
- var impZ;
- var v = impulse;
- impX = v.x;
- impY = v.y;
- impZ = v.z;
- this._velX += impX * this._invMass;
- this._velY += impY * this._invMass;
- this._velZ += impZ * this._invMass;
- var aimp;
- var aimpX;
- var aimpY;
- var aimpZ;
- var pos;
- var posX;
- var posY;
- var posZ;
- var v1 = positionInWorld;
- posX = v1.x;
- posY = v1.y;
- posZ = v1.z;
- posX -= this._transform._positionX;
- posY -= this._transform._positionY;
- posZ -= this._transform._positionZ;
- aimpX = posY * impZ - posZ * impY;
- aimpY = posZ * impX - posX * impZ;
- aimpZ = posX * impY - posY * impX;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = this._invInertia00 * aimpX + this._invInertia01 * aimpY + this._invInertia02 * aimpZ;
- __tmp__Y = this._invInertia10 * aimpX + this._invInertia11 * aimpY + this._invInertia12 * aimpZ;
- __tmp__Z = this._invInertia20 * aimpX + this._invInertia21 * aimpY + this._invInertia22 * aimpZ;
- aimpX = __tmp__X;
- aimpY = __tmp__Y;
- aimpZ = __tmp__Z;
- this._angVelX += aimpX;
- this._angVelY += aimpY;
- this._angVelZ += aimpZ;
- this._sleeping = false;
- this._sleepTime = 0;
- }
- applyLinearImpulse(impulse) {
- var imp;
- var impX;
- var impY;
- var impZ;
- var v = impulse;
- impX = v.x;
- impY = v.y;
- impZ = v.z;
- this._velX += impX * this._invMass;
- this._velY += impY * this._invMass;
- this._velZ += impZ * this._invMass;
- this._sleeping = false;
- this._sleepTime = 0;
- }
- applyAngularImpulse(impulse) {
- var imp;
- var impX;
- var impY;
- var impZ;
- var v = impulse;
- impX = v.x;
- impY = v.y;
- impZ = v.z;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = this._invInertia00 * impX + this._invInertia01 * impY + this._invInertia02 * impZ;
- __tmp__Y = this._invInertia10 * impX + this._invInertia11 * impY + this._invInertia12 * impZ;
- __tmp__Z = this._invInertia20 * impX + this._invInertia21 * impY + this._invInertia22 * impZ;
- impX = __tmp__X;
- impY = __tmp__Y;
- impZ = __tmp__Z;
- this._angVelX += impX;
- this._angVelY += impY;
- this._angVelZ += impZ;
- this._sleeping = false;
- this._sleepTime = 0;
- }
- applyForce(force,positionInWorld) {
- var iforce;
- var iforceX;
- var iforceY;
- var iforceZ;
- var v = force;
- iforceX = v.x;
- iforceY = v.y;
- iforceZ = v.z;
- this._forceX += iforceX;
- this._forceY += iforceY;
- this._forceZ += iforceZ;
- var itorque;
- var itorqueX;
- var itorqueY;
- var itorqueZ;
- var pos;
- var posX;
- var posY;
- var posZ;
- var v1 = positionInWorld;
- posX = v1.x;
- posY = v1.y;
- posZ = v1.z;
- posX -= this._transform._positionX;
- posY -= this._transform._positionY;
- posZ -= this._transform._positionZ;
- itorqueX = posY * iforceZ - posZ * iforceY;
- itorqueY = posZ * iforceX - posX * iforceZ;
- itorqueZ = posX * iforceY - posY * iforceX;
- this._torqueX += itorqueX;
- this._torqueY += itorqueY;
- this._torqueZ += itorqueZ;
- this._sleeping = false;
- this._sleepTime = 0;
- }
- applyForceToCenter(force) {
- var iforce;
- var iforceX;
- var iforceY;
- var iforceZ;
- var v = force;
- iforceX = v.x;
- iforceY = v.y;
- iforceZ = v.z;
- this._forceX += iforceX;
- this._forceY += iforceY;
- this._forceZ += iforceZ;
- this._sleeping = false;
- this._sleepTime = 0;
- }
- applyTorque(torque) {
- var itorque;
- var itorqueX;
- var itorqueY;
- var itorqueZ;
- var v = torque;
- itorqueX = v.x;
- itorqueY = v.y;
- itorqueZ = v.z;
- this._torqueX += itorqueX;
- this._torqueY += itorqueY;
- this._torqueZ += itorqueZ;
- this._sleeping = false;
- this._sleepTime = 0;
- }
- getLinearContactImpulse() {
- var res = new oimo.common.Vec3();
- var v = res;
- v.x = this._linearContactImpulseX;
- v.y = this._linearContactImpulseY;
- v.z = this._linearContactImpulseZ;
- return res;
- }
- getLinearContactImpulseTo(linearContactImpulse) {
- var v = linearContactImpulse;
- v.x = this._linearContactImpulseX;
- v.y = this._linearContactImpulseY;
- v.z = this._linearContactImpulseZ;
- }
- getAngularContactImpulse() {
- var res = new oimo.common.Vec3();
- var v = res;
- v.x = this._angularContactImpulseX;
- v.y = this._angularContactImpulseY;
- v.z = this._angularContactImpulseZ;
- return res;
- }
- getAngularContactImpulseTo(angularContactImpulse) {
- var v = angularContactImpulse;
- v.x = this._angularContactImpulseX;
- v.y = this._angularContactImpulseY;
- v.z = this._angularContactImpulseZ;
- }
- getGravityScale() {
- return this._gravityScale;
- }
- setGravityScale(gravityScale) {
- this._gravityScale = gravityScale;
- this._sleeping = false;
- this._sleepTime = 0;
- }
- getLocalPoint(worldPoint) {
- var v;
- var vX;
- var vY;
- var vZ;
- var v1 = worldPoint;
- vX = v1.x;
- vY = v1.y;
- vZ = v1.z;
- vX -= this._transform._positionX;
- vY -= this._transform._positionY;
- vZ -= this._transform._positionZ;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = this._transform._rotation00 * vX + this._transform._rotation10 * vY + this._transform._rotation20 * vZ;
- __tmp__Y = this._transform._rotation01 * vX + this._transform._rotation11 * vY + this._transform._rotation21 * vZ;
- __tmp__Z = this._transform._rotation02 * vX + this._transform._rotation12 * vY + this._transform._rotation22 * vZ;
- vX = __tmp__X;
- vY = __tmp__Y;
- vZ = __tmp__Z;
- var res = new oimo.common.Vec3();
- var v2 = res;
- v2.x = vX;
- v2.y = vY;
- v2.z = vZ;
- return res;
- }
- getLocalPointTo(worldPoint,localPoint) {
- var v;
- var vX;
- var vY;
- var vZ;
- var v1 = worldPoint;
- vX = v1.x;
- vY = v1.y;
- vZ = v1.z;
- vX -= this._transform._positionX;
- vY -= this._transform._positionY;
- vZ -= this._transform._positionZ;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = this._transform._rotation00 * vX + this._transform._rotation10 * vY + this._transform._rotation20 * vZ;
- __tmp__Y = this._transform._rotation01 * vX + this._transform._rotation11 * vY + this._transform._rotation21 * vZ;
- __tmp__Z = this._transform._rotation02 * vX + this._transform._rotation12 * vY + this._transform._rotation22 * vZ;
- vX = __tmp__X;
- vY = __tmp__Y;
- vZ = __tmp__Z;
- var v2 = localPoint;
- v2.x = vX;
- v2.y = vY;
- v2.z = vZ;
- }
- getLocalVector(worldVector) {
- var v;
- var vX;
- var vY;
- var vZ;
- var v1 = worldVector;
- vX = v1.x;
- vY = v1.y;
- vZ = v1.z;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = this._transform._rotation00 * vX + this._transform._rotation10 * vY + this._transform._rotation20 * vZ;
- __tmp__Y = this._transform._rotation01 * vX + this._transform._rotation11 * vY + this._transform._rotation21 * vZ;
- __tmp__Z = this._transform._rotation02 * vX + this._transform._rotation12 * vY + this._transform._rotation22 * vZ;
- vX = __tmp__X;
- vY = __tmp__Y;
- vZ = __tmp__Z;
- var res = new oimo.common.Vec3();
- var v2 = res;
- v2.x = vX;
- v2.y = vY;
- v2.z = vZ;
- return res;
- }
- getLocalVectorTo(worldVector,localVector) {
- var v;
- var vX;
- var vY;
- var vZ;
- var v1 = worldVector;
- vX = v1.x;
- vY = v1.y;
- vZ = v1.z;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = this._transform._rotation00 * vX + this._transform._rotation10 * vY + this._transform._rotation20 * vZ;
- __tmp__Y = this._transform._rotation01 * vX + this._transform._rotation11 * vY + this._transform._rotation21 * vZ;
- __tmp__Z = this._transform._rotation02 * vX + this._transform._rotation12 * vY + this._transform._rotation22 * vZ;
- vX = __tmp__X;
- vY = __tmp__Y;
- vZ = __tmp__Z;
- var v2 = localVector;
- v2.x = vX;
- v2.y = vY;
- v2.z = vZ;
- }
- getWorldPoint(localPoint) {
- var v;
- var vX;
- var vY;
- var vZ;
- var v1 = localPoint;
- vX = v1.x;
- vY = v1.y;
- vZ = v1.z;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = this._transform._rotation00 * vX + this._transform._rotation01 * vY + this._transform._rotation02 * vZ;
- __tmp__Y = this._transform._rotation10 * vX + this._transform._rotation11 * vY + this._transform._rotation12 * vZ;
- __tmp__Z = this._transform._rotation20 * vX + this._transform._rotation21 * vY + this._transform._rotation22 * vZ;
- vX = __tmp__X;
- vY = __tmp__Y;
- vZ = __tmp__Z;
- vX += this._transform._positionX;
- vY += this._transform._positionY;
- vZ += this._transform._positionZ;
- var res = new oimo.common.Vec3();
- var v2 = res;
- v2.x = vX;
- v2.y = vY;
- v2.z = vZ;
- return res;
- }
- getWorldPointTo(localPoint,worldPoint) {
- var v;
- var vX;
- var vY;
- var vZ;
- var v1 = localPoint;
- vX = v1.x;
- vY = v1.y;
- vZ = v1.z;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = this._transform._rotation00 * vX + this._transform._rotation01 * vY + this._transform._rotation02 * vZ;
- __tmp__Y = this._transform._rotation10 * vX + this._transform._rotation11 * vY + this._transform._rotation12 * vZ;
- __tmp__Z = this._transform._rotation20 * vX + this._transform._rotation21 * vY + this._transform._rotation22 * vZ;
- vX = __tmp__X;
- vY = __tmp__Y;
- vZ = __tmp__Z;
- vX += this._transform._positionX;
- vY += this._transform._positionY;
- vZ += this._transform._positionZ;
- var v2 = worldPoint;
- v2.x = vX;
- v2.y = vY;
- v2.z = vZ;
- }
- getWorldVector(localVector) {
- var v;
- var vX;
- var vY;
- var vZ;
- var v1 = localVector;
- vX = v1.x;
- vY = v1.y;
- vZ = v1.z;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = this._transform._rotation00 * vX + this._transform._rotation01 * vY + this._transform._rotation02 * vZ;
- __tmp__Y = this._transform._rotation10 * vX + this._transform._rotation11 * vY + this._transform._rotation12 * vZ;
- __tmp__Z = this._transform._rotation20 * vX + this._transform._rotation21 * vY + this._transform._rotation22 * vZ;
- vX = __tmp__X;
- vY = __tmp__Y;
- vZ = __tmp__Z;
- var res = new oimo.common.Vec3();
- var v2 = res;
- v2.x = vX;
- v2.y = vY;
- v2.z = vZ;
- return res;
- }
- getWorldVectorTo(localVector,worldVector) {
- var v;
- var vX;
- var vY;
- var vZ;
- var v1 = localVector;
- vX = v1.x;
- vY = v1.y;
- vZ = v1.z;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = this._transform._rotation00 * vX + this._transform._rotation01 * vY + this._transform._rotation02 * vZ;
- __tmp__Y = this._transform._rotation10 * vX + this._transform._rotation11 * vY + this._transform._rotation12 * vZ;
- __tmp__Z = this._transform._rotation20 * vX + this._transform._rotation21 * vY + this._transform._rotation22 * vZ;
- vX = __tmp__X;
- vY = __tmp__Y;
- vZ = __tmp__Z;
- var v2 = worldVector;
- v2.x = vX;
- v2.y = vY;
- v2.z = vZ;
- }
- getNumShapes() {
- return this._numShapes;
- }
- getShapeList() {
- return this._shapeList;
- }
- getNumContectLinks() {
- return this._numContactLinks;
- }
- getContactLinkList() {
- return this._contactLinkList;
- }
- getNumJointLinks() {
- return this._numJointLinks;
- }
- getJointLinkList() {
- return this._jointLinkList;
- }
- addShape(shape) {
- if(this._shapeList == null) {
- this._shapeList = shape;
- this._shapeListLast = shape;
- } else {
- this._shapeListLast._next = shape;
- shape._prev = this._shapeListLast;
- this._shapeListLast = shape;
- }
- this._numShapes++;
- shape._rigidBody = this;
- if(this._world != null) {
- var _this = this._world;
- shape._proxy = _this._broadPhase.createProxy(shape,shape._aabb);
- shape._id = _this._shapeIdCount++;
- _this._numShapes++;
- }
- this.updateMass();
- var s = this._shapeList;
- while(s != null) {
- var n = s._next;
- var dst = s._ptransform;
- var src1 = s._localTransform;
- var src2 = this._ptransform;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
- __tmp__01 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
- __tmp__02 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
- __tmp__10 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
- __tmp__11 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
- __tmp__12 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
- __tmp__20 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
- __tmp__21 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
- __tmp__22 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
- dst._rotation00 = __tmp__00;
- dst._rotation01 = __tmp__01;
- dst._rotation02 = __tmp__02;
- dst._rotation10 = __tmp__10;
- dst._rotation11 = __tmp__11;
- dst._rotation12 = __tmp__12;
- dst._rotation20 = __tmp__20;
- dst._rotation21 = __tmp__21;
- dst._rotation22 = __tmp__22;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
- __tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
- __tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
- dst._positionX = __tmp__X;
- dst._positionY = __tmp__Y;
- dst._positionZ = __tmp__Z;
- dst._positionX += src2._positionX;
- dst._positionY += src2._positionY;
- dst._positionZ += src2._positionZ;
- var dst1 = s._transform;
- var src11 = s._localTransform;
- var src21 = this._transform;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
- __tmp__011 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
- __tmp__021 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
- __tmp__101 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
- __tmp__111 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
- __tmp__121 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
- __tmp__201 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
- __tmp__211 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
- __tmp__221 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
- dst1._rotation00 = __tmp__001;
- dst1._rotation01 = __tmp__011;
- dst1._rotation02 = __tmp__021;
- dst1._rotation10 = __tmp__101;
- dst1._rotation11 = __tmp__111;
- dst1._rotation12 = __tmp__121;
- dst1._rotation20 = __tmp__201;
- dst1._rotation21 = __tmp__211;
- dst1._rotation22 = __tmp__221;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
- __tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
- __tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
- dst1._positionX = __tmp__X1;
- dst1._positionY = __tmp__Y1;
- dst1._positionZ = __tmp__Z1;
- dst1._positionX += src21._positionX;
- dst1._positionY += src21._positionY;
- dst1._positionZ += src21._positionZ;
- var min;
- var minX;
- var minY;
- var minZ;
- var max;
- var maxX;
- var maxY;
- var maxZ;
- s._geom._computeAabb(s._aabb,s._ptransform);
- minX = s._aabb._minX;
- minY = s._aabb._minY;
- minZ = s._aabb._minZ;
- maxX = s._aabb._maxX;
- maxY = s._aabb._maxY;
- maxZ = s._aabb._maxZ;
- s._geom._computeAabb(s._aabb,s._transform);
- s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
- s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
- s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
- s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
- s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
- s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
- if(s._proxy != null) {
- var d;
- var dX;
- var dY;
- var dZ;
- dX = s._transform._positionX - s._ptransform._positionX;
- dY = s._transform._positionY - s._ptransform._positionY;
- dZ = s._transform._positionZ - s._ptransform._positionZ;
- var v = s.displacement;
- v.x = dX;
- v.y = dY;
- v.z = dZ;
- s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
- }
- s = n;
- }
- }
- removeShape(shape) {
- var prev = shape._prev;
- var next = shape._next;
- if(prev != null) {
- prev._next = next;
- }
- if(next != null) {
- next._prev = prev;
- }
- if(shape == this._shapeList) {
- this._shapeList = this._shapeList._next;
- }
- if(shape == this._shapeListLast) {
- this._shapeListLast = this._shapeListLast._prev;
- }
- shape._next = null;
- shape._prev = null;
- this._numShapes--;
- shape._rigidBody = null;
- if(this._world != null) {
- var _this = this._world;
- _this._broadPhase.destroyProxy(shape._proxy);
- shape._proxy = null;
- shape._id = -1;
- var cl = shape._rigidBody._contactLinkList;
- while(cl != null) {
- var n = cl._next;
- var c = cl._contact;
- if(c._s1 == shape || c._s2 == shape) {
- var _this1 = cl._other;
- _this1._sleeping = false;
- _this1._sleepTime = 0;
- var _this2 = _this._contactManager;
- var prev1 = c._prev;
- var next1 = c._next;
- if(prev1 != null) {
- prev1._next = next1;
- }
- if(next1 != null) {
- next1._prev = prev1;
- }
- if(c == _this2._contactList) {
- _this2._contactList = _this2._contactList._next;
- }
- if(c == _this2._contactListLast) {
- _this2._contactListLast = _this2._contactListLast._prev;
- }
- c._next = null;
- c._prev = null;
- if(c._touching) {
- var cc1 = c._s1._contactCallback;
- var cc2 = c._s2._contactCallback;
- if(cc1 == cc2) {
- cc2 = null;
- }
- if(cc1 != null) {
- cc1.endContact(c);
- }
- if(cc2 != null) {
- cc2.endContact(c);
- }
- }
- var prev2 = c._link1._prev;
- var next2 = c._link1._next;
- if(prev2 != null) {
- prev2._next = next2;
- }
- if(next2 != null) {
- next2._prev = prev2;
- }
- if(c._link1 == c._b1._contactLinkList) {
- c._b1._contactLinkList = c._b1._contactLinkList._next;
- }
- if(c._link1 == c._b1._contactLinkListLast) {
- c._b1._contactLinkListLast = c._b1._contactLinkListLast._prev;
- }
- c._link1._next = null;
- c._link1._prev = null;
- var prev3 = c._link2._prev;
- var next3 = c._link2._next;
- if(prev3 != null) {
- prev3._next = next3;
- }
- if(next3 != null) {
- next3._prev = prev3;
- }
- if(c._link2 == c._b2._contactLinkList) {
- c._b2._contactLinkList = c._b2._contactLinkList._next;
- }
- if(c._link2 == c._b2._contactLinkListLast) {
- c._b2._contactLinkListLast = c._b2._contactLinkListLast._prev;
- }
- c._link2._next = null;
- c._link2._prev = null;
- c._b1._numContactLinks--;
- c._b2._numContactLinks--;
- c._link1._other = null;
- c._link2._other = null;
- c._link1._contact = null;
- c._link2._contact = null;
- c._s1 = null;
- c._s2 = null;
- c._b1 = null;
- c._b2 = null;
- c._touching = false;
- c._cachedDetectorData._clear();
- c._manifold._clear();
- c._detector = null;
- var _this3 = c._contactConstraint;
- _this3._s1 = null;
- _this3._s2 = null;
- _this3._b1 = null;
- _this3._b2 = null;
- _this3._tf1 = null;
- _this3._tf2 = null;
- c._next = _this2._contactPool;
- _this2._contactPool = c;
- _this2._numContacts--;
- }
- cl = n;
- }
- _this._numShapes--;
- }
- this.updateMass();
- var s = this._shapeList;
- while(s != null) {
- var n1 = s._next;
- var dst = s._ptransform;
- var src1 = s._localTransform;
- var src2 = this._ptransform;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
- __tmp__01 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
- __tmp__02 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
- __tmp__10 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
- __tmp__11 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
- __tmp__12 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
- __tmp__20 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
- __tmp__21 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
- __tmp__22 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
- dst._rotation00 = __tmp__00;
- dst._rotation01 = __tmp__01;
- dst._rotation02 = __tmp__02;
- dst._rotation10 = __tmp__10;
- dst._rotation11 = __tmp__11;
- dst._rotation12 = __tmp__12;
- dst._rotation20 = __tmp__20;
- dst._rotation21 = __tmp__21;
- dst._rotation22 = __tmp__22;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
- __tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
- __tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
- dst._positionX = __tmp__X;
- dst._positionY = __tmp__Y;
- dst._positionZ = __tmp__Z;
- dst._positionX += src2._positionX;
- dst._positionY += src2._positionY;
- dst._positionZ += src2._positionZ;
- var dst1 = s._transform;
- var src11 = s._localTransform;
- var src21 = this._transform;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
- __tmp__011 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
- __tmp__021 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
- __tmp__101 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
- __tmp__111 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
- __tmp__121 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
- __tmp__201 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
- __tmp__211 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
- __tmp__221 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
- dst1._rotation00 = __tmp__001;
- dst1._rotation01 = __tmp__011;
- dst1._rotation02 = __tmp__021;
- dst1._rotation10 = __tmp__101;
- dst1._rotation11 = __tmp__111;
- dst1._rotation12 = __tmp__121;
- dst1._rotation20 = __tmp__201;
- dst1._rotation21 = __tmp__211;
- dst1._rotation22 = __tmp__221;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
- __tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
- __tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
- dst1._positionX = __tmp__X1;
- dst1._positionY = __tmp__Y1;
- dst1._positionZ = __tmp__Z1;
- dst1._positionX += src21._positionX;
- dst1._positionY += src21._positionY;
- dst1._positionZ += src21._positionZ;
- var min;
- var minX;
- var minY;
- var minZ;
- var max;
- var maxX;
- var maxY;
- var maxZ;
- s._geom._computeAabb(s._aabb,s._ptransform);
- minX = s._aabb._minX;
- minY = s._aabb._minY;
- minZ = s._aabb._minZ;
- maxX = s._aabb._maxX;
- maxY = s._aabb._maxY;
- maxZ = s._aabb._maxZ;
- s._geom._computeAabb(s._aabb,s._transform);
- s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
- s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
- s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
- s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
- s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
- s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
- if(s._proxy != null) {
- var d;
- var dX;
- var dY;
- var dZ;
- dX = s._transform._positionX - s._ptransform._positionX;
- dY = s._transform._positionY - s._ptransform._positionY;
- dZ = s._transform._positionZ - s._ptransform._positionZ;
- var v = s.displacement;
- v.x = dX;
- v.y = dY;
- v.z = dZ;
- s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
- }
- s = n1;
- }
- }
- getType() {
- return this._type;
- }
- setType(type) {
- this._type = type;
- this.updateMass();
- }
- wakeUp() {
- this._sleeping = false;
- this._sleepTime = 0;
- }
- sleep() {
- this._sleeping = true;
- this._sleepTime = 0;
- }
- isSleeping() {
- return this._sleeping;
- }
- getSleepTime() {
- return this._sleepTime;
- }
- setAutoSleep(autoSleepEnabled) {
- this._autoSleep = autoSleepEnabled;
- this._sleeping = false;
- this._sleepTime = 0;
- }
- getLinearDamping() {
- return this._linearDamping;
- }
- setLinearDamping(damping) {
- this._linearDamping = damping;
- }
- getAngularDamping() {
- return this._angularDamping;
- }
- setAngularDamping(damping) {
- this._angularDamping = damping;
- }
- getPrev() {
- return this._prev;
- }
- getNext() {
- return this._next;
- }
- }
- oimo.dynamics.rigidbody.RigidBodyConfig = class oimo_dynamics_rigidbody_RigidBodyConfig {
- constructor() {
- this.position = new oimo.common.Vec3();
- this.rotation = new oimo.common.Mat3();
- this.linearVelocity = new oimo.common.Vec3();
- this.angularVelocity = new oimo.common.Vec3();
- this.type = 0;
- this.autoSleep = true;
- this.linearDamping = 0;
- this.angularDamping = 0;
- }
- }
- oimo.dynamics.rigidbody.RigidBodyType = class oimo_dynamics_rigidbody_RigidBodyType {
- }
- oimo.dynamics.rigidbody.Shape = class oimo_dynamics_rigidbody_Shape {
- constructor(config) {
- this._id = -1;
- this._localTransform = new oimo.common.Transform();
- this._ptransform = new oimo.common.Transform();
- this._transform = new oimo.common.Transform();
- var v = config.position;
- this._localTransform._positionX = v.x;
- this._localTransform._positionY = v.y;
- this._localTransform._positionZ = v.z;
- var m = config.rotation;
- this._localTransform._rotation00 = m.e00;
- this._localTransform._rotation01 = m.e01;
- this._localTransform._rotation02 = m.e02;
- this._localTransform._rotation10 = m.e10;
- this._localTransform._rotation11 = m.e11;
- this._localTransform._rotation12 = m.e12;
- this._localTransform._rotation20 = m.e20;
- this._localTransform._rotation21 = m.e21;
- this._localTransform._rotation22 = m.e22;
- var dst = this._ptransform;
- var src = this._localTransform;
- dst._positionX = src._positionX;
- dst._positionY = src._positionY;
- dst._positionZ = src._positionZ;
- dst._rotation00 = src._rotation00;
- dst._rotation01 = src._rotation01;
- dst._rotation02 = src._rotation02;
- dst._rotation10 = src._rotation10;
- dst._rotation11 = src._rotation11;
- dst._rotation12 = src._rotation12;
- dst._rotation20 = src._rotation20;
- dst._rotation21 = src._rotation21;
- dst._rotation22 = src._rotation22;
- var dst1 = this._transform;
- var src1 = this._localTransform;
- dst1._positionX = src1._positionX;
- dst1._positionY = src1._positionY;
- dst1._positionZ = src1._positionZ;
- dst1._rotation00 = src1._rotation00;
- dst1._rotation01 = src1._rotation01;
- dst1._rotation02 = src1._rotation02;
- dst1._rotation10 = src1._rotation10;
- dst1._rotation11 = src1._rotation11;
- dst1._rotation12 = src1._rotation12;
- dst1._rotation20 = src1._rotation20;
- dst1._rotation21 = src1._rotation21;
- dst1._rotation22 = src1._rotation22;
- this._restitution = config.restitution;
- this._friction = config.friction;
- this._density = config.density;
- this._geom = config.geometry;
- this._collisionGroup = config.collisionGroup;
- this._collisionMask = config.collisionMask;
- this._contactCallback = config.contactCallback;
- this._aabb = new oimo.collision.geometry.Aabb();
- this._proxy = null;
- this.displacement = new oimo.common.Vec3();
- }
- getFriction() {
- return this._friction;
- }
- setFriction(friction) {
- this._friction = friction;
- }
- getRestitution() {
- return this._restitution;
- }
- setRestitution(restitution) {
- this._restitution = restitution;
- }
- getLocalTransform() {
- var _this = this._localTransform;
- var tf = new oimo.common.Transform();
- tf._positionX = _this._positionX;
- tf._positionY = _this._positionY;
- tf._positionZ = _this._positionZ;
- tf._rotation00 = _this._rotation00;
- tf._rotation01 = _this._rotation01;
- tf._rotation02 = _this._rotation02;
- tf._rotation10 = _this._rotation10;
- tf._rotation11 = _this._rotation11;
- tf._rotation12 = _this._rotation12;
- tf._rotation20 = _this._rotation20;
- tf._rotation21 = _this._rotation21;
- tf._rotation22 = _this._rotation22;
- return tf;
- }
- getLocalTransformTo(transform) {
- var transform1 = this._localTransform;
- transform._positionX = transform1._positionX;
- transform._positionY = transform1._positionY;
- transform._positionZ = transform1._positionZ;
- transform._rotation00 = transform1._rotation00;
- transform._rotation01 = transform1._rotation01;
- transform._rotation02 = transform1._rotation02;
- transform._rotation10 = transform1._rotation10;
- transform._rotation11 = transform1._rotation11;
- transform._rotation12 = transform1._rotation12;
- transform._rotation20 = transform1._rotation20;
- transform._rotation21 = transform1._rotation21;
- transform._rotation22 = transform1._rotation22;
- }
- getTransform() {
- var _this = this._transform;
- var tf = new oimo.common.Transform();
- tf._positionX = _this._positionX;
- tf._positionY = _this._positionY;
- tf._positionZ = _this._positionZ;
- tf._rotation00 = _this._rotation00;
- tf._rotation01 = _this._rotation01;
- tf._rotation02 = _this._rotation02;
- tf._rotation10 = _this._rotation10;
- tf._rotation11 = _this._rotation11;
- tf._rotation12 = _this._rotation12;
- tf._rotation20 = _this._rotation20;
- tf._rotation21 = _this._rotation21;
- tf._rotation22 = _this._rotation22;
- return tf;
- }
- getTransformTo(transform) {
- var transform1 = this._transform;
- transform._positionX = transform1._positionX;
- transform._positionY = transform1._positionY;
- transform._positionZ = transform1._positionZ;
- transform._rotation00 = transform1._rotation00;
- transform._rotation01 = transform1._rotation01;
- transform._rotation02 = transform1._rotation02;
- transform._rotation10 = transform1._rotation10;
- transform._rotation11 = transform1._rotation11;
- transform._rotation12 = transform1._rotation12;
- transform._rotation20 = transform1._rotation20;
- transform._rotation21 = transform1._rotation21;
- transform._rotation22 = transform1._rotation22;
- }
- setLocalTransform(transform) {
- var _this = this._localTransform;
- _this._positionX = transform._positionX;
- _this._positionY = transform._positionY;
- _this._positionZ = transform._positionZ;
- _this._rotation00 = transform._rotation00;
- _this._rotation01 = transform._rotation01;
- _this._rotation02 = transform._rotation02;
- _this._rotation10 = transform._rotation10;
- _this._rotation11 = transform._rotation11;
- _this._rotation12 = transform._rotation12;
- _this._rotation20 = transform._rotation20;
- _this._rotation21 = transform._rotation21;
- _this._rotation22 = transform._rotation22;
- if(this._rigidBody != null) {
- var _this1 = this._rigidBody;
- _this1.updateMass();
- var s = _this1._shapeList;
- while(s != null) {
- var n = s._next;
- var dst = s._ptransform;
- var src1 = s._localTransform;
- var src2 = _this1._ptransform;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
- __tmp__01 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
- __tmp__02 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
- __tmp__10 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
- __tmp__11 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
- __tmp__12 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
- __tmp__20 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
- __tmp__21 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
- __tmp__22 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
- dst._rotation00 = __tmp__00;
- dst._rotation01 = __tmp__01;
- dst._rotation02 = __tmp__02;
- dst._rotation10 = __tmp__10;
- dst._rotation11 = __tmp__11;
- dst._rotation12 = __tmp__12;
- dst._rotation20 = __tmp__20;
- dst._rotation21 = __tmp__21;
- dst._rotation22 = __tmp__22;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
- __tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
- __tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
- dst._positionX = __tmp__X;
- dst._positionY = __tmp__Y;
- dst._positionZ = __tmp__Z;
- dst._positionX += src2._positionX;
- dst._positionY += src2._positionY;
- dst._positionZ += src2._positionZ;
- var dst1 = s._transform;
- var src11 = s._localTransform;
- var src21 = _this1._transform;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
- __tmp__011 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
- __tmp__021 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
- __tmp__101 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
- __tmp__111 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
- __tmp__121 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
- __tmp__201 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
- __tmp__211 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
- __tmp__221 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
- dst1._rotation00 = __tmp__001;
- dst1._rotation01 = __tmp__011;
- dst1._rotation02 = __tmp__021;
- dst1._rotation10 = __tmp__101;
- dst1._rotation11 = __tmp__111;
- dst1._rotation12 = __tmp__121;
- dst1._rotation20 = __tmp__201;
- dst1._rotation21 = __tmp__211;
- dst1._rotation22 = __tmp__221;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
- __tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
- __tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
- dst1._positionX = __tmp__X1;
- dst1._positionY = __tmp__Y1;
- dst1._positionZ = __tmp__Z1;
- dst1._positionX += src21._positionX;
- dst1._positionY += src21._positionY;
- dst1._positionZ += src21._positionZ;
- var min;
- var minX;
- var minY;
- var minZ;
- var max;
- var maxX;
- var maxY;
- var maxZ;
- s._geom._computeAabb(s._aabb,s._ptransform);
- minX = s._aabb._minX;
- minY = s._aabb._minY;
- minZ = s._aabb._minZ;
- maxX = s._aabb._maxX;
- maxY = s._aabb._maxY;
- maxZ = s._aabb._maxZ;
- s._geom._computeAabb(s._aabb,s._transform);
- s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
- s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
- s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
- s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
- s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
- s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
- if(s._proxy != null) {
- var d;
- var dX;
- var dY;
- var dZ;
- dX = s._transform._positionX - s._ptransform._positionX;
- dY = s._transform._positionY - s._ptransform._positionY;
- dZ = s._transform._positionZ - s._ptransform._positionZ;
- var v = s.displacement;
- v.x = dX;
- v.y = dY;
- v.z = dZ;
- s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
- }
- s = n;
- }
- }
- }
- getDensity() {
- return this._density;
- }
- setDensity(density) {
- this._density = density;
- if(this._rigidBody != null) {
- var _this = this._rigidBody;
- _this.updateMass();
- var s = _this._shapeList;
- while(s != null) {
- var n = s._next;
- var dst = s._ptransform;
- var src1 = s._localTransform;
- var src2 = _this._ptransform;
- var __tmp__00;
- var __tmp__01;
- var __tmp__02;
- var __tmp__10;
- var __tmp__11;
- var __tmp__12;
- var __tmp__20;
- var __tmp__21;
- var __tmp__22;
- __tmp__00 = src2._rotation00 * src1._rotation00 + src2._rotation01 * src1._rotation10 + src2._rotation02 * src1._rotation20;
- __tmp__01 = src2._rotation00 * src1._rotation01 + src2._rotation01 * src1._rotation11 + src2._rotation02 * src1._rotation21;
- __tmp__02 = src2._rotation00 * src1._rotation02 + src2._rotation01 * src1._rotation12 + src2._rotation02 * src1._rotation22;
- __tmp__10 = src2._rotation10 * src1._rotation00 + src2._rotation11 * src1._rotation10 + src2._rotation12 * src1._rotation20;
- __tmp__11 = src2._rotation10 * src1._rotation01 + src2._rotation11 * src1._rotation11 + src2._rotation12 * src1._rotation21;
- __tmp__12 = src2._rotation10 * src1._rotation02 + src2._rotation11 * src1._rotation12 + src2._rotation12 * src1._rotation22;
- __tmp__20 = src2._rotation20 * src1._rotation00 + src2._rotation21 * src1._rotation10 + src2._rotation22 * src1._rotation20;
- __tmp__21 = src2._rotation20 * src1._rotation01 + src2._rotation21 * src1._rotation11 + src2._rotation22 * src1._rotation21;
- __tmp__22 = src2._rotation20 * src1._rotation02 + src2._rotation21 * src1._rotation12 + src2._rotation22 * src1._rotation22;
- dst._rotation00 = __tmp__00;
- dst._rotation01 = __tmp__01;
- dst._rotation02 = __tmp__02;
- dst._rotation10 = __tmp__10;
- dst._rotation11 = __tmp__11;
- dst._rotation12 = __tmp__12;
- dst._rotation20 = __tmp__20;
- dst._rotation21 = __tmp__21;
- dst._rotation22 = __tmp__22;
- var __tmp__X;
- var __tmp__Y;
- var __tmp__Z;
- __tmp__X = src2._rotation00 * src1._positionX + src2._rotation01 * src1._positionY + src2._rotation02 * src1._positionZ;
- __tmp__Y = src2._rotation10 * src1._positionX + src2._rotation11 * src1._positionY + src2._rotation12 * src1._positionZ;
- __tmp__Z = src2._rotation20 * src1._positionX + src2._rotation21 * src1._positionY + src2._rotation22 * src1._positionZ;
- dst._positionX = __tmp__X;
- dst._positionY = __tmp__Y;
- dst._positionZ = __tmp__Z;
- dst._positionX += src2._positionX;
- dst._positionY += src2._positionY;
- dst._positionZ += src2._positionZ;
- var dst1 = s._transform;
- var src11 = s._localTransform;
- var src21 = _this._transform;
- var __tmp__001;
- var __tmp__011;
- var __tmp__021;
- var __tmp__101;
- var __tmp__111;
- var __tmp__121;
- var __tmp__201;
- var __tmp__211;
- var __tmp__221;
- __tmp__001 = src21._rotation00 * src11._rotation00 + src21._rotation01 * src11._rotation10 + src21._rotation02 * src11._rotation20;
- __tmp__011 = src21._rotation00 * src11._rotation01 + src21._rotation01 * src11._rotation11 + src21._rotation02 * src11._rotation21;
- __tmp__021 = src21._rotation00 * src11._rotation02 + src21._rotation01 * src11._rotation12 + src21._rotation02 * src11._rotation22;
- __tmp__101 = src21._rotation10 * src11._rotation00 + src21._rotation11 * src11._rotation10 + src21._rotation12 * src11._rotation20;
- __tmp__111 = src21._rotation10 * src11._rotation01 + src21._rotation11 * src11._rotation11 + src21._rotation12 * src11._rotation21;
- __tmp__121 = src21._rotation10 * src11._rotation02 + src21._rotation11 * src11._rotation12 + src21._rotation12 * src11._rotation22;
- __tmp__201 = src21._rotation20 * src11._rotation00 + src21._rotation21 * src11._rotation10 + src21._rotation22 * src11._rotation20;
- __tmp__211 = src21._rotation20 * src11._rotation01 + src21._rotation21 * src11._rotation11 + src21._rotation22 * src11._rotation21;
- __tmp__221 = src21._rotation20 * src11._rotation02 + src21._rotation21 * src11._rotation12 + src21._rotation22 * src11._rotation22;
- dst1._rotation00 = __tmp__001;
- dst1._rotation01 = __tmp__011;
- dst1._rotation02 = __tmp__021;
- dst1._rotation10 = __tmp__101;
- dst1._rotation11 = __tmp__111;
- dst1._rotation12 = __tmp__121;
- dst1._rotation20 = __tmp__201;
- dst1._rotation21 = __tmp__211;
- dst1._rotation22 = __tmp__221;
- var __tmp__X1;
- var __tmp__Y1;
- var __tmp__Z1;
- __tmp__X1 = src21._rotation00 * src11._positionX + src21._rotation01 * src11._positionY + src21._rotation02 * src11._positionZ;
- __tmp__Y1 = src21._rotation10 * src11._positionX + src21._rotation11 * src11._positionY + src21._rotation12 * src11._positionZ;
- __tmp__Z1 = src21._rotation20 * src11._positionX + src21._rotation21 * src11._positionY + src21._rotation22 * src11._positionZ;
- dst1._positionX = __tmp__X1;
- dst1._positionY = __tmp__Y1;
- dst1._positionZ = __tmp__Z1;
- dst1._positionX += src21._positionX;
- dst1._positionY += src21._positionY;
- dst1._positionZ += src21._positionZ;
- var min;
- var minX;
- var minY;
- var minZ;
- var max;
- var maxX;
- var maxY;
- var maxZ;
- s._geom._computeAabb(s._aabb,s._ptransform);
- minX = s._aabb._minX;
- minY = s._aabb._minY;
- minZ = s._aabb._minZ;
- maxX = s._aabb._maxX;
- maxY = s._aabb._maxY;
- maxZ = s._aabb._maxZ;
- s._geom._computeAabb(s._aabb,s._transform);
- s._aabb._minX = minX < s._aabb._minX ? minX : s._aabb._minX;
- s._aabb._minY = minY < s._aabb._minY ? minY : s._aabb._minY;
- s._aabb._minZ = minZ < s._aabb._minZ ? minZ : s._aabb._minZ;
- s._aabb._maxX = maxX > s._aabb._maxX ? maxX : s._aabb._maxX;
- s._aabb._maxY = maxY > s._aabb._maxY ? maxY : s._aabb._maxY;
- s._aabb._maxZ = maxZ > s._aabb._maxZ ? maxZ : s._aabb._maxZ;
- if(s._proxy != null) {
- var d;
- var dX;
- var dY;
- var dZ;
- dX = s._transform._positionX - s._ptransform._positionX;
- dY = s._transform._positionY - s._ptransform._positionY;
- dZ = s._transform._positionZ - s._ptransform._positionZ;
- var v = s.displacement;
- v.x = dX;
- v.y = dY;
- v.z = dZ;
- s._rigidBody._world._broadPhase.moveProxy(s._proxy,s._aabb,s.displacement);
- }
- s = n;
- }
- }
- }
- getAabb() {
- return this._aabb.clone();
- }
- getAabbTo(aabb) {
- aabb.copyFrom(this._aabb);
- }
- getGeometry() {
- return this._geom;
- }
- getRigidBody() {
- return this._rigidBody;
- }
- getCollisionGroup() {
- return this._collisionGroup;
- }
- setCollisionGroup(collisionGroup) {
- this._collisionGroup = collisionGroup;
- }
- getCollisionMask() {
- return this._collisionMask;
- }
- setCollisionMask(collisionMask) {
- this._collisionMask = collisionMask;
- }
- getContactCallback() {
- return this._contactCallback;
- }
- setContactCallback(callback) {
- this._contactCallback = callback;
- }
- getPrev() {
- return this._prev;
- }
- getNext() {
- return this._next;
- }
- }
- oimo.dynamics.rigidbody.ShapeConfig = class oimo_dynamics_rigidbody_ShapeConfig {
- constructor() {
- this.position = new oimo.common.Vec3();
- this.rotation = new oimo.common.Mat3();
- this.friction = oimo.common.Setting.defaultFriction;
- this.restitution = oimo.common.Setting.defaultRestitution;
- this.density = oimo.common.Setting.defaultDensity;
- this.collisionGroup = oimo.common.Setting.defaultCollisionGroup;
- this.collisionMask = oimo.common.Setting.defaultCollisionMask;
- this.geometry = null;
- this.contactCallback = null;
- }
- }
- if(!oimo.m) oimo.m = {};
- oimo.m.M = class oimo_m_M {
- }
- oimo.collision.broadphase.BroadPhaseType._BRUTE_FORCE = 1;
- oimo.collision.broadphase.BroadPhaseType._BVH = 2;
- oimo.collision.broadphase.BroadPhaseType.BRUTE_FORCE = 1;
- oimo.collision.broadphase.BroadPhaseType.BVH = 2;
- oimo.collision.broadphase.bvh.BvhInsertionStrategy.SIMPLE = 0;
- oimo.collision.broadphase.bvh.BvhInsertionStrategy.MINIMIZE_SURFACE_AREA = 1;
- oimo.collision.geometry.GeometryType._SPHERE = 0;
- oimo.collision.geometry.GeometryType._BOX = 1;
- oimo.collision.geometry.GeometryType._CYLINDER = 2;
- oimo.collision.geometry.GeometryType._CONE = 3;
- oimo.collision.geometry.GeometryType._CAPSULE = 4;
- oimo.collision.geometry.GeometryType._CONVEX_HULL = 5;
- oimo.collision.geometry.GeometryType._CONVEX_MIN = 0;
- oimo.collision.geometry.GeometryType._CONVEX_MAX = 5;
- oimo.collision.geometry.GeometryType.SPHERE = 0;
- oimo.collision.geometry.GeometryType.BOX = 1;
- oimo.collision.geometry.GeometryType.CYLINDER = 2;
- oimo.collision.geometry.GeometryType.CONE = 3;
- oimo.collision.geometry.GeometryType.CAPSULE = 4;
- oimo.collision.geometry.GeometryType.CONVEX_HULL = 5;
- oimo.collision.narrowphase.detector.BoxBoxDetector.EDGE_BIAS_MULT = 1.0;
- oimo.collision.narrowphase.detector.gjkepa.EpaPolyhedronState.OK = 0;
- oimo.collision.narrowphase.detector.gjkepa.EpaPolyhedronState.INVALID_TRIANGLE = 1;
- oimo.collision.narrowphase.detector.gjkepa.EpaPolyhedronState.NO_ADJACENT_PAIR_INDEX = 2;
- oimo.collision.narrowphase.detector.gjkepa.EpaPolyhedronState.NO_ADJACENT_TRIANGLE = 3;
- oimo.collision.narrowphase.detector.gjkepa.EpaPolyhedronState.EDGE_LOOP_BROKEN = 4;
- oimo.collision.narrowphase.detector.gjkepa.EpaPolyhedronState.NO_OUTER_TRIANGLE = 5;
- oimo.collision.narrowphase.detector.gjkepa.EpaPolyhedronState.TRIANGLE_INVISIBLE = 6;
- oimo.collision.narrowphase.detector.gjkepa.EpaTriangle.count = 0;
- oimo.common.Vec3.numCreations = 0;
- oimo.common.Setting.defaultFriction = 0.2;
- oimo.common.Setting.defaultRestitution = 0.2;
- oimo.common.Setting.defaultDensity = 1;
- oimo.common.Setting.defaultCollisionGroup = 1;
- oimo.common.Setting.defaultCollisionMask = 1;
- oimo.common.Setting.maxTranslationPerStep = 20;
- oimo.common.Setting.maxRotationPerStep = 3.14159265358979;
- oimo.common.Setting.bvhProxyPadding = 0.1;
- oimo.common.Setting.bvhIncrementalCollisionThreshold = 0.45;
- oimo.common.Setting.defaultGJKMargin = 0.05;
- oimo.common.Setting.enableGJKCaching = true;
- oimo.common.Setting.maxEPAVertices = 128;
- oimo.common.Setting.maxEPAPolyhedronFaces = 128;
- oimo.common.Setting.contactEnableBounceThreshold = 0.5;
- oimo.common.Setting.velocityBaumgarte = 0.2;
- oimo.common.Setting.positionSplitImpulseBaumgarte = 0.4;
- oimo.common.Setting.positionNgsBaumgarte = 1.0;
- oimo.common.Setting.contactUseAlternativePositionCorrectionAlgorithmDepthThreshold = 0.05;
- oimo.common.Setting.defaultContactPositionCorrectionAlgorithm = 0;
- oimo.common.Setting.alternativeContactPositionCorrectionAlgorithm = 1;
- oimo.common.Setting.contactPersistenceThreshold = 0.05;
- oimo.common.Setting.maxManifoldPoints = 4;
- oimo.common.Setting.defaultJointConstraintSolverType = 0;
- oimo.common.Setting.defaultJointPositionCorrectionAlgorithm = 0;
- oimo.common.Setting.jointWarmStartingFactorForBaungarte = 0.8;
- oimo.common.Setting.jointWarmStartingFactor = 0.95;
- oimo.common.Setting.minSpringDamperDampingRatio = 1e-6;
- oimo.common.Setting.minRagdollMaxSwingAngle = 1e-6;
- oimo.common.Setting.maxJacobianRows = 6;
- oimo.common.Setting.directMlcpSolverEps = 1e-9;
- oimo.common.Setting.islandInitialRigidBodyArraySize = 128;
- oimo.common.Setting.islandInitialConstraintArraySize = 128;
- oimo.common.Setting.sleepingVelocityThreshold = 0.2;
- oimo.common.Setting.sleepingAngularVelocityThreshold = 0.5;
- oimo.common.Setting.sleepingTimeThreshold = 1.0;
- oimo.common.Setting.disableSleeping = false;
- oimo.common.Setting.linearSlop = 0.005;
- oimo.common.Setting.angularSlop = 0.0174532925199432781;
- oimo.collision.narrowphase.detector.gjkepa.GjkEpa.instance = new oimo.collision.narrowphase.detector.gjkepa.GjkEpa();
- oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState._SUCCEEDED = 0;
- oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState._GJK_FAILED_TO_MAKE_TETRAHEDRON = 1;
- oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState._GJK_DID_NOT_CONVERGE = 2;
- oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState._EPA_FAILED_TO_INIT = 257;
- oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState._EPA_FAILED_TO_ADD_VERTEX = 258;
- oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState._EPA_DID_NOT_CONVERGE = 259;
- oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.SUCCEEDED = 0;
- oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.GJK_FAILED_TO_MAKE_TETRAHEDRON = 1;
- oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.GJK_DID_NOT_CONVERGE = 2;
- oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.EPA_FAILED_TO_INIT = 257;
- oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.EPA_FAILED_TO_ADD_VERTEX = 258;
- oimo.collision.narrowphase.detector.gjkepa.GjkEpaResultState.EPA_DID_NOT_CONVERGE = 259;
- oimo.common.Mat3.numCreations = 0;
- oimo.common.Mat4.numCreations = 0;
- oimo.common.MathUtil.POSITIVE_INFINITY = 1e65536;
- oimo.common.MathUtil.NEGATIVE_INFINITY = -1e65536;
- oimo.common.MathUtil.PI = 3.14159265358979;
- oimo.common.MathUtil.TWO_PI = 6.28318530717958;
- oimo.common.MathUtil.HALF_PI = 1.570796326794895;
- oimo.common.MathUtil.TO_RADIANS = 0.0174532925199432781;
- oimo.common.MathUtil.TO_DEGREES = 57.2957795130823797;
- oimo.common.Quat.numCreations = 0;
- oimo.dynamics.common.DebugDraw.SPHERE_PHI_DIVISION = 8;
- oimo.dynamics.common.DebugDraw.SPHERE_THETA_DIVISION = 4;
- oimo.dynamics.common.DebugDraw.CIRCLE_THETA_DIVISION = 8;
- oimo.dynamics.common.Performance.broadPhaseCollisionTime = 0;
- oimo.dynamics.common.Performance.narrowPhaseCollisionTime = 0;
- oimo.dynamics.common.Performance.dynamicsTime = 0;
- oimo.dynamics.common.Performance.totalTime = 0;
- oimo.dynamics.constraint.PositionCorrectionAlgorithm._BAUMGARTE = 0;
- oimo.dynamics.constraint.PositionCorrectionAlgorithm._SPLIT_IMPULSE = 1;
- oimo.dynamics.constraint.PositionCorrectionAlgorithm._NGS = 2;
- oimo.dynamics.constraint.PositionCorrectionAlgorithm.BAUMGARTE = 0;
- oimo.dynamics.constraint.PositionCorrectionAlgorithm.SPLIT_IMPULSE = 1;
- oimo.dynamics.constraint.PositionCorrectionAlgorithm.NGS = 2;
- oimo.dynamics.constraint.info.JacobianRow.BIT_LINEAR_SET = 1;
- oimo.dynamics.constraint.info.JacobianRow.BIT_ANGULAR_SET = 2;
- oimo.dynamics.constraint.joint.JointType._SPHERICAL = 0;
- oimo.dynamics.constraint.joint.JointType._REVOLUTE = 1;
- oimo.dynamics.constraint.joint.JointType._CYLINDRICAL = 2;
- oimo.dynamics.constraint.joint.JointType._PRISMATIC = 3;
- oimo.dynamics.constraint.joint.JointType._UNIVERSAL = 4;
- oimo.dynamics.constraint.joint.JointType._RAGDOLL = 5;
- oimo.dynamics.constraint.joint.JointType._GENERIC = 6;
- oimo.dynamics.constraint.joint.JointType.SPHERICAL = 0;
- oimo.dynamics.constraint.joint.JointType.REVOLUTE = 1;
- oimo.dynamics.constraint.joint.JointType.CYLINDRICAL = 2;
- oimo.dynamics.constraint.joint.JointType.PRISMATIC = 3;
- oimo.dynamics.constraint.joint.JointType.UNIVERSAL = 4;
- oimo.dynamics.constraint.joint.JointType.RAGDOLL = 5;
- oimo.dynamics.constraint.joint.JointType.GENERIC = 6;
- oimo.dynamics.constraint.solver.ConstraintSolverType._ITERATIVE = 0;
- oimo.dynamics.constraint.solver.ConstraintSolverType._DIRECT = 1;
- oimo.dynamics.constraint.solver.ConstraintSolverType.ITERATIVE = 0;
- oimo.dynamics.constraint.solver.ConstraintSolverType.DIRECT = 1;
- oimo.dynamics.rigidbody.RigidBodyType._DYNAMIC = 0;
- oimo.dynamics.rigidbody.RigidBodyType._STATIC = 1;
- oimo.dynamics.rigidbody.RigidBodyType._KINEMATIC = 2;
- oimo.dynamics.rigidbody.RigidBodyType.DYNAMIC = 0;
- oimo.dynamics.rigidbody.RigidBodyType.STATIC = 1;
- oimo.dynamics.rigidbody.RigidBodyType.KINEMATIC = 2;
- export {oimo};
|