From 9c18ba14b9d88ca19bda9a209a2687592a883828 Mon Sep 17 00:00:00 2001 From: Robin Engman Date: Wed, 22 Jan 2014 15:29:50 +0100 Subject: [PATCH 01/24] Fixed kinetic calculation --- Code/GamePhysics/Implementation/PhysicsAPI_Impl.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Code/GamePhysics/Implementation/PhysicsAPI_Impl.cpp b/Code/GamePhysics/Implementation/PhysicsAPI_Impl.cpp index f70841a7..bfef1a61 100644 --- a/Code/GamePhysics/Implementation/PhysicsAPI_Impl.cpp +++ b/Code/GamePhysics/Implementation/PhysicsAPI_Impl.cpp @@ -95,12 +95,15 @@ namespace // } + Float kineticEnergyPBefore = Oyster::Physics3D::Formula::LinearKineticEnergy( protoState.GetMass(), protoState.GetLinearMomentum().xyz/protoState.GetMass() ); // protoState.ApplyForwarding( forwardedDeltaPos, forwardedDeltaAxis ); protoState.ApplyImpulse( bounce, worldPointOfContact, normal ); proto->SetState( protoState ); - proto->CallSubscription_CollisionResponse( deuter, protoState.GetLinearMomentum().GetMagnitude()/(protoState.GetMass() + protoState.GetLinearMomentum().GetMagnitude())); + Float kineticEnergyPAFter = Oyster::Physics3D::Formula::LinearKineticEnergy( protoState.GetMass(), (protoState.GetLinearMomentum().xyz + protoState.GetLinearImpulse().xyz)/protoState.GetMass() ); + + proto->CallSubscription_CollisionResponse( deuter, kineticEnergyPBefore - kineticEnergyPAFter ); } break; From 76e4b23f195bb6447bb87f308f93544f6b8e6c6b Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Thu, 23 Jan 2014 14:54:53 +0100 Subject: [PATCH 02/24] Added documentation Mathematical exercise on how to convert angular momentum to angular velocity --- .../angular momentum to angular velocity.odt | Bin 0 -> 174508 bytes .../angular_momentum_to_angular_velocity.pdf | Bin 0 -> 112800 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Code/Dokumentation/Other/angular momentum to angular velocity.odt create mode 100644 Code/Dokumentation/Other/angular_momentum_to_angular_velocity.pdf diff --git a/Code/Dokumentation/Other/angular momentum to angular velocity.odt b/Code/Dokumentation/Other/angular momentum to angular velocity.odt new file mode 100644 index 0000000000000000000000000000000000000000..3abd5446fb580dce6e6d257641319a21c934ffc5 GIT binary patch literal 174508 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 -J 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 literal 0 HcmV?d00001 diff --git a/Code/Dokumentation/Other/angular_momentum_to_angular_velocity.pdf b/Code/Dokumentation/Other/angular_momentum_to_angular_velocity.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c6facc1e14d758e8a850a2c8b4531bc4e49e8f8b GIT binary patch literal 112800 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 sQ~v4W{aN6pbd52e(*hRAq1FtwxJ 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 z zPBnVRqls#pqgfksT%I}DCE2M}cXxm@^nK`LwYPyCnYK~OY(`qMhQmkkb`=*;E-_D$ zFAGN}SQZ?qjs*>U0+5T!ydA{$fFYZ2$9-qtpeR@@now;|Lv$A)C_K}hV8XPpb+x@~ zfaw6S$_B?d2J!4Zw=w3mup02U>X%V$Pag!jt91$oARiwVKC-oc-c; zSTZ>9cVy0XMz$%X*cC$FlRBY-4iXlwR}!jE?9G)K=CYIqk)k9}kH*C6N0>C>ePk2V*x18`i0%#ObCBQ^+FP2`uQs4J3I2m6NpHWIlIf684 z`K&5lNr#8+hvI6VW$ zdlru+nDZ#OUyJsjCjLB&w}%t=b2f-FE!0X{7) zvc&pO!Y>z_CybA(Hpfs-67jb^lww~3*=60BvXYW4_R^Hq^U(g&K!U5I>Zkkx!}a7eMH+8B)__?_#22dR}xlDfRzM^dqvg`79b ziHA9E;fuo(%6kwC`=lY24dJM+Doer=bp3T_;((AiaqqJjqQt9n_^Hz8BiOq`ct<4^ zcX7sYgWxG8<+-jkLA)k0xmoj0a-hp_eA$^YOqDIDv2T9&G7zY50g>*r5;g|eAR|b4aqff|Rgvy&}x(ZKQ_W@aJVL&(_ zCEbk5i=O=x-&j-#OHw@FvlIO~ZP_5ZN2co&C*9V`V{kp@anOs&6XJPh7KTZa>9pWl zEx%Vv`ZT*-cwlfK19s?~x$IRe1!xgoI~t!^uT9S=*(H!l3`ea@z5+G?950NloFq^z z%iJG^+)#hr6U5CqbrT|<7KQ}j*Pv8D-R#;g0I->l#G5_bW5-fpu#97*0 z8pDdb$O1WOA3g$t_huZgpLcDqE-zXw7_O~QhTPTRup%E{K)3H+8Y01AnYZNcficZ2 z2w$oD9wM?SV)Lx{n9?+B_#Kr1ot6T)maI7E*WUnjIo4j_w}K90W*mziq5akL zmK_Fm$ROuNuW5_iL5D#DmcFMY3>Fh@Pj^b=>yjPm!rq>$E*gGf-Te zUkPuqDb;^1&v8D`J+Puv0~Xo<7u!Rx293k(?KBNU`n+}JSKZ=pTTk2Hx__-yZJmJS)>*zA>xOLNL z`7xGNau15@XDfda9KB$~CfWjr7b*g-o)K4X3O0qGy?&D0{E{34P$kHa`U9zqK2-5O zjavKngrdZ_Q4;}^DodhNlhzr_b`ZxH4f{sh2#3U$sIy#Vh(=XQ*_ZOoz}GS@xlC{2 zIqY7!gm3poS913XPxUWYZ@io^hjS(@7>w{U^LRgs?dA=%ixh{i@)AXj)97yBbo;NX zvVqvY5`}x31F>f+*8#`5CIG&@3dSyBx^pHbY2ZK(Fn;<_#Bm|KLuFJ&%a;crY;)YgJ!@Z4k!)x)tAu5_mB;2OBB!vjs;HXx4_+g z*GO9f);c~(2As6Y=Gap%)w}A8NFiz{R+Ztwks|MpJ(qn3Y7pf$d%$It6jwZv3ve!k zyzcODbE7LNW}7f`b{nG_1^VQPl2q3ozt<5+Y& zXc27^0TCo|l{XTeKx2>_@%*;VK&@y zY9xTFXj}83Pl2dg=!Q5VQUJ{ml`V5YJ}#&O7K-9jo4AagJ5#ZRPpNNRg zV#R~452#K9d)7yFg$4e<&Mz=_Z1VPDwPhm)tGyigBrbZJ=%VwRfi7xbS7YFV`&$?u zJA%YJyyhpYo*vqsws!e_93WaRP%Vv{&jy}#k50vz&COZf_Oh$_Ud|(-ZaY8LtF5NG z%_>wrx)ujKgUF9bs0z`q_ei4M@xyNTeY#ldX~H1Vb{n3rtD3(Yc1;L!A(#l?C#s*` zsyM3?Gnt=sd@&hp8iTRXQyv58G7=I9XO8LNO{RYfp#314S!)wWNgkKeE8!=f&2P;k zCgj-A=4gXAVguKuMXAEr@UF#iu}9bd22?uK0_H71CEXOy;M|nX;9S-Taq*jY-}-qS zKNL{46dd%@&4uHvJs5(Ox|BgiQ&UB4LNw|BdPG07Esd1B|F%o+|46%HFk1?hNgn57 zSdxCtFfq&O6mqb`WrRS#xAzP5@WCJC(UABMdgA%nIi@>A6YketP8k zg_&HX)8<7p=l;Un>l{!+VLkpuZ}DY`RiWn*$}E>ugxhT_^7S1;DzmWte3PXu zSVdXL1@Qzn)-6)R_3(a;nKQ(|*6;X~Sh%~Q;v}2p>lF05;;)b>W#@Y7oGDoWKyzF? ztX;T$4m~#>RKpkopHWB&y+JH$I~$!tm~##uKMcBAglq1gs4Q4*bn2Y`eDtix)@@Dd zyogr*jBj;nWEbp07_o%sGfbXLU@diHqHI~cwv+G&yuuP&jtC-^JMVN6)rQ5>u z%mK^T?H?I4J>EKSm^VA+06nAu$7d3w84%rYFh;gGpMi70vt(4m)-z?~YFM+O;IyBLAK@KkvOOK? zjMA1Vvv0QJ_5wOJ_yx_ul1Rl01vNlXFa_&ooX2h9SaVX z&Xu;Ex8D|NkCWWTZtN204e}C=AV?P&gd3Pr#~Rl~E~-fTGsydb33bh^J^j`SH;mju z2hOOMH0?k5+`c~G@3}EM7e9(zV=D}5{RSgOVVoS21*wVosZfi6a58i*1P=0~|6sITHLIM!_6kCZxsFO4QLMgM^5 z0Nkl?n+gU!#=Uwe1b67gChhDKQ}xlc#0+z#)m*E^tIv7Wj!#+0)I`Q5Z;SAe`Xu}z z!*btqxj(2hgxlt^i;&_KG_YAqfuRLHkL>C4>Ex9Yz~wKz`{{i-W9yvuP6@25(t?2{ zz=4<8tN6llhWM>!e^3W|BogldzqyY%EA_ns8f4qUS<4x^GT>2UaRf;`;HJPK%5}uD zUg>&49hNVw8U`3DblVo-8f;aXXJ_X5_xpZY*J$OA`c}KVi`14CYxZIvU|A4#sOCV0lVuMYROQPjVUM=#?RP9Lg=ak65&kp=3h0k^FKSzKfA_c6pNxY zE8V(m+l@YBezT>o-6?OR!h-ZGNTfxX)k7(3gWYo?i=%B@lwQRB_=gonAVPG`sa+R4XAD z_QfP0LWL=xC}?uo2H?%h0IUqN{yM~ZCp;_Oak9SiCreQ3RX}!F#@w^Z)f8?~xli`> z=cXIwbWX!pwy}W}Bb`qNlAe?m9ry%CT^C~W0klGilGEFbwk+AG-OM#dc5G4lU)0zR z5DQiDkGrP7tC2pWDIPjs2e?nlGk6%)?T}3^`N@x+8&|?%Y5~d9C(aka&|R9L#a%?v z#gZ7^w9!TqZWCHuMA@-V$@bV~I{WJqBNfSlT#g8Ty4!&sBttpswfIfa)JmnAl#aJm zwyQ6Mv;~Z|I=i(tQ>wJHiM6<7CLIvnrYq8Kj+ve8lv@dwYibT`tPGtVF`j?Ts_a$; zsNt*#UZ*)l8^hcLAs(FJt?+fCG}<=D@G?0A1u~8;dlnq6!|JRvKi$NunAup!_})pA z=%km8A6{!uHy*rbA0X-*CB{6MwQPo)C0r+sB5;;pxF5{A^H_E9MZ@zG8x!xu6}@!J zC`p$4g*S$k2Dxwj55f%F<0qvGhv9R@wlI@UchnEt*IBp6LtK*#K~3N2u~V*-H0kUX zC_Eh0N;Nl|%WIvSlu9+%m)GZ)*Vk4znk@n~=cltP%{ONjR&y)O&rQxZmRIOyjmA=nk>?w&PA<-l*Vfnr%p|Gyd|&268du%! z4BH!9oAVva>>lS`4-Y0Umktpnh7{=)XV=?GJywxCmJi0yQ&sPeUq&V(&R6g9&r?^} z*i+mJjz?47T34CtnNLeooXpL-J&$Wg4&w#boQ~8|oleL&gKs$EZSYI3O8mp zX6Jo?$5&PFDlQxmEPG-VB~sn)Di$uv&)eI}DPIQGpHxdXd@L;W6tusU=BA3bwy>)? znxD*9W4EqU;m4_V)p@KIL}F4J>vJxLOjuyH-se1!x}GjXC_fUMTYT0zRBZGJZLY8M z3Js6hWq*5k5zv5m3JzVVj^9`)A4^z2UosUxtgygLAE!h{&t|2)Td>3wo(qx0-JD*n z&sDNASsxw?XR|2B)Ie4<2C*zjcdur;HSiw&%`yd5$tUa{WVJe6qi~cIlHZ>o6L#fI zgY%}$63T#wft2y|1?TPSw~t(31$Fw~rka4aIb5Ekd}=`;hBd&>l)5_Uby!>doDR?jv90+OKKY{z zDKwBTxdUDrLT-xy4zU0-(9Q#&FFTsOsmrL(zbl%!yib8qL)&XoW~@1~4gOd(FINQ5 z9QH=00=M&9G0b1b#L@a^B3RV(F>Emp`04tDd=*=ma~`S++0g-)HLFG9L*6jaJ0gHj z(a89e{43t}#50}*$)~iU#4}JL!Z8y!aQs6kZLJ8e8MMym(t#BxB-_ge0*)H^lh7JJ zMf2{-;Y`N!!RnvE>QxNDuEPaG>a11q?!Sw_D3`E_MJnV&9J7cxj-T^M9ocQ+eRsc# zjs}q>AR8*^gXQ1{&W?Q-2L2h$1MF*e7KRN!l+~;8D}RRN9e`si_i~m#1kTlP=$L9* z>t65$i6g`wK{U&1`8dNBk`i$GCYUaIUDfP@;v@c<+G6h)E&(IF!P_ zjzW09zBr;_0+F6eW{$=0xN(3exx}=#j;W7sIo?^{Nu|94O|S~6XAVJc-DM1VZM&Qp zBp4;as?~Eox#YL5`%BmENLD6-+E9w&Oi*V)^4MeaU4I|IG(2%A5C3$Q{Wgc;@8taA z;VkfNmn`#Vi4f={LtPKINko^q;gyCre-E zd6`j#U=)b*b?@NnshauV=>8)=X+(sV1FF`PBL%7!i1NCBZUQY~oLALDFAwA0#d6cS zFkeae+$g=Um^Ul!szXpV1VJ2+;HqC4>Qu~KrPP1e!Q0`$gRY&4fGawbJ1%r-}k#;V2b3E&cust@S z+c`)gm{#F<9Os-nuMt@A!&#S$B+uQro1+_Q9^B-Sq$DnE2>3}D3(Y6N zP8pX$)VA~J)muKin^*}LHyW23JFP3D5UTLNr*1SxP449UW*&*!9$$_-u3XSlj=j>m zibn;4I>TBg=x0M+pVsR()qh70buemJ2^c$C&c=Gm>HKJW3u~9c{wVsm!W8$j)1br$FJ7d;eY_f7!i$d z^@)2PVlN@iyCiNqPGBJVSs;yJ@gvUYDTtldBBd_4xms1+p?hCN@`SM0VS2Th4fJ+|op_5M@Acn)eM+~uu(GR@d=1**=h zU*;uiY}vNtR-!n__FrcB!Qs5fU4j$$jZMk7-a-di7KuP40j6@jPsl}tA`3y&(2a&# zO8S*X*+oz$!LiR+2u6#wxq+F31!ICKRrqy;qG?d1ve)n(hcaj0EJJ{W`3g%EWuv+U zNGcknIgk`HJbv+n#PRl`ay8-=GPMuXcuJ%A`09p)vG?$u<}zn6Gc&5cwvcN7M&Px< zL}o~mDw1FAR58%9si7Y$zjvc3#1>nSY!5ZICfDNZP^8I0zm^3MIQJ2h1%)F|(PV57 zMchu&6_k3wjxv-z$N>IG>)rEK$;)2CRQ|rbfyv2^Q`^u^bUo{bjc|XV4I+JIJ$dL+ zRmNn>uy}U|I44+GQ4*$Dp}b0?U7b}I0!7NkOW)uZAoyUuyr2oOjOnxfj3y&r+4(4B3&2ez>5kx(rZxQu z-72Aqmblm{C`3Z-F2!U=(mkKpBsK(wUeUQnw_O?cjTsJ2WbW@U$3Gn3Ux+OYEiKc3 zF$DR1wr-VIlf(t0 zdu{6t%1Nq>V}iUnPK#<~%SRP(b}%pmu8e@;^7!i>bLpk63a8XbJSu2$HFLIaL0#2{kgSuO*fCMgo_t*L8Mic`jE7m$oLYdH97;ol1GjopS{#eK zerw+cJTiLTK&Wjum$ZhBKHw4eOKGWy+)>5`iSZHNI?^-howgsL*2cqe{zg0W|CUYj z{|1r$A6ofaI+pee&HjJUv45!6Kjkk{_KRZutNwNT7v=gzY_t56lx6&?|5d(d*uNoN z|7iL@NY}q)@}I)_pGif&?)(2hy3#WGJ`oL zegBs8-WxJ~6spDta76@Q^SIfl6{%>;xk01k>5hVTbCyu$8>VX|HX46EfTh z5G)Mv+lO@*yyGybrAH|3 zHYr!U4!p@=ryQcCWCT9oz}R3SUOynhk-*23?kc7v zmrlyrO}tllr3Peo!_YKsg$&vS_SguJ_arHOw(fur$5lTUh4TyMy2=6Sh%}&hy}EvW z_9<`d6Hq|3t~|orbsFqlTl0CVoYwO^Ejur4dk zShA=_6yGRf_PdNlChc1BnewDVEUzBEi$({8jjOjc@-#DU*k|4E%ro%TA??oUY2D8o zySr{^t0AZ!7i+s9vf!G!;%328GxKTHlN2!lE9M;huFU9G&Y1-8$S|2)9#3%6SNZ%# zQrI2F97CIkw}~bKt`O&qsSg2HfUc%|M&k<9^&fA$O5MBUWQJS%`l@0OH(r85g(fLe zJl=UBus^Dd5qX_B2_%LpvFUZg@?a|Cvp;GFbXUl{56qaR6gy#PTez8ON${WJsD zQw*Qp9l6e=qGjaM6SrfLm(?s7dYN&(i7a>qtWQxyS8o2ju%2&L(x5S$kiwWB;xr|P z0ve*!+;#e!236tKRE*r^6QNRG`iOM>Y3?a8%086#Wg!61b}G#a)@J2r;dr0PU{0FO zf_b1Ss}$LR4ciUrK27R~__{N@NZUXF1Q6#yunlN291>W6A3B#&8Y368C*z~^E}`5b zg*O9k2JiZp-Gp(B5}~eM8SI0+OrSbeMfG=UON?q!JEv1TQvD&pvfKzMXT3VR-D__r^{O9nalV3S3E_N}5e?h!-B~2=-+Dr9RbEv@RLp3SUVClMq*E4t0HnUNf=LC4DX&wW3AM zR@2d|!@YBNSto1smF_3D_ z*%>tU=DVC#HGg#>9I+-?azDMY_S*FJTu%MSh3y4se;vvaK93Ech^0S4K@M@9QhOs5 zJW7i(;0^~Vq`Lo9=6H6iz=4f57F0o2(rPWuUD(=;lG$*5J;+0z%na!Mpwho#jP0u-*?aI_z_- z&Cp|B5x!+FNJIJSgOSigQqg_<_lf*snE*t+yoj_$tBCaBi$Jca;JkT7V4y9r|Gbva zX{{zMS=j^H;g3DngN`OLzh>$JKfm25ulLn-LbFb9)v#u6_j7l(bEww-ep{dlT>yxV z*Bj6YxrTk{^{RY=%@y5*X_#yc`E2Qneos$wiS1=VhG^dBAnilCW5$|Dp{chpYen~z zHvUXtsAIpkWEsfzH-^D?5UDM<2qy$?^FZ7rUy~>Hu^76V1jratI!UT&T~`QBL8xr? zB|?4hjo-W;-C7+~B){#dVX2>#AP*~E)os_k00oC)dMJRA5RKg(Zmipju zs(D69IuV88rbE}@mgKX*Ty3R&3XGj{cpyl)WwQkHGO4EEF2poRrszg$M_-kSvK2~| zik%_}UxH$tB8eU?SZUUn>E`0rJT7H)&(OP>=Nk5wo;dMe=VY>IVLyZ*M{Oz_0JHtI z5iPHja2<%lc>(kJqXk?MDqpoBFuZk+dSQHV-*7~FESr#vzelz$2d54sJFFM9Aui(FIf%N~k)<(g9#9h+X29|Oz7P?mEe`{={ zWoG>fy}t72(b9ZPiCJlx|F_7CnU(e5eT_6;QCx|Pp$GAcB`vG?{b35XO#s9OGfpI>SvfZDK3M@CU&mk^A}v&v?o_B2S% z&6u!G%%j%yV}9si!d5`uxj0!v4%bE=h^x^@3!FMEcA9+uLE79<4sB3dwyOOM-&P5o zl&9P$JC~>9*bcb43PAvTNJySiAklT=#TX+z>LQcb4)g10UhLv4T@~b*iz2>JUn~5L zhyKW=47EYvn>U4RNLyhW4wpbd2CIvKpL@7F4_8dV3a(PpB#X;w(QpiQ$nMt%BG%zg z4!Q|^fjK$NU(%89f=EWNb^fbgS;w3!Ga2a}?zzg6BE?$!%h4b@ot)zMkv%q(zvlUW zC#(ODw#C2G(cgzLbt`=6#n`v0RTk%5k$ z;Xh1?YhU>vG5V8f)aTb{*X`NQJaSl^)W{SZql!_}`g+$b~^;(Azr z_k4XURCH2UoYqiyUz?PxwQ-(R81fc^4VzBNyr$1ki~^cx3HZ$W*+&OGc3DNp(UZj)qV`ibCAKXUzCQ)dBU18ZZUW5@fdJh)~H-KlSa-Yz?Xzt4{DX z;Q^op%hdzD^-AD+eJ67&iY2_lm)PUmIu!m!5K$6Z1Ai?jDM=s|Z(@#u%q#01Q^U5Z zBIQ6>ZD?!OUF#9HM662yqBe#o15Ei>I>=4`d1v@^K5RYCi5;u0!tE#EkJ1B56gB1* ze@o!C7m%_Ir|HLO9rZ9XRODUXdE4yos(=pc)4Nw6M$fmXsTg*JUFU+CC;KO(vH>ZWcSE(TN77z@K5dshag zC{SMcjN5-?c)+;ldl+LxGV3HDm32|1T<1U8wn1O^!R*+)F?ptLC&SYBxerBFS5|lK zqA{lELU0U+0A6j-s0J?dB0q7IJ-pLw5>H1>%bs=7szcGc!oPU+jA;!< z8NM#JE`u&9Eoa*GuFbBoe=YW@kWv_+5P%NRN#cmy8T=!DOGn-2Hy>0H*w&$`cfqN) zyPq{=?&=h#F=z|S*1l&QC@0jd=TA(*P9fqc;VWQR=Q-_ zWAkgd&s3i&GNfaOiecRB?5qlm^W68ZfMm|#Gyr{&5K|ZiI}$0w-4g6c ztYdr!wk!*@=vyfIfyv`n0Ue_pqZo!8`WEKD%MF#P`Ol~xK+i_c(9b$q0>y1iD&o~f z%D)y^(>(O-ZtwRf05fG{JY|eB(L88(2kP|iOz=wb3jFluCcomVtWs@~bmk`smCaJ* z_Hn^(3f{|qUc8n>V|RkMrP>M@gEnp0Caluss7-3mXpef&KQMJqQMh7v26cmS)3{zW zN4_O({YGt|*@tK@GuxvXaUm%9#&8RI0C`J1;e$-?H4wk1bcJgOwAy|3yW%6%&f3Y8 zizoOQ%2da45PmFbnSGf(j5-TxT<=L^TyKmzx+h)V{79qg#A1wp>iBSsag4Jl%52I# zu)@c|OUw?U>`~&tQoX;Un=^1juXoIAYxapZ3vKYqovKHDc<*YK$EMI4Kyn9{A-FS8 z{*8mnXYl8Mbj@Zz1PYLQIqg7js`ovn9{&@RV$jPlicPr9mgWINt^Yf&SK7EPr2J0e zk>c16WY@%<*0=Q^C|3aRpeYMrb9+in(8EW#S&v5G+yn?}w+RPW-nCXWr1q>MSsb@$ zrr*|_VIsNi2<3w^fKb}d4U&SUE&6}9Asun_ld*`OrZDytji!)|0?EMdiFc1EpwX2P_4^79wB) zk$hsdz&THR`aHVHkcV5bz7Qq)%98UW2W1WB1~iKV?1~>Tj%BUtjM0CabZc(ralxk0 zgrIK&ah?O*3K5=W><^Lwb#EOFb3(f0B@f%A(DYfz7VIbX`LLwA;Eym)Eyz?U5w(Tl z(Tm!_?~3vayZqL|iQEo!M-pmqhl|1OeLXqH5#?yz`E6xcv90mRY|s0?$Qw}=O8pL@ z<=Z>rf&~@3&j~~#om-g38IE<4)3ibVC6b?V&;oMhS4wLByQZvfEA+mADTCh}FSjcU z>1Z~-+wL&@*34dxh-Nbz)~&ZVAS|a>wH=p?SPpz?S&?WdV2dvklONEV7HPuE`wrxp zxwxC4A=Nr=8Z-7+Zp%=>%57zkTzR7=Gal41sBoL=tF`9&J+3xza77In8kzzg*~NZ~ zf#2U&B$}J@!6_?0s43@viQlV>Q;?Py)wAW>2gXz>IKGDHX9D$+$hQN5Ww? zmX;?e1L`r3vPnxcwMeoUy`1ItyS+FB^D$D~_?~B`imA_cCy}R9*|E4U92#r$hWl5|_U*N!9hYx;)~zb;i)*S=dnHS0S@)XE<&432VdkoH zbu>qtlU(=Z=hhXI5ryXgIE*Q46c|Zg80OSWE>|_99c!AQ8T|EQ=ry($zQ;9V+Kz!8 zQVWzzr2m*EDutCDA0znw;mMCKE?HGB;iJ;Wh-3+roC7qdpU#gZlVep?1VDri_@Xez zne;weo!UIkjD-g!1rk_3)C+67s=p--iysP+&wJ0fidMtT*vMslrF#Xf_U=P!I@v$Q z43L_M=^DopQZq7LbFTY97~pt6)l(c}V(i?%S#sJs*SCye=l@6bRi*mwMd9wtmiH;0 zI|j;Y+r9XryHb7gxw>)=mnvYv$G9l0)Vwf&-sQ{tNCEt7qFv$6YX;^5s=*k?Y#n{9 zm+3F%7%xj71@L>txhIpGJ_C6c7v(AZuN@ae0AN~zm98;qU~cK!uM36#mz~Cor%5lG zobOhi(^yOL;`&|Os51;lE{j;^rMwPRq%s`28;>aZe( zcN}K>*uEWuodeUKf4unIJ>Iddd;4J$>v0Q!HiKsE4dc5n+pFTc7cK8QEP*O|_u{^N z3}!k8X7%rlKwaNq1?V#^Wk@M0BsU7V0iFj~v5ygHd+%Wtp%Gfk(E@tEW*j40CQg@O zv}T+sl}XcO43u%DGL@E*KSC)w7WZ8U0~E3Ps|mMfFzC`6p9X=(FQA^i41S*Z5y-;= z^Wr|F;l`OC?PrlrAejRgxkX;{BGfa8#R;Uv*WoLXoRmIkooc;QI@8)S)r#66FP(); zZ6;(1S)y>kJ`SB#*om{M27Lxn&;;}k!&|q27V1PH%&Pr*uipP9>1)!jCCz4OvwfTN zux*#)sQ0M<4M~(OR=YpI3J$!@b9aEL6#1YRg(`%g*BA=BLhfLt$z){Ql};xTeXR?v z7+EE&V$E1ptHwHB{QW_rky&D$7alK8s59HLY8WeFJQ&^+J{e}iAs276F-u$qvzc5; zQ&)w+8zhNY!qYtrSU8*w zDV)_I34AE-tgk~B356?!aQ)JV(--flXDUJCxa6hpzf{=t+pSAKz;%V6pI&}bv?+8G zd;L}=72Q$z(XR^c{pgL=KHLTJz8lZ>!*@pWij(Yi_8E|mE@9{GWe7~DN}Eb1*QSy+ zaCn89sHoR7OQLigqR3DWNT=$pR%S`PlQe<*-|r_&1DP|bgDg)yZCjrcXew0KkY!f1 z(50px1-L{i(_m1w@KA&5_misystn`BH`D-WWH4}BWh~QDnYNInXh3L9aVS06HhCnO z%v*D5vQ)>?Qx) zMhf5n)WgZ1$upBlX(~w|ymczsDwU2;@_^xIrcULh$)UE%;i>#k(vl->lF9U5p1{;T z)__sIe-geG`CJqe=45C1!Wvssb7M2ZYek*N@SzH&g5k6JoPsQVn-5uS=AhAsE5b80 zIUi~k8x)*v&|7_y51T6B(!#g;5J5Vr6)*=b@Sm)zs=DKjJMb`QLPL0H809|q+`+a*zQ{|o#C_UTxQAOXdS$|wgo?w zS~z=Y^MWtlU~zxp+K$@Uw=9ipzq+C#)lyT}P`z|C5uBC0t8nzr8FsMGeWvKDMfS|2t{xLA=pn^IHySiWd5qgNOLFh)6RbSAU}PCKOvJxBuu1p0-Dl3 zkU34C0+~QqogKcj?@XB6eFOv z$+mP_nw>IM?@fW{1TBNH6m{|!_~=0L6D6fILy92tk3*zI zB9U#dlxQ6tX*o|uiqdJA)`?>!gd&W?tF~m-s;rnDFyrTG!K z8_V)z+2dJeEQ<%AU?R)(hQvU_6I+R#K*$M^52i{fVVZEj+**Ncemr>=e@s3Or5RS)&GKB- z&ANP8!^;|v4<|7}dO&z!nfW1<$3S-a`!Qfy3CUc5WsVRq(niWj2`*k(NQy{VJX(*t zzj=T6^@`J^ubowxVN>gMTzk*WoAsvJ?!pXvSFJhd@x{&9o@6Fp?q1q@TVczxpxYOT z#AD`#_~zS(zEJSzoqlg5GG{Gb{PB-nC3dio8+;0yk4K|=R@!f_C>QKc{bD6K+|Lm zP4^{A#Y(JH>XLj|2{z4@)n24hLQ{|5SR_|I@&4&2LG6F@GR^5crq* zQ|Vv+e+5!nbGMfX1~6G9^O9m=0$7$E5Nf z8_?i1oMjpe;@T03(qJO7O_SWqtawL~%mWYd!4+_Fu0W0Yy-5lLg-NW2> ztM;UYiS+3tqbNuTJy$%5^dM7owkiviE0wEt*DJRwyU}jtd%|Jil`4Hqw8ahW)_`rc z!yk9H`vU&iLFlIEQVzOm!4yuVf~-D>^dW;n#5Jp9z&YZ4#>obqqfW;8mqag5P_?qA zfux7#WciMoj;&?Aq-Sz!I1gl%`~mn*4#Si!KsP91MWuw&R!=O+iScMmOeiSH!KG4& zD!59M0xh+qm=L|B8U6rzL9`ksFx(HaPD!k>f>@J1M@!4XjY|{GT51?7|4`B9Cmkd6 zA3XW#zi(M+R%B1oh%MFTkkebOFPyI7Ti2xfI#-NczhYh2C7=EH$9PW9Q{R~Dk-~$Y zo%rS)pCvqW6u&ilFt>31t3Uk>K=gv*DRvP%hV01C-d=|2O3`U|AcGk|5SeIVqAG~V zkpb;kK^f==B$+|5Q2T9mXhpuV#bSXR(tD#80SS`82&9_yCYb}I9VolSH)#*Z{PYmP z2Ci1G2LJ+H1N0GqAOcnSe4c{!2@oodO#nERq1o>kL3_{`V#yFxP^;-6N^ca&OVkJf zVM$PgF#(kB0T9FY2%K;~_bqN8$C6hGFg1dSF#^tZdoTd=Bw3g(fIXQlBqk>*GMR#b z5|p2qmKlIyz*zG~^7&*P9V?8KfV=9pu9Wlc0W@HLlhwEt9|*m^oKyAXf@D;>j`UcpO}+|GdjC?T);>;E-*tRC2Kbdi#8_k!tIUvU_|;PHL-97hCx8%f?$=UQ`Qjj!-x@}G4Z6xi{CRjIJBL>6`NA6857|m zEHX(Z#l)UAVG|X4U@c7@fsXDHW`aW1Gc`oTo;)OzpfyRrUYNcyk#O$HoKQ*# zjo9Zc-FZuO8f)BbZajHbbIPi@Ts7k;BJtr8c=#x)zgMpVr8fMd0=5OiUH>`EsSr7Z;i9@Np-a4->&;}w=f!1bkY zJg&6I0`b{Mr?0Zu6$x|lh!$&ek^vj~S)eeoOSh88Dv$Y^U=^-HmPjxdRPcy0sxU~A zlrd#OIj(4wfy5K%EC8)NAoEDWr$DQ2BSO&R@MIo%2`0lTvl1ex18V>!xF0)+5bmIA zFW~^^C!SzA2C{2Jh;mTM@(OT3=KOT9|$R}7|d3YN+D z#%8Zaj2lRKJY)uypK6?DLSO4hy}4Ept%D zBZSiD$tfK&LO8ZUf5yn(;N$k;swgZ^Caz-cG&Gy&rx*^5>M^+Lp?vZmhmNwG;1TcCsUm z5zmNs#J9bAXN}Q}&5VxK8hD>B^=ie@u;^o*b}Q&I?u0kBOS?<=i1O9&S0j3B(pZ_A zpITVIvi_FDEvYY=o(w-z{{j2H&yWyn1Ly@NfP*+qMfl`C^g_)z_NbOBIpBW58}I}@ zSn?>aa-`Dzf|FEMSgnz;QO}vd`Pf$&|suq+mSX9sF-ENs!(Cp4MSy<+0R*bE$ zhu#hSEyRY#S-YwqG~)sDpn25Hn#XaY>W+KdH9--Jsoilr5Fd<>#91Yti8Jx%K$@t- z%HHm2;J($S~tK%b5n z^>(9CPgDvMs1*I6NPKi=GCz!^$upCsJk6GXXn&2OH8!ARf61y`nFuP9g%^UBkPq_- z(T9j~goH|s50|93JBU#XMy6^%6F!kXv3yp^f!;BUhKPYob??TznceJe{nw47j#1C3 zchtA5;-T>FYD2z1pTt85I1Dt?r^D&UJ*h_`kEAsDewdtUsZ`uKZKXShRb7sO(_3O8 z9>P1^x?BwurRb^68Ki)<&7_dac=0rF9h$gvkrE>gml6Xc2W`2OY%4v>T6&h*3a_xj zE3CPcVkLb}t7bDaGv`>z2=6hH2b@-|MtF}A+Q2DW==onwbQk~OlFhCkTf&rGIe<#J zTqU{{Cj=^NsVBlLsA4hD^~(l4!tR*SQ0(R_x|S-zmG{5)!luR7ha4_rDCB!=b?35G zh2K|KKk~W8o_dR9HL%YVUj6E|^Q)UH6E$w&a!#J?t`@ zWDp-ZL8d(nG|Y_rjG;`$e0Bp*sFQ(eTLvo68YDux3?7bfI#Nk8s*MzKv>E4$ih3!E zsO_tyX_d_5$Ic6-T2fEic}Qn3AtoNqPMMV5AQ6@XD+xCSj#~Ulmg52jLrJ&<0VOFB zQQR$~x^!Ac9QeD=gU%o0quL|>x3#?WPdYqT+v!~9xC`H_-EMx{D+JZLEJuaP z-9h|{aG6TlZ(_ z&)y4eC#A{$@`M1j8nNFRHN}{yFQ$v~F^k!*AV2mf*r|n_EI`g?loae`;o{J{6y(;x zr3_iqf7BigI5dQb+@@MKF`M{Xb+?*swcg^~ByaMGfM$S*fKXbWWXXBq1nKqkUOfd~ z5V3F_1xX5%0D_IK3Sup`Qm~B27+83!yZvX2ve(Vp{e@MZzh(~m%wyZ0 z`P|u&$M5;K&;RS@_O{1vd$sWUJ^y~@-T}fdZ!A2GA4abt7h0so`#+KgJewxzzd>!y|K_L9*pM2Njr zb1zCVVi^yj)zn&1trGaIramff5=$l?i>3soQXsaPh_%{EL_Cv~Dt;6jOgu48XhE*i ziIHf)g^)P`^xeD9$`gy)QC?yc#@dF z6k{;8`eJI)rNelugfS*s4)^a++0JCDPE8visPsr>yJ_^9d5^Nou`9;TW@j7by6=t)xACn%lj8$tT9<Pc-chi1%0E{Q+T|71dxkusiS~ z2o9D=)PJD%97NsdX$yzzy)iQSZP{_@XlxO`S+o&T{YD*LPs(n!c8XfUACfFc_;* zeIKz4rk)t7NJS!*vsW|A=eBPD(Wcqe&4Fy_2Ai#R-J7%K5*R!UFvx4xBPV)DwX5=g zyhlDMb4XTYW;6N{VodEed<||#TD%8UAeQDu$cLfxrvNM0ASaX{{14TH0SvVa)_{i0 zu;@AbPiQ_*wVF(3)soGaw}Qm6$IO}CuIHEtK2=^r;!U1BCAHEuvk>&kp>t9;0wl}Z zN~RWKE1bztM=?RT(|CT!)_O&O8EAIugs3Mvi~GqpKif9k9AKhR#$S6Y^ScMClt7T! z1y>cigp}q!Gz%@pC)8`7Ku@%P)XpL|@=0!ouh+fAx7jIR2~~c8K5Rd^^pj4mulEVZ z6VBsHIi***Ou2le%!QDGK_gkntw&ce>-^ggw*~D$pS81l#r9dV>Sv*am)Fi}XAr07 zJXH(Z>lv=Y3!3sQ;6O9+%=M@Pcfj4DS>~=7nkD$2XJ^6tz3iL=3+`wPbh*aa%hX1p ztEQn*clkQ5xwdx6Qhirdo9EvYFR^p8UeD58vw7agJZ9dLwicx#Q=wM$R&W*WB}>Qg z+s}p`y;2^>O?M@emjbPt1Y&im^huuhG6^D1y+?ePXF#)iUwW^tZBqI;Kb3!v3TH%Y zb`jB8I=W3VwNf~pF}u6z5=~~#+^)Hub6I{yOKS_mr(#-wTqSCWMq-swV{G;%^ERUH zrg?tEr#U|otMwbPGiV#fo1R6oALP|dhp^A<_DE4uruva74lU-kbZo@)n-}|(j55>ddG9gL0EYy%Ss zS8xn)5UyT9wt5DIDk4l)vZDGr&g!r;W&h>0aj%K`QN0Y9~|WqBc1_{Cof>;L#Ee(|%{anBFFeRlhT9_s`9X3x3t zg-35%(a|r3UheK0>YXts)iQFg(map-QDNxhEfFPkKc2hqX^pSD z?zOWn1uV7~|IV~>FCj0Un&u>a)e3r{pYjvEfjS=z4jb0kXx2uJ1Ge$vr__jGBQh4@ zB{m`kQS-P>FQ&{+J4aXu*+kNIZ0h*2^yHDUUEsuo^h)|-ozLx}zC$OyIxfhAjQaug z`FW-@Zpf(AqCKd`db1ZhuCe2Jc1&NVf_M+_)_bvrvKkF_Bx)!N(%4F_Q=X2L+7ux3 zpNB}D&F1%A;7Fv_z_zL5`TT@*OgfS;IS`Y?vg19Bj4*(9LvAHr$uMpHU6x($7acD; z$K4;eh24I<-Gdhz78+L?RvJH+HN5PQ<1*`X$Zijd$;Iy7gIPzWJX$uxFqk)F$)KID zJKlBt4aA76?B1Ut{W$(eO(_O!s7d?B{EQ!A%yF8Cz1N0EY#7-j+n8;_cHDN-#@hyb zPj9F0n3AuM9QiYOVA;eIgW9G}5p#qz300@C#g#*FT0s&acCw*i;2*>%XsLIEEfjW} z>M3By2oGtb9+&xVzFA)xnrVrLM`qXbReh!DrfOG$d#UiNuBjjN&rDRVUQ@qv4YNMv zyk>6fD#9BWkkqHx2T+vBl%dKQr~Y%XEQ;urO6oH?XJb+VWxvTO)kZxg9@@}j^^tbg zX>hZa3_~i=B#|Plxm=qx`B4cD zk0sO7{*?=CQ_F;s;gS_~dPOgrKumzAmL93cB9&isRF)~pHHwG&RXo&e<{*G;jZ~2gg*~e^9xKBhQ5wiaqQ3THQ~-iuw*e4R<5t^=l2tm3 zsQ1K|LRm5m?IH&aC^*NLfk{YSpV{IwdwfW;cqP9NQ71KVpWr+N#Pi;fX*g_% z#e{6A44rTn&$4UGA!jgdD*Uy2^KG3yLn&X=T-@H@mb{@mx14=o>esuePvqs1S^f8p z;9c!?UL2izWTdxo0V7=6#6$r`zfwGfH=vi19wk*DQh7bAYSoskR&C3!)Z*RRXS9s= zF2l9A62v0f36bJ!Gtp_I9SBz#rPcPDn)ddW>9r=Ug3M6-jA*GKGdNKM|FQ)AdjlGx zL`no+HFg7%sq;_BjT?WK?ok$Adb0et@YDP88fM!JVjE2?x#o$Cpju=3@?lle?M~&PFT*iznGD=3p zn1Sqs@wibi5^r8>);JJ-x$HAI2Zsa_hbQSshlxAyyc@65t+09_rmz78dvvl7xn;e< zC&FEj3n|#G_xg~Z_fn@G4Vt2I1Hk4GiI2+T;d1bV!!DHKlFs||EYoHXqSN6ScYXcK zzx>ucPxn5))U3$9DigL<*WZv^@r`e+&1Nf^PY(b67iYdU($c~nc$7NvrYfg?S6Bb) zi(@Z%?Ir6z`yT*9jm*w6{q#3e`YGuwI!YLIG7T(}X<(5&O&(p^O0(%iY0wsHC8xtyABAhwG>B$ zD&dTy27pa-mcnMX5ydV36h|O4ohFb;LyIo<3lO(Jophu`f{AVRA_qZVgOxyEmR{kF z@dkJ(d88$-qoAszYNL(hSLH6h2O0y1YQ6|Sys zZu;Mb5_#2hvs#taH4`Fij+$d5&7;lSSo1{l@n$y3UEQ2u`(I%N0wG$J4M#(WyL z4-2A4@J|O15harZ3gY|_jUBQy{*Tc^M86a$`7XIJF7#sbZ1_U^rGs9ZNtaOzGaYK3 zjt$Pv)LuK^k?Sh7ToSg+=Ag%sHesvgzNyu>b}qd_{a)dR%K&#s43Tsxp8epJ>4t>` z-<37NNW`XVUdmol@_!R~BL(>KH0YuMyk7l+AnS83*>_2Utir`jF6MyKnGjlqdBRfy zuPQ6J<>Ct0a``%Oqh+J@QT;beyDZ<=f8TUebJX>!{I=_D`K0nM?q4p41N%9*#_Mo9 z-7dc@XkB_)?{9F=ac_6+R0P@0FfNbV;O332n*m{usM>;!GmgVBv|80}Xd`Z=akd_C zQsdd_#=G6mxEc3zY&|HrUw#%dhQK)fvT8*99~atI+BVp>+Bi^p1l2~O)jdd2l@Wy< zQ1*cS=zbpm3jq&(_nc}4H7-8{iX0UK zNoWIM&TUgeB@{cfQ;T2JzOH3J^XX5XDr<7oRmDhU8~W|;FT0_>-_*KI(%gQ;bc96a zfV7y$R20T+D2ouKcf1g8oTiEbBZP?h!#=(8>`A-|E05i{c6Ti5e*KZhPh{pl@voV9 z_4UiTJXllsEQ)90ho8FRiA_U?UwLD6-MVibD4cGVYO6u-o?rZcJp|uVLJ{=bzEvU! zDf~W-#z7LJ5p+beYSnsBOpP&WY#_ELb~47rETq`95^X?R(N44nX^=bm91fgcmC~B@ zOrE!2F2Ip+1av!|!7OHYA?ow`y#X)F+hXRZJ|??eZiWwWmenZ8dsbt+335&YjCj3}A^nECf^Tt4vVZI9gj ztJN>xal?_$+)(4jKuso+OSH_+&TU{G`v5PzynXkN3(tI1IQX^qUixR@gS}r{HT->? z`{0qAGNDTr6&{5Z1C|9+$9kj#-til?(rLtI)M-@BtZK$p2J8@EdYIK}c+45}M#LG6 z91m1+9Q#zOAld~%6j@H-4I&B}vGIBQDB_VG?^cZ(%xguS7d5~*xaaXafI$&ot?IQ} zGmCe#&#(+Tj{m93xQ&7=@eu7XpER>(UKOz5HeCRhL#-4hTLCB``@TeIQX7c7R7{kn zhJh|wC=hO|NpiPKM@ZIeHiM!vOvukL1`Q=_31x9TB$z#X@bRganN2r7UWni`_Z7a5 zuO4B)aQ0s2n^QD~H-Qj$NV5P|W=!=;NWuzIuv)Q`--5BYqFhke4E)gen9ZncgR=kMz`PBVi+z9E=PR5R6oEATujT4)V1AMoJEqgpEk} z0%@V-WQMVyIM#No6y{$R8r-81JP;X-j7IiEPDeCKq&LE-n@hC8IQm z(!|zxK8&GcTgwlXgyIXdBHK9$pt13s(G?_sMAeKLRaLDsKJTt=FLZR&c(p>nmga!vds>&^RbNXfZW6wL(Io)2W`J4;{>n7Wy5N&hn6(>tER@X( zG|mOnI2UXnLS9+B`jE=EhH0=g5a6ZC)p+su2dKWKc>x4jk;E7y8vv-@c23h0$j409 zopXSczVi{{1GzwEjoT>X*{NxYC|U>!Wg9`s>%o<*2Gf9KD2doKQvxJ|0rU9mc23@1BJVcr&{^IXF{kcEqZkSVOYpd~?g0iR5f-Rc+K5Jjv?5E$BRUesClHHi%nnD-eso4n> zDS?lawHjhY{AL4uoS_7gQlJ8fyyP7@U^@gvzvw5LS3bfnlA94{7V7sz}x9pUu5 z>6oXtR4om4LVO}lXpy0k?vbcWIK4lYPL^8kq%EQ ztfJ5;-|^zds*xI<_EjZ+5h5Qkc`0CVSvMw3=TfQjs@d=NoB_<1CiB$5RD$6#{+M?^ zr6rTY{ltD#=El}!*|AbG-}nM1vp?!H2YonT0(}{k0w_u$uV^U$Ux~p58+)Af|Ai)0 zCRpFuOwJk-xVq<+Eb?0qP|T z)Js`=V{nD$yW;%DHZO9rjiLEoNBcU4et56v>W%jM?mX%f%zrKbXv9twL+DS z7u=WO%Tg(G&yUy)NH_tw=1>otQG-$jZ^-P-?9Q+mnZ)^)cJ^elxf*t4FM)logp3>WV$E=9(3xt50ueSYg`vU>EM9d-J+#6(=@32c54wStkklqA`n30|`(r z`3syxLALE`!)>)0wwGmkS&UeTh^VlXZhr$!;i>Gjq(U->$Q;>gmaljY--1F|w|6@r z%_juu0c$3Qr)Xv}Iebb=4t+vzlEWklH8~`mBB(V?4DF@h)T#GLsA`)8sC6cp&qG4m zL*sl$-+mHG#pL^w!)GSR1_x3SeK!gv!$blu>tN^fu<4zEw{|aU>5OE3ewU0jv1naw zeQiT6%eTiC#%iKfv8B<)KJ1$j@S*N(kAi05HU(XxY4f4p>K-4uJh@oGv*j)yUJ_sC z!%LU>TfETRI|D7Kov+~T`PoL5=}>^f&g5Es_|o)cKC~!tnSwf99X@IVD{UM+f4MMj zgJ?N-&_4`%A#ocOOwTyw>H> zY52K=BM0rVoZX@b9IMe92QMF5bN{lsMp=%|(yj^C2E$h}+cw|&*s@u}x9(m(>+Bu% zebG#0=GM6lPAA91npzOzGeDP?vFCOX_ERffKaJ0Dm4kDaEXYh_LxzYd1gJ@gY9;Za5)sv0SE*g~ThDygz+S#5_xin@VMDMK zI^j&inJIp7z$3e5S#B=<^?OxcgK)h6Z%%dugtvZT#Y`IUXg^j&B@vLvnX~&Vni7Fp z$f){?1&P3%`7~~NoHgwaCli6pIBVP=ZchZdAfwI5NhMw3ekK?s8df~kN{|vEr zo+>4+mlA0Qwb3m;ZS=oqk_b2D2-9;hBj;_Q6%m8k7!AiFhL8`N%oV2Sg|^UPL_$7E zzzt9*Y6|^t45H-_ZW?hT2(I%I^0{K+0!!&dGEqJ5U2CmgU%&J=$GZEv=M9CNMqT42 zg;v{)kW0sT<4d#GEnpZ&OIM+GK~Ap;r4}}37gf8-Hq5p<50#us`!GLRYmQZ|U3p7) z_mY;|3Y(WI&R`_sqH*Cn25Z#pTz#_8O|7Ysh~;u9t5yA}rh;R6qc;-q&RBx4d?*zv z>tB}QDRz>504dB%B}#Tst3@6wPj_Zo;8fsb*gx(C38Rge``gmM#?t3KP_?p7>lL-y ziV*bE+vz4@yN$P0QGBxU3@u?Wuh5J_o^vdD{=dW&(i037R4Ho6}RGP(dKk5)|{Mmw|M4@^R%;dopPspp643zQE`{{ z8=kLwcUL@xo)jO~e#`wW&y(ICi3hX?bqD1`?&mzudnYP>Eq|i>ME=ZEy<3YbsHQ&9 zK+|MxDGek_>6|&GG#)Rd;czLnSZJ!MZeN4B;x;slhnYdmZOR>*yDU2^v@K$Tu0hUu zU*RW0Z+V2fb=&1_ZnnufS7vOoJzzs#C4j6tOTao_{F0i|dfbZac4xFYyH>07dOQ)W z2s!$5RGi2Ju+3`481Wvr9x%hNT370@q>Jcw>kjJP&}nqHYrRCtkW@asM?5V4Tx7-D zweC$G^1}=Y(!zMn)&^}^Tq5bdx-3Z!8L~(_p=Gq=_{D=#1sCr=|QutAw+@@ z+#vA`4WFSqI6YJH`)=t>UOwZQB4+OlXUmC-E$4+3m!datX+KWLQ3_iDfLZ7$KC#=(K){LN$(0=camE+1u^qxlBgy-O;@)F<5@PItv+bj?J zc3AJTjao+KC-8TeXTs0om+()7pSb@lp7MRDoWU~B%(pJH-V?k>83~^b3l;_cuy_(F za0X$;kspzb0~slV2SOtu28E=M66y_+d5wnlgvLS>q2r;Gq0=E_=xYDFW^De6GpZH* z1b6K@lBmtr986Ll`dQF`7aDdN7(-g3cGm$kh(^&Enm{L!mJ~4PdpCLR^f0|1yxW64 zA9a*em7A z=6~P|L%6)t3r+9viO0&uei|GG%z>RBee2FgKfrkZwjb1{W&|wyaCqk0OD_B7_SKg* zHQ*}_{5$5~eG8j*_QcXL$L3&Q{_1aj=d+F)^2?P5(00!NEv{oK%8&*4pR8ihEpZ(8 z15Kv3TRX^22Q4&fAz6lI8IrA|*}Cy*a-Ez^egsEb`dFUE5S*vl0c{fb?H1dS%d2&AqfAcCC8A3r`(@{*28Acwqwyv0wEyLcLTKnu`GW#Qv# zEzu54$*(0CTSJX=ZR4GqyLd*c)mTNh=+P$ao|rabjd)_oX547adgoZzYuD?pabN9O z<6WP+Mcks>;=b9l(R)j3yKcMtVf3)}A<2Zpl>-Ye79{kxfGgEe7; zWB}ZqTl|CO7R`0YfV^n0TKkaoN#QBoQxbPG-Xd(ncMDvHXskr6qmtLktwA=;GDLw_ z*bJ+(8g`zank?J0ieL3JeoL#QRkVy*8wAEQ&$o6>Il8)MvPT+9ep33CscBzd9rhBR zo+oCDnGBX{%Q=r8`MU$y5LU=fONGd_sgeBZ zm4!O=tQILAVAOj^aRowLlKj>*O5s}$qZ*j%S6i~_noaUX??&Hk zm4h{3^9ftzLy_kyf9w6N@0|$mj!QL_v0OA4pHZ2qSsuS8K3FqSqkjcqk1yft_Wj2F zTd(HHO8nEv+pc#aZ^z%N{7Z!QsbPPmXbO78Pz4Tpg;3ZW^g2RerxS!Y~sK z3y!KvP{tWi5Ut1~c`_c=Gw9KH=GByc6%5s2wPvh_*=!<4&W%H42< z*;M+eoYF=E>IpMFR$ViWZ+J8Ul@QY#d7H?6dKt(7Rp21ZFlo{{|g9uZT z21?#Rx9ksN8sw0?FpmBL2V9-AY}AZT$N3O~j=$rJ^)yU9U%xbJ_r`nb@!t>ra`d;a z)(*F4FZZv1Xzmvm*Y`4?D{LAGrlQg2;70a(lIz}g>l4RKb9B0Ij`Tg$Z3CJPU!MO5 zeEAGMs(xUWu?dMTliOHnPME8>j9|S4Uy|;ZH{kX14e2fNL-_0I*W`EP5Aa`Pqfy2> z7oX|Mu#IwKW{%7{GjTbVVR>1Tak;2tzjM7UAFrEqeJFqEK3Vq(`cKzCGts$to~tXp9QV7H zrmuC~;(kT`apq0=&CGl9dl?gekTz7I1ihY6MNQCK8LD6ifQ6-?*BJ_jg5G#2?2_dQ zgzZRnBMb^D`8|@EnY11B!c1CD<1~yN2&~)100~AYlZjV~nH7K-?sQFsqFf+H@S(>5 zo$D||9$}QsirK;}F+Wzj>USj%EBRSH04CyUo@#9c7F8e$pfvsSBybS&N{K7|ff5mj zE6K>yY9OHc5d5Jby6ecBmh6T$T)Id(S+?Y42{cDh&bh{m#}Bx2u8cib3X7m;KL)uW z^xr@dA-@^dRfHji}t3cCNj&y z&Z&>NO=maX9;}K+8Xmi6&1;0>%8&HzC*Pg^OACjGtReSWV`Zspm6`W3o{fOl2}mXYHbx+o)5L znP@axtK7<7zb@pq$~1rW0h%W(G!y9V7+s;it1Zj%a%Q=IdEh#H9dn)kx`3DtwS^Xj z9@aeMeNyv;S75L|;3Sa&75}%rZ;x-{x)Q#3W~3QuG}1`2Ey=PpBkPT1Nq$?lgJrNu zz z>sOKuZNnyPX-nFsiOqNJm1Imp_VssVpL@ ztU4S)DVwpuVuIk>&=JI;X(p5^6m+z8)X|1eM_Wf-v8_Ofxak;!_&{#i-Q_;y=G-Tk z5GuIxZf2bx?%h&R+0cFMN<_B3 zu2{crFm}OzA@pbepF;*BFlnu%a^H6<6`oiu+*{>xK)vzGF-{+F1)_mu;1=6cwx{e* z1q9Jw?W+#9qUCr6zf`!4+O?z zwmrK0ZF>T&r0c+U%6FPM7!SkT!|&H)9>&A6&Fq#{ug9&TaMX=VdZXK+5)5IFuI-hoF4;g9$;GCkQ%wzTJ`U)BE%EdcW7_OV}NGcDo}S z@H*@^q7+*X@8KkV7pcgN-chuA z4)4sa-Nl(7>Y-`5o13?JgN#u5-kl^S;-~vMfZ0&d;OV{0zR#eWSNhuQ0XYacOeJax z5OHC&A?OV%E-;;;aJR-DgR7`R`v%g^4Hdh}?u6c)-mDX0Y^f8QjcwvfSU4eQW>b3I zEA2!b{eV@1`u>fd-n$~Ni~-r2)P+RnhC)26RAUvP6EkQ`t((v0M==i}8-?NYdC0HE zpBl?~UHYav?D1L`s(@UA@8fKIn zB3T$@t8E>)33cQcZ?>yQXd}ZNBtX)&BTa*35bE@gMxcuR8ez~a^ei;+#Y%EKX+p9? zc;M8nl`~K3{A=Dy3cI@gs1#TObi>{!;;&=}tWZ)JO*ijif9@=I+5~7L93Dv^G=fP9 z!-WJoB}bXoGbrt8bUq1m?RA@(Y3TjomE zqx4O2OFN(wlIM6u`AxBc9Y*cTQ`maO*XrUoxSmF6~w^6#*++63%Prt^Q5&n^hqm zvR34{uA$Um5F{sX>_MY*m}WnYw3Do~AT*yOdr0yVITLPJk6fG+A|hg&qboP${yIgd z|Ld<#puDtbbcB0F>T!gWLgBBf5>+YsUx5*ThQeLC2<|$Y`)dOwH&diaDJ8{!Yf8vb z$R(7CC5NS+(;BKvbV{(Kz$*@8=A=plPuKhHoGXQo>jiH?iV6ik(vroM=WoqCgf>z-A0Zt?}nHup_ zOm}K;Cul&G@GVG`v8C5Ym)r>!09EwKz_0*@8n%YRX1vOQD_mvjW$Ww^H#2rX#cQDT zF6q-VUFS^?Hc4IHgDYfdXPPPkjeQ*?Q+?AARzEL9xB(X#t4tMf$ttW$JD^JyUH0SZR#d)C-js zH%UIh_&wo8lYa~}ECXYaJtlHM^qO2y9;R`5m@WR&)XyAgM0;_e}U8YiU zmb$p{NzdYzB%0G9QPfZn9>Qb^?SwWY+%bTAk5$Rp#LWW<0!-?N1Yv-i-~|nfwvSd} zxL{SYl%1-_LzEYxR}^>6PT6s{%fLuWF`vYv^jlf3wze{4VU|f>^$(S~3KLe{L-v$k zakg`r5NJjG5_&L20wNMo;zB&gj2Elp(HdZGN3auXWgWF3X06wQi}55I1zn0=%5!G> zdr=$hn*1_S7mH`d>(fbH-FPRJXP$j}4}NED5|YdL7#AfNWt%ciEVMPbb^ULH*8ML- zs@doR5dk@?nV3v;DdIs#hIXi=WO{CiqybxMDwT)#(ZJ=lukhT(o+8GFx{Z(}-+CyVnVpH2t*x8crDA)t+0-Gyr0;}ZFZtR?~%3DcYqz@E8A^hFi zgK=f-v|jRMm5Mgy=t+vTDC1hQ{hJIEl>$bs1`|~mW$^0PhGm=QeW)CV^|P%IHaqcZsX-rW#}l%S zKj2sIw||F+?qoQ~L?w$@yz*zmsjxK!6@io*giup49R z2~b&zl|`AZ&Z;rz^`p_5`x?R%9I&>+pZA4csF(Wn%l6PQkJpxyva?Q!pHKD38rS+#k69p^Fx#{_GPP1(A9L%z9t4PsMfg_3hXSE0HZn#?kcT4<@O zo9J5X;J26q5GkAL1;O7b_iJXDvIro*32 zGVNfcUH14^fKpyCqujoqPYxBm-9MJF8f_ZC7&fJ0OFlQ&1Fmf2FA6#pAPkY9on&m5 zTtAVIAa<~z zgXJ~YAu`4u<4|CE0F~W?^0C4~%t*;-$wo;GoxOIqsYC=dG-PPowYV#N?Qe4tp(ojO zVjI*p30{QSX5j4~SOt`^`QQxUu1bkg>4}E`8TXu~bPBQ=3a|U7j#wBEf5O@~CXH45 z0s-~(zbF~stG4G}H$to7g;8~XP?MUz?~XblcR7M#QP1zt%Q#popYkp?_D|>VbbkA< z0Xi%#f^oV|!`8;r1?xk$y6RgEUiU3xw!HSTWfu0sw|stI1u@UnbnDnIer5-amwDd` zB|;HJ6BU?K`LEc&P326y!o&%5jGg6`N}Q~mOg|GcdkKztpu;inpGP2*5Gurv47FA0 zOLs0(*#CI$7MQ7VGk6};sPen+7`8Vu)o)m2s>`CdMN`|3B$F65_JcmO2>OMK3d6M_ zHhTanLw-h;MCMY|{1yciQ&mD-jhn?F_DoOtY%O}b@Rfer+kkOqE319tUG1=_9W&D< z83>yb799rU(ed3#R!)o-p)z{$Q-3b^?P=S-Nk8>}Wf%uM)OVDumE%kd(Q!;`m%@mj zKWe%|FY+4pQ7{;CdB)T;(fc8G(WcX8`dJ}jPQX5am5ADi(=x!GipdCOYv5PAoF=iP$9?PMG$wzsz0D35BjJnHly!f z-pKY=PAMlBy^%xmq<+QfN9~ryhbpx+F^?cF&iL{zV5TaCuhI{!;TmP#AH8bWJO)=X za~U48*{5HhJKO$v;Ho>Lg%ZuC`lm8e9y>x+EwtvP;_ld0x2ZmHbwax!BS!&wSq)KfumxIAZHBWsSG@pW7plr_hMsp%bKZ^ zQ3zAk5_c*dK=s`D%V?)HE#BWq^^g6GK|7E;)75KBFH>Auk;uHm{i}Zg&CH+JVpk$p zSCH(w%^81(yh2Z?FL_@L;PBZtpu>33imGI&Z%&(jKhnx=ls~`PcQ2~Owoc?;me(8Q zO;fLNvo%J+ZJjWCjaH;Bs%@Dro3|7)c7CwW4P317=aH+}iL;(%K1vOy8eX~Jz=c`$ zS4763)T(tV+>-IcQQ8;TPQ0_#n|TlWkQvtgo${D|{kFTkl?u6G{<=^mCoZx$ z`dC;6k(F*l8CH+c_J=OL?K7%TCf41}{5dRB;{TL_|5YN>r!^Qf-u`0Vw@BaCx& z?@Ex=DbLgDa`rt}z2ju?>b7rsy1TKJ?8@O+CZEYY-O7iET>;W-zhv{{j?A;Iw>4F( z^>tBeYmMK*?Ht;5X4~^=X+9ODIcC$|K5#V+OO1SymfyNhwboEBafc07%|~Q)5TY_e zWI=1(DTq>_!AN^Trm%?!_iVhmj5EpAl8>m{ihbJ+WEm|!Ix!IyS{-Iwzd)MRViJ7s zDEENp3cqtS?v~$ex^F~~h_yhgM&0QG`Y3WeLAz z3~8bC12K^Ra8mE0Qf`l)99bGuPb!^WGTrrx09&X21^vAkI>*2azLRkJ$u<6Qunk9u zp)gN#wKzTdXQ7TGfeyiSKUmgQNC+YQ(SlM^S2fOx6tkysO-0f?#Or7eNqlJx~&qQPXYYLg)ijUHMH9X7FFcunO2{^mU^lq5jg(mw`hzjI4e?qPE zV*}3jO@)gaHBa5+xfdPVP=#)==pW4>gmWtwEwW3dE2eA6i;9GR4q^`KG#Tl!@XOu^Ae;Y-DO6_edB?-1Eyot{uQ<{B?ze zigcJThpt_*$2b9zW07}~Jtler8_|;~^w#9`ZLVBv8!I@^WnD(PLmksmU2uHPUWY%s z7{Y=MZQ|EEs2oZ}2i|eGuPYypRaD<#LHqOzH{#WFZT*++mNBdk1$u<4BET;^m*o4@ zG9&F1fb0lyiE8^|s7;wTKoIvO?Ij}CFXx1!=Dn$5X;dcoVq%nj19OQxna5Kp#X=5a z#Y(}&(vLtg4oj3mr4ZrTWmH9jmetdTj5)kY9IcZ_SZ1Io<>FmTQWqm^Dk7pY=yhhl z`}3P!1*0pB(<=E87N3w+>}6ieWYm+7fMx_A`coKm7R{5wWKvEQ@^w_6kPZWk9vZaRET|VMaW@$QpHD*+z_2A@ z1(5ol^EU3A_qWI|y?uVP7^g8Ii?}>4CvY9#ny@faKKIEm+}{#pJA-2VxV7ptD~?JI z0BR|3l6I>;-Jhig)>;t*nSZ`_OA`}U{cbsc&*i=c8nW#4@ov#pFH9V7m#TR}UTJ&s zn$h5SSh%_>lOJF2qFJ?$GniU4F9n8<=MUPiI`4M*Sr$uQP<#V%_!-x78*UP1pd=UP zV&*g@#vPI9q#O5&b?IaqACu@U!PlY1m(EHoj?gH8J#}k#^5me6fQYgO>H3882725j ze!;?;a>kKK+MSz;GxTJC&R~5`mnW_W@EHrVtp5JZlakAiU*7EdmcqhAcBSL6p8DKV zS*@k3Hw?%9AmS&nH~U!&`{1(O!sJw&f#dJWjORy$(h8BC!!?4F42Rj%C*$-X@Dm$T zq-ddnrDsOyk5~@V@cnt zxt>)>x=I+v6dSaq)-)3a9k{m5+m~c@15eYT{k{{%kJu>etRg|m=!tX^*PPNduYTa; zO^3KAO{D2}QGqzwRq^A7`=PZYcyp$VzrbRpB!9Z%;1LzR(W+jjdi;T)NASmKl!t`v zjNr&8on~S-PhPxTPda>YM536?vMQ1%uK%O5A-qoTqpH_keONX~ttneL-dFM}`}_Wt zXJrz!g$A<|K<$NH{V1X9#MjU;t-bqr>f{^WM?KqbTLPoh=}F$7Q(20{g>@H_96dj_ zS?wx37oAJf8N_9+x~rHv&DqSA!l$!L)k=T4jnOt#Ox%`JmT6nvk>@(VpTBm`?-E7E z=p%?PB#kv)<`6*V3Ja)T-63uvX85JVeS+kaw8cN%0<`)ldr){Wi#!tkRrGruA6`s1 zJP63>EYygVya_BScwu%e`~BIa!YNyp7v88BnH}DV`HJygGy-}R_yv3g++{1zRF1Ph z9PBXJ=8D%Nhv4323pn5fGs6I?n7DJG6FCpIdJ&L-ZQqYswj@5C*M?%&yB{Mg_ihI}?!`7%8zBclC5w=U6xMAKWNa5eKQB~1X+0)ooZ*j6~_=5!wZJNU) zxI7e9OdQ#>OG}WogVHKZvwtz{o>qijhvP)lBe;C`?)8hp(&|gSoEc%w$c13yJ;N3((RghicJcdX%-4BS`xjJrCVcg($;!pRaxo!(^;Ls zQ?T8u$|&LW6?>;r$a8%<$5a&*71h*15ks#ci!INQzQRoXLQlkWSdQG(MlZzED!zF7 z2xj2z{Vr*isoLWllHLbDf=%(_IVt7%4q_0lGi*eyj=NW5W}AB)ZII9`y2Cmzg3Kwx z;sXd2eBej<*#PZ0?qL$u(au1y{Kl=Ue@K=l7v0@nR@-gh17TfG=ai_sDb6% zTjkM>&j4-p6V*KZ-GWd>nfxaao{*6623?TZq9Z-fC`0SU`=$kVBtC*hAPu_VI~R9& zWj_F_!2GZPxCp>C14wuM;5K;Zz1uMob;D?xdiLR*!dTE=RQ`y(J%*;0Y-3@`_*r>Q zcdp*WKUQ-q`C9Z@wG=&>JmGQJQgL5-|2}z_%r#3>dt!OPgBK3komrb%-wh)&lZ+j_ z-;Y8n8>3C@QMpxLTwjD`VO#L#@o>A-Vn!RE^}HKJy)#ih5!g3}71ZQ=hMSAGYwOj& z)`BqEv@0W(a@v-$p?)+GhBvlAg)N{nwt#D|k1t^vi3QfsjEWouM3%faC)-Ld0ZkYF zB$hg#`Fx+fbA^W|7l?& z^V-w`chSN(u>{n3IkT||j%F#eu_^dx;SJw-q8=eFfKS#UQHb$dN79PoTaSEF=_@N4 zmHd-S@?0Djid{+w7s}1pVnoQmE;W?(k zz?1i*@CdJ{DK|%9(vK*yR_rK=MefH?5|eCO!u*;Tr|>6bPBouKk+0;wd_pIAs%-b7 zz!~t+Z0SBO2}jwz!ZnnZE>p(o#%I0dEI|Jf;OWI$y^;-Vrs(2EyFX6}Tr)aT+u9o)EhsGufA*88#0XR{*#Yo8L#(A96n4+BH70mW7FKfd{T51}LUTS-Wuu z_zpCH>abrU^DqErYOG5HZ^pz6%r&_5wRm0Jvx@u~ef%qi;?=lGLx(hxkWb&PUy zmho@(WODNx8zNFxe95vYsgW{H4mxx?>wKtBetc;)p<7(fxnbrNI0Y2f8B`R@es9tj zcyel+o!t0xi5{tln0hrZi8oBsYtY$Tr%7cNGHqW;rjCE!Gqo>^>{xSHnB-Cl#QIpp zWl~CAkF`f9gN2B}`Sddn- z!x;QdsTXd>)STUBO2(D7!-ez{_U%S@0YW>QY4H?!7aO?3Q|(wxD7f0{w%HVND?gpg z`ykIdpdYp(6P=fT&iPz#Ew9dEdwzbXAUQirxVi-P>F7O||F-w^Qr4N@W=h0WOml;O ze6qn)kV-l7q+@nxc*C|&kd~wII7*xd76mheic*wDgkg|SkEKF={d6y5D#8KeHQg=XK95Kel$dL}F)uKU~?B-fHoV07fn{?T$CJDVF;;M>YXW?=sO_ zgxd0cjY-nG&1p|8oL9R8`K5?FZ2C6jozJf}!#e*3?$bGT!)|W8maT_Q4juA-;$9ok zwRmV880HN3Wr-{3P=vbHwqB zIPctWS_YN9Vw{c)jb;oOl)2^pnI34hr*;1tl^?$1>SJVAU%g z(x^CJ=;B)l830DIo-gkXbPO)n@EdaDJHZDQH^$w|Mv*a1z<=9FPY|`Zj;>+2fp)kw z`iOCXeS$Zfo)h*+!=DX+7SNu2k~d@s;0X{La3>y88WbOHMw0!a@uD$)YQR_rY=WI1 zQy&iiTti&d;0mAgo!RSWF`*}q#0%e_Z-7_&b{P;2=nL~^)4vDGH4xtPG7gaR3cTTi zE~pFOCavKms@DzZ3upz>m)UB2G*;1%NW(iEC)b(Eu?TBJ#UBI!dVz?a2T0=?f&x+B z@X2l!5OZFk*Tlcogx+}hN+K?;yJ%C1Rcw`DWNtJ5v4h~)RcPvx6wk=$dTMkdCxOD? z8Z4tj;K(+<9m|oV4^GH?z}N*?8iOBHpI|%e=XFXkZxD|M=F#5+Kk*3=79P`ue8&J& zu{OTNi=mhwZ<8TeI)*9RkVR0bba6xxR%yMhk|iq#MW}CtniX!1=W>}fhXK)Q_j@L# z58p+sDB)7T4UnE3UK)=dlph&j_(}S0Zw%6vWQ{aGSpmanXobO6dVnOe?(mmZ=o$!! z$XtJFz9#|%mCj?EXOXQuTaD3Z&UG+tiPgNt+y#0^oXIH9Em%v+r6G%PQc^7qSqD3t zrPcUzRM;ToZIip|g0#7u)wJdIjP9HzqbK276IOH3n!}~Uj4E`w)ZDf0yUJ-qyG*B%F)v^MN!WCbR^cTdBLCDsdWDP}t-o%^z0=R&a^dzP=y`t) zy$`UfY|p5tQi2T_);oK2eCQO^3}~-qJ(UTa4ro`lE^cF5@=UO}V|~CDgbrwLU_B2D z-40~$seDL^b4*-n`5M1g9M;ku|4A)Ni=#2C9EA)V6)%k5Gvw}Jcoj;n_0PB;5Cm?`Wpz3) zc&iQ@^5Z!JLI;`2UtVpV;iw`Z2&w>p0s3*DmB*XbRGo2dc)w|e>H67Z<;>drK%f&d zYEuE*WDMYBKuA8BNje25Iu@+*Qz?uz2|sO8AFB-KZ$=6T5ahtyykNY7QZf=&Njhf9 z>KMf~g}@o>ksxByyi85QJ-71q#LQXcTrtmWqR&2}&nY6GzeJZe;%x5WJ%r^QNJ(Nc z3F$A;3)-TS{F2JWYA6=fgep{uMZtK(2wa-NGHfh4gM&SOeGA5df0ACF>1R^Wxi#=q zOEH8IyBRgMAN#Oh)Kp98MZ(O z-~qZB_S-!eCB0b^AWCodBwL#eIsL5gpuhA z3?oA%uDcK-pFqDo4&@%nMuUo;>n!dZ4y)64UzhwJw{PY~%~Je$WgD!1jmrs!32a;;Nzo|+$n2egHyu@c# z*rnJcv!}tbkaUibplS2Z75Px!Ilwx|eJ``<<$1n8(o$ItGOD8**8WQwo->m7a~a;n zNiPj@nV0-HsmoqmydF+0Vfh%(@q4x)y433jwc{&CN zgR&d~VwT`vVHlKs3d)x3NC5^KTU$;|?QBF(P&yJpd2ihUK`lmuS9~al${2hEqm2=< zfjb6ULa;*u%=gYotgcBP04y@zMyE<2 zL+_;DxR;-xKOuiBy+blQT98*)SuY{2wHAfT>&3X2SM9M*@D5i`tT-Y(lb7eQPsMMU zq#a6|lUrA%u@z*)sIA(_%UkVjsBt=Ebqq)=hDggvG|LXQ1XFT}ZJOfRG{iMzN^)~; zKlrbH8k_T2D09SDOxC|j(dA)pb+f0Z>dN@=w8be!Q${_*9)UtLHW3N2kU?&aPAOfA;Ndqc#@FXWl@3WM-LX7y0kzsf&q*jlv6n z3;<-D5Edo;J;#hvfRA=%h@Oy&N9l!@hpWTn59$U!iUZgJdI1Iq`$C-v1Iz_TC&X?E zrm<*wW=lZlA}pS*Z!}Sg7;DJ1=-td>a({e-vDMA!dyFx0?M;F`d=o{6>15ypJmLfT zz~0#g`~u217++z;d@(OwaD^$_g$O-J0`?^uM30TucU*x?y1>PV6`rv_dcg~2<4^gk zr*(yhiz^b3aw7;3fN%(hY*z$w>^lgUx%Ukp0Cku7KT#9^fdl^o<78)LW%%DT&VR)C ze`0QKy8jz+FKpsu;#YhYtSC-}c;oXQq9CQh;@Zi;p`2Db7_GRprA z<^17i{?io{v~$;@VPR$efpXISVC?CCc=ZhQ^#6}kPIeB4|6eNSKMd#prgHw=`2U3E z{6|LoKUj&(^#A*fNSoN2Ih*4%Gqe7GVL6k=W7p_^g+6;g(UnCh7;>cv2qvJT6Qg#O zOXJ}ahej~7CqP1Pb$?A?w=tcJi5)MOU$?yjj?{wx8>q zeEc;zFEn5D?6G4y4*Q<^9Y|5;^gSDb{@ci0A=w0L6=E6Fdem-5apl)e zBd9N;EsVQJ%MPs3(~jEGMqukkZ6B8b)#LVx)Z3K?c$c$)D4mQSuw2f^tQy%j8vSSW z#r$?*X=zVN<^$bs(Wzc-??bH#->cnEf@OcV9dNq6L!0@NLJBoL0x?}eMb#0o+ zcV&BOr!ZXl+UG;_Sp)?}Cxb4EusxDDtNO_k%)WF-Fv@L|D0cnjYjw{|B<0%!7y-1S z`9Ih=GsFM3f&bf>>6BayojvSL=#(8@O#UMkG;lKcXRH5jHvK;WLRo&8vHt}KW&44C z{)2!rGc)0{{Ma}n3;ln}|MLH2OiVu)`wtxSzv}*#|K&Lte{|W{p#EF_Fa7_&SQ-AK z^B=(IKgj66`hWfXOaH4ssDFL4u>1f?fBN{>_P=}n$vFP&dH&PiPyK(l{ol{|<5K@= z1nNHx|0po9)BjI&(tpFk|3N4HkAMB29`_H8`(H!He|y|N;;-WW;B<8VOW_Bk%KS4V z@bW@AIXjvd*g&~wUwV7!D=#j-bX|9?KKn?SZcP}IHWFv>j1m)g1b`q38bj&_3PTX{ zuK*F`mqT13P-&u^$F{gs=tDy8_(LyfYBhgZ_t>sInbqTIR+p}+R#%%Ixn1Q*09f&@ z`}%#o>0WUiZ+TsLPVpRXyl)ws+gsr&7V3nH^pC;vWTDbzt_LE#5eTaHIIbh~+$&VT z-^@cuT&Xu(Jcjb|G+$UjjM9pTKir)?uB+XW!1IL1gN-HYw3ODCxrMoE2gzSL$%`Fg zim#+@k_5b%A<$_w8l24a80Y4`Blw{Z-1}sKwZOc>p*KRfXiMI)!9Ll%eY%Xp34X{1AMD46?vkb<$umSS zQIjD_6*IOARw!CE{Rd5|Rdw>6Ce?)2k9`m*KWHmTf3tywutiG1#r2$Fj&oE|;tlsNDYRB@o;*QK0O|O=kg*9i}7%mumrjG+=4+y)N#$YKjSYlFR1W$in z;kht)>S^CTG(Etb^g%oNz#$gUZTmC_w08lwzck(16nL<4{$(-)KXW|`ej=1U+WaEw zjgI%%&mekYe`30ATDUfncVsi|9fm@`#itxbWLLHqW=gPnCN1W~c4qY z34q3kzt#-rCQ_@L*->1*pXu)0ZRo?pN|xzjP|7M{F5J(BR!De*34)haTle6?~u1 zn8uG9I77ctZp8JX56vJxV2f|W&H5EA&)V(yLU+Mt`=rI55WP#a_+K^Ov z^96Dm0F2wnPP=zt*|5CAylNr`xL=^sq*{Z2ZZr&WuYQSlm;Ok6v58PeiflE6)k zmUOIBge%Z8NXc~y803iznh=?hLiJ1I2(%lZV=CHUFB;N$VMJv()W#Tb=kknN9eA_n z@uG0;b9C#|TnSmfp->m9%$S_GZl6}C5kJAYu)=4v>syoC;~JzZD3L}l zw!vJBn;?h%@W!zj=2i+w&F@&*?6qKPC_re{1>wa0j=&L#V{oJQN+)VZLl52p?rIIr z3PE(keDH;6zv(zxpJ_$Q$fNhVQIL(s8+0mw7peMnu>W2j+z$U(uf;HYVfZ!C6{%}9 zH-Xdw^BoaYPn`+w{Rhlt*RB2+&Y&B8o<7@Jm|Ne;_TV+6UE$Bxm24x@m8=Yw7x0(& zm5Jb6XV%Du2`qQehfLnzpxa}%2rfro z$(sa!LMy~7g|Ed+3oa*MW)N!qX*h!gUwnq(?ymxqG1Doa-NwuE81EGr?g76bbRz9S z7ZrerG$1nf5j11)Ks6CpO2O)Y{EXoIm#ocN19Le-bAc^-fSfx5G$36~VRik{>yWUU z!QFzGKN8Nx*874o!*ao_JOSv-P7130zu-^0{??)Th1dnFEcX|;%Ps)6JXjtGh?{GZ zGcU+hR#r=>sg)!~xKm?Rkkdhj1qLYg)DE6I+|!ylBn;R#YW^>rsO17>i6Cu~!I&Q8eRTvhSYH&Z7`X=w!mj-dHay`t1xGGX;4xJtqG%*)uO@yeh%nDt&+nPS#k zq;o-tOUoPcT#RYo@&wf*AIv?>52ImO&N%{(TI>Xq1R+Z0&I6- z1AbJwRa-BU5@D~qe)nY=`RDm(Hb zg=vYI{1aw|Ju&4{(rm`*{cddM?f~@PW;$ibmsF4gINUlQ)$Ar9%t3`kT_>+6hCQ14 z86tzl+pK~$WF2K?j?z&RvUQR;l>Vl933$iN89^Y(aB*80bwn>shZmHIQlr5*(m)8-J8CdeK_90&0+q#SHT z3quu(E79{g33qgod|xDXYKYjC1INbLTIlpnEXvr3z``M7>X`!#QV;sU ze_$|w)}dYJ`lMIAXZ2Mnp1(id9HjWS28nx=bark3`p$a({Tp#}VTA>BqbMzds{)UV4r#yGIBei%DYuTlCnZqwPdf*KhTCDeea zJ+H2%O=ML3m$7n7(Hhnh_-~(c=O6a!`SToZqu~A+-C8D8wjo1@Xl`4(U}^v>8BUtC z@pO55^G1yl247GA-F=4YZiUf6r%7~#xMzI29fuZ-Qw3_bvj|}mM$#9>dg-eL^)^BY z1AOrU{ku}bz{!LS6s(Ax$WL-t&L;tB?C~9%K<_`%t%KCw)_<@I!@#R{>so4PvEc@c zUBga6fqa=s(|ur@C^Zsl2uRr_!Lto8v1TSO;A#teGDp97i@yWaewg%_EeC zA41>K^QFS3+yB_VXWYV1M+=Rw{i%CepxD6|xR>+coP+(S>JZRDRK1?z1)q^bq?(I0 zx~%YfxcCYrhK#-hBY)GTj_la&PXgwSWo};hs-M)_A>!fLtRaDI*1lqy@=4<$bHVK(EU3Ieg=I3*tO}m zIvA6NM&?z5d|h$01`O8m9b~BWTW3`L7t>4lsz!fj+;L5L)B6K2-ctHTf=ymm=kEzU z%G+1;lJ4>c%uc@bc`b$%gw9Br2U6$*QMXkSe1)xz^+Hxxc&L3q0Rxs*?C1qzCwcF9mZ%1|i+q_6(Xy#P&^uA_C;_ z+P|VX?lS}z6qB36bbD7Kxd*zB2Yh=pV~9oIz(*Paafu_GS;ba#4-|!e!9uAf^u5PL z)-0XW(GI9WN`92utavu_a7S-7nWc9HZZK#cWN9^21yhXHCCtubi72|b$Sz6=hwq4oJ20^V&qj*ev>%x^7Gh&`xPD zBu-yqr_+8HO{rz*XpmMcyj?^3d$^)fhUWBw>pC6$6=w8_*eHASn4!IE5n=qgx4Avi ztu%?9ksbv9VZvgEm^R@~{C>lNdt~64i3a4t3HyR4?1zGhQOS52N{>fpNSCTZt%u+p z%~S3%@fNS+n&XqlgJ$|{@8%Faf7oBX`uWaJAGyYGLOBF_MqAiVxs$fT@HS{j4XKas z*zV3&&S>9!2*_3&GX}ECjX}lL2Ql)uuBZ>qy}tlTDibYnKCx3ibuR=70vCc77b!9_ zDSsBBCy#IRJKQgC`quC!%nc9rKJ^8=Fp>9SOIse*%-=4bydTzuEu6AnQGLR|3i$WD zAR}1!=^RAvTHMe;-fo;Nz9k{5$YyVt{mPEfqe>F>jps+mC>ok=L>jerW)qy-rsK)c zD`e}o5lw3whbW=S3GQByy=tEQ8%y0Qx4ZImN)5TifBDXgVN)%7HADm4VF@s?iZS}&T1 zI5kEmB{Qpzc5ZpCz+95 zu)Iy7+wWN;=r5|i2)GHyz=gYDI&{FoWPfiNbS<5zQv5;QiqCJp?%IASoaP)>HLBEK zKQn8!>pl*g4&D6O{m^?_#}@M9?nH=~abFpII6U$6j?@qsvI^0-)yE9IyhgvImbOp3 zDl%sB8#+d+vcu|+6+=aV<2!@~2KoX`MK~3f#BI$AB(;6zG#K-zm_|qv z!}sEbO{>~{zd8E z25w-}=#3aYvoN%X$-R6Cm4|)XAQ}3h61Z69ePO+q`F|dpdP`F%=I8hAqnaP@kE|V0KBcK+SkA^#O%f z!J75z_v5KldH&Xzrc}Fx1|@^C-Y~5T36uq8ErA09Dq_ddC&36HmHDs$(8kU8HWb4} zSofIFuX=WeIsOx@li#30+3FFIB28htXNBkk$@Y=vjl;{8}hVG{awWrI3aXKR7JtCYd(Rkm4^mLa)0 z9Y`-itZTM*ZwRnNz)q=hfNT3>%}e?jYGz|;4tq^A<&&e)t3bf?iPEPIo&&U{9rTGn z)_WZhW-BOz-2~`@D_&}VDT>++V+i|#7MF>!B|YJ^e#?@4$q0*bh_k&#-K=>vo3UMi zH0j(02Ka0OC4RhVsZ2jfKL|E3n*oBeOY|sF#F)#3ZCse~X2ir}IKrO{i6Ud?XO*_x z8&t8wxXhR@F(=grAbF>393-Yj7fdV2h&E$_&}md|hi1he3Q4S5T=$?HBHcJpcNQNx zTGBmT?`%Mex_(1j>TN7H`{`SYEx^2 zZbjEI%2?OLJRt4R+La3#D&#!mjgw&KiQct?3LhO9uz=TipIyiD?PlT_@n!iPB&|Y} zRxEMh{&X%9swWV7^=xzCou}3veHxnbNctX<8yd3Bc){1jpWX9s3)7>ZjaGv$x$NTd z^qxxKndu?{N?AkepiLv=in#U#bdy<=ol6i3&?Io=(Ln2v07?upcwl)(1k*#or+v2j zdXiIIGo5(x8YcyP(A5aSYFvPqK$WVB$stFLrhx_4L`VqT6j_5buHrzd8dQqP&VoW3 zW^L^1L!Yc&?Y1Vita+rQ^iufJS&d$2ufAGFjXPll~g@@@9RCq zVh%=5@wsB#&b{$hel>Q~Cr|>@lRn$9g*Kl;F%^X6iHIG%!&`JIMlW@sx z?l)P#L3SQm-{EGCA>PUy30Fu)TTJh98aIk0D`}AkPm63wSQn_oS3`TYgc1IK}HYFeoE6Gi9fiv%Nr$f9{H*JB1NlZ(e~y}l91GeMCWYL3zCCU zVZbGrFK6LIhhGRw(W)`3&@*)B7o2XoW{h25*F^?nURB&&((!17Zc~<_*<2M-Jzl3H zIMj`eI?X8#Gz4lhOIr_Va6Pi>Ua!p<5-Vyb6cvq3PQiNy=6sT!XM;qFl8*~~qfNd| z!iV&;AQ{nIx^DRvy-US4JJ>E1YZTwghU z4pDhLf@a`sZQfK=<>UPn+Vi&l_wSdYIa?)3c!hY8s&WhMzv{Ur$EE@dRer(Mb9vR_ zI?M9-RwG-;TB0rR_V3y@skP!edSBPlC|H--s!BNn24- zZrA$VREh7^dC!Za$s)9Mvb{I0#-$ax z>O(r?R)*J#+oc|1?s3ZKZ1q&>b5;s>Oi~JCRB6&zO?tpt@mA>k%c zAJz#zz*wk<^i`W2@TENEl2Qt?a=jP@f>7HqBTw0*VR6sl*Wf~qJPmNEfx#`ueodz6m{ax-V1^i(x^E@R?0ohbQX-q{@ z7IB5N(ZJw48@O5W-wc4t`|K%6FN~qcseONf+G-Zd7LxZB%+%B)K%oR}QD(ClI1coa z74YCjv)?a@e~5CFDX%F`>#IT#@SE@|CNSpQ@(+k18Q2H`uPOxJCKlf2f`z-S;z@#t zM=JF7uaO7mlLiNL{X}mf3ru+-Sq?Zza7`rNCidKgURCV|M*y)fBVRthI0JF(OG{(a z-nNtEcLhm*4xV`=D5=76zjBlP#ACJ9R@7`{7!HPCDU~?9*Vr%U&IR|p z$~9CRYjWtxrG9KhpD}MgKk@gQ-qGK1%zbn{vc`zpGZTv>%{_o;TV-f+2mYU$iSXbE@5iLUf%ssHW6 z#u3rj?$NrG`y<6;f#XP-p}%&MZzr_MGT7%|01?9U$nu#gG>6Ud=+4=CRaUE zP+!z*GxFhP)4Na)q&vSXYarjgZ!9_ChpKl$JOqcPtz-Fg+|%@L(nYgB%}$L4)id0& zTWb5Xc$<=^>h$^;GztxXF(&XD`CWP}tH>a`=wCngAK@@CpJ;;8i+$*{KEm`Dj<2g_ zu%$F|y&2M1zounWKkAtAU9{90zcZp$KOd7@j*c$1X)|sAW|g!sRwVqBvm@X7vX`lA zp{YC3Qe7UU)#=e3K)-MvWux8BpKhU3*V)~|j(+8WW0D*MDn%vZNx$j2KDNVdd*-XV z{ky^TX+hcPa0D{bTG>%fu1#7!C-Cy5Csla zb;O(yvjfeEOzo?f(vyu-<%umok(c~sFyVJBnUT|~fi^_O1u>Uzh1|Ng4TGr~_;eS6)AxRFyzP99=3P9;Lr#ybXCRazDG7_kby8RV(2nEx48 z6^9rOxwgd%oT*}fGK|~HbeOy4t|{vhs^hC4(PyCOEtxG+OQb(N^Kj^28O#+ud0p}< zV!8fDGty9X#{FYGC35S{A<{NOj;GB*Hnqi!#(n|FR<(9HI8xvB`R*~5RdmZa+0zzz zndekqWw(U8R!fQCX7SU>y5htGSrbPPE+PQq3xU@du(twM8I>Af+=iixyB>P&w29Ht zxUaXbriM)B$r(AndLwhsZYXVR#x_I2+mfVk2~E00N)Im)Xk25Q9-NIa1OP4o^rdjw z_)LAbUP%@CSxsqSV9Tg4 zvCg_4&%`@*A#7X+@>quTU?$3>F0IYFN`rBIE^$fk)00LSqnbfe0&xH6e8tz_0}IHo zQ!vxX^GCyp+_;<72pbrV5t1Ro=Mu^%BH*`5UmtRA?zz`bt8!@QKYJD3yD;G4X-~L^ z?5%sKr;~~GgDvf?>&xTYT|@wNC0VUONVtEuS!6>wH^VJY?`B=)r9jFfZ?vbM&d-k~b#W-d)jOy$kE z4$vLLu8ju0G`h;huHaZu07cH|Y$SQ{V=Zq?EBwIO=u^lr!jZjxMy??+{St7Iiq z)@dxk2y6G+&KAH;#JnP6qb)|L3h^I2lcNtf?8B%C&6sZHCYj#A2~OvPUkF1~`!gPb zuiAltVM&MOx%hQ) zlP|;?(jC%1=Y};(t^<_NXHh(Zi$qH9N1Suu<`Ocw-g!218;}UZK%kqQLa$)DzP+H! zSAAHv<8ZP;xU*mr)INp@0qy*llE(~>+=O*N>7@GGk`zYM)Y`{ncWP}-S8tCHk-UYp zjnp_Jx3}@r=NY=CU9{PCY4=37L-%;c=Ax%)6HWI=#6qN{E!KJ{W|g*5O0SgnvENqF zvZNQPW)N({M6P*eWGWa)?fMvBtBy$k^NvE$S2`mZ6_}76$N3?9|M!sDLh)wA-lNH1={@f^AeVuz6>p0y? zuh?Gru1B|`T~U?@+2Z2QY;gW*NyK1*>8!(M$p>DInP6^yi+&z7n!-_EU91tEm zvzs7a97{J>Tqlz5U09Ae9!`w~F`z6KJ27#Wj<)zqz$j1%DZ1eUBQFXjbSlTI2QGE3 z0xyLrvhe&u{VOAhqPyBe5H!@uV4(^8mZKj_d?Cv zYHOmxDUGl3z{s~B1`zC;lQyzi0clyx+?k)iqfwYc_Mx*aP&-9ka<6T7l*ts<7Q)O+ z%rdn3qWgT0DvvJjeZBT)ihT$9m>1{RIqqil8PNqr;sP`($%FeAtV|oU@{N+#Q5juR zF>pR2zaV+!ZMmuXkomPJq{d0Ohk`xHjUXn!YijM(xgz4mKr0xO^0OEu!J$>KFkXVkc?Wk)2yMAQSvW?rf;l>Ck_ zSQkH~KPyX@6kf(4AcWrXnDk^a4r)e{{T@NMSV|d>&%mSx{5;c?2F8e!4XSS)v=B`(dAtTaE-T)u=(pikL4`#qS4jm}E0r%^p_r~~k4q|< zUXZ~Ak7NF-Y?_8s(~SnJx}HijSj(MySLG@dVhvXUvd58 zG4e^a>3RCM^GM*@b(GC9&4!Fivd;eZ2D!58-b=UC%0(waQzO?iM5|g8!bgi}zw=76 zHo88Yigwj+wMG@zydSf0X0Bx}6|NR^D_2xI%J#MAe2?8Y)Z1J)5&1{M2GD+6unMWcOyhqLdNagul|ZS+>r_ z;48zVQg|a^>a?f*WY|0Pal$EztCAxW2_OrW-32IxQX^hdc%{y6`Iu;NBLH3lcmiSV z--P@F>^qbTdUqa zjK}LZ%h;+JMO4L5{&?6sZ?hDPR;#8)K!06vYlEy&cXWnCaJ6~ad+J~fEPm2xh5asO z?Ks&D{FGV3=f8@cx?X=T5W1*msA5j3uD!SJd2euMb~V{?yD3=OQMW{}JoYd7WE9$5 z5p~pC!5SFoM<`cU(ZIA2bQEeFkebzS;_Mh~?*2fy-8za5j?t72kySbUfk6<@V8C$g zIj-Kqf^m=ppiE7dC4wK)luKt`nY805llUH1gGF$LT=X;@BhYu{n0^ z-#+&oeQk5kM0a+y^De*AurB(!Mozrii{-=xa8C2TId!2UzDjGsY-bhl1^5vh8u#Zv zGLL4whsnzwPIh{*^f2lAf`##rFj@|pIqzFEBBrQ~P<>SW43j(dN6D-V1l@!EykoE0kDK=|QZ%`T z_>NT@5w+V&`jxXo5u0~Mwa3-d)daoV zkV&TWix5azJ&J^6mz)~!I&1G7ngT`zPtjg9B9^ki_@4AT3X}RZhu_}F=L3+s* zNx2Nbx8wm{_4sT|m*2mZMX?LCiagLLcxQCp0mZciTbtvNgpxWT>-k#?~L99t98)BeLB%OX+aCa9)GOKI|b!kAx>@1AcP91hjAAF?q~ zYm$aEw8bKwupE(W`5Uktq2mmyy`rNLh2UCI1#QKCQnPGc=D?{!Zv-%HaN08*ux%0T znXku-R;413;CLj_W>UbWacWM^z^3xeX0E^|aq3PLevxqs5BDH+Vk&dCux(&V5nn33 z#iLZR=yuo{L^kxhRGW0a!7YaIV6Dr^zFYkq%Y^RehD1rVEvR?n=xB@E(k5e_fA3Ihhh~@NI~0hPn#fpT3Cj^BzXh-dFT!0)MYBU7TVhwx zk|YIqH~2YHRQLq%TS%l{uuaWC>4 zaAP$@W0!y1L9-L$m$he>T;YP@D6$MhYmN74!o;vE6YoseM*#Rb0+T;H%Xg*C_bBy3 zf6`N25ub6j_z8E&3g4nA#Mb=n@^*Z51)IH*foBz+ysF9m!KU7=3vqHnD0ccPwG;Yg z8aiup%EhpgSV5KS1psPm|Gp&IciNJ#1v?78{`7B_v#m(6`xFrdNN%%GmcIykU0D3s zgs_A*^o*IUUAK+ zV(Ea~po?+*ntqg(qmMrd@P3*d?KJD$lNrC>16J~enzm?z`R*vdtHtHf^?=JVXW@jV zF`z2*v~F}OJ_(k*TVlN6O($lA@yk9O4>Vtjt)CXMen1I34SV{B9Kshk$BB7-UEBT9 zrM-Q2f-SB432=x0Wdrv6-i+?S937uvj5c&uaHI=aYzwmZt{P!JK3-#j(3r89px}%r zLwH17tOI%8EpChj;OFEb_@xq-c$?_aqA*6x+*raOS7{dg_e2t2s7LbSwe~OS)zH#`!fLr_`s{bNu{wz+9Od<)qJnhj&U;D$>o5qMz$8uFl{0 zjZQ63+mw8W3g!3(yt z`|-!79VcDtmxWpQ6g>BZ;|H2VE#Z9b>l@aJ37NH_ziJ>OzT?Gr_7CRNl62cjVr>al zIT)I}6$$ta_3RdU^=5v3_YTASw*U0-5&S-971n$K_tt!aXnlNCp}E+ZZ4K_pyGHTp z>kY|?t`_F~^R6n3QTwVzmpfCVzRBJOZgHrHK1anjyWQhpr#I1Ck-v+Xm@6ei>F0Mm z^M``IsrBZb?7j7d_hVL1&UPmxr_cGLx5AgF$~TEIxh0M#1HzN;Y^NC)7rt47!*{kS!s6-WX8VLU z*iMl#&#^Sf_ZB$#{!=}LY4aZua!blmo=B&mDj{!daoBhlp(>t`bZc!sc_*7<`3txEW1sk^XMD4Azd887?R~xuK0a`# z5vwwMhdQ$4ylYAb@_1I?YRx{%nM_$HOu`;NVb^Koc7jfXtxlyTWaf`phl~h*drh7w zju5;G({;cJ9Gc~Y*g_|$e3Kh1+V@*GUScTXmn)e@V7jyXn#pf=80{& z)V<@HF8yLZff6q@GT8d(!MOau>E(5LwE7@FKJhw_Uer7l?=)=qG}z71+&dCXa^&8Q>ek6Dl4B9~=>%LeQXM=JNIc zF0Yyqko#mn&c(tU|zzKnMXO^x>kguxIPQBV;Rf zWv?@TnS0J!frdhxyFHuOguF4)IE8mCDlV76V4}=gIjbx4Ph)L>&vn11ME}A?^QsV6 z688`uPBd8%oF5F#uwD+uL+WwavO09*3_FB*o9CQPU=hT}>JEFu8b!Z(~J`s5sgcZH+|X$_hCJ$(c< zbeEpbrtognQ(J}-W1`oZeKO(wOvE2=W-iJ(GakY5s1OtnAq`gA8ebHutPqrTMDRpg zjs9~fZM2oQkFmB@OaMjxr!*aP(#tsNc!mVAPwF+}4)hKzpX^~}(59R7rV46Rd5wNG zAFPra>2Bqdyave)@hrp~S4vKL9bTlTqBzQHz6*MI{kn(E&;GZ=cXHBATY; z&_Urvz1ejjNJ&G`vHUo(o*&^BX5XlSSE0kkKB3%vA8;(eYuSflK3HnOmE&YFVYq`A zKF3Io3GTsrPmQ6gi5Ju~>_AHFja8A+b?_HjF4)xbEG237dRI(tSD`n!A$ZH;yK6xD ze!~dq+VL9r7`Vq{m=5e>d*Pd*o~WV<)Oz8DB|@-C zMKNG0V7g_gSg6t_u;~HB=s9A!$`5Bq7m`a;l1t5!OBqEK)a4p!O3kFo#*)f}~p|4-&_&$ zFM7b+?C08uLsw*Z@*&rPI`dF0ae2{JxR0s=Pj7Rpd6n{^D}tG%?(kIkMpJ~uU~Fg+ z?&8_cojLtBhei@;__wyMG6L>9Wq)kLqtIeIzBCf_5u!S_pG+ABw}ZMm#kEZhkWkTT zzGJfOKiOJF9(BLq0%O~K4t>`i8|Vjs_fQ!DFV_6khk2+d{$F3KLp8Op*RESBwVrK3 zDB7Tj?g9*LH6cXSk2&_%0Tv$Jfi;o$%FdqVh#1|XhWN7tK#r&^w;=rGtGgNKnwJ@8 z{JR;*o@>h2-K)w60S|^XPGi`r$*C>Md&NV-vRHTzq^G>QRMGf$v=tsO{IR5NSVC%L zaTiHeDGyRAlIx@aMH&i}l&Nl{HsSIWsTRc+CSngZnx<+*&Hm$ zEHwLKy*Brz^j<&6NQkeUcnWNVtzkRO(9Ms!vEkM_PqKd5A-{;b3$Eo zT$R+&8Er4?SBUKTSK=1_k?b?Nhn#}NLUQU@_kD6ZRt>Mm?kl(Gv9yJmKUeLcxz4tgj z%6v0L9Dl`}wOQ+&=u>8Fvl^QJ$Y{n4MA1$<*?^@2KHRi_YOdE-J>n?{q@6QVx>NKxf6U5=*{;y zU>D@yIpcqr>p$|9k(Gh*UzVPQA#FGGc(J-0lxn$>D5k{u?b{=8@}cdjoHc%_ytuN6sNHc z;Jt_)ega})#Gi+f&x73dso%1mN65>)oH-_u)yhRQ-I%$pBya|8JoT{Tkv^ERM8a%) zVoNAz=+3!D?tYx@pg`!JVwz&evSv>)M(YV)XL%R>TUWcQR~W6w4fJ=bYW-VTCK5aQ z$!|R%?nu%KD*ZfI#~h94O#~#xl{YJ)_S{rwvsctEdIS+by%Dts3q!j~pzS4k0h1(^ ze2%O#*z!kZF?OpK*XP6#%r2N@mAA-rQmR(;4F=LvcPu?pm20ITMq`10%| zt-S`xHHTaV?>$1h$rSQyFZ1)LxXIg9_+w@-(_WW|$v2g-$v4c2)KjfpiP5)cz~mSD zSE|uB=hWZJ(OS>=8PGL(uy}aqmwNmx`}KgwsnD#B9Z7fa4)=jrsP=;wXr_Fj-oJ}J zwtu}R|1-?~AIkmzA8r2@yEC!;U)Y_EjqN{B`+vjtf7*Y7@gH3N4}kxt{Rh4OcmE%J z{`dBOVE2Fe|Bc!I8>Ro#{sY(lIZpdOWBp$rm%m&8BO2+IY?W=y4Q-8#30eM$#{WG& z|H%XKe;D+C5?%bi4LTz`BisKPu$NxudRjyAc8{L6HdB+Cb6WEf%(k+U%n9Pl`hOZ8 zoYvJ+XagA&>g$Z~Q>@mwtm}v*j-d#lp6G%mh_HnG1YCG={NwGR#)SxtBpLKkB}Uf~ zIG~Y&*7Qap;*Kk?uyvt3r>~w5-fxX_Ix9LlJ39Wkew!LC9N6e20w4B=Y;#U|1uANNc5!v; zc6^70@SF8WsxQNYU7o&H(*Kg3eD`dP(K%ANs_y+@IX?RGpN=Vot)cAu@HN=(Y(A*y zBi0FQ7{E?TZE?1`^r1KO20pHjuC}w&GkS2p83C?

VSd)^I1*S$6Lp%<`VO+ofL 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 TO`%XI6b?gxczG4IltBLnzzKBO literal 0 HcmV?d00001 From ff1fbdffa1eec9481f398fe971ca0ff265a0b3eb Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Thu, 23 Jan 2014 17:13:50 +0100 Subject: [PATCH 03/24] Vector::PiecewiseMultiplication --- Code/OysterMath/OysterMath.h | 6 +- Code/OysterMath/Vector.h | 119 +++++++++++++++++++++-------------- 2 files changed, 76 insertions(+), 49 deletions(-) diff --git a/Code/OysterMath/OysterMath.h b/Code/OysterMath/OysterMath.h index 3770bf02..dd4655c4 100644 --- a/Code/OysterMath/OysterMath.h +++ b/Code/OysterMath/OysterMath.h @@ -67,7 +67,7 @@ inline ::Oyster::Math::Float2 & operator *= ( ::Oyster::Math::Float2 &left, cons } inline ::Oyster::Math::Float2 operator * ( const ::Oyster::Math::Float2 &left, const ::Oyster::Math::Float2 &right ) -{ return ::Oyster::Math::Float2(left) *= right; } +{ return left.PiecewiseMultiplication( right; } inline ::Oyster::Math::Float2 operator * ( const ::Oyster::Math::Float &left, const ::Oyster::Math::Float2 &right ) { return ::Oyster::Math::Float2(right) *= left; } @@ -81,7 +81,7 @@ inline ::Oyster::Math::Float3 & operator *= ( ::Oyster::Math::Float3 &left, cons } inline ::Oyster::Math::Float3 operator * ( const ::Oyster::Math::Float3 &left, const ::Oyster::Math::Float3 &right ) -{ return ::Oyster::Math::Float3(left) *= right; } +{ return left.PiecewiseMultiplication( right ); } inline ::Oyster::Math::Float3 operator * ( const ::Oyster::Math::Float &left, const ::Oyster::Math::Float3 &right ) { return ::Oyster::Math::Float3(right) *= left; } @@ -96,7 +96,7 @@ inline ::Oyster::Math::Float4 & operator *= ( ::Oyster::Math::Float4 &left, cons } inline ::Oyster::Math::Float4 operator * ( const ::Oyster::Math::Float4 &left, const ::Oyster::Math::Float4 &right ) -{ return ::Oyster::Math::Float4(left) *= right; } +{ return left.PiecewiseMultiplication( right ); } inline ::Oyster::Math::Float4 operator * ( const ::Oyster::Math::Float &left, const ::Oyster::Math::Float4 &right ) { return ::Oyster::Math::Float4(right) *= left; } diff --git a/Code/OysterMath/Vector.h b/Code/OysterMath/Vector.h index 901ea5e4..d6ab69d9 100644 --- a/Code/OysterMath/Vector.h +++ b/Code/OysterMath/Vector.h @@ -57,6 +57,9 @@ namespace LinearAlgebra ScalarType GetMagnitude( ) const; ScalarType Dot( const Vector2 &vector ) const; + //! @return (a.x * b.x, a.y * b.y) + Vector2 PiecewiseMultiplication( const Vector2 &vector ) const; + Vector2 & Normalize( ); Vector2 GetNormalized( ) const; }; @@ -112,6 +115,9 @@ namespace LinearAlgebra ScalarType Dot( const Vector3 &vector ) const; Vector3 Cross( const Vector3 &vector ) const; + //! @return (a.x * b.x, a.y * b.y, a.z * b.z) + Vector3 PiecewiseMultiplication( const Vector3 &vector ) const; + Vector3 & Normalize( ); Vector3 GetNormalized( ) const; }; @@ -169,6 +175,9 @@ namespace LinearAlgebra ScalarType GetMagnitude( ) const; ScalarType Dot( const Vector4 &vector ) const; + //! @return (a.x * b.x, a.y * b.y, a.z * b.z, a.w * b.w ) + Vector4 PiecewiseMultiplication( const Vector4 &vector ) const; + Vector4 & Normalize( ); Vector4 GetNormalized( ) const; }; @@ -184,22 +193,22 @@ namespace LinearAlgebra template const Vector2 Vector2::standard_unit_y = Vector2( 0, 1 ); template - Vector2::Vector2( ) : x(), y() {} + inline Vector2::Vector2( ) : x(), y() {} template - Vector2::Vector2( const Vector2 &vector ) + inline Vector2::Vector2( const Vector2 &vector ) { this->x = vector.x; this->y = vector.y; } template - Vector2::Vector2( const ScalarType &_element ) + inline Vector2::Vector2( const ScalarType &_element ) { this->x = this->y = _element; } template - Vector2::Vector2( const ScalarType _element[2] ) + inline Vector2::Vector2( const ScalarType _element[2] ) { this->x = _element[0]; this->y = _element[1]; } template - Vector2::Vector2( const ScalarType &_x, const ScalarType &_y ) + inline Vector2::Vector2( const ScalarType &_x, const ScalarType &_y ) { this->x = _x; this->y = _y; } template @@ -227,7 +236,7 @@ namespace LinearAlgebra { return this->element[i]; } template - Vector2 & Vector2::operator = ( const Vector2 &vector ) + inline Vector2 & Vector2::operator = ( const Vector2 &vector ) { this->element[0] = vector.element[0]; this->element[1] = vector.element[1]; @@ -235,7 +244,7 @@ namespace LinearAlgebra } template - Vector2 & Vector2::operator = ( const ScalarType _element[2] ) + inline Vector2 & Vector2::operator = ( const ScalarType _element[2] ) { this->element[0] = _element[0]; this->element[1] = _element[1]; @@ -243,7 +252,7 @@ namespace LinearAlgebra } template - Vector2 & Vector2::operator *= ( const ScalarType &scalar ) + inline Vector2 & Vector2::operator *= ( const ScalarType &scalar ) { this->element[0] *= scalar; this->element[1] *= scalar; @@ -251,7 +260,7 @@ namespace LinearAlgebra } template - Vector2 & Vector2::operator /= ( const ScalarType &scalar ) + inline Vector2 & Vector2::operator /= ( const ScalarType &scalar ) { this->element[0] /= scalar; this->element[1] /= scalar; @@ -259,7 +268,7 @@ namespace LinearAlgebra } template - Vector2 & Vector2::operator += ( const Vector2 &vector ) + inline Vector2 & Vector2::operator += ( const Vector2 &vector ) { this->element[0] += vector.element[0]; this->element[1] += vector.element[1]; @@ -267,7 +276,7 @@ namespace LinearAlgebra } template - Vector2 & Vector2::operator -= ( const Vector2 &vector ) + inline Vector2 & Vector2::operator -= ( const Vector2 &vector ) { this->element[0] -= vector.element[0]; this->element[1] -= vector.element[1]; @@ -295,7 +304,7 @@ namespace LinearAlgebra { return Vector2(-this->x, -this->y); } template - bool Vector2::operator == ( const Vector2 &vector ) const + inline bool Vector2::operator == ( const Vector2 &vector ) const { if( this->x != vector.x ) return false; if( this->y != vector.y ) return false; @@ -303,7 +312,7 @@ namespace LinearAlgebra } template - bool Vector2::operator != ( const Vector2 &vector ) const + inline bool Vector2::operator != ( const Vector2 &vector ) const { if( this->x != vector.x ) return true; if( this->y != vector.y ) return true; @@ -319,7 +328,7 @@ namespace LinearAlgebra { return (ScalarType) ::sqrt( this->Dot(*this) ); } template - ScalarType Vector2::Dot( const Vector2 &vector ) const + inline ScalarType Vector2::Dot( const Vector2 &vector ) const { ScalarType value = 0; value += this->element[0] * vector.element[0]; @@ -327,6 +336,12 @@ namespace LinearAlgebra return value; } + template + inline Vector2 Vector2::PiecewiseMultiplication( const Vector2 &vector ) const + { + return Vector2( this->x * vector.x, this->y * vector.y ); + } + template inline Vector2 & Vector2::Normalize( ) { return (*this) /= this->GetLength(); } @@ -343,26 +358,26 @@ namespace LinearAlgebra template const Vector3 Vector3::standard_unit_z = Vector3( 0, 0, 1 ); template - Vector3::Vector3( ) : x(), y(), z() {} + inline Vector3::Vector3( ) : x(), y(), z() {} template - Vector3::Vector3( const Vector3 &vector ) + inline Vector3::Vector3( const Vector3 &vector ) { this->x = vector.x; this->y = vector.y; this->z = vector.z; } template - Vector3::Vector3( const Vector2 &vector, const ScalarType &_z ) + inline Vector3::Vector3( const Vector2 &vector, const ScalarType &_z ) { this->x = vector.x; this->y = vector.y; this->z = _z; } template - Vector3::Vector3( const ScalarType &_element ) + inline Vector3::Vector3( const ScalarType &_element ) { this->x = this->y = this->z = _element; } template - Vector3::Vector3( const ScalarType _element[3] ) + inline Vector3::Vector3( const ScalarType _element[3] ) { this->x = _element[0]; this->y = _element[1]; this->z = _element[2]; } template - Vector3::Vector3( const ScalarType &_x, const ScalarType &_y, const ScalarType &_z ) + inline Vector3::Vector3( const ScalarType &_x, const ScalarType &_y, const ScalarType &_z ) { this->x = _x; this->y = _y; this->z = _z; } template @@ -382,7 +397,7 @@ namespace LinearAlgebra { return this->element[i]; } template - Vector3 & Vector3::operator = ( const Vector3 &vector ) + inline Vector3 & Vector3::operator = ( const Vector3 &vector ) { this->element[0] = vector.element[0]; this->element[1] = vector.element[1]; @@ -391,7 +406,7 @@ namespace LinearAlgebra } template - Vector3 & Vector3::operator = ( const ScalarType element[3] ) + inline Vector3 & Vector3::operator = ( const ScalarType element[3] ) { this->element[0] = element[0]; this->element[1] = element[1]; @@ -400,7 +415,7 @@ namespace LinearAlgebra } template - Vector3 & Vector3::operator *= ( const ScalarType &scalar ) + inline Vector3 & Vector3::operator *= ( const ScalarType &scalar ) { this->element[0] *= scalar; this->element[1] *= scalar; @@ -409,7 +424,7 @@ namespace LinearAlgebra } template - Vector3 & Vector3::operator /= ( const ScalarType &scalar ) + inline Vector3 & Vector3::operator /= ( const ScalarType &scalar ) { this->element[0] /= scalar; this->element[1] /= scalar; @@ -418,7 +433,7 @@ namespace LinearAlgebra } template - Vector3 & Vector3::operator += ( const Vector3 &vector ) + inline Vector3 & Vector3::operator += ( const Vector3 &vector ) { this->element[0] += vector.element[0]; this->element[1] += vector.element[1]; @@ -427,7 +442,7 @@ namespace LinearAlgebra } template - Vector3 & Vector3::operator -= ( const Vector3 &vector ) + inline Vector3 & Vector3::operator -= ( const Vector3 &vector ) { this->element[0] -= vector.element[0]; this->element[1] -= vector.element[1]; @@ -456,7 +471,7 @@ namespace LinearAlgebra { return Vector3(-this->x, -this->y, -this->z); } template - bool Vector3::operator == ( const Vector3 &vector ) const + inline bool Vector3::operator == ( const Vector3 &vector ) const { if( this->x != vector.x ) return false; if( this->y != vector.y ) return false; @@ -465,7 +480,7 @@ namespace LinearAlgebra } template - bool Vector3::operator != ( const Vector3 &vector ) const + inline bool Vector3::operator != ( const Vector3 &vector ) const { if( this->x != vector.x ) return true; if( this->y != vector.y ) return true; @@ -482,7 +497,7 @@ namespace LinearAlgebra { return (ScalarType) ::sqrt( this->Dot(*this) ); } template - ScalarType Vector3::Dot( const Vector3 &vector ) const + inline ScalarType Vector3::Dot( const Vector3 &vector ) const { ScalarType value = 0; value += this->element[0] * vector.element[0]; @@ -492,13 +507,19 @@ namespace LinearAlgebra } template - Vector3 Vector3::Cross( const Vector3 &vector ) const + inline Vector3 Vector3::Cross( const Vector3 &vector ) const { return Vector3( (this->y*vector.z) - (this->z*vector.y), (this->z*vector.x) - (this->x*vector.z), (this->x*vector.y) - (this->y*vector.x) ); } + template + inline Vector3 Vector3::PiecewiseMultiplication( const Vector3 &vector ) const + { + return Vector3( this->x * vector.x, this->y * vector.y, this->z * vector.z ); + } + template inline Vector3 & Vector3::Normalize( ) { return (*this) /= this->GetLength(); } @@ -516,30 +537,30 @@ namespace LinearAlgebra template const Vector4 Vector4::standard_unit_w = Vector4( 0, 0, 0, 1 ); template - Vector4::Vector4( ) : x(), y(), z(), w() {} + inline Vector4::Vector4( ) : x(), y(), z(), w() {} template - Vector4::Vector4( const Vector4 &vector ) + inline Vector4::Vector4( const Vector4 &vector ) { this->x = vector.x; this->y = vector.y; this->z = vector.z; this->w = vector.w; } template - Vector4::Vector4( const Vector3 &vector, const ScalarType &_w ) + inline Vector4::Vector4( const Vector3 &vector, const ScalarType &_w ) { this->x = vector.x; this->y = vector.y; this->z = vector.z; this->w = _w; } template - Vector4::Vector4( const Vector2 &vector, const ScalarType &_z, const ScalarType &_w ) + inline Vector4::Vector4( const Vector2 &vector, const ScalarType &_z, const ScalarType &_w ) { this->x = vector.x; this->y = vector.y; this->z = _z; this->w = _w; } template - Vector4::Vector4( const ScalarType &_element ) + inline Vector4::Vector4( const ScalarType &_element ) { this->x = this->y = this->z = this->w = _element; } template - Vector4::Vector4( const ScalarType _element[4] ) + inline Vector4::Vector4( const ScalarType _element[4] ) { this->x = _element[0]; this->y = _element[1]; this->z = _element[2]; this->w = _element[3]; } template - Vector4::Vector4( const ScalarType &_x, const ScalarType &_y, const ScalarType &_z, const ScalarType &_w ) + inline Vector4::Vector4( const ScalarType &_x, const ScalarType &_y, const ScalarType &_z, const ScalarType &_w ) { this->x = _x; this->y = _y; this->z = _z; this->w = _w; } template @@ -559,7 +580,7 @@ namespace LinearAlgebra { return this->element[i]; } template - Vector4 & Vector4::operator = ( const Vector4 &vector ) + inline Vector4 & Vector4::operator = ( const Vector4 &vector ) { this->element[0] = vector.element[0]; this->element[1] = vector.element[1]; @@ -569,7 +590,7 @@ namespace LinearAlgebra } template - Vector4 & Vector4::operator = ( const ScalarType element[4] ) + inline Vector4 & Vector4::operator = ( const ScalarType element[4] ) { this->element[0] = element[0]; this->element[1] = element[1]; @@ -579,7 +600,7 @@ namespace LinearAlgebra } template - Vector4 & Vector4::operator *= ( const ScalarType &scalar ) + inline Vector4 & Vector4::operator *= ( const ScalarType &scalar ) { this->element[0] *= scalar; this->element[1] *= scalar; @@ -589,7 +610,7 @@ namespace LinearAlgebra } template - Vector4 & Vector4::operator /= ( const ScalarType &scalar ) + inline Vector4 & Vector4::operator /= ( const ScalarType &scalar ) { this->element[0] /= scalar; this->element[1] /= scalar; @@ -599,7 +620,7 @@ namespace LinearAlgebra } template - Vector4 & Vector4::operator += ( const Vector4 &vector ) + inline Vector4 & Vector4::operator += ( const Vector4 &vector ) { this->element[0] += vector.element[0]; this->element[1] += vector.element[1]; @@ -609,7 +630,7 @@ namespace LinearAlgebra } template - Vector4 & Vector4::operator -= ( const Vector4 &vector ) + inline Vector4 & Vector4::operator -= ( const Vector4 &vector ) { this->element[0] -= vector.element[0]; this->element[1] -= vector.element[1]; @@ -639,7 +660,7 @@ namespace LinearAlgebra { return Vector4(-this->x, -this->y, -this->z, -this->w); } template - bool Vector4::operator == ( const Vector4 &vector ) const + inline bool Vector4::operator == ( const Vector4 &vector ) const { if( this->x != vector.x ) return false; if( this->y != vector.y ) return false; @@ -649,7 +670,7 @@ namespace LinearAlgebra } template - bool Vector4::operator != ( const Vector4 &vector ) const + inline bool Vector4::operator != ( const Vector4 &vector ) const { if( this->x != vector.x ) return true; if( this->y != vector.y ) return true; @@ -667,7 +688,7 @@ namespace LinearAlgebra { return (ScalarType) ::sqrt( this->Dot(*this) ); } template - ScalarType Vector4::Dot( const Vector4 &vector ) const + inline ScalarType Vector4::Dot( const Vector4 &vector ) const { ScalarType value = 0; value += this->element[0] * vector.element[0]; @@ -677,6 +698,12 @@ namespace LinearAlgebra return value; } + template + inline Vector4 Vector4::PiecewiseMultiplication( const Vector4 &vector ) const + { + return Vector4( this->x * vector.x, this->y * vector.y, this->z * vector.z, this->w * vector.w ); + } + template inline Vector4 & Vector4::Normalize( ) { return (*this) /= this->GetLength(); } From 163481ce4f3e59d5ad960ac9197a34d17ee26666 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Thu, 23 Jan 2014 18:33:48 +0100 Subject: [PATCH 04/24] Documentation edit Were missing a final step about the ang. momentum toang. velocity conversion documentation. --- .../angular momentum to angular velocity.odt | Bin 174508 -> 201605 bytes .../angular_momentum_to_angular_velocity.pdf | Bin 112800 -> 115170 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Code/Dokumentation/Other/angular momentum to angular velocity.odt b/Code/Dokumentation/Other/angular momentum to angular velocity.odt index 3abd5446fb580dce6e6d257641319a21c934ffc5..9cb227205c1dd9f3cb8867ccba5d73170f01e7ef 100644 GIT binary patch delta 46244 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 SJYW=(eV2!)*$woNdHxR!Bhyj< delta 30719 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 diff --git a/Code/Dokumentation/Other/angular_momentum_to_angular_velocity.pdf b/Code/Dokumentation/Other/angular_momentum_to_angular_velocity.pdf index c6facc1e14d758e8a850a2c8b4531bc4e49e8f8b..820bf412beb25d03ce78c3d20a5433a52c2a7e77 100644 GIT binary patch delta 36632 zcmV(vKP?f>Ne z+MnP5{qpJi3wnRAx12+J`ujg`fBXhF@VD>(`uWwt+Xw&Z{2RPFe{|t3mRA?~SLl+< z^y}j4TY7DO(QiMt-+yY){r&r&U%q~S`Dt0`9v#%wmkZ9{<9N9wOYvWy-Iq7SSNFwz zeftoW6~4XsS8&VXC_e*u`3C~@=kj_Fz`KCkdgXuo_TujO_TSA0|MI67cl!X1UccSi zo9-w-{CfNA6PJ!fe*_}v5sOzBAV73qAiaJ6-whQW-3 z;iubwZppU?WA-=n=^k#7p-IG8EmCT%%|6I`|kchvYsOQ73>R0W{%E`=C7V*vysBxd~f!Z^joU3x=Q zmn^)?(Ac=816)Du=z!Yu9><(fsn9l)et-%BZli)POn6T#i5NfRM+3pSCPTOshnUvl zb}c?B4#{>Ve?9^-PdLbVtz*|JP-Ov})JfkA{)m$srF;NDMW!h22~y*jYd`+}%k5u( zIOlg|%?C13)BLW9mI6=D%}KqW4t`SVeX|zrc~@tpz5_scpVW6!o2cL&J(2y&cwb4q zhcYyR`X&>&;+IV#GBkw&&rJq?!#8b3%tO6VWiEuFf7v~81U{yrDyz?Dv~4L@RVOiDLADh1#;_0fN!L z$3|fUvyH+SjW+55F=?X+d6SLm0PnR?n80kKFhw>Q1{;-fTP2l5sxn14ULuuvFFV3% zbZA)ze*ru=b4@vcsBnN#Nmo2$5f5>hwnQZ(V?nzX1#LBwb7s6dhy`(QNx}TJ(d1TnTFYF>cJYC|akHfoY@ z$*E0~e9&}H(j`BWd8XB*I!Jo|v|MV38}ZwHu1xM$c0jP?9FtueUHvAh!!O+O!o z`%$0gK27p@aiZ5*oM(S_;DP#la7G>ofPn{LEOjamA{xc+0WqE97bDIBV8A)KAA5$;Vv0^P+$2I>Y@w|5%$h;8e{>65EZ=+<;C#MmH*ln_KsDRrZ$W^0{Q#+guFP7)=KFum_B_?$D zL(-*}KR9!4Ir?<@W8d&X@l&881VUgRsiM=vJY|S*wrFYWHV-Pygo*g zSy$j=qKXY^e=^wu8mng+Z`WRUHW9- zC6Zpn`skU=98rtR;&~xjAm*h=@|Xd`bQVY43dQx&xh!kM`Ft>Ua^lr7GDj(hKKJSz)yC%FrcZ@( zm>M%4(x3ALAX0?!e*?Oc{ge08O)ECkH7v+Y1b^wDQlNQ?9o_Jd~Wsi1hBq7}lO1W5CWPkpvwxT8Y= zSiMdMIahodwQ!T;N0H+3m{$D?-t^C}KD?zuvn|2P&{5&(e-xixkXe;)Jf;#_l$UAx zr9Z`EDS^k5S`6?ZzrtsFIP}?+{{OxK@Ysv{2w&emq(1plnA=0!3U4!Ys zURHyKI&Fi{f8yWsGU>4c_yn$@O4JjG!RXM2JAus5mOJo;-`Z)&q$27(I0NAozCGVc z5&>KSih-;dADIJEqOnv^Q=#(0vzCt_=03_91_4rl6hzdxvdkBHbezj zO`N$K6+KMXW+hwnFuiTwNc6UooT~*UCXFavk3gx=e*(cVe4~u!MYzcno70}JLOM32 zPmnMHk`xd%weAVsU}LJ`r7J>(VI@7ZA@LoM}^4llM1rq%ah1zek3`V zL4pA}L^X&o1onnd?(>=Pz60kN8G ze<6lw^a&WyP^m!&I2{ieR;lbnIv%n+5co754>`@(LOCH{Eny7R zDjh=#+~l7=hUAEBflHUO)f8Z~>VXdWf4Nbr8ie&3@#}-2l_^mVlu!@vaNTGGq379D zGiw^%#14O*5wi$Ok{6@LI!SwPO;x5v~IZd~;VJXSVm@&Q?Q8wR@)fBj4v z0KA!zb<#&#HG8H)6yfJ|X*Xwn{%DlX$`fF-$_vO54OJug7~}{-733Pm-bEE;IW`%Z z8=Dqn&!zLxw)C@#sGzPP;=yept`UJ`M#MWsuvA2R7;|Jc_rqY;dO3(`aWK-dwm2AR zS(_Y;oUOF@Rv&``p`Jlaj$OV1fAv^<@G^~hV*g@7J!vjUEw^#M*y55rhm;nVB;%w* zlcds@`|K9q>Z?+0*F-njG|NYJtv+E{vUhOeQW8&KT^ac-u#aR?!=bbHxhA#1(5Y#uXjHfO>G=nz(ilgL4f4#>6$aV$Amf1TAsZx22U5GzADgSrO4n z2|6OZE?_`pt7QR~!p*#ve+3jRn{%#GgX_+fe2rSHUhN6X1Dk24} zh?HVRqo>pbqvja@~wqEgfJM zW0R`O7`a8&z0XElDrd(`1eThoMb$fqiNFEaVjBo7MbBAP@1odLo$S0?BLcP`237Bc zYem&BYD98Rp+(hw;&^MM>U!lCtuaBbcp6k)CU#7cSglS+f6h_aRK1#=j!f2AB(Yce zEUMm1eFjxWK009`FnToFQuI}m6n&Ah#eMG5JDV--wYy1GUqq3;deSpimyBK=d2o85 z>KDgrLQsNu{c?4VMMp}mE+QZnCEv#J7@3iSKwhsA)~)dhm+~bQz5ylFd;bgf9|mja z<+`d+TN@j}f4WPu9&4z#zEf=o^Ft2i(zq4CWg5q2%FznyO>rd5qZQN;m1}#ro`zh6 zSwD~ijCVE6X%%H#`kWSp4p@#i37#CU+2MXEhjM6Qv@P{ofB*{1^-I^t_>9(2$Co07 zK%+IDa%dj5#N-!~2@;hc%4fu6nvVtrKRU#)AKzn%f92vFTRlECppEZQ`r5QcC1gNf4R(Q5~L?uZl>&X41Q4==_@1 z7qZ)Rf3U{SY>nQw@F4)bGG|2Q0^bV0Bvt=Cq68r=3;C5CmLmz96l{ZYi*lW@7Wq5zCE0d z__sKkXnNuSkW)Dfd%9X>isvLAuep{e}GL&e*yTpD<8u@c5s>S@8Baa25wn@<_7c83(9iW z*xdBZiiUhw{SVPFaS*+E!&N(L1D`X?_5*%!anUJ!;XvUCzq@B*R@&+4PP}=(lYeJ1 zR(@!E1Ic3kH~nO5dP(?IJF0;Ofo-R)d)2x zn|hxSjjjw?_OP0}V1U21K>djp44nEBx;LPT8GX9Rt%|CoNvF+t{z3uu6!xDvAKgUH2iuUpe*gmKlSL%L zzSR5dvdhb41+2Q#s02X%0)#;P$@IF1+ksqCYxaU|2|h$OSVFBn zu*>s&QD4V_{`S`^|LSk;Cfp#f1mOxTNYk3Jw-*X zbWg+TZ(w@PTUozef#GzUkQk}vO{XkXN zGUVMZn8)!(OY4V#f1=_jR2LjztDKiEI5U9Hhbqg73vSZZ@}Ak?jKjYbz=R9-$`ZPN zWUiVZ5<~d;q?OLgH}OPxB696hVGA;0UOh*AK1?%2j&_WYKf7(T3|XQdWluu_Ult1G z6LX`@sa}i+az-@MkN-=eIKbyTVI6HtJ$S<7HKR3V`>a3R1^yo;YyFpSE&&t`F)|=9 zAa7!73NjtumJoZULB+LarsZ&29mK0h79~FqeLC0l1TC zuvvdJGdD6cK0XR_baG{3Z3=jt+X-gM;~Z{7MdLgrHlZFyz= z6|2^M;l{Wbp*x@+HLiz(n+rDyaDN)^BkQl*xaD?J%c}_Okm3H#Yd5S}^`N?U5!`=6 ze{}tItF{bo;a=ep+BpFC%Jr+RyW$VOE9&5W1R?1^1~=TWaV?4z5qfYfsUIA^V(`P4 zKT5;>7hw#YP=?_ke+J0%p!w)g)Q)=5y=V@44LylW=qCIs;!qgPMvtK=4k8A1As5!5 z-RLcJ85&0Kp%bVQb)(;5D?FzY4I(GX75@a+ZgfZS2(;3n4)g=`G`T>($}0=ff6ydO<4 zHEf4wFH%qpU4$-1tDyFC=q-P2!?mnhj2CAWcSGrS(chUQ^CBz2IFe`{T8X}lz6q=G z20Dp8#(JE^-@s46@pJqa&6_Z`ZnOz)1>E`utloFg_t6nti)$GdKRhCgGp(DF6z$C|C0Q^k8=ZDVK_jC~=rUIfp+6TZ@ZG!DlbFiQ(oU>42zVtgrH zhj-!o@Hl=8zs2xOh#7xkK4iz(SJ~fkjT%j{1)k(Y0eEj1Eko@Mz%=1YYWg+CWQEAB)BK-nBvhfU~vunK?0 zP8dT1UyX0T{{bT(We%_=R${|!mThMjv;FKH?7i$u?9aGi?g@YHZOuH*D$NtZs>1b! zpBKA}Kq-Jm@G!18N}&eS1n_euK+`oazCk#K(aq>qv=iM8@Ny5@i=KdaKZjmMze4Yz zkKhX+9D*@l1#iC&pzd~jHype1_wn=i$M|LZd;AGGm0r8;b+{+wi z-e5jpee4=`8#{jj$HVL)_AL%^99PuT!7*2Jr{=r-t3stPS6D6n^vvW`)l~n~?+U2k zDXb{mS9reg$KulBO)&l_szx<1((N$H-2j7+!0|nR#6##spxwWwWBog3um&Jr#$kYl z6nwQdJO|H%qX%CC#}YV};pK3w!mIImIJV&t`~`d){vv<=GX5Gp9)P($f*;3+;5dw* zhT~WGUHm@&5dWP4AZA#A<|q?q(o7C!+QH0W7BZK@v5wgQ#~?GzY=$rNUFIp~2=fMO zW20;}yNVrRce6iWUtnKn|H(02ic52?+){2GcN_N__jB$|?lVnL)2Ugnd06uT@8ui# zCH&R=1N?uJ{0ICQffss()xyof>q1eC0=4=H%=_R4BrnashHuc=xh>4QfEO}5sM(H} zz>4wAV)k10ZuS?NEAc5-!EfW8>{aYF#c#7+%%|)Iyp(wkSFk}%3wtHH3l;Gb%LbU3U`9Bp?3kRw=?%cr=KxbF?XUqu0it|x(e3)am^N3@0rXUxQcz9dlAq};!fcJn#4nB5PuD+_!;~T9!D5I#(ozsU<~lJ#uy`R0@ino z4dH*+Ssm&pW5hAWfqR)#%o6s8{BbsmF;IzLpskq28GxPXzXG}*FyLM$4m7P3sL3yJ z9g@-gK<`f%en=>`=1t9=0B7H1Q|MBZL3!p?)B?Ei9vpq>OQ;S#4KR2I$}kV0n~NiO zEztcQpq~sH$5*2?)&sS4!PvF|zi=`YKns6Y!dpKD`u_@0{cijhbR$*(vnEg_M{4fk zI)O3`0R6oajrnwKv>LeRNpv0h3#{8*b^_HGE@t)>yVybCQ17Bk zir*~;u@0>-UJI1>hv*SO1GHxZ1vGz;0PNn$UCCr%yb0vQX(+u+vj-t{){@0)+sunv zXSC#+n;NqX^>wwGbWL?CS(T`a$D)yNMMwz-{64S8ExVj{o7EzjO-6%WrxgWW!?6rT zsm^fMfHD>v7~^8$xpS+@eRvfVtU9k?U`&Cct_$0YDFd{ba$!pqT3-2ITB?7gmg?D- zSW;S1YjsNL3@c;DW`~t=y!?_r$bWfuxL+BYr1>72AEkLCe=fG@u+&;aoBiwO?t~!PG>GY7*LvG9!9^8jrGcnCDuFjTy3=)kns4-7?cITKo zJe!PQjE#1#T07QzNnht|ZzzA%U!5Am9c#j?$543Im^n$Cpbq+)F}`C=ps!J`BC|nv zD*I9sJMS8o(CUGtVQqNrs>}Mu*j4@H9hM}#clMZT>q+_CEj--X(YO8lS}(h^Q@%x)kSH|{U(szDsh+O;o;TdC0v}<5z7rgi`Sik^W16*HGeBx4rfVEaNX>u9bj{iB17U#U15{6O zjES+c|7OW)>s;S5hMoV9>MKh1-HXEAmn`p7I(H6~*S34{1$U+T=CgI>94=MBf{$@g zSgCno0KH3>_mKkl*F?L*omUOa1yqAEj@df;STECG$}wJ+J__LXva?SnH+=^3EH27Z z_+L9NhycK}1S@}CW75Ff(zRa~3jHrTjTcXmUNkw^tvsi(mgI%^GcLHlV0ea|EDV^7 zG2M%o@7$@opsovu)y|z=VWn&5z|K|U#gWxvMGEgc!uGL!I|n-lra%99@##CgV_kRk z!z9+@765Gq&Ds~ncU-bh#dj=P-giU-RrHRfaZEy1pX{&}Ul8kWx}e zZWM9@JP)v9KO@ri-XkhPBea&I1@wN+I7YNgoG!y?%{WsklcviUDC0_HDlH>_gi>@Y z?mHg_C}QC7A4o4g4FZi{Kt1~y{0#FWkcS24x&27PjWa(wz#^SMG6ykoi@fGJ zsAmw16G(rHufdliIVpY8I@Nlybh@=?sui_CUOEGp+Dyn2vP9v6eH=QYuoGug4f+hE zpb6+7hPU1XTBs9+Fst_Ky?Xzbq_0W8k~Ev8&Gzlm1Ge3cm%T6hUzbGLVzv7Ntl+@g zJ$D3{N|6tGQK&))dX1s5E94GVnoLHv(29{&vMSb$RkdoY*hqEDtvpOV!55=AJb;u&2aD@=A zUm9`x;yv|DC1@NMJ^%gZ3!8qkZRrQNuJE%{%WsG_g>GQ4-KM0XI}1PhW#PRay}sIq zyFlJ|>%NtCWb6dCFP z=~TVd$}FjOk|uEfy8~otAah!EkmaeTZR>LaO@- z!)dr7MahYYcaq7Y((A`+Gs&b^-JtjFtY@r?8nIOg=0@5c(;m{X)}-|obW8o0(4G1_ zv%KHxY?0bV+BmImfo1{UsdQE>Xi?jC_(h#bP*BA@+^w6ZpO@`!>S&pF(K7uy{q5Q> z>b|HqFLvJMWP)ug+n52d9yPSqB&vTKp21#ZK!)PPA#Ki3sm~e6+&wK>$9xuMBCiJ<5@=AGw%%zJBkzggE_}IUZ)1U>0GU#nsN##P9p*<3HX$Ndj%|X%!j>n!ds zT-{MSd&|rFQZ0Wqbq&=^M-#zW$=eGr-!{W87+ag~oBdUsZ*`{za&uP_>xKb{ z`#%8l>zQAc@!pkH2~uY$nX9E&lW2AViTqHlA$MVaBq53fqeYHjxyTy~aCJsVHz%ct zP6MF`P9OvaNDJpQX@JaM)EH^*M1I=YPaou`kMJjC@`!|qbWVRjQ`!eIr|454^T`3y z8Z!S!!N0&c{+gF((}y`5eOZ> zL}W;f$eYb@buxdX$VrQwA}Mk@vkk~kTl#5%pH}+mL`f;lkRr(Z{V-{fNMsu%ZRaVRn81s#pY;SfTJD45KYN|P`()`w&3}Gi`>SkR&tl?#i z$A^=cAU%H|Jh06C5Xxg9JN^9_u&jh+F2FKJ2pDN2<)j1`&o3lJq%0n-$KBt&r~6vP zY0}ruD$KB{^*XM-=f=%?Q*C!)hP|uS9Q63&W^7L~lP`2HZN0g0)3Tu37m37U=7spi zTZX<+@aLU=ZzM8jEnfV{T#q?22pkq9Kh2ot8sw8h(LxL5Bb+Y%Nw;i2dQ_8;(I6j3 zvm|*c)7L=LWDQOCCrZUitW@j?l!{%nc)x=t>iv_?(HVbjUMH;&Y?em2?WUdP?b3GZ zj=&wk2h9&kyDbj}j+l=~&w7poUNyfWz2tu-@Eh}+(x1&ANFN0LY5r9Dr~jXUl-Ats zWr6`r776(S0iV{S^J<+wm)9vWf>(r(>UC@hm?cFD_$!;06U}Cl~jWaK+7A9b4 zm_X3~2tt3Qg&W5QRf8y*S%=dpidxY(j{l`<&CrK=#H3ornaooQ12{0we59Hb)zoV` zWnxX=Rj%1dpfm6GOywtKk2EReC#PYv6&NA_Z0mMYO;U4(R3j(1Yi>E3l#w)v zrHTLhx?Q^EXsgf)|A4JS`LhfI1igM75(w>g0Ze}am^R^h>@3|hW*g#qhJAeMKQF78 zvAVEiiMxI#ekY9I%;gtN{ppfi<@N7>gkOAPVLX@?qEWM)`6_qWXAj(Qi6$E5YC@@% z*vLeteoG|1*~OEbMsqg`qH3nQ42Q9_N(n75Q)yPDl5I)KMT+04qZD1Q5V6ie2(&_} zyF!0kL+Pg~m4y|V^iX_H1L*pR*aLU|pp_73$);*e%o3X&MWb3Fm13#<)&?{<4QH7K zgSd87qBNLDY||w7QY-XAik@XjSKpu?tNsB$;}7cLF?uJZqE3zySG{5fc)51jh zRFY8?q=cR>oNBN#`M0l}E9}{hHL%TI#o9*z&o$Y_V zfPZ!ny6L%;gRWXIg;S{@s}CZ5$e<8$&FUC%jyRumvO(vllX3nz(aRH5t*mJv>ESt9 zzN4mNTUjsZnVcHV16d`10KSvMFl7tS4N6#1DWSC06H9VpJQ@=d3QBTtsT86LuF|AH zOD!oTL@#NEKY(5kt%eB<_k*lc5^Ha)Al78h($cbU8+pE3zkP#FlDv$my-t7f#jit!vVKoh!z!U9qm~qR)Q(V?3wl@o&uaNa4ZH-udPn zpCvr>GJbRRU~b|1mtOfbK=gv*Np=xChV01C-cplM)gMX+Y<6fxzOuz)fgI9%qZR=P zlE4V0n)D`_gQOiOyTvzX56HZ7m|z1}tJebnfvy4i2tW{ls(e0A!TKE#DvnJ6IF+H< z?-)UQ(UZE>9S91Xa1Zw_Za#9#-=6F~}Ml?}9bQB_TYmv?LXY?nJ%x|Yi;JOXC5 zyr2~g8pk|-2Xhy{-LO---T!Uo3HhMyb>=Pe+tO*~KUte~Ko}4QVRk#T&kKJqnNJBK zhXvyo8CFa1gaB_k=4clN7c+~stC?YDhi!*@x9vOH@94(GgW56OPnbV4Ck&@` zcJa7?k#JmKhDb`*ZWI=6OyGrEI6KNX9b~9BYtFjTvCXl^@veh&IK02)Fnqz|`|UZ7 z2>dpZys6H$=Exdf=EdZT2tR)not564*@-tew>ft?S?6iHeMH0=aa3e7;x6%Bk(ESM zgqetA;t7!#zh`oAXa|8SHl| zZO4ykB=?%eMYl0Ce!72gj4SkNGjrGZmSN>da6m-ZkXeQ|$UW0*$wFnL@I`fku} z(=u9kfXu^4DZW}L(;{R17Zv&;^Wg!4yCid%)CGf8iE~0fJRgLsdcCoV6{TM$|YAv@xf!j@jVX75ElB4`7= ztSz2oeg*JS%QckYC0?KQCAAChVs^13juFp@cf_}&dRL9njLnRW)f#x8F7;By%VE*SI_*}_W!wpGYPWW` z?m^|N;jc#Y)}*mAH9xhmer5fZ#Fo^5mrRd^pRE6YecxwDh_wOqEEB*%oTegtazA>u zW*mD|OO+gOKkE&6f*ve+6j(V@>3-HpDl4qkNZ6?7%yF7%0{ADWCS6qvN*FAv=ksp2 zOe|=2XPPW5^HVFv*4IMshW;92L*uMn)eoBSfO*h7YG%#jxKVY-J?@&Ih{e=@o;V(e z55`C0tP;<}nfTKnP1Ip!U-vX}^h^$)rqq0j(CuOf=yom*r|Pe+V;yV0m8DuoGDihfWeJ~};_AI8$;>B&-_W=lYHphnRe8&I;p zWL2(A1Qp4`3qecBhxvr)Lqs`$LPDj+hfC7it;8q>BU81X37<%xSU#)dK<^kvL&QL) zy7%Bc%pP`+{_Dn3$Eau2JL=nAaesJEwISc1PvRj290r={)8TaF&eVgE2UD7SKTJ-w zR4VSAw$h!$sxHUC=`FDk58)kdU9JX-QuNg33{t?_W>Uyyym$(@4o%#Dxk!l-hf9e8 zl0&v!O171rWi36+Y=u`?;T6_gO0kkYr&O~UnwfK~WQ6w^$pcQQRwKN}2yNh$E%f}a zCb|p%aLH!Zk1b)!t{gz6T&@z`iW34Aw$u}07F4kq==x;?9$|OPXef5$WnD{^;L3Ym zeRk90YeNo~F%9swF=Mt;UnreZ$3fhW|-K(#Fcm1hkSAzcO! zM>rj+BpKC43OU-0b45kH6h+kbRnoLd=J8|agivzHKm6Ax#nOv-MM2up&M zgc}1#E&e3SaRGy&BwT`kl9Y%kN;*dMs7XRyI;|rP{9WfE=a2Er+N1urw7m6?Iy_g~ z>0IWx9p9zhVSdXi1l77MM}^8gLHwfQWe=kU@jP*QG**s$@1#}VwvfXrhmVtMFE_vq za--ZB$8#SURH#&c4SNiX;jBDGtkXn7N_LM`F6tiZy=3`5Ltx&%AUE&Q<$cc*dpzRc z3>GIqgX!<+`yukMb%;ZDw(d{TpS!o{I?DafsXOBu4J|EN70aA*hc;$uF*|~e5eMrS$5pC6XkKY% z%x?Li@04g?&s3h0H*1NW5fK#+*-FL>%K4}5-ed;XuN%?|f<9`s*S2&w&RVyt@IewQF1IYrAe(xo#gB-9m)et(v<~k`c>z5Ur+v){1JCz;`wEQF)VCGVxe6B`}o& zvDHMZ)m9?nnXFXtqu5~LiE%;;a-B|$L<25_%n6|H-u+gdSkxvbq=~j;@ZC#@GVu-( zx}+D$ae*E92r|0MALzQcuxgB5D>;$Q4NLzdjija;9!YFT{zh*VJTCUuv&Og&`F@)jN?n6+EtCK z$C*#|`n^`L)@8?gJB*)g)so~bPDN8P&p0?~p<925( z>WD?1l|B@=M~G#Y+8l_X0l`TqG?3={vf&ow$8ffuphA6JnOetU1l#~G9Q6+Ts4qHy zbJ5g0iON~-{rme44qesP(hzXf&kqJ;HLC9;cEQx6BNeGgq;mFZX8GLK9Y5MMySh1$ z4P9rm)vkME)?5OErvL_d&3fcS_p5eQ9+3CSCu9!Es?2OgUqXzj-G;Bi?MRFFq6);) zya@R)bp8}zkT~|5IkVgK zG!wxm%WFuy$&)9gR=Q>uf?hdvR?0?zWO-Z3)Iw~9Ga2eACJ1*5&kxyJFDozu%}$*V z^+acJKl$co+lQM2Of<^)Yqv7Ly|+pU1c_a6RiR5rY3@d|&|>_KdiA5|(e{sj+F9gA zKFRIy^}3h%Hai6@p~?@?hwUepe$vVH^*-u&)Oma#_ zoqs#xZbCcJXYK4hv3=I8`dMhxn_Wb7mR{a2nOZ5F&Y0bQ-E@&AGiPqs z+|IcyKcl6!h2c{%EkLdkwL~Ma%BV3m`=WUpQFqfkKjPDzABolajo2BqjpI#EA=wY| z>ZZfk=XHCeC@E9@$P|Ybb6Yw#;`z-B{791#{79D+HX?h-MSHn@rPLY*vbE_THYCg& zF*;9#At-jCTvKv`4&}*zUvo2wC}7JD#zt$lfr*4GI0iTfSFa#jJ%d6O5hg2HQGFd} zb=aA*|8m;6*F^m(O#)Hl$`2tbTtiGVvZ>vdROTJK=aIrM5B;&Q@sF?K!Pl{XAK%!r zybvq={4a&|fA|zX_t|T>=Lg?DvtvPz_1^un=Uo5nLpQAG=$Ar&FLd_|_0E`+Y8kmp zX`aXas4#S5OGHWCgXivl0#`ivaiQVU_X~GCk3HC2_)FpYzsKMB6pQ#}jGrhRK61FQ z`#W>nn^!z_^|q_Og4Yi%>g>GUws7N*NBi0q_8q=#&)QiR0~Xthe`8v?=aCmrO>+{z zY6ZQ}Px*=7K%I|U28Ru6Y&2`5#sS-S@l$Fd;qP{~Xy*kdzgN*wD_4#?GGj7PJ)S^A8$9l6DJFc>m zvE(9uufwFyX7l^bb0ku0VB6I3e11YYCLPU}9EeF`+3_AhMi@Z5A-58*WSBPpZp&`> zbB^bnk#jGP!9xa<;7|a{8 zWYEsn9Pc{*3Sz_+cJEJ-ejIFz^rJ6SUMj z!WIg}EDU)6x_PK+^+al^v`kf?^BCNSw zn>6`R2@a1X)6@Qy^K4Vggp%Qs6?J-(Q06TH-zk%S<|BVQC98B6$B7eLi4&cBEY3CP zn}RLM+~8bA;}LBO19ChZS{R7N!(tq_3juMqqL2E;aonlebSN4HHJ{AKq|@v4`Ve)R zn9vx;W;}@Z;MXvRiI+NRb$cRKYp-q8#*Dya%*GO+Q_5fmKo@&q+l96-Q16K^g|cKC z+C>f;P;h^iF9Va1ygswVXZHAzWbsOVAEHib;y%H73W(>tBhzr$5Q_=fP#HSmE}muA zm_yEB+*J5W_2!#9dxlcJrn$Jizb$!PcWya*@6@mMP@l*PBeVMN8o|5U>%2HR_25Wv z;{rywxQU4ZjDDqf5^q2+AU#T|KBV$`R@JI4S*;G*mR+gEd$dn#8SU+ctCOzh7%3O% zwI;2C%uxJ{XsIAGI8g-uq6Gc>0ve)3N(5dtb_0^B^H2t5{`~`!@8?v1Pz$HV2|35Q)M#U-8d=~<@DAVjCbGj9L-mw)lC zJD=!%WT{z^eN`rGtFFH;x8fV$SewmOGM^mz+s{vbZKS1zJ@^oRb>dA`PW`s7{-x)} zp7q*G)_wLr0frixU1j>|Z>IE9(phwrFzRF)SR~WHB6*rT$|OFEGGUprX*otTz91=x zg&MN)Y8>K-6CgyN5vryfy_(QeQd&Lj5U8GZ5kTf6)l3yj`n+naaOQR$5L|01jtEu4 z8AlBOo8~Nq&1@roid+0CjzDHQO(2to7G3BUAZ~#=>1c@r6Wit?xX2z;9s+OuJs*hK5)dNkX(4qYQK6J?L@o7Xp z>W%p{ZXXszkKmsUe;y)ACJ7Y8`5_uRWNG{#qlbuoDNyoVa$}tD#pv1ah4zaFy*86B zqZVd5)H)p-oSmt?dcGsqRcN^=Y?sYJk0WiuR?Xd0tG9M8y-fXH;fKorcSsD8bTOWN z-{t9sg$3W`HNi;4rfXixUR3gb6L}*A`0@nkq5-^K{emFte{(L`cTt0^!o^K4=77_g z5L$(K!s7z3Dl53<;tJPt`5JMfWux^W{WnazE#KFF-}JKPW!FpcTdud{6Uslif4UqF z?C0DXufy$hyZo}Cb?Ifjzrj7ny~DLj5o9;RxIAuyn>Vs<282DLY6~{bI1a1Nzdv-P0he)%cP7y{$?%c>Fae^_W+Y1?4iX5&EV5mXzA zR`(!9RYnwcK-mlWqx%{BPXt5|tEzn^vw_*h>|&l{USr;6{>q4qJNPud8{@KS+;g%O z)VTZ*C~{N`B%uw2Ik!y>l~C;PE-ije`d9#c^mv!N_Pl-}_|xN({)3XBjU>JR(G$}=bMDy%$w{n|aTsQa}C zA9*J;|IvTW#H+7e*5$#P!e>!D3qSDqt&eURI`ZP{qwCgv>tNwjvs7CRdiVU|2kc?^ zo)U_nf2a4a5SGe`9?+3j*Oe2BBGMnT@Q z8rw~fa~dEQ!OCjv72#r)9IKIA2bZ%}%_@3=e~M`<>4q++h3bs)Sd&yTjyDoxM9KWe z%)e{n@_~nLe(;W8u72Ux>yCEjh8i~pYBG^rqGfh=ZUgi12YBJ7?R$P)c=Dsdp|8F7 z{67jG?EBiP;qT+z2M^wm30<_P@DQvRuq==|)*~J8j$f;lP9rv>PNQmORWq(KV21$H zf5WU+!(+~%HzLkpg$ShY*kSc#mq-U|uWoyr==j z!99cL0St=xN>#7bnpwPueUfF^ar_Te#%&a2iHB&f`GlD@^QwRax9L2%9BQR7*$O}j z+4m(vliEPsrDCEqH4JpgLV<95O_IAse>zICX0sU-m0?1DhB0U;VM{2B>mkAHkwcG6 zy})d`{*giipT4{Bb$sOr`-L-iG2fh`F}w+cxWk$Surgz+S3(k2kb>2UWz0I}MrNn7 zTX|eL0{T_OIKEr0H?3`4!dw<$v_UT$s&F=WEf-bjf?g>UR)W(}DSz}?B*qtJe^?QH zA79IiGe_05^S|2+q1Ear57yCA9c9tFheNCK=XOI#bUVc9(-bvz76ybbG^<*Dg~eL)~p_9{T)xe4|hpjW#PA*=xww zhA6I5Z#wh+ML~zXW)r|kD~PB9e@GU3RKb+@G#o*Z;)Lp_T9uIs2F4Ke28XCOIAoJq zEzzCHM76{lOqys(#1E;4%+C&y)>@-X#0DyMj2HiKpe&f2m=;Xlpz4~e5INShFtj1G zEd)!w0lw4#k9lghrV&~+h@pbFp>*3D$z=XmUV0~Aj)p5cX-G^#QX+aAe?BWS7!@il zgy@w#=RkLNIn&-=%Bb$9CVq*^W5n;}8S+wulu(6WBh&jt^^u-hZ6s`@l7o>U0)mlB z4rFE}$w8jh-$=>flCTj8pC>JpoXjxxcaF6kD~0)&g$DO%1P??8BcqYMky8tx9&4Wcx$^_>f2DB0HXLnWd3JgvxfRsv{je>`h+1qmQgHDg9q zRqKq;yKCDE9UV1Ztq}0|Doxm~xtmn9R#nX?gr=0GIbivo)+Kn=*HVg`gfC!p5kRdO zpw@xEG7YmX_+%7j?FJqTWwQc}bHOyu1sjNvSJtjRr1Gs{8Y~S2c&TzVUi{rbs&8qY z1wmFMF~-OS0IIj0f7P@E@-dTjXB{A=?|hW_K+cm{<2DL;c50d;iWWjb*+x+EdT=GH z!89NlN+LGRlmN+K06uZP*x5#7E(z=$9(7H)PPteYbvJZ1kW_8S&1k@`{l>M8y)LY} zdR+sqLD#5jFEkVkiGVP_0w)4|JUp#>!H@)Ahj7GbC_kpOfB7amqhZv5dkuKNFlZPx z>@}P+Xbk(E=Yc{=cx-Du_wn<1h!ixTesBcWHJ3MM~hKWo<`aX`|*xTae)9=>tSf(N0?$wbMjJOZ-T- z674C`EgdN~e+I{k1=9hy2}+J9 zS&vv5SK8x&%Gqu*C4dc&w#w~Q5(dFJj!mHBBV-WZf6eASHf$rdnAWNi3afLnY)#VT z@&N9ZC=vxBGE=xlg27P*n-xr?!&3^YC^X7eZ9vEP)ru{BwCtdz_*zJST>kNV6(9}bv6 zUq+<>e~MDbD;moGS7LD9#vW(=f1wGL$=22+p#I29dsp<;hCE)&s*qgcJVzOJ(dw#X zYe6}4<)2T^3Ww{A!m{YHuP}GrpA1pzz@m!^UF>hzC(#Tv5B0P6t6#7>d+(3!Ze&3x zTET3t+PsKCReTM9>75GK*0gZNhNexi!4e_fi}Twj!TWp~cJt#eoRmll4_^)-3- z!g211=78&f{Bpy~-4iR0uQ;*d)C#Xhanws$dt-2g=DXtj#x^fz>e) z1EJ?glP&Zle>M>^AZIQSv;1!AGpbb$?)kd38~3_LK zQYmxKkJt=II03lkP!F3?gHi@>$n47O$*>uj#QBzX_GGfT8g^tcUQFg@1YCm5D+eSy z&HRoMwZ+5-pfduLE{+B(aV7PJx;zcLD)GX~!ODrsf8&*0rHQnxoVGAjlGsBlLCDHY z%8JYib;Vv-bIl6U)u%T!tT64muM2n4y?I@=iW8figU;8Stdj(N(U?W2fdnX*`~^;; zAlr7g;kMcg+siV&EJmzEL{wNxx4(g=@KknMQX!ecWRC1r%U3*&x1bQ#?b`uJ^9ezE zz?#Y7e<_-oOb(xvl0%=+o8&NwLQM`yCkbi|6GM9`ICbiM5~|uJ0cxF2=JSw{_Ru)r z(RYA^QZf1d;MVSCEuE39&+n44CKj!$t*>pU zW%>5l!dOkTDz-Gb*oS>H0zTB8?NQJy+@_$5e>81A)LY%-LzgBOD|oit<-<$j%Y1n0 zGJlH~ntNxU1-0`P+&w?rs4^W2aM+n#s}EnCzQl(XB`#4=r>nz9jbNpXgXb>i$88WT z=T`cMK`$iE1R7$i>S`o_(X3=8I|xthvzEd%aI8!QO6CL575Q+u97#ldZ!UV2ZEJD5 ze?brq+6$K=kIDfZm_Ppx?z4-RAKQD|zzaze%WGJ3^2X+)kIbHv3WhSi!Jl1}-*ELq zpFMwjx89N!RyHJa*fD?Y?1tV2t2^rppQbY{Yo9&vM18~8e~&Lte6|0MqpF72x;#1! zKX-8CkUf^OTNHs~HCp4~r9*4(SytC5f6LKX+BL!2VEA%o`{u0=FPk;IbY8pvO4JZ()zvC(e-vXjrk-`PjvLR$XrL_wd^!J_b8=_a@7@{Xk0ns@hYilDE2;{Oce`ELJzUNR^ z@dMNeXBy5-@q>dN*)7X*bLp?&tNI#*j7Yh>OOB?;NaAvvc*yLN~RhMk1C=p{!Q*rV(xEC0~<@9^FY^ZrOYs6C`RBp-G^?RmyKQSmGJ6Wu5BXP)Xk zT3kUj^??SOehfAr&LQ_?B`x?v@H=|)Z%nWL7R&LeYZrN3# zZ4n!E4RX%=B0mv&(<9uW+aYgvvrX2yGGmkN0UPov0c6!#0@m^3m(-Nj<5pz1JEPUv zwOXCmAQFe_cekM|Vi~x=y3JMe8L>hNSZ8 zz2Xt^XCf=!qIGZbkRN7HkQT;kwl-+X;u1;s*JVj^*pNlq2`!@?$Il&-D)2}}X*Hk~ zNe`KA4IvVQ;0B3jX!tbU!ReWj-*-!=^YUrWBuR(m$wLXJ`(v&}~3hZr%h@qmvwj7gAO+=8F<#S@NSz2Oq|6%9DqU=RBW&m;;*oRvXK z9eZyyri3#Eo-sE2O_J&BOG1@E#BLjAMgpJw=Rq60h(XUgb4>M@7dG<|`$m^YBp5WPW&PYAAnlh&qLn zNuW?eG;HCdwM?FLi~MW+H~87F`Z4i{faFbfa?-t=d7$_tzW=hm14xod)cvVLf3}=P zl5&_}heUo8V`86_E1Um;FAU-GPA@dQ!zUgq8~bT+7%&HRe)P@T9{K>|1KWR4o0<`@ z=)>WeYcIOwn>$ut+|+vn+SLa&`D+C;|VR%4ou0fB^X;njdN||ZJOJ8Myu6WMYrhDCheY>lfC{DB645p zS>s)w+9KYhyUBf{XQOvZYKLxz`vLTT_I}TO$!E}$@%~Fv(&2Y?r*zDKZcz7E9jm*g zO}kLLQp;*@5s6X9pM1kij5B*cz}dAjh103F6q9n-H#|-R78+_f+;cKNbaLu+p6pzl zDhnw+Qzw%p@;JTyWxJD({~mul!wm6BHDN;hVsQh0!ckovdiR(`5G#_nDq1OP-Gw_F zpS)zof~HI;SE&okiL@6En?r8NRS)Da?vHmC>hQl3l~%3Z2;@)>ncB`=fBPM?Q&sg& z^UVG|%u~Udut72a?#?a#Ub97W4Kg4v+NajuZ+%R7T=%%d-H2}zw&Q<01g=9gRwC9> z$!q1-Ae&|xqQEO`hE-V&JI_x|mTg(ZulgCkrB%`@TE?sm0%MxzTf3$lUEMR;BMl`# zDgDaSw6CuYdx=la6SKuk21_;aV!0aI1;{xykdt)AYV2m0stVfUh-3n|7 zE99r8Lgd=iNPhLoLLGm4R*MvmF_T!tw-vS){#^K=aNBR6`^TZ{cies5Q_uZ#$Mu?P z3L6Tq7hWx_$9Lma-0{S4M;tmpRT!9dmB)>I{Qh3V|R0C7} zYD+d^ZiVxO| z)aYMC*yBt1x_!TP|Hi9%tP;NxdCT>7|7^=WQuMi5GgI-4{ zjQmQf%3s+QUKnP=VZl*V3CcJl3ZfNxBu~bpdImij&%B!QuY#c(tk#UxFnekyYL3^i zH7QJ8VVH6^Ou2s>t}vTQKb2G3Xh1z-riZI*#_^3$g~+diQRC!)`E{^-PeT$#em$9!2) z{Ppy!^4ov%2l&sj(I{h`i_dgr*haZAGe>5fnYbLwu)M6vxLj-!CE#ubYH<+}IGbs! zTUfUqZAF{qo7@{SJJAmL_RMZ{f97%YXl8HSSlv%uFUu2kzjeJOAFrEqeJFqEK2i4x z`j_h;ndn?R&()P)j{99p(^tE;xL=fioOwfjBlCZr{9eWcAfyddC_%3$R8bT3R)#7V z0$^b&=yis|p`bS&3cF;v0%1Fn-3Wt1N`8-IW+rV1y)cuO(>M)d2LkJMF+hS5%4Fh| zVrB&(hC5wTp(y9c5q#)jK<7HlkVhCLvtqU|OUw_~uKI1s!%BWu4}gidnx|S@fkhRF z0w{k?|2zpCguGJXN`Ih41ma3E^0XQVs6GULXo&7Q@}?!bp$(TVQcjjFIavbDQIvD8 z@#67=uAD1l&y~U==-H1!ZV3H1kVMEY#)KvdC3o(5)tK#?I_-`2W(t*=r4gsy)V&Cg z;E(W0Jd$1(ar&aY>8Xj#vaoaNV{X%#&9{F9tD?~cWtiQ(ywV?!e)b!V-k#ZcwqoaJ zcM?B1uxe%tr7F*>8$#5r5~B8}kXo5_hgMnEHi|(n6RMDdUTdhr9rWT*SR3?OLSd_g zVX!E>sa?lSe*wkKk*@9v?Vva!o)Fn0+4$cp4v6eZaY8%}>O|?+uPCaE#NI*rLZ*M9 z`pK)sRmvcUh$lj9h6;!*`JxQ{aDe>OI}VCG(c~#fpqO9!Cgd7De=*CR@w00QtI2Gc zdM2|tCL49ZR3^i8)-H;tduK)(Nu$R|vaOe; z8NDS-mSkIg$QV2Z8v+LG00B%O#@Gg&7;O9?WfN-W*Cd3tDYSXDNgHSrk~ELS*dZ~H zEhJ6TcE9b0{o3ue-R>sc&^BzsSK6hIG_m>4y(58>kbV7K+2@{f?>+Z1ckX}to_hv+ zeI-OPAOK}#@dtTl5J`+^(fOyDGm2f06G(BG8*LVdt{ojk9GYfgid(0ry`!FXgnHUL z>I04vDdD4Y3=#tQL|>=xu#fYdWMZh~^1JFjSzdP-#6BhWY@#}$5|=iSF470{PobJb zFezBFQ0)@u#0FKcfZk&G!C{cmXL@)8%uT z=V6|jWPgy~Gl=+oRx^_%J9=iMk2rN)EG%g)S~3f5Y)q#eIdSGJ{LX*OnS;UzaQSVe znVz(l(u>{HbkYL>ooYHGdJe^CW)RQZ+ZD*QGzZld#5 zI%6f0thC|7dWw#2rH$1kQCXC&;i#PIO!espQ|H6yV}A<&DP|-LllE%L_dSo4^`}zt zo*J(U+D%YQafXODl8k@kA~!gmbUf*NGNKd0wV~Q*8(NN6@Jn?|LW`p-Vk_eJ@Z;jR z_1^G3v3ugw_{&~HR(I>t>S;JRu1OFu=WUt4VZ`d zu;{S*L^v|% z>5Ftay|dWqDh?UKMFvAS7z$;at|F(?6^{g6P6ttnZGiW13crhF#-_<9IxdiB2{-uEZze zXX0n$e0+2Hm3tN!$bO^CePQO@r3;&O<##y1$qf$R?L6ncAYLL+P>V%$WL;=%AZJAd z)sQNELA~w1PcvtxuPbbd=;pd4K3RX(wU+@z>zk_dEdetdvSShh@gLqla5@Npkit}R-C&s30C({wCak2E*I3zlfnukZ^uDa-Ays!@oK;I)$e4T z(UJ!I{B^z}-PxCmqB-ne7oYw6_%COFAD;c0x2^$}5uC47O3wTiKew;JVP?Z&)*%Lq zif4X@->;GF0vyVf5Ct6g?>B7`U<;}xGo+kA`4z}C7y{g zrTUDA6Kss2BVxQn^+e;`K1OlrwI<%EGw6APA*0RlHnY>7Gv;sCPwDhoz~cm$0#@Dz zqDEhxUZ(Hh*6W|tYa`l(E-A!}F?-A%_mst=6*bzNJDXXeZRT5r>pW|;>-qJ%4#Rrm zdiQ_&%$kZmZ4cisY+)}lh+pXQr?>2l&xXpN*`%|91rJs^V(|2*7*L}A1p7cGL z{S{y0zardczt8y<_m@5Q#~w)EpLt66wEk(~Y4=l}Z*qbHJyHShY*MMNAU$?HMM|VRlg(6&R~)Qh+bTLMHdhQ%%bOJ!D|8ia z>wc|YC3udzg_Deo-1yImKvdG6HL`!kC+p`;GdEB9iP}3@p+(z@vy+_gB6-{2&zGQSI;?h9ahG^(!q=Q?8Al);7HTfNX%l$d|LI|i%Q zAB1LilpBj$=HWj$tLu_j_(e=EcAM-jmp#sip}K52<}j1=mPF=jmWLzR;GOTEV!J>1 z8n^Y+jtI=aGJ)WyXLx4c(2bQ5yUC{0f>XR|Y(`?n>av z6Pzw*Dr~Ol(DGCg2qsKK5(r@)k$Ve`7t$A~V$=^^tvMsU_Nw@5`a}BoPN2%m9~>w1 zl1c+PGo?!P42F62kUJ^^W~Zluc3C}urE)s|Pw~)`4jH&&T5}YZL}q`;j6iZjGC=Ry zi0ZWieB~0(*}THC1nIm!ZJ0;)d~@Pb@kVjKmAgBM=Or8GwI**&-fX=&Ijq}b-IKgi zcZ5H$drxo5%v)d8k?qfN$~>Ibv9Y+#F2{YYy90Kj87YXO{#OAACpaAb%CbwZ>}eoa?}fn>dmkr zy7hmdk;oA`uE-IxW|5rB(WShcuI5d;a5iF$WWv>arHs=iFsk%5GOiF(R}}3f@>ddw z!~u*)Y`ChpaLrv69EcVU)~ZV8+(FQ&$8%(In?HbKusgEkK-+(3H}1M;@abhWu}Vj- zbyjxOM(xF7(B}-}tlqq1bdEMi35 zjyL0j_%J?;wJ?9#$sR}J+?oxf5x*9j@;X0k2u14 zJvSnZm`2RIErY&6X)ryQ*{{1>*k{^jzSFWV@f7z|m1uu6RhhD;YHyV{>#c?bI#bTc zK3R&#%c~aP1xzECabAJEt!dlZhacz8U!Yg5k@l;9Go|-kzHLf-8 zj>?Ty8?zg$H`Z*ZHN$Wdw+o(lP>}2A#WVFowjule(3klyr@xYUDt#vQa@lK%GxZni zi&pCDJZOJ_@f^jkV+N05j8CFzwpB4zKU@K$%YfwZ`A&L?OV;&pQ5h_KjOHSv(VQ@r znYoCbB5e@QAf$~|u)$c7o_Q84zCadZDS}}}7*xcx^|Y0F!-{3=QR^F4);i7Xdr^AU zmk`O_4PcNCrSR$0Z&H_2Y)V;Dt)yND3yV^6DwBUYlj2e@;l(J27h`Asp24Pss_%$g zxfq%mg6693LN?4%YgABVr0OyHkQSp|KCLK)s3iwH@56^dKP_LdzCJ_A-mxv>ff z#$+NYmQ`VkIbIgF1*?!Qt*s&#->(Yn;6i)Zgofyvuv^$_+9q}PyTOXZ${J!OHKG(me&f)eOG`Gwq_8q=y?D_>& zt$Vlbxc~Zx-_UCseQEp;U;5(aJ2zBrP5OVnJ@WZAU;1ISOG+bEs)jRazJO}k)A`XM z;ij96E^5kjZEaQeAE^m0MBcN6m=SW1oH!CfNvId&YN9C#=dZ-k-3vdJUGb;rowrm8 zIe|+RWM@(ZX_{0)6?ckkZiv)L#8!!m7#!|!j3z_`+=$w|2&#th#a2UQifd|7#Fc;7 zR7B2W^hOgEW@Z2Fm?3{2lfO7O1H;XktD{f;ZrW?&tFMviLq$f_aX_WZPgrtNjawMIr!*wEGEZ%@uiECsoD6Yfn zEWZ+eFKU)ruajQUzhZdHpmFF+M9C{jEzClTR1z`MGAg#!1IREV71ZHI&iqMr^zdnxH}JiW-fObpA#kRpseVk-LAh#GWeL z=1&!F^QTg|x;YvG2}vgZKiHJl5=fQsK#|=bS}foyNZt z1cMfui_7IS2pQwJk-2EZXN`Yv8ks@k8FISma2#@Cr(4S5oIjL8p>!Ih#MA`cOxLuh z@ObKAib-v*%T41?P5FtM!Nkf-FzOMlC*p;b;t<*0B)!e1T@64ecU_pF{ZxCv+3LsP=zMk*HsQ$)yyt z<)k7)XP9*@V3c8(f zL3_(bRU)>XUuM+#Blrueb~L^7&XzzX>9aVVS?AeYwCk}*7jwbN2P@o7q1ac$CFW z`mx|&rJfF*2%SuQKlMiNjqpFG{ylI$Y+R~~Pvg%|#bP3wX3l?2oz39PG@CunYQz#; zGK~)%_bQ2W);o>=fRPijbapOA*@TahW+tZvsxURZ|ntIHvJIa3>$XI9PtT zoGAzQ5mwXxF7TABRZqW%!(zf#xHR&q@cvLF$sc>ei!EO4-4_vel>920nZ`R_j3{z4lVp;o7!!0b8C*N% z|LO+1xSaWwcF(?ZQE#(L=qaPNWfv=Zb&lgN1DR&ed@6TAZ&~(Gc3VWnE80 z%3s#<$`gOzbzReqUu-H)H!UPe53us-BlqpvvtaDORhe*qX{ciLvR!}usr9!keR%uh z`!6-6sa}L8x?6(~`)l@oRLA}X!;_Vw-ibZ)s$CtTn6DuXU{rx7UyIW5Sp?W*sXTb3DKw z5)WCQbe@X%%o>Ymv09RnC|RXs+z@x9>kWTm{SEpJHSP6}YbcJEqt1ACpJRYrThtl3#jjMk( z8b0je`A~JZsJc3AEQv-lRmP&KDkHppr{3tOiiTZ6T{_}4u*NK3Z7Id261<6Yio6CN zvRSP}2qMLmTobN0T^C&(aUc?8u2W16 zszN;8Hd&pDPGj8^s=`&Ln3quw)iZx9ru;wHuWqCe-BJmdF<-b;_<+Esf`k}R%PvxV zBBbi)sN$OZ)S2$6nDbjJ*lEk{O*`Ke&ut=Qe2x~hEw?GX30y>K6>onRC|)Nvm|-{+ z8}`2XDnYO6UgZJlz?F`9o2Zh9!cZq%zBp+hBif%{)aM*TGbhk*PXR6_lShAjskPAr zi}*$-aRm#(irryu)Q~G0JlTS&AyhpPp936+VNxLCLzY}vwh$q;pG;baI_Wn7Rg!P* zn83qCUC8!jL?&PbH!BJE6Bu5JVB4fkMOIbJ&11@mPyki{hhoc#q9tbqNGioSySj&4 zq9PmpLIB?>PpDS29cHI;))fZI9EvkQg)Ek0c>*y@sIyL zsznrk$b)Vg7nFz65x*dF2Sa{ggokcF`k@a!)RIBKgOA4jL7}9n^}0X=*HnZmZrFQn z&2_oi_Hvh9x%*urghf5vKN-?l~d$+sT8xDW7&cM)~L&)_0=1#&L|TKX^OnJUjCrJmTFV{8b87IBN6RXY`n=~ikfOoOHAubT9z~M zx@lIJG#G?wwqX)x?O=NziCTkcn)$h6M9+y?{<#6&n2yn%!Y{%?pTj?YQ4oxcR=SQS zN^cuxNHxEd|Ii!#S5<#W?4lpCAjfPqwf<^OZG?HVtmqY}S7;nv7A~Y{4TI+-VuG zFfbk(VC;cLK@IimRQVlVJ^F(vHWmAbnyQdesnI-d@ClsRVhOQa5zBI{z;G69G&@Wr z6|P-_H5rppD|TA21?J8M%PD37G9!*zpd?wGIs}iEYB%AGNihwYSd%;LXmqqWScfqs zR3ip6t`f)B)h>Sn=D;g1om)u`_lH(o+H_8YKT@zm4b&*)F@KY0A9NLaUv8(%w>Q6LP?H`6%q0$FBIjtK^q|t zzF^C7&SFBo{X#L27D^toe7KQNc>va5js0{JHdyN~#(sYy30})?6h8O~vw8MMT@7{* z7t^w6=3%_Duhk(6*fsm>5L@O7RxXbdz!*&)d$FiDzTh-!6~q@!vnv(Jr#J;xQN^QbJYv1YFZsv)tp9r+SBNM!f=M7z zPb$*BcZPp#coGF+h08~HS7Po}KK2uImSQ&<;{k5^sPa*%AfcoPsATgBx44hk<%~? z4#GI@O2n$oHAz2en#>$89`5&10T?E+>V| z^e{g!)uetyBjEGW{Rb~~^wL9n@1v=YeFBlH%OX3YGv`#XrvJBzb_i+c9Im!8az;-o z>r8(EtJ>N&!7H&+6>W5LCYTp{sQS2Agq`@~$NqRjn<*T|(U#^vnhY@Ete82OmybwP zWZ2)Dg6@{yn>EbLJFNq=)oshdvum$PNED)9Z7Q`x=i6_3F@?%P%) zILoTD#yT*jh3^SJ5#AO!Bdj;pyr^ZNw{?H((KK64K1!zF!H%2OJWh5tFTk8uy@N^w z9vi6216UNWS85c`K3e0*mY2_S*Fb`?+Y(CsyiE9uvp*$yAYZ}!8q}Erx#VxB$_sITeyb-y-&}wU+w|21C}Y6gL_U9% z<^@OsqybXMsA|YXjQ|bg=wLnyg;MjGRH=bMjcNMbsUN7{P$P!AUvoy)G50TtGvug1 z*)_Q2@RGAj-dw`jmpodk)U*T1*d&kO4+JDnsXvgFJSl&mMe;15(o+V1&@OpA{$N=0 zl>39#l4rg@2qh2=xZ1w=71n?UHO!RvW1`Y?#2Hp&41JjJG zxWy%#mz-I`%1iK)mT;iD9agGL_R+;eh(u!lLrQ{FAyir^3;h_~h9;|a z|3`#xu1Mcpt%m+ju9*2C_z1I`O6Fvk=1e9bJ5-UKnU^xFBd(dxQm=}S2=jkr5|Weo zCw%92wTe2#rk)QTxLRNF*Jiut)ZSa>u#vv=+~srlHClU}X!|MVY2+f;9Ta^{T^1=y zQvEHRO%?ML-Nfz8cb|A0TUPCET)w>3nfM^nR8E}B zo9Nf6W|wh@J&L>#<&W}fCwGKa-bir?LB(3k`|>&v%%nckFH+^@Eoogh7e3e+clg@<8_GHp z1L79<7XLum?cy%?m~WSVEOD3n-o#fe54ykVd(i*ovPTn7l|12oru4bQiIQ(Y4t|z+ zH}QU=OfDY|562GJAF_WxRCK1CUk&YAXO8>$XkPPy$7%6NY|tIY;_40``RpeX7$|JwcOL7s zH2hxY(h*nmjkkZiub}*o=x5+3GzWmxQ~rE7-ap%d))ly}_!NFM+8i#`d=~}Td(l!3 zAtOVQ`YsZIZU(pI&;U)W7xjR>1^jk`y$$G#{7tBf$)O^k8F2q1hc3SlvFPJPiQzncU@WaGS4%)gfRj#J!lL2Wef$4Wj_>MFD?^y9&ZA05=nVFY-W~?}6KD z@E<2(09He|jetE+0&PH(_`d-Depn7(Po4w#&yl>tW6VRBnBQ_oxFeeL{3`uI!v^C^ zrr(*HET6Ib-n!NHMf+Ptmg0(%?>mk;mpOmvy2*XQ^JMAwq$2;GpcrZlKN?9!$kre*&I8W=*-HbL*o0x~0&tHG31J#;Hp2oOh}Yblr&*NK z?8?&|@I0NTHSpd}(L@@JWreO3T;2cj5!w4GV&)V zO-e}Qze8y)b^k|7^VIzpl-5!Dx0KeCGSuNb4P~giB~L>c>h|YpC_~*tc^b-4ug}v^ zhWdYKo`y2iH|A+5Lw#4ChBDOuQ=W!0H1K&E%Fu8xr41yXCN&;`qqLXuyi93{(m$Yd zi1PoG(q)wXHKmExHe~uep>=BhRhp({rsaQWr0!-DrRlSnUFe%gMwKXoDgb1(25m>Z zfLEXav=d+i?LmXoWf9nhfF@=axc57E00{&gWA`)sTY>ss(>4 z2C?^{Ztxud{{gfWQi=Z;@qbcmS3{{`u7+qwt0A2=|7E`Ws81Kb2rbzj;MqZ+;TCWs zx%=O|mH%mokMpg$LN!y)TY+;Yl(3B2AWvIq2@>COfYlI=JWW5i?8&D(M4ybrngo}% zlz)V}%V;@$KJuhH!A*v`mqS%h3p;SG5z~Zg}2N z`V>8scL2;D>OV+p;U1dHoz!=bmWLWccRnul=}8NcKlbDUv^4k7+S&)TQ>K5lV#}4Z zu9dHyAB+3HUrJYF@451xhiI)Gp*ioqQd6$|^lIuK&)2*;Wk8-peU=fLUZD<>_|<3a z0he3plMm3AaP22mOS_FaBpGu`i!8S-undWx)m71%@Lpb|^<3D{z-;^se z6&ZQW_Fj3#z|Mh@J%hdSqJe**!GWQ!k-mYQDY>b?UtZO>ZTrZuysCG&cW8HSPijry zj^1H;W$&%>s(~F{J6H8?8}08JDul29h_{^guV33cGz@Xd)u~La99z-XJv1;puyrK< z5&pSs)C+v5NBim(Yd#ux->}>zj|_G7^zP^yxv#5Ok<-cwlEzUfb6_GB6}B?;7gq-8mvxx;|1JGPKe zSL51Q;J#*-D0>fi=Aqu>ucw zn(`6rKkFkHlo(4F%LL#r6M(-=0RA!o_{#*~KYd4Yd)uot zvGrZk?-w89Bkf{tKdjdNYsc9SJbUKaIUiTSwQ@_i`C#Tgl)_Gk_mg5-3FdBEifX&w zjwkTfSw!FMCx?HzHl5$wK$rax-8FtE&>HsLDYi^%Y$|5Yq0Q`hbcp>WdINw%BDjb^ zH3AF*eHlP=`3(Dusg{;XWg2iIMe$@TUU`CeOu9=e|Azeq^DK&zPa?8!OqO`4&%aJC zT$m?n>QrK?ti1A#CIkDg=r;fi`>*U9P|;|psaUG=Vv~Of95DN7WWg9o=rH>)Xaayi z3j4FEP^9wEY4-2H|8Lpv!=sU4-=8#DDo_7cEf&f|x` z-2?bRuoL`1-oBe1rQt^M_%J&>>664JANb1v82}cj`+>S2itc_=Bf!M$XV`w4(lNl5 zfOn`EifiwrKSmj7kF-0dCJ+_f#-JMxgB_J zhf>L~!;s!E+1&tB1dst(DEDC~_hBl@KMefCz)#%o1oI%kVPa!%g>sBTuJ*GxPsSvu zWZR~4N@e3Ib}JOM!fu^%c`FZGwdoC{A_6w&v4!yVQs3Swy^*-~PPx4*2CiG0%xpKh z4S;_^MPP;ivH;Bh9NRq^N=ql%m1u_!DQ0Pm8Dqz|F%6e##6*(_iqOGqwC>$0h zgfqffK{KH}qdlvAQ+rXXQFZaOYd32Lwc~%$%SDWg3R;0M z2nH(3pg_uS587|FU%YGG^C$0m*0bOJ>}S9GM}BRC%6*z@zsq>29nd#0*C< z$ShjnS+le|QIm+Sskhn?lTiDppV%%RUZi?*h;rE8Z&O7&At?TYYK1IELs&_;B=hYS zVJNVNNSO+e>s17^=brdXnI`Eku1{CqrWPv@?udTgPn_9wnUEDPAktNPo$9fpSqp>+ zlLUMLhIB>uYiB|k;-|3)A72p=Jjb!K(`t)qDp?ELL?`pphttumI?Zy!dqaXb*LF+! z^>V5n`vuidpB_)rUb8kyZojmBO_iTl&6cOpNe30_DcbB)_BB!9MwjMJd(_k<`AT+F z(w7yBuco_NeSIGvHPhR>wJH}YH`?XNO?NVS5Dzvq8+%Va^xWCS8Z}|L7-y#v`U!q# ziGf-L>--3D?92pHs4adXQYh95m3~ER-rlGs|tVMjS zswANOWwexzl%M`&P{Yc;hvmEMul_~M4&OCb#ai(nH;do5=KglM>iB3ZQoCT`P~2lo zdK`DTy`bmWQ4qah0416Nic^t*Q^n&xulHs?ecfD2JZJgt?=dD7` ziUMuc8Fn2!7m|12+65(ltg-=cWX(kbP!qw|A#OvUHny1%fIsqm>?vx>qW zn@Pt)KEXx(Kw6xWl?Mbo8@GOQBJy zFssE-{)rQ&lKuOSltlHoLPMVUAUU+O#gS_zKI5ZS>~_A8EVwI|Y)WS<2EU*viwU!H4ep&W z+q;gvE{>uw%cW0uwS>s(@iMLST?yuizGpHi)s9%3%+)t%$@7iZw|0MR_La&D@()Ie z?;S;%BRdVXgXLILo^K}|%+6#nSO#0xy0YJTXpx}@wch!!i`^~w$;%i!jZNo$Bk-8;MNf=ba~sA|=QTEn^R~T<{jtG9_W9$ayh8z=d(4|ut30}Y z4IH#NRCx3vzb>@Uti$5+LH>~?D1+Y)RLPI#hh#jxkxJT;J2~yto3>RkqbsIwLVx~! z?d0oM_2sHTzq(Cm93N7?KFCz;3D0gPuD5V&nY0VSiVnpi)in!RzmL{2?GsuT^gHZI zV}=@@KAAAie;@6%TV?1@bDz5UCDdH;Yy0Z)JOLxt{jr^7YZo zFE}Rkic;F4O)8NHSSI?Rp;B zj~#1bgAJ3Qt&OtptWG_G8L&a4hE~plwBQ3*l0T)Y z1uk-=uBgVE#FE6RZ}PJrO8-o5yZXrpKE?ck!5rJ4e{3$d$@S$uo5NMI>kEkyRkMiif}XCf zu0CjSkq~*H+p*8CphLW;+GX=^C+>^WQ_@qi^0$h`nxQ&c}!+wg_kf zxB9oPHw=pIkED|0{Rzk~O~Ly+#3h9BlxJosImelIq=~>af`@c)dv(L2e!Um|@1_27 zTikKIdN#qmDS1m!t5@z10>cNHL{U^O=jHB_U+;uz9q#c^ztvwbly%|ru;6P^Qu&-4 zun%pY-_WTJM{q?$7(`fE`!1C9~bE*)H=_# ze|a>5*Aeu*%>Pdw?OZtadUW&Y?@yopW9X(Fmj85O^U8*vu${-sN(Erv3*P1xUD@?^ zn42rcuWClO_Kz)edFT1=KKpaI)(ht7!gImEuh&}xdS?97T8F2PWqK{k)L90WW@I4W zh(iun|1#nIYVkq9L}Bog@A%==vDB5PpSNx)ja=zS*1X0Jb~_)S{cKH-7N;d#xT{x9 zcyda`ooe@5TpAWr1V5RUMryZ8GOxuaMSK7WfIG@PPbfkJxiN zEGGr^1FzI41%_B|U+2K4)6PqYGoE7Y`QDM!Ec!d;W%r*Jf2IYEZ@+8W-*M^vo~5sn zdd1Vd#bX_>i(;^WVV0oRh(9pZJZAl&?OfM;=DchOfB-7*Ap|^CV8Ae$N~Mw!5aa^C zaVi@t=p+sFKW_s;K~g~2fz>6aBr5NAF<`=_*QW5?%>lzoVQm<|3x)uYd*U9CR|x}q zD|?emjCt*c01`K?T!}Y!2r%XTR-VKw3j>TQgKoM5JeR{bef$>2qaOi0E5n@15nfI) zpdifvQC?{=0CT+((s`UKI9)z56X3ln!RgIOHN0!30KQ|Dj?3C*ZU>VQ=;Mh>hX2NB zWZK^tLZ<$GqLXR#>UCwnCIuN3rqf^^S_#mJ5Cnp}h)Mv(PY{E5^W%w1Hp5xd$F5R(8= z242;FV^k0ZB{2v^@aFxShm)9~gg}r=17Qh)s~GK{SnNZ^I0z#Ws&R}CeR?5Elf-CD zCQULH$LJCcg824Z#y^Qa=0z|NL2(=Ys}cl65s8XH6h!_nOwv}I$6!c`K_T2ii5w_I zM^|&K`v0GPf+!8IS(1pqM@iKvzK-V;fixyf(rOfe7)*)#mLQgTia1-b_~>tMq|)n)C#79R2wVm zRuaql|D%w-N#-`;Z0q0v_QA-bhsfr(kS$_|S}`GOgh7Mp&~_RGgH|xKol3W3+R|at chn>s*5mCn?J_`sW;cDT+a?BbSmc!K1_-hN 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 Date: Thu, 23 Jan 2014 18:34:48 +0100 Subject: [PATCH 05/24] Vector::PiecewiseMultiplicationAdd and a few other minor changes in the math lib --- Code/OysterMath/LinearMath.h | 18 +++++----- Code/OysterMath/Matrix.h | 24 +++++++++++++ Code/OysterMath/OysterMath.h | 44 +++++------------------- Code/OysterMath/Vector.h | 65 ++++++++++++++++++++++++++++++++++-- 4 files changed, 105 insertions(+), 46 deletions(-) diff --git a/Code/OysterMath/LinearMath.h b/Code/OysterMath/LinearMath.h index d32ea04f..35adef43 100644 --- a/Code/OysterMath/LinearMath.h +++ b/Code/OysterMath/LinearMath.h @@ -35,7 +35,7 @@ namespace std // x2 template -::LinearAlgebra::Matrix2x2 operator * ( const ::LinearAlgebra::Matrix2x2 &left, const ::LinearAlgebra::Matrix2x2 &right ) +inline ::LinearAlgebra::Matrix2x2 operator * ( const ::LinearAlgebra::Matrix2x2 &left, const ::LinearAlgebra::Matrix2x2 &right ) { return ::LinearAlgebra::Matrix2x2( (left.m11 * right.m11) + (left.m12 * right.m21), (left.m11 * right.m12) + (left.m12 * right.m22), @@ -44,14 +44,14 @@ template } template -::LinearAlgebra::Vector2 operator * ( const ::LinearAlgebra::Matrix2x2 &matrix, const ::LinearAlgebra::Vector2 &vector ) +inline ::LinearAlgebra::Vector2 operator * ( const ::LinearAlgebra::Matrix2x2 &matrix, const ::LinearAlgebra::Vector2 &vector ) { return ::LinearAlgebra::Vector2( (matrix.m11 * vector.x) + (matrix.m12 * vector.y), (matrix.m21 * vector.x) + (matrix.m22 * vector.y) ); } template -::LinearAlgebra::Vector2 operator * ( const ::LinearAlgebra::Vector2 &vector, const ::LinearAlgebra::Matrix2x2 &left ) +inline ::LinearAlgebra::Vector2 operator * ( const ::LinearAlgebra::Vector2 &vector, const ::LinearAlgebra::Matrix2x2 &left ) { return ::LinearAlgebra::Vector2( (vector.x * matrix.m11) + (vector.y * matrix.m21), (vector.x * matrix.m12) + (vector.y * matrix.m22) ); @@ -60,7 +60,7 @@ template // x3 template -::LinearAlgebra::Matrix3x3 operator * ( const ::LinearAlgebra::Matrix3x3 &left, const ::LinearAlgebra::Matrix3x3 &right ) +inline ::LinearAlgebra::Matrix3x3 operator * ( const ::LinearAlgebra::Matrix3x3 &left, const ::LinearAlgebra::Matrix3x3 &right ) { return ::LinearAlgebra::Matrix3x3( (left.m11 * right.m11) + (left.m12 * right.m21) + (left.m13 * right.m31), (left.m11 * right.m12) + (left.m12 * right.m22) + (left.m13 * right.m32), (left.m11 * right.m13) + (left.m12 * right.m23) + (left.m13 * right.m33), (left.m21 * right.m11) + (left.m22 * right.m21) + (left.m23 * right.m31), (left.m21 * right.m12) + (left.m22 * right.m22) + (left.m23 * right.m32), (left.m21 * right.m13) + (left.m22 * right.m23) + (left.m23 * right.m33), @@ -68,7 +68,7 @@ template } template -::LinearAlgebra::Vector3 operator * ( const ::LinearAlgebra::Matrix3x3 &matrix, const ::LinearAlgebra::Vector3 &vector ) +inline ::LinearAlgebra::Vector3 operator * ( const ::LinearAlgebra::Matrix3x3 &matrix, const ::LinearAlgebra::Vector3 &vector ) { return ::LinearAlgebra::Vector3( (matrix.m11 * vector.x) + (matrix.m12 * vector.y) + (matrix.m13 * vector.z), (matrix.m21 * vector.x) + (matrix.m22 * vector.y) + (matrix.m23 * vector.z), @@ -76,7 +76,7 @@ template } template -::LinearAlgebra::Vector3 operator * ( const ::LinearAlgebra::Vector3 &vector, const ::LinearAlgebra::Matrix3x3 &left ) +inline ::LinearAlgebra::Vector3 operator * ( const ::LinearAlgebra::Vector3 &vector, const ::LinearAlgebra::Matrix3x3 &left ) { return ::LinearAlgebra::Vector3( (vector.x * matrix.m11) + (vector.y * matrix.m21) + (vector.z * matrix.m31), (vector.x * matrix.m12) + (vector.y * matrix.m22) + (vector.z * matrix.m32), @@ -86,7 +86,7 @@ template // x4 template -::LinearAlgebra::Matrix4x4 operator * ( const ::LinearAlgebra::Matrix4x4 &left, const ::LinearAlgebra::Matrix4x4 &right ) +inline ::LinearAlgebra::Matrix4x4 operator * ( const ::LinearAlgebra::Matrix4x4 &left, const ::LinearAlgebra::Matrix4x4 &right ) { return ::LinearAlgebra::Matrix4x4( (left.m11 * right.m11) + (left.m12 * right.m21) + (left.m13 * right.m31) + (left.m14 * right.m41), (left.m11 * right.m12) + (left.m12 * right.m22) + (left.m13 * right.m32) + (left.m14 * right.m42), (left.m11 * right.m13) + (left.m12 * right.m23) + (left.m13 * right.m33) + (left.m14 * right.m43), (left.m11 * right.m14) + (left.m12 * right.m24) + (left.m13 * right.m34) + (left.m14 * right.m44), (left.m21 * right.m11) + (left.m22 * right.m21) + (left.m23 * right.m31) + (left.m24 * right.m41), (left.m21 * right.m12) + (left.m22 * right.m22) + (left.m23 * right.m32) + (left.m24 * right.m42), (left.m21 * right.m13) + (left.m22 * right.m23) + (left.m23 * right.m33) + (left.m24 * right.m43), (left.m21 * right.m14) + (left.m22 * right.m24) + (left.m23 * right.m34) + (left.m24 * right.m44), @@ -95,7 +95,7 @@ template } template -::LinearAlgebra::Vector4 operator * ( const ::LinearAlgebra::Matrix4x4 &matrix, const ::LinearAlgebra::Vector4 &vector ) +inline ::LinearAlgebra::Vector4 operator * ( const ::LinearAlgebra::Matrix4x4 &matrix, const ::LinearAlgebra::Vector4 &vector ) { return ::LinearAlgebra::Vector4( (matrix.m11 * vector.x) + (matrix.m12 * vector.y) + (matrix.m13 * vector.z) + (matrix.m14 * vector.w), (matrix.m21 * vector.x) + (matrix.m22 * vector.y) + (matrix.m23 * vector.z) + (matrix.m24 * vector.w), @@ -104,7 +104,7 @@ template } template -::LinearAlgebra::Vector4 operator * ( const ::LinearAlgebra::Vector4 &vector, const ::LinearAlgebra::Matrix4x4 &matrix ) +inline ::LinearAlgebra::Vector4 operator * ( const ::LinearAlgebra::Vector4 &vector, const ::LinearAlgebra::Matrix4x4 &matrix ) { return ::LinearAlgebra::Vector4( (vector.x * matrix.m11) + (vector.y * matrix.m21) + (vector.z * matrix.m31) + (vector.w * matrix.m41), (vector.x * matrix.m12) + (vector.y * matrix.m22) + (vector.z * matrix.m32) + (vector.w * matrix.m42), diff --git a/Code/OysterMath/Matrix.h b/Code/OysterMath/Matrix.h index c7b6b9e0..5d129431 100644 --- a/Code/OysterMath/Matrix.h +++ b/Code/OysterMath/Matrix.h @@ -163,12 +163,18 @@ namespace LinearAlgebra Vector4 GetRowVector( unsigned int rowID ) const; const Vector4 & GetColumnVector( unsigned int colID ) const; }; +} +template LinearAlgebra::Matrix2x2 operator * ( const ScalarType &left, const LinearAlgebra::Matrix2x2 &right ); +template LinearAlgebra::Matrix3x3 operator * ( const ScalarType &left, const LinearAlgebra::Matrix3x3 &right ); +template LinearAlgebra::Matrix4x4 operator * ( const ScalarType &left, const LinearAlgebra::Matrix4x4 &right ); /////////////////////////////////////////////////////////////////////////////////// // Body /////////////////////////////////////////////////////////////////////////////////// +namespace LinearAlgebra +{ // Matrix2x2 /////////////////////////////////////// template @@ -753,4 +759,22 @@ namespace LinearAlgebra { return this->v[colID]; } } +template +inline LinearAlgebra::Matrix2x2 operator * ( const ScalarType &left, const LinearAlgebra::Matrix2x2 &right ) +{ + return right * left; +} + +template +inline LinearAlgebra::Matrix3x3 operator * ( const ScalarType &left, const LinearAlgebra::Matrix3x3 &right ) +{ + return right * left; +} + +template +inline LinearAlgebra::Matrix4x4 operator * ( const ScalarType &left, const LinearAlgebra::Matrix4x4 &right ) +{ + return right * left; +} + #endif \ No newline at end of file diff --git a/Code/OysterMath/OysterMath.h b/Code/OysterMath/OysterMath.h index dd4655c4..ef6dc65e 100644 --- a/Code/OysterMath/OysterMath.h +++ b/Code/OysterMath/OysterMath.h @@ -61,55 +61,29 @@ namespace Oyster { namespace Math //! Oyster's native math library inline ::Oyster::Math::Float2 & operator *= ( ::Oyster::Math::Float2 &left, const ::Oyster::Math::Float2 &right ) { - left.x *= right.x; - left.y *= right.y; - return left; + return left.PiecewiseMultiplicationAdd( right ); } inline ::Oyster::Math::Float2 operator * ( const ::Oyster::Math::Float2 &left, const ::Oyster::Math::Float2 &right ) -{ return left.PiecewiseMultiplication( right; } - -inline ::Oyster::Math::Float2 operator * ( const ::Oyster::Math::Float &left, const ::Oyster::Math::Float2 &right ) -{ return ::Oyster::Math::Float2(right) *= left; } +{ + return left.PiecewiseMultiplication( right ); +} inline ::Oyster::Math::Float3 & operator *= ( ::Oyster::Math::Float3 &left, const ::Oyster::Math::Float3 &right ) { - left.x *= right.x; - left.y *= right.y; - left.z *= right.z; - return left; + return left.PiecewiseMultiplicationAdd( right ); } inline ::Oyster::Math::Float3 operator * ( const ::Oyster::Math::Float3 &left, const ::Oyster::Math::Float3 &right ) -{ return left.PiecewiseMultiplication( right ); } - -inline ::Oyster::Math::Float3 operator * ( const ::Oyster::Math::Float &left, const ::Oyster::Math::Float3 &right ) -{ return ::Oyster::Math::Float3(right) *= left; } +{ + return left.PiecewiseMultiplication( right ); +} inline ::Oyster::Math::Float4 & operator *= ( ::Oyster::Math::Float4 &left, const ::Oyster::Math::Float4 &right ) { - left.x *= right.x; - left.y *= right.y; - left.z *= right.z; - left.w *= right.w; - return left; + return left.PiecewiseMultiplicationAdd( right ); } -inline ::Oyster::Math::Float4 operator * ( const ::Oyster::Math::Float4 &left, const ::Oyster::Math::Float4 &right ) -{ return left.PiecewiseMultiplication( right ); } - -inline ::Oyster::Math::Float4 operator * ( const ::Oyster::Math::Float &left, const ::Oyster::Math::Float4 &right ) -{ return ::Oyster::Math::Float4(right) *= left; } - -inline ::Oyster::Math::Float2x2 operator * ( const ::Oyster::Math::Float &left, const ::Oyster::Math::Float2x2 &right ) -{ return ::Oyster::Math::Float2x2(right) *= left; } - -inline ::Oyster::Math::Float3x3 operator * ( const ::Oyster::Math::Float &left, const ::Oyster::Math::Float3x3 &right ) -{ return ::Oyster::Math::Float3x3(right) *= left; } - -inline ::Oyster::Math::Float4x4 operator * ( const ::Oyster::Math::Float &left, const ::Oyster::Math::Float4x4 &right ) -{ return ::Oyster::Math::Float4x4(right) *= left; } - namespace Oyster { namespace Math2D //! Oyster's native math library specialized for 2D { using namespace ::Oyster::Math; // deliberate inheritance from ::Oyster::Math namespace diff --git a/Code/OysterMath/Vector.h b/Code/OysterMath/Vector.h index d6ab69d9..ea36cfc9 100644 --- a/Code/OysterMath/Vector.h +++ b/Code/OysterMath/Vector.h @@ -58,7 +58,10 @@ namespace LinearAlgebra ScalarType Dot( const Vector2 &vector ) const; //! @return (a.x * b.x, a.y * b.y) - Vector2 PiecewiseMultiplication( const Vector2 &vector ) const; + Vector2 PiecewiseMultiplication( const Vector2 &vector ) const; + + //! @return a = (a.x * b.x, a.y * b.y) + Vector2 & PiecewiseMultiplicationAdd( const Vector2 &vector ); Vector2 & Normalize( ); Vector2 GetNormalized( ) const; @@ -118,6 +121,9 @@ namespace LinearAlgebra //! @return (a.x * b.x, a.y * b.y, a.z * b.z) Vector3 PiecewiseMultiplication( const Vector3 &vector ) const; + //! @return a = (a.x * b.x, a.y * b.y, a.z * b.z) + Vector3 & PiecewiseMultiplicationAdd( const Vector3 &vector ); + Vector3 & Normalize( ); Vector3 GetNormalized( ) const; }; @@ -175,17 +181,27 @@ namespace LinearAlgebra ScalarType GetMagnitude( ) const; ScalarType Dot( const Vector4 &vector ) const; - //! @return (a.x * b.x, a.y * b.y, a.z * b.z, a.w * b.w ) + //! @return (a.x * b.x, a.y * b.y, a.z * b.z, a.w * b.w) Vector4 PiecewiseMultiplication( const Vector4 &vector ) const; + //! @return a = (a.x * b.x, a.y * b.y, a.z * b.z, a.w * b.w) + Vector4 & PiecewiseMultiplicationAdd( const Vector4 &vector ); + Vector4 & Normalize( ); Vector4 GetNormalized( ) const; }; +} + +template ::LinearAlgebra::Vector2 operator * ( const ScalarType &left, const ::LinearAlgebra::Vector2 &right ); +template ::LinearAlgebra::Vector3 operator * ( const ScalarType &left, const ::LinearAlgebra::Vector3 &right ); +template ::LinearAlgebra::Vector4 operator * ( const ScalarType &left, const ::LinearAlgebra::Vector4 &right ); /////////////////////////////////////////////////////////////////////////////////// // Body /////////////////////////////////////////////////////////////////////////////////// +namespace LinearAlgebra +{ // Vector2 /////////////////////////////////////// template const Vector2 Vector2::null = Vector2( 0, 0 ); @@ -342,6 +358,14 @@ namespace LinearAlgebra return Vector2( this->x * vector.x, this->y * vector.y ); } + template + inline Vector2 & Vector2::PiecewiseMultiplicationAdd( const Vector2 &vector ) + { + this->x *= vector.x; + this->y *= vector.y; + return *this; + } + template inline Vector2 & Vector2::Normalize( ) { return (*this) /= this->GetLength(); } @@ -520,6 +544,15 @@ namespace LinearAlgebra return Vector3( this->x * vector.x, this->y * vector.y, this->z * vector.z ); } + template + inline Vector3 & Vector3::PiecewiseMultiplicationAdd( const Vector3 &vector ) + { + this->x *= vector.x; + this->y *= vector.y; + this->z *= vector.z; + return *this; + } + template inline Vector3 & Vector3::Normalize( ) { return (*this) /= this->GetLength(); } @@ -704,6 +737,16 @@ namespace LinearAlgebra return Vector4( this->x * vector.x, this->y * vector.y, this->z * vector.z, this->w * vector.w ); } + template + inline Vector4 & Vector4::PiecewiseMultiplicationAdd( const Vector4 &vector ) + { + this->x *= vector.x; + this->y *= vector.y; + this->z *= vector.z; + this->w *= vector.w; + return *this; + } + template inline Vector4 & Vector4::Normalize( ) { return (*this) /= this->GetLength(); } @@ -713,4 +756,22 @@ namespace LinearAlgebra { return Vector4(*this).Normalize(); } } +template +inline ::LinearAlgebra::Vector2 operator * ( const ScalarType &left, const ::LinearAlgebra::Vector2 &right ) +{ + return right * left; +} + +template +inline ::LinearAlgebra::Vector3 operator * ( const ScalarType &left, const ::LinearAlgebra::Vector3 &right ) +{ + return right * left; +} + +template +inline ::LinearAlgebra::Vector4 operator * ( const ScalarType &left, const ::LinearAlgebra::Vector4 &right ) +{ + return right * left; +} + #endif \ No newline at end of file From c3ed5e78acaddcc6640a7b71258e390684b6bb61 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Thu, 23 Jan 2014 18:45:33 +0100 Subject: [PATCH 06/24] struct ::Oyster::Physics3D::MomentOfInertia --- Code/OysterPhysics3D/Inertia.cpp | 51 ++++++++ Code/OysterPhysics3D/Inertia.h | 119 ++++++++++++++++++ Code/OysterPhysics3D/OysterPhysics3D.vcxproj | 2 + .../OysterPhysics3D.vcxproj.filters | 6 + 4 files changed, 178 insertions(+) create mode 100644 Code/OysterPhysics3D/Inertia.cpp create mode 100644 Code/OysterPhysics3D/Inertia.h diff --git a/Code/OysterPhysics3D/Inertia.cpp b/Code/OysterPhysics3D/Inertia.cpp new file mode 100644 index 00000000..69df0e01 --- /dev/null +++ b/Code/OysterPhysics3D/Inertia.cpp @@ -0,0 +1,51 @@ +/******************************************************************** + * Created by Dan Andersson 2014 + ********************************************************************/ + +#include "Inertia.h" + +using namespace ::Oyster::Math3D; +using namespace ::Oyster::Physics3D; + +MomentOfInertia::MomentOfInertia() +{ + this->rotation = Quaternion::identity; + this->magnitude = Float3( 1.0f ); +} + +MomentOfInertia::MomentOfInertia( const Quaternion &r, const Float3 &m ) +{ + this->rotation = r; + this->magnitude = m; +} + +MomentOfInertia & MomentOfInertia::operator = ( const MomentOfInertia &i ) +{ + this->rotation = i.rotation; + this->magnitude = i.magnitude; + return *this; +} + +Float4 MomentOfInertia::CalculateAngularVelocity( const Quaternion &externR, const Float4 &h ) const +{ + return this->CalculateAngularVelocity( externR, h, Float4() ); +} + +Float4 & MomentOfInertia::CalculateAngularVelocity( const Quaternion &externR, const Float4 &h, Float4 &targetMem ) const +{ // w = (R * I_R) * I_M^-1 * (R * I_R)^-1 * h + Float4x4 rotation = RotationMatrix( externR ) * RotationMatrix( this->rotation ); + Float4 w = rotation.GetInverse() * h; + return targetMem = rotation * w.PiecewiseMultiplicationAdd( Float4(1.0f / this->magnitude.x, 1.0f / this->magnitude.y, 1.0f / this->magnitude.z, 0.0f) ); +} + +Float4 MomentOfInertia::CalculateAngularMomentum( const Quaternion &externR, const Float4 &w ) const +{ + return this->CalculateAngularMomentum( externR, w, Float4() ); +} + +Float4 & MomentOfInertia::CalculateAngularMomentum( const Quaternion &externR, const Float4 &w, Float4 &targetMem ) const +{ // h = (R * I_R) * I_M * (R * I_R)^-1 * w + Float4x4 rotation = RotationMatrix( externR ) * RotationMatrix( this->rotation ); + Float4 h = rotation.GetInverse() * w; + return targetMem = rotation * h.PiecewiseMultiplicationAdd( Float4(this->magnitude.x, this->magnitude.y, this->magnitude.z, 0.0f) ); +} \ No newline at end of file diff --git a/Code/OysterPhysics3D/Inertia.h b/Code/OysterPhysics3D/Inertia.h new file mode 100644 index 00000000..c7ffc49f --- /dev/null +++ b/Code/OysterPhysics3D/Inertia.h @@ -0,0 +1,119 @@ +/******************************************************************** + * Created by Dan Andersson & Robin Engman 2014 + ********************************************************************/ + +#ifndef OYSTER_PHYSICS_3D_INERTIA_H +#define OYSTER_PHYSICS_3D_INERTIA_H + +#include "OysterMath.h" + +namespace Oyster { namespace Physics3D +{ + struct MomentOfInertia + { + ::Oyster::Math::Quaternion rotation; + ::Oyster::Math::Float3 magnitude; + + MomentOfInertia(); + MomentOfInertia( const ::Oyster::Math::Quaternion &r, const ::Oyster::Math::Float3 &m ); + + MomentOfInertia & operator = ( const MomentOfInertia &i ); + + ::Oyster::Math::Float4 CalculateAngularVelocity( const ::Oyster::Math::Quaternion &externR, const ::Oyster::Math::Float4 &angularMomentum ) const; + ::Oyster::Math::Float4 & CalculateAngularVelocity( const ::Oyster::Math::Quaternion &externR, const ::Oyster::Math::Float4 &angularMomentum, ::Oyster::Math::Float4 &targetMem ) const; + + ::Oyster::Math::Float4 CalculateAngularMomentum( const ::Oyster::Math::Quaternion &externR, const ::Oyster::Math::Float4 &angularVelocity ) const; + ::Oyster::Math::Float4 & CalculateAngularMomentum( const ::Oyster::Math::Quaternion &externR, const ::Oyster::Math::Float4 &angularVelocity, ::Oyster::Math::Float4 &targetMem ) const; + + static ::Oyster::Math::Float CalculateSphere( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float radius ); + static ::Oyster::Math::Float CalculateHollowSphere( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float radius ); + static ::Oyster::Math::Float CalculateCuboidX( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float height, const ::Oyster::Math::Float depth ); + static ::Oyster::Math::Float CalculateCuboidY( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float width, const ::Oyster::Math::Float depth ); + static ::Oyster::Math::Float CalculateCuboidZ( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float width, const ::Oyster::Math::Float height ); + static ::Oyster::Math::Float CalculateRodCenter( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float length ); + static ::Oyster::Math::Float CalculateCylinderXY( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float height, const ::Oyster::Math::Float radius ); + static ::Oyster::Math::Float CalculateCylinderZ( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float radius ); + + static MomentOfInertia Sphere( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float radius ); + static MomentOfInertia HollowSphere( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float radius ); + static MomentOfInertia Cuboid( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float height, const ::Oyster::Math::Float width, const ::Oyster::Math::Float depth ); + static MomentOfInertia RodCenter( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float length ); + static MomentOfInertia Cylinder( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float height, const ::Oyster::Math::Float radius ); + }; + + inline ::Oyster::Math::Float MomentOfInertia::CalculateSphere( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float radius ) + { + return (2.0f / 5.0f) * mass * radius * radius; + } + + inline ::Oyster::Math::Float MomentOfInertia::CalculateHollowSphere( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float radius ) + { + return (2.0f / 3.0f) * mass * radius * radius; + } + + inline ::Oyster::Math::Float MomentOfInertia::CalculateCuboidX( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float height, const ::Oyster::Math::Float depth ) + { + return (1.0f / 12.0f) * mass * (height * height + depth * depth); + } + + inline ::Oyster::Math::Float MomentOfInertia::CalculateCuboidY( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float width, const ::Oyster::Math::Float depth ) + { + return (1.0f / 12.0f) * mass * (width * width + depth * depth); + } + + inline ::Oyster::Math::Float MomentOfInertia::CalculateCuboidZ( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float width, const ::Oyster::Math::Float height ) + { + return (1.0f / 12.0f) * mass * (height * height + width * width); + } + + inline ::Oyster::Math::Float MomentOfInertia::CalculateRodCenter( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float length ) + { + return (1.0f / 12.0f) * mass * length * length; + } + + inline ::Oyster::Math::Float MomentOfInertia::CalculateCylinderXY( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float height, const ::Oyster::Math::Float radius ) + { + return (1.0f / 12.0f) * mass * (3.0f * radius * radius + height * height); + } + + inline ::Oyster::Math::Float MomentOfInertia::CalculateCylinderZ( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float radius ) + { + return 0.5f * mass * radius * radius; + } + + inline MomentOfInertia MomentOfInertia::Sphere( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float radius ) + { + return MomentOfInertia( ::Oyster::Math::Quaternion::identity, + ::Oyster::Math::Float3(MomentOfInertia::CalculateSphere(mass, radius)) ); + } + + inline MomentOfInertia MomentOfInertia::HollowSphere( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float radius ) + { + return MomentOfInertia( ::Oyster::Math::Quaternion::identity, + ::Oyster::Math::Float3(MomentOfInertia::CalculateHollowSphere(mass, radius)) ); + } + + inline MomentOfInertia MomentOfInertia::Cuboid( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float height, const ::Oyster::Math::Float width, const ::Oyster::Math::Float depth ) + { + return MomentOfInertia( ::Oyster::Math::Quaternion::identity, + ::Oyster::Math::Float3(MomentOfInertia::CalculateCuboidX(mass, height, depth), + MomentOfInertia::CalculateCuboidY(mass, width, depth), + MomentOfInertia::CalculateCuboidZ(mass, height, width)) ); + } + + inline MomentOfInertia MomentOfInertia::RodCenter( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float length ) + { + return MomentOfInertia( ::Oyster::Math::Quaternion::identity, + ::Oyster::Math::Float3(MomentOfInertia::CalculateRodCenter(mass , length)) ); + } + + inline MomentOfInertia MomentOfInertia::Cylinder( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float height, const ::Oyster::Math::Float radius ) + { + ::Oyster::Math::Float cylinderXY = MomentOfInertia::CalculateCylinderXY( mass , height, radius ); + return MomentOfInertia( ::Oyster::Math::Quaternion::identity, + ::Oyster::Math::Float3(cylinderXY, cylinderXY, + MomentOfInertia::CalculateCylinderZ(mass, radius)) ); + } +} } + +#endif \ No newline at end of file diff --git a/Code/OysterPhysics3D/OysterPhysics3D.vcxproj b/Code/OysterPhysics3D/OysterPhysics3D.vcxproj index 186ea535..dffeca4f 100644 --- a/Code/OysterPhysics3D/OysterPhysics3D.vcxproj +++ b/Code/OysterPhysics3D/OysterPhysics3D.vcxproj @@ -155,6 +155,7 @@ + @@ -174,6 +175,7 @@ + diff --git a/Code/OysterPhysics3D/OysterPhysics3D.vcxproj.filters b/Code/OysterPhysics3D/OysterPhysics3D.vcxproj.filters index 02919d28..da336ce5 100644 --- a/Code/OysterPhysics3D/OysterPhysics3D.vcxproj.filters +++ b/Code/OysterPhysics3D/OysterPhysics3D.vcxproj.filters @@ -78,6 +78,9 @@ Header Files\Physics + + Header Files\Physics + @@ -125,5 +128,8 @@ Source Files\Physics + + Source Files\Physics + \ No newline at end of file From ff936133fc0849c1cac96a82b4b1bb31403e3bda Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Thu, 23 Jan 2014 19:13:02 +0100 Subject: [PATCH 07/24] Physics engine now using struct MomentOfInertia Some API impact for the other modules. * Desc. structs * State struct --- .../Implementation/SphericalRigidBody.cpp | 2 +- Code/GamePhysics/PhysicsStructs-Impl.h | 21 ++++---- Code/GamePhysics/PhysicsStructs.h | 13 ++--- Code/OysterPhysics3D/RigidBody.cpp | 48 ++++++++----------- Code/OysterPhysics3D/RigidBody.h | 32 +++++++------ 5 files changed, 55 insertions(+), 61 deletions(-) diff --git a/Code/GamePhysics/Implementation/SphericalRigidBody.cpp b/Code/GamePhysics/Implementation/SphericalRigidBody.cpp index 9fd8d219..bb497851 100644 --- a/Code/GamePhysics/Implementation/SphericalRigidBody.cpp +++ b/Code/GamePhysics/Implementation/SphericalRigidBody.cpp @@ -28,7 +28,7 @@ SphericalRigidBody::SphericalRigidBody( const API::SphericalBodyDescription &des this->rigid.centerPos = desc.centerPosition; this->rigid.boundingReach = Float4( desc.radius, desc.radius, desc.radius, 0.0f ); this->rigid.SetMass_KeepMomentum( desc.mass ); - this->rigid.SetMomentOfInertia_KeepMomentum( Formula::MomentOfInertia::CreateSphereMatrix( desc.mass, desc.radius ) ); + this->rigid.SetMomentOfInertia_KeepMomentum( MomentOfInertia::Sphere(desc.mass, desc.radius) ); this->deltaPos = Float4::null; this->deltaAxis = Float4::null; diff --git a/Code/GamePhysics/PhysicsStructs-Impl.h b/Code/GamePhysics/PhysicsStructs-Impl.h index 46de90cc..8918ab98 100644 --- a/Code/GamePhysics/PhysicsStructs-Impl.h +++ b/Code/GamePhysics/PhysicsStructs-Impl.h @@ -19,7 +19,7 @@ namespace Oyster this->restitutionCoeff = 1.0f; this->frictionCoeff_Dynamic = 0.5f; this->frictionCoeff_Static = 0.5f; - this->inertiaTensor = ::Oyster::Math::Float4x4::identity; + this->inertiaTensor = ::Oyster::Physics3D::MomentOfInertia(); this->subscription_onCollision = NULL; this->subscription_onCollisionResponse = NULL; this->subscription_onMovement = NULL; @@ -41,7 +41,7 @@ namespace Oyster this->ignoreGravity = false; } - inline CustomBodyState::CustomBodyState( ::Oyster::Math::Float mass, ::Oyster::Math::Float restitutionCoeff, ::Oyster::Math::Float staticFrictionCoeff, ::Oyster::Math::Float kineticFrictionCoeff, const ::Oyster::Math::Float4x4 &inertiaTensor, const ::Oyster::Math::Float4 &reach, const ::Oyster::Math::Float4 ¢erPos, const ::Oyster::Math::Float4 &rotation, const ::Oyster::Math::Float4 &linearMomentum, const ::Oyster::Math::Float4 &angularMomentum, const ::Oyster::Math::Float4 &gravityNormal ) + inline CustomBodyState::CustomBodyState( ::Oyster::Math::Float mass, ::Oyster::Math::Float restitutionCoeff, ::Oyster::Math::Float staticFrictionCoeff, ::Oyster::Math::Float kineticFrictionCoeff, const ::Oyster::Physics3D::MomentOfInertia &inertiaTensor, const ::Oyster::Math::Float4 &reach, const ::Oyster::Math::Float4 ¢erPos, const ::Oyster::Math::Float4 &rotation, const ::Oyster::Math::Float4 &linearMomentum, const ::Oyster::Math::Float4 &angularMomentum, const ::Oyster::Math::Float4 &gravityNormal ) { this->mass = mass; this->restitutionCoeff = restitutionCoeff; @@ -102,7 +102,7 @@ namespace Oyster return this->kineticFrictionCoeff; } - inline const ::Oyster::Math::Float4x4 & CustomBodyState::GetMomentOfInertia() const + inline const ::Oyster::Physics3D::MomentOfInertia & CustomBodyState::GetMomentOfInertia() const { return this->inertiaTensor; } @@ -219,20 +219,17 @@ namespace Oyster this->kineticFrictionCoeff = kineticU; } - inline void CustomBodyState::SetMomentOfInertia_KeepMomentum( const ::Oyster::Math::Float4x4 &tensor ) + inline void CustomBodyState::SetMomentOfInertia_KeepMomentum( const ::Oyster::Physics3D::MomentOfInertia &tensor ) { this->inertiaTensor = tensor; } - inline void CustomBodyState::SetMomentOfInertia_KeepVelocity( const ::Oyster::Math::Float4x4 &tensor ) + inline void CustomBodyState::SetMomentOfInertia_KeepVelocity( const ::Oyster::Physics3D::MomentOfInertia &tensor ) { - if( tensor.GetDeterminant() != 0.0f ) - { // sanity block! - ::Oyster::Math::Float4x4 rotation = ::Oyster::Math3D::RotationMatrix(this->angularAxis.xyz); - ::Oyster::Math::Float4 w = ::Oyster::Physics3D::Formula::AngularVelocity( (rotation * this->inertiaTensor).GetInverse(), this->angularMomentum ); - this->inertiaTensor = tensor; - this->angularMomentum = ::Oyster::Physics3D::Formula::AngularMomentum( rotation * tensor, w ); - } + ::Oyster::Math::Quaternion rotation = ::Oyster::Math3D::Rotation(this->angularAxis); + ::Oyster::Math::Float4 w = this->inertiaTensor.CalculateAngularVelocity( rotation, this->angularMomentum ); + this->inertiaTensor = tensor; + this->angularMomentum = this->inertiaTensor.CalculateAngularMomentum( rotation, w ); } inline void CustomBodyState::SetSize( const ::Oyster::Math::Float4 &size ) diff --git a/Code/GamePhysics/PhysicsStructs.h b/Code/GamePhysics/PhysicsStructs.h index 1bc1736f..4eaaf46d 100644 --- a/Code/GamePhysics/PhysicsStructs.h +++ b/Code/GamePhysics/PhysicsStructs.h @@ -3,6 +3,7 @@ #include "OysterMath.h" #include "PhysicsAPI.h" +#include "Inertia.h" namespace Oyster { namespace Physics { @@ -17,7 +18,7 @@ namespace Oyster { namespace Physics ::Oyster::Math::Float restitutionCoeff; ::Oyster::Math::Float frictionCoeff_Static; ::Oyster::Math::Float frictionCoeff_Dynamic; - ::Oyster::Math::Float4x4 inertiaTensor; + ::Oyster::Physics3D::MomentOfInertia inertiaTensor; ::Oyster::Physics::ICustomBody::EventAction_Collision subscription_onCollision; ::Oyster::Physics::ICustomBody::EventAction_CollisionResponse subscription_onCollisionResponse; ::Oyster::Physics::ICustomBody::EventAction_Move subscription_onMovement; @@ -50,7 +51,7 @@ namespace Oyster { namespace Physics ::Oyster::Math::Float restitutionCoeff = 1.0f, ::Oyster::Math::Float staticFrictionCoeff = 1.0f, ::Oyster::Math::Float kineticFrictionCoeff = 1.0f, - const ::Oyster::Math::Float4x4 &inertiaTensor = ::Oyster::Math::Float4x4::identity, + const ::Oyster::Physics3D::MomentOfInertia &inertiaTensor = ::Oyster::Physics3D::MomentOfInertia(), const ::Oyster::Math::Float4 &reach = ::Oyster::Math::Float4::null, const ::Oyster::Math::Float4 ¢erPos = ::Oyster::Math::Float4::standard_unit_w, const ::Oyster::Math::Float4 &rotation = ::Oyster::Math::Float4::null, @@ -64,7 +65,7 @@ namespace Oyster { namespace Physics const ::Oyster::Math::Float GetRestitutionCoeff() const; const ::Oyster::Math::Float GetFrictionCoeff_Static() const; const ::Oyster::Math::Float GetFrictionCoeff_Kinetic() const; - const ::Oyster::Math::Float4x4 & GetMomentOfInertia() const; + const ::Oyster::Physics3D::MomentOfInertia & GetMomentOfInertia() const; const ::Oyster::Math::Float4 & GetReach() const; ::Oyster::Math::Float4 GetSize() const; const ::Oyster::Math::Float4 & GetCenterPosition() const; @@ -87,8 +88,8 @@ namespace Oyster { namespace Physics void SetMass_KeepVelocity( ::Oyster::Math::Float m ); void SetRestitutionCoeff( ::Oyster::Math::Float e ); void SetFrictionCoeff( ::Oyster::Math::Float staticU, ::Oyster::Math::Float kineticU ); - void SetMomentOfInertia_KeepMomentum( const ::Oyster::Math::Float4x4 &tensor ); - void SetMomentOfInertia_KeepVelocity( const ::Oyster::Math::Float4x4 &tensor ); + void SetMomentOfInertia_KeepMomentum( const ::Oyster::Physics3D::MomentOfInertia &tensor ); + void SetMomentOfInertia_KeepVelocity( const ::Oyster::Physics3D::MomentOfInertia &tensor ); void SetSize( const ::Oyster::Math::Float4 &size ); void SetReach( const ::Oyster::Math::Float4 &halfSize ); void SetCenterPosition( const ::Oyster::Math::Float4 ¢erPos ); @@ -115,7 +116,7 @@ namespace Oyster { namespace Physics private: ::Oyster::Math::Float mass, restitutionCoeff, staticFrictionCoeff, kineticFrictionCoeff; - ::Oyster::Math::Float4x4 inertiaTensor; + ::Oyster::Physics3D::MomentOfInertia inertiaTensor; ::Oyster::Math::Float4 reach, centerPos, angularAxis; ::Oyster::Math::Float4 linearMomentum, angularMomentum; ::Oyster::Math::Float4 linearImpulse, angularImpulse; diff --git a/Code/OysterPhysics3D/RigidBody.cpp b/Code/OysterPhysics3D/RigidBody.cpp index 80c800a6..d4da0d00 100644 --- a/Code/OysterPhysics3D/RigidBody.cpp +++ b/Code/OysterPhysics3D/RigidBody.cpp @@ -23,7 +23,7 @@ RigidBody::RigidBody( ) this->frictionCoeff_Static = 0.5f; this->frictionCoeff_Kinetic = 1.0f; this->mass = 10; - this->momentOfInertiaTensor = Float4x4::identity; + this->momentOfInertiaTensor = MomentOfInertia(); this->rotation = Quaternion::identity; } @@ -51,17 +51,18 @@ void RigidBody::Update_LeapFrog( Float updateFrameLength ) // updating the linear // ds = dt * Formula::LinearVelocity( m, avg_G ) = dt * avg_G / m = (dt / m) * avg_G this->centerPos += ( updateFrameLength / this->mass ) * AverageWithDelta( this->momentum_Linear, this->impulse_Linear ); - + // updating the angular - Float4x4 rotationMatrix; ::Oyster::Math3D::RotationMatrix( this->rotation, rotationMatrix ); + //Float4x4 rotationMatrix; ::Oyster::Math3D::RotationMatrix( this->rotation, rotationMatrix ); // Important! The member data is all world data except the Inertia tensor. Thus a new InertiaTensor needs to be created to be compatible with the rest of the world data. - Float4x4 wMomentOfInertiaTensor = TransformMatrix( rotationMatrix, this->momentOfInertiaTensor ); // RI + //Float4x4 wMomentOfInertiaTensor = TransformMatrix( rotationMatrix, this->momentOfInertiaTensor ); // RI // dO = dt * Formula::AngularVelocity( (RI)^-1, avg_H ) = dt * (RI)^-1 * avg_H //! HACK: @todo Rotation temporary disabled //this->axis += Radian( Formula::AngularVelocity(wMomentOfInertiaTensor.GetInverse(), AverageWithDelta(this->momentum_Angular, this->impulse_Angular)) ); - //this->rotation = Rotation( this->axis ); + this->axis += this->momentOfInertiaTensor.CalculateAngularVelocity( this->rotation, AverageWithDelta(this->momentum_Angular, this->impulse_Angular) ); + this->rotation = Rotation( this->axis ); // update momentums and clear impulse_Linear and impulse_Angular this->momentum_Linear += this->impulse_Linear; @@ -78,11 +79,12 @@ void RigidBody::Predict_LeapFrog( Float4 &outDeltaPos, Float4 &outDeltaAxis, con outDeltaPos = ( deltaTime / this->mass ) * AverageWithDelta( this->momentum_Linear, actingLinearImpulse ); // updating the angular - Float4x4 rotationMatrix; ::Oyster::Math3D::RotationMatrix( this->rotation, rotationMatrix ); - Float4x4 wMomentOfInertiaTensor = TransformMatrix( rotationMatrix, this->momentOfInertiaTensor ); // RI + //Float4x4 rotationMatrix; ::Oyster::Math3D::RotationMatrix( this->rotation, rotationMatrix ); + //Float4x4 wMomentOfInertiaTensor = TransformMatrix( rotationMatrix, this->momentOfInertiaTensor ); // RI // dO = dt * Formula::AngularVelocity( (RI)^-1, avg_H ) = dt * (RI)^-1 * avg_H - outDeltaAxis = Formula::AngularVelocity( wMomentOfInertiaTensor.GetInverse(), AverageWithDelta(this->momentum_Angular, actingAngularImpulse) ); + //outDeltaAxis = Formula::AngularVelocity( wMomentOfInertiaTensor.GetInverse(), AverageWithDelta(this->momentum_Angular, actingAngularImpulse) ); + outDeltaAxis = this->momentOfInertiaTensor.CalculateAngularVelocity( this->rotation, AverageWithDelta(this->momentum_Angular, this->impulse_Angular) ); } void RigidBody::Move( const Float4 &deltaPos, const Float4 &deltaAxis ) @@ -106,7 +108,7 @@ void RigidBody::ApplyImpulse( const Float4 &worldJ, const Float4 &atWorldPos ) } } -const Float4x4 & RigidBody::GetMomentOfInertia() const +const MomentOfInertia & RigidBody::GetMomentOfInertia() const { // by Dan Andersson return this->momentOfInertiaTensor; } @@ -143,7 +145,7 @@ Float4 RigidBody::GetVelocity_Linear() const Float4 RigidBody::GetVelocity_Angular() const { // by Dan Andersson - return Formula::AngularVelocity( this->momentOfInertiaTensor.GetInverse(), this->momentum_Angular ); + return this->momentOfInertiaTensor.CalculateAngularVelocity( this->rotation, this->momentum_Angular ); } Float4 RigidBody::GetLinearMomentum( const Float4 &atWorldPos ) const @@ -151,24 +153,16 @@ Float4 RigidBody::GetLinearMomentum( const Float4 &atWorldPos ) const return this->momentum_Linear + Formula::TangentialLinearMomentum( this->momentum_Angular, atWorldPos - this->centerPos ); } -void RigidBody::SetMomentOfInertia_KeepVelocity( const Float4x4 &localTensorI ) +void RigidBody::SetMomentOfInertia_KeepVelocity( const MomentOfInertia &localTensorI ) { // by Dan Andersson - if( localTensorI.GetDeterminant() != 0.0f ) - { // insanity check! MomentOfInertiaTensor must be invertable - Float4x4 rotationMatrix; RotationMatrix( this->rotation, rotationMatrix ); - - Float4 w = Formula::AngularVelocity( (rotationMatrix * this->momentOfInertiaTensor).GetInverse(), this->momentum_Angular ); - this->momentOfInertiaTensor = localTensorI; - this->momentum_Angular = Formula::AngularMomentum( rotationMatrix * localTensorI, w ); - } + Float4 w = this->momentOfInertiaTensor.CalculateAngularVelocity( this->rotation, this->momentum_Angular ); + this->momentOfInertiaTensor = localTensorI; + this->momentum_Angular = this->momentOfInertiaTensor.CalculateAngularVelocity( this->rotation, w ); } -void RigidBody::SetMomentOfInertia_KeepMomentum( const Float4x4 &localTensorI ) +void RigidBody::SetMomentOfInertia_KeepMomentum( const MomentOfInertia &localTensorI ) { // by Dan Andersson - if( localTensorI.GetDeterminant() != 0.0f ) - { // insanity check! MomentOfInertiaTensor must be invertable - this->momentOfInertiaTensor = localTensorI; - } + this->momentOfInertiaTensor = localTensorI; } void RigidBody::SetMass_KeepVelocity( const Float &m ) @@ -217,13 +211,13 @@ void RigidBody::SetVelocity_Linear( const Float4 &worldV ) void RigidBody::SetVelocity_Linear( const Float4 &worldV, const Float4 &atWorldPos ) { // by Dan Andersson Float4 worldOffset = atWorldPos - this->centerPos; - this->momentum_Linear = Formula::LinearMomentum( this->mass, VectorProjection(worldV, worldOffset) ); - this->momentum_Angular = Formula::AngularMomentum( RotationMatrix(this->rotation) * this->momentOfInertiaTensor, Formula::AngularVelocity(worldV, worldOffset) ); + this->momentum_Linear = Formula::LinearMomentum( this->mass, VectorProjection(worldV, worldOffset) ); + this->momentum_Angular = this->momentOfInertiaTensor.CalculateAngularMomentum( this->rotation, Formula::AngularVelocity(worldV, worldOffset) ); } void RigidBody::SetVelocity_Angular( const Float4 &worldW ) { // by Dan Andersson - this->momentum_Angular = Formula::AngularMomentum( this->momentOfInertiaTensor, worldW ); + this->momentum_Angular = this->momentOfInertiaTensor.CalculateAngularMomentum( this->rotation, worldW ); } void RigidBody::SetImpulse_Linear( const Float4 &worldJ, const Float4 &atWorldPos ) diff --git a/Code/OysterPhysics3D/RigidBody.h b/Code/OysterPhysics3D/RigidBody.h index 51c5d2d8..ad619180 100644 --- a/Code/OysterPhysics3D/RigidBody.h +++ b/Code/OysterPhysics3D/RigidBody.h @@ -8,6 +8,7 @@ #include "OysterMath.h" #include "OysterCollision3D.h" #include "OysterPhysics3D.h" +#include "Inertia.h" namespace Oyster { namespace Physics3D { @@ -42,23 +43,23 @@ namespace Oyster { namespace Physics3D // GET METHODS //////////////////////////////// - const ::Oyster::Math::Float4x4 & GetMomentOfInertia() const; - ::Oyster::Math::Float GetMass() const; - const ::Oyster::Math::Quaternion & GetRotation() const; - ::Oyster::Math::Float4x4 GetRotationMatrix() const; - ::Oyster::Math::Float4x4 GetOrientation() const; - ::Oyster::Math::Float4x4 GetView() const; - ::Oyster::Math::Float4x4 GetToWorldMatrix() const; - ::Oyster::Math::Float4x4 GetToLocalMatrix() const; - ::Oyster::Math::Float4 GetSize() const; - ::Oyster::Math::Float4 GetVelocity_Linear() const; - ::Oyster::Math::Float4 GetVelocity_Angular() const; - ::Oyster::Math::Float4 GetLinearMomentum( const ::Oyster::Math::Float4 &atWorldPos ) const; + const ::Oyster::Physics3D::MomentOfInertia & GetMomentOfInertia() const; + ::Oyster::Math::Float GetMass() const; + const ::Oyster::Math::Quaternion & GetRotation() const; + ::Oyster::Math::Float4x4 GetRotationMatrix() const; + ::Oyster::Math::Float4x4 GetOrientation() const; + ::Oyster::Math::Float4x4 GetView() const; + ::Oyster::Math::Float4x4 GetToWorldMatrix() const; + ::Oyster::Math::Float4x4 GetToLocalMatrix() const; + ::Oyster::Math::Float4 GetSize() const; + ::Oyster::Math::Float4 GetVelocity_Linear() const; + ::Oyster::Math::Float4 GetVelocity_Angular() const; + ::Oyster::Math::Float4 GetLinearMomentum( const ::Oyster::Math::Float4 &atWorldPos ) const; // SET METHODS //////////////////////////////// - void SetMomentOfInertia_KeepVelocity( const ::Oyster::Math::Float4x4 &localTensorI ); - void SetMomentOfInertia_KeepMomentum( const ::Oyster::Math::Float4x4 &localTensorI ); + void SetMomentOfInertia_KeepVelocity( const ::Oyster::Physics3D::MomentOfInertia &localTensorI ); + void SetMomentOfInertia_KeepMomentum( const ::Oyster::Physics3D::MomentOfInertia &localTensorI ); void SetMass_KeepVelocity( const ::Oyster::Math::Float &m ); void SetMass_KeepMomentum( const ::Oyster::Math::Float &m ); @@ -78,7 +79,8 @@ namespace Oyster { namespace Physics3D private: ::Oyster::Math::Float mass; //!< m (kg) - ::Oyster::Math::Float4x4 momentOfInertiaTensor; //!< I (Nm*s) Tensor matrix ( only need to be 3x3 matrix, but is 4x4 for future hardware acceleration ) (localValue) + //::Oyster::Math::Float4x4 momentOfInertiaTensor; //!< I (Nm*s) Tensor matrix ( only need to be 3x3 matrix, but is 4x4 for future hardware acceleration ) (localValue) + ::Oyster::Physics3D::MomentOfInertia momentOfInertiaTensor; ::Oyster::Math::Quaternion rotation; //!< RotationAxis of the body. }; } } From 8f63bf637e1ff86dc77c3eba705c5e826741ac12 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Fri, 24 Jan 2014 15:03:03 +0100 Subject: [PATCH 08/24] Physics UMLET diagram Current state under sprint 3 --- Code/Dokumentation/Physics_Sprint3.uxf | 1025 ++++++++++++++++++++++++ 1 file changed, 1025 insertions(+) create mode 100644 Code/Dokumentation/Physics_Sprint3.uxf diff --git a/Code/Dokumentation/Physics_Sprint3.uxf b/Code/Dokumentation/Physics_Sprint3.uxf new file mode 100644 index 00000000..0462e35c --- /dev/null +++ b/Code/Dokumentation/Physics_Sprint3.uxf @@ -0,0 +1,1025 @@ + + + 7 + + + com.umlet.element.Class + + 357 + 609 + 252 + 406 + + Formula : <<namespace>> +<<extern>> +-- +LinearMomentum( .. ) : Vector +LinearVelocity( .. ) : Vector +AngularMomentum( .. ) : Vector +AngularVelocity( .. ) : Vector +TangientialLinearMomentum( .. ) : Vector +LinearKineticEnergy( .. ) : Float +AngularKineticEnergy( .. ) : Float +TangientialImpulseForce( .. ) : Vector +AngularImpulseAcceleration( .. ) : Vector +TangientialImpulseAcceleration( .. ) : Vector +TangientialLinearVelocity( .. ) : Vector +LinearImpulseAcceleration( .. ) : Vector +ImpulseForce( .. ) : Vector +ImpulseTorque( .. ) : Vector +Forcefield( .. ) : Float + + + + com.umlet.element.Class + + 364 + 819 + 238 + 189 + + MomentOfInertia : <<namespace>> +<<extern>> +-- +CalculateSphere( .. ) : Float +Sphere( .. ) : Matrix +CalculateHollowSphere( .. ) : Float +HollowSphere( .. ) : Matrix +CalculateCuboidX( .. ) : Float +CalculateCuboidY( .. ) : Float +CalculateCuboidZ( .. ) : Float +Cuboid( .. ) : Matrix +CalculateRodCenter( .. ) : Float +RodCenter( .. ) : Matrix +CalculateCylinderXY( .. ) : Float +CalculateCylinderZ( .. ) : Float +Cylinder( .. ) : Matrix + + + + com.umlet.element.Class + + 616 + 609 + 210 + 35 + + RigidBody : struct +-- +Update_LeapFrog( deltatime : Float ) : void + + + + com.umlet.element.Class + + 616 + 672 + 210 + 203 + + MomentOfInertia : struct +-- +CalculateAngularVelocity( .. ) : Vector +CalculateAngularMomentum( .. ) : Vector +-- +<<static>> CalculateSphere( .. ) : Float +<<static>> Sphere( .. ) : MomentOfInertia +<<static>> CalculateHollowSphere( .. ) : Float +<<static>> HollowSphere( .. ) : MomentOfInertia +<<static>> CalculateCuboidX( .. ) : Float +<<static>> CalculateCuboidY( .. ) : Float +<<static>> CalculateCuboidZ( .. ) : Float +<<static>> Cuboid( .. ) : MomentOfInertia +<<static>> CalculateRodCenter( .. ) : Float +<<static>> RodCenter( .. ) : MomentOfInertia +<<static>> CalculateCylinderXY( .. ) : Float +<<static>> CalculateCylinderZ( .. ) : Float +<<static>> Cylinder( .. ) : MomentOfInertia + + + + com.umlet.element.Class + + 728 + 938 + 98 + 21 + + FluidDrag : struct + + + + com.umlet.element.Class + + 728 + 966 + 98 + 21 + + Particle : struct + + + + com.umlet.element.Class + + 728 + 994 + 98 + 21 + + Spring : struct + + + + com.umlet.element.Relation + + 644 + 623 + 132 + 62 + + lt=<- +<<uses>> + 119;49;119;35;21;35;21;21 + + + com.umlet.element.Class + + 350 + 574 + 483 + 448 + + Physics3D : <<namespace>> +<<extern>> +bg=green +-- + + + + + + com.umlet.element.Class + + 560 + 511 + 161 + 49 + + Constant : <<namespace>> +<<extern>> +-- +gravity_constant : const Float + + + + + com.umlet.element.Class + + 224 + 476 + 329 + 84 + + Default : <<namespace>> +<<intern>> +-- +EventAction_Destruction : <<PhysicsAPI::EventAction_Destruction>> +EventAction_Collision : <<ICustomBody::EventAction_Collision>> +EventAction_CollisionResponse : <<ICustomBody::EventAction_Collision>> +EventAction_Move : <<ICustomBody::EventAction_Collision>> + + + + + com.umlet.element.Class + + 224 + 161 + 224 + 35 + + API : <<interface>> +-- +{innerclass + EventAction_Destruction : <<FunctionPointer>> +innerclass} + + + + com.umlet.element.Class + + 259 + 217 + 133 + 28 + + API_Impl : <<class>> +-- +<<uses>> OctTree : class + + + + com.umlet.element.Class + + 455 + 161 + 280 + 84 + + ICustomBody : <<interface>> + +{innerclass + SubscriptMessage : Enum +innerclass} + +{innerclass + EventAction_Collision : <<Subscription : SubscriptMessage>> +innerclass} + +{innerclass + EventAction_CollisionResponse : <<Subscription : void>> +innerclass} + +{innerclass + EventAction_Move : <<Subscription : void>> +innerclass} + + + + com.umlet.element.Class + + 259 + 252 + 175 + 35 + + SimpleRigidBody : <<class>> +-- +<<uses>> Physics3D::RigidBody : struct + + + + com.umlet.element.Class + + 259 + 294 + 175 + 35 + + SphericalRigidBody : <<class>> +-- +<<uses>> Physics3D::RigidBody : struct + + + + com.umlet.element.Class + + 21 + 364 + 196 + 196 + + Formula : <<namespace>> +<<intern>> +-- + + + + + com.umlet.element.Class + + 28 + 399 + 175 + 84 + + MomentOfInertia : <<namespace>> +<<intern>> +-- +CreateSphereMatrix( .. ) : Matrix +CreateHollowSphereMatrix( .. ) : Matrix +CreateCuboidMatrix( .. ) : Matrix +CreateCylinderMatrix( .. ) : Matrix +CreateRodMatrix( .. ) : Matrix + + + + com.umlet.element.Class + + 28 + 497 + 175 + 56 + + CollisionResponse : <<namespace>> +<<intern>> +-- +Bounce( .. ) : Float +Friction( .. ) : Vector + + + + com.umlet.element.Relation + + 294 + 175 + 34 + 55 + + lt=<<. + 21;21;21;42 + + + com.umlet.element.Relation + + 413 + 224 + 90 + 55 + + lt=<<. + 77;21;77;42;21;42 + + + com.umlet.element.Class + + 525 + 350 + 203 + 42 + + OctTree : <<class>> +-- +<<uses>> Collision3D::Sphere : struct +<<uses>> Collision3D::BoxAxisAligned : struct + + + + com.umlet.element.Relation + + 546 + 224 + 118 + 139 + + lt=<- +m2= <<uses>> + 105;21;105;112;28;112;28;126 + + + com.umlet.element.Relation + + 413 + 245 + 90 + 69 + + lt=. + 77;21;77;56;21;56 + + + com.umlet.element.Class + + 21 + 161 + 182 + 196 + + Struct : <<namespace>> +<<extern>> +-- + + + + + com.umlet.element.Class + + 28 + 301 + 168 + 14 + + SimpleBodyDescription : struct + + + + com.umlet.element.Class + + 28 + 329 + 168 + 14 + + SimpleSphericalDescription : struct + + + + com.umlet.element.Class + + 28 + 273 + 168 + 14 + + CustomBodyState : struct + + + + com.umlet.element.Class + + 28 + 189 + 168 + 63 + + Gravity : struct +{innerclass + GravityWell +innerclass} +{innerclass + GravityDirected +innerclass} +{innerclass + GravityDirectedField +innerclass} + + + + com.umlet.element.Relation + + 182 + 189 + 90 + 49 + + lt=<- +<<uses>> + 21;35;77;35 + + + com.umlet.element.Relation + + 182 + 203 + 90 + 83 + + lt=<- + 21;70;42;70;42;21;77;21 + + + com.umlet.element.Relation + + 371 + 189 + 97 + 49 + + lt=<- +<<uses>> + 84;35;21;35 + + + com.umlet.element.Relation + + 182 + 266 + 90 + 49 + + lt=<- +<<uses>> + 21;35;77;35 + + + com.umlet.element.Relation + + 182 + 280 + 90 + 62 + + lt=<- + 21;49;42;49;42;21;77;21 + + + com.umlet.element.Relation + + 231 + 238 + 41 + 76 + + lt=- + 28;21;21;21;21;63 + + + com.umlet.element.Class + + 14 + 126 + 728 + 441 + + Physics : <<namespace>> +<<extern>> +bg=green +-- + + + + + + com.umlet.element.Class + + 0 + 91 + 847 + 945 + + Oyster : <<namespace>> +<<extern>> +bg=orange +-- + + + + + + + com.umlet.element.Class + + 175 + 637 + 126 + 21 + + Box : class + + + + com.umlet.element.Class + + 175 + 609 + 126 + 21 + + ICollideAble : <<interface>> + + + + com.umlet.element.Class + + 175 + 665 + 126 + 21 + + AxisAlignedBox : class + + + + com.umlet.element.Class + + 175 + 693 + 126 + 21 + + Point : class + + + + com.umlet.element.Class + + 175 + 721 + 126 + 21 + + Sphere : class + + + + com.umlet.element.Class + + 175 + 861 + 126 + 21 + + Frustrum : class + + + + com.umlet.element.Class + + 175 + 749 + 126 + 21 + + Ray : class + + + + com.umlet.element.Class + + 175 + 791 + 126 + 21 + + Line : class + + + + com.umlet.element.Class + + 175 + 819 + 126 + 21 + + Plane : class + + + + com.umlet.element.Class + + 175 + 889 + 126 + 21 + + Universe : class + + + + com.umlet.element.Class + + 21 + 609 + 126 + 70 + + Utility : <<namespace>> +<<extern>> +-- +Compare( .. ) : void +Intersect( .. ) : bool +Contain( .. ) : bool + + + + com.umlet.element.Relation + + 280 + 595 + 55 + 321 + + lt=<<. + 21;21;42;21;42;308;21;308 + + + com.umlet.element.Relation + + 280 + 812 + 55 + 34 + + lt=. + 42;21;21;21 + + + com.umlet.element.Relation + + 280 + 784 + 55 + 34 + + lt=. + 42;21;21;21 + + + com.umlet.element.Relation + + 280 + 742 + 55 + 34 + + lt=. + 42;21;21;21 + + + com.umlet.element.Relation + + 280 + 854 + 55 + 34 + + lt=. + 42;21;21;21 + + + com.umlet.element.Relation + + 280 + 714 + 55 + 34 + + lt=. + 42;21;21;21 + + + com.umlet.element.Relation + + 280 + 686 + 55 + 34 + + lt=. + 42;21;21;21 + + + com.umlet.element.Relation + + 280 + 658 + 55 + 34 + + lt=. + 42;21;21;21 + + + com.umlet.element.Relation + + 280 + 630 + 55 + 34 + + lt=. + 42;21;21;21 + + + com.umlet.element.Relation + + 196 + 749 + 83 + 55 + + lt=<- +<<uses>> + 21;21;21;35;70;35;70;42 + + + com.umlet.element.Relation + + 35 + 658 + 153 + 84 + + lt=<- + <<uses>> + 49;21;49;70;140;70 + + + com.umlet.element.Relation + + 133 + 595 + 55 + 286 + + lt=- + 42;21;21;21;21;273;42;273 + + + com.umlet.element.Relation + + 196 + 819 + 83 + 55 + + lt=<- +<<uses>> + 21;21;21;35;70;35;70;42 + + + com.umlet.element.Relation + + 133 + 805 + 55 + 34 + + lt=- + 42;21;21;21 + + + com.umlet.element.Relation + + 133 + 735 + 55 + 34 + + lt=- + 42;21;21;21 + + + com.umlet.element.Relation + + 133 + 679 + 55 + 34 + + lt=- + 42;21;21;21 + + + com.umlet.element.Relation + + 133 + 651 + 55 + 34 + + lt=- + 42;21;21;21 + + + com.umlet.element.Relation + + 133 + 623 + 55 + 34 + + lt=- + 42;21;21;21 + + + com.umlet.element.Class + + 14 + 574 + 329 + 343 + + Collision3D : <<namespace>> +<<extern>> +bg=green +-- + + + + + + com.umlet.element.Class + + 938 + 168 + 98 + 28 + + OysterPhysics3D +<<lib>> +bg=green + + + + com.umlet.element.Class + + 896 + 266 + 42 + 21 + + Misc +bg=green + + + + com.umlet.element.Class + + 952 + 266 + 70 + 21 + + OysterMath +bg=green + + + + com.umlet.element.Relation + + 896 + 189 + 34 + 90 + + lt=()) + 21;77;21;21 + + + com.umlet.element.Relation + + 966 + 189 + 34 + 90 + + lt=()) + 21;77;21;21 + + + com.umlet.element.Class + + 896 + 119 + 161 + 28 + + GamePhysics +<<dll>> +bg=green + + + + com.umlet.element.Relation + + 896 + 126 + 48 + 97 + + lt=- + 35;84;21;84;21;21 + + + com.umlet.element.Class + + 889 + 91 + 175 + 133 + + Project Dependencies +-- +bg=blue + + + + com.umlet.element.Relation + + 910 + 175 + 90 + 48 + + lt=- + 21;35;77;35;77;21 + + + com.umlet.element.Relation + + 1036 + 112 + 111 + 34 + + lt=<() +r1=provide + 98;21;21;21 + + + com.umlet.element.Relation + + 1015 + 161 + 132 + 34 + + lt=<() +r1=provide + 119;21;21;21 + + + From 2da3dd29fcd8a8b4c80edbb3747b0077e9b3fe85 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Fri, 24 Jan 2014 16:32:54 +0100 Subject: [PATCH 09/24] InterpolateOrientation_UsingNonRigidNlerp --- Code/OysterMath/LinearMath.h | 10 ++++++++++ Code/OysterMath/OysterMath.h | 1 + 2 files changed, 11 insertions(+) diff --git a/Code/OysterMath/LinearMath.h b/Code/OysterMath/LinearMath.h index d32ea04f..51feacda 100644 --- a/Code/OysterMath/LinearMath.h +++ b/Code/OysterMath/LinearMath.h @@ -756,6 +756,16 @@ namespace LinearAlgebra3D return rotation; // return no change return SnapAxisYToNormal_UsingNlerp( rotation, interpolated ); } + + template + ::LinearAlgebra::Matrix4x4 & InterpolateOrientation_UsingNonRigidNlerp( const ::LinearAlgebra::Matrix4x4 &start, const ::LinearAlgebra::Matrix4x4 &end, ScalarType t, ::LinearAlgebra::Matrix4x4 &targetMem ) + { + targetMem.v[0] = ::LinearAlgebra::Nlerp( start.v[0], end.v[0], t ); + targetMem.v[1] = ::LinearAlgebra::Nlerp( start.v[1], end.v[1], t ); + targetMem.v[2] = ::LinearAlgebra::Nlerp( start.v[2], end.v[2], t ); + targetMem.v[3] = ::LinearAlgebra::Lerp( start.v[3], end.v[3], t ); + return targetMem; + } } #include "Utilities.h" diff --git a/Code/OysterMath/OysterMath.h b/Code/OysterMath/OysterMath.h index 3770bf02..225705ca 100644 --- a/Code/OysterMath/OysterMath.h +++ b/Code/OysterMath/OysterMath.h @@ -343,6 +343,7 @@ namespace Oyster { namespace Math3D //! Oyster's native math library specialized using ::LinearAlgebra3D::SnapAxisYToNormal_UsingNlerp; using ::LinearAlgebra3D::InterpolateAxisYToNormal_UsingNlerp; + using ::LinearAlgebra3D::InterpolateOrientation_UsingNonRigidNlerp; } } #endif \ No newline at end of file From b4eb3eb25d87a8479ee457e0eeb5ef75adc26eaf Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Fri, 24 Jan 2014 17:39:09 +0100 Subject: [PATCH 10/24] Slerp Quaternion Slerp --- Code/OysterMath/LinearMath.h | 25 +++++++++++++++++++++++++ Code/OysterMath/OysterMath.h | 6 ++++++ 2 files changed, 31 insertions(+) diff --git a/Code/OysterMath/LinearMath.h b/Code/OysterMath/LinearMath.h index 51feacda..ae299ed9 100644 --- a/Code/OysterMath/LinearMath.h +++ b/Code/OysterMath/LinearMath.h @@ -204,6 +204,19 @@ namespace LinearAlgebra } return output; // error: returning nullvector } + + /******************************************************************** + * Spherical Linear Interpolation on Quaternions + ********************************************************************/ + template + inline Quaternion Slerp( const Quaternion &start, const Quaternion &end, const ScalarType &t ) + { + ScalarType angle = (ScalarType)::std::acos( Vector4(start.imaginary, start.real).Dot(Vector4(end.imaginary, end.real)) ); + Quaternion result = start * (ScalarType)::std::sin( angle * (1 - t) ); + result += end * (ScalarType)::std::sin( angle * t ); + result *= (ScalarType)1.0f / (ScalarType)::std::sin( angle ); + return result; + } } namespace LinearAlgebra2D @@ -766,6 +779,18 @@ namespace LinearAlgebra3D targetMem.v[3] = ::LinearAlgebra::Lerp( start.v[3], end.v[3], t ); return targetMem; } + + template + ::LinearAlgebra::Matrix4x4 & InterpolateOrientation_UsingNonRigidNlerp( const ::LinearAlgebra::Quaternion &startR, const ::LinearAlgebra::Vector3 &startT, const ::LinearAlgebra::Quaternion &endR, const ::LinearAlgebra::Vector3 &endT, ScalarType t, ::LinearAlgebra::Matrix4x4 &targetMem ) + { + return InterpolateOrientation_UsingNonRigidNlerp( OrientationMatrix(startR, startT), OrientationMatrix(endR, endT), t, targetMem ); + } + + template + ::LinearAlgebra::Matrix4x4 & InterpolateOrientation_UsingSlerp( const ::LinearAlgebra::Quaternion &startR, const ::LinearAlgebra::Vector3 &startT, const ::LinearAlgebra::Quaternion &endR, const ::LinearAlgebra::Vector3 &endT, ScalarType t, ::LinearAlgebra::Matrix4x4 &targetMem ) + { + return OrientationMatrix( ::LinearAlgebra::Slerp(startR, endR, t), ::LinearAlgebra::Lerp(::LinearAlgebra::Vector4(startT, (ScalarType)1.0f), ::LinearAlgebra::Vector4(endT, (ScalarType)1.0f), t).xyz, targetMem ); + } } #include "Utilities.h" diff --git a/Code/OysterMath/OysterMath.h b/Code/OysterMath/OysterMath.h index 225705ca..559ba0d3 100644 --- a/Code/OysterMath/OysterMath.h +++ b/Code/OysterMath/OysterMath.h @@ -57,6 +57,11 @@ namespace Oyster { namespace Math //! Oyster's native math library * @return nullvector if Lerp( start, end, t ) is nullvector. ********************************************************************/ using ::LinearAlgebra::Nlerp; + + /******************************************************************** + * Spherical Linear Interpolation on Quaternions + ********************************************************************/ + using ::LinearAlgebra::Slerp; } } inline ::Oyster::Math::Float2 & operator *= ( ::Oyster::Math::Float2 &left, const ::Oyster::Math::Float2 &right ) @@ -344,6 +349,7 @@ namespace Oyster { namespace Math3D //! Oyster's native math library specialized using ::LinearAlgebra3D::SnapAxisYToNormal_UsingNlerp; using ::LinearAlgebra3D::InterpolateAxisYToNormal_UsingNlerp; using ::LinearAlgebra3D::InterpolateOrientation_UsingNonRigidNlerp; + using ::LinearAlgebra3D::InterpolateOrientation_UsingSlerp; } } #endif \ No newline at end of file From 30054a8c23b26a8124f905b8d729732626b22496 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Fri, 24 Jan 2014 17:48:49 +0100 Subject: [PATCH 11/24] Slerp compile fix --- Code/OysterMath/LinearMath.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Code/OysterMath/LinearMath.h b/Code/OysterMath/LinearMath.h index ae299ed9..4d8b4efd 100644 --- a/Code/OysterMath/LinearMath.h +++ b/Code/OysterMath/LinearMath.h @@ -211,7 +211,7 @@ namespace LinearAlgebra template inline Quaternion Slerp( const Quaternion &start, const Quaternion &end, const ScalarType &t ) { - ScalarType angle = (ScalarType)::std::acos( Vector4(start.imaginary, start.real).Dot(Vector4(end.imaginary, end.real)) ); + ScalarType angle = (ScalarType)::std::acos( Vector4(start.imaginary, start.real).Dot(Vector4(end.imaginary, end.real)) ); Quaternion result = start * (ScalarType)::std::sin( angle * (1 - t) ); result += end * (ScalarType)::std::sin( angle * t ); result *= (ScalarType)1.0f / (ScalarType)::std::sin( angle ); From 87793b3926a2877bec3fa28bcd787e04f1e147de Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Mon, 27 Jan 2014 15:04:48 +0100 Subject: [PATCH 12/24] Added documentation Timestep Impulse fix treatise / proposition --- .../Other/Timestep_Impulse_Fix.odt | Bin 0 -> 69508 bytes .../Other/Timestep_Impulse_Fix.pdf | Bin 0 -> 123976 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Code/Dokumentation/Other/Timestep_Impulse_Fix.odt create mode 100644 Code/Dokumentation/Other/Timestep_Impulse_Fix.pdf diff --git a/Code/Dokumentation/Other/Timestep_Impulse_Fix.odt b/Code/Dokumentation/Other/Timestep_Impulse_Fix.odt new file mode 100644 index 0000000000000000000000000000000000000000..25ac526e38e7cf2ec810df86c0d02cc34b0075c2 GIT binary patch literal 69508 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%0D}`~B0H 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 literal 0 HcmV?d00001 diff --git a/Code/Dokumentation/Other/Timestep_Impulse_Fix.pdf b/Code/Dokumentation/Other/Timestep_Impulse_Fix.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8ee3faeab7ba99ea6cca47a7bdd96d5413671a31 GIT binary patch literal 123976 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�RjorcdT6;QM@D`PB*JvznM~b+`_hdBlgdk#`ua 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 literal 0 HcmV?d00001 From cbdce81b201570d2a4b4cdbad0a1f0520137bbdd Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Tue, 28 Jan 2014 08:54:20 +0100 Subject: [PATCH 13/24] Inactivated code Matrix to Angular Axis --- Code/OysterMath/LinearMath.h | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/Code/OysterMath/LinearMath.h b/Code/OysterMath/LinearMath.h index 4d8b4efd..947f1d0f 100644 --- a/Code/OysterMath/LinearMath.h +++ b/Code/OysterMath/LinearMath.h @@ -325,23 +325,24 @@ namespace LinearAlgebra2D namespace LinearAlgebra3D { - template - inline ::LinearAlgebra::Vector4 AngularAxis( const ::LinearAlgebra::Matrix3x3 &rotationMatrix ) - { - return ::std::asin( ::LinearAlgebra::Vector4(rotationMatrix.v[1].z, rotationMatrix.v[2].x, rotationMatrix.v[0].y, 1) ); - } + // All Matrix to AngularAxis conversions here is incorrect + //template + //inline ::LinearAlgebra::Vector4 AngularAxis( const ::LinearAlgebra::Matrix3x3 &rotationMatrix ) + //{ + // return ::std::asin( ::LinearAlgebra::Vector4(rotationMatrix.v[1].z, rotationMatrix.v[2].x, rotationMatrix.v[0].y, 1) ); + //} - template - inline ::LinearAlgebra::Vector4 AngularAxis( const ::LinearAlgebra::Matrix4x4 &rotationMatrix ) - { - return ::std::asin( ::LinearAlgebra::Vector4(rotationMatrix.v[1].z, rotationMatrix.v[2].x, rotationMatrix.v[0].y, 1) ); - } + //template + //inline ::LinearAlgebra::Vector4 AngularAxis( const ::LinearAlgebra::Matrix4x4 &rotationMatrix ) + //{ + // return ::std::asin( ::LinearAlgebra::Vector4(rotationMatrix.v[1].z, rotationMatrix.v[2].x, rotationMatrix.v[0].y, 1) ); + //} - template - inline ::LinearAlgebra::Vector4 ExtractAngularAxis( const ::LinearAlgebra::Matrix4x4 &orientationMatrix ) - { - return ::std::asin( ::LinearAlgebra::Vector4(orientationMatrix.v[1].z, orientationMatrix.v[2].x, orientationMatrix.v[0].y, 0) ); - } + //template + //inline ::LinearAlgebra::Vector4 ExtractAngularAxis( const ::LinearAlgebra::Matrix4x4 &orientationMatrix ) + //{ + // return ::std::asin( ::LinearAlgebra::Vector4(orientationMatrix.v[1].z, orientationMatrix.v[2].x, orientationMatrix.v[0].y, 0) ); + //} template inline ::LinearAlgebra::Matrix4x4 & TranslationMatrix( const ::LinearAlgebra::Vector3 &position, ::LinearAlgebra::Matrix4x4 &targetMem = ::LinearAlgebra::Matrix4x4() ) From 4e4aaf881a902a1fc91e63eca5ba485b34dc062b Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Tue, 28 Jan 2014 08:56:29 +0100 Subject: [PATCH 14/24] Inactivated code part 2 Matrix to angularAxis conversions in OysterMath --- Code/OysterMath/OysterMath.cpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Code/OysterMath/OysterMath.cpp b/Code/OysterMath/OysterMath.cpp index f44de9fd..bbaccf11 100644 --- a/Code/OysterMath/OysterMath.cpp +++ b/Code/OysterMath/OysterMath.cpp @@ -81,20 +81,20 @@ namespace Oyster { namespace Math2D namespace Oyster { namespace Math3D { - Float4 AngularAxis( const Float3x3 &rotationMatrix ) - { - return ::LinearAlgebra3D::AngularAxis( rotationMatrix ); - } + //Float4 AngularAxis( const Float3x3 &rotationMatrix ) + //{ + // return ::LinearAlgebra3D::AngularAxis( rotationMatrix ); + //} - Float4 AngularAxis( const Float4x4 &rotationMatrix ) - { - return ::LinearAlgebra3D::AngularAxis( rotationMatrix ); - } + //Float4 AngularAxis( const Float4x4 &rotationMatrix ) + //{ + // return ::LinearAlgebra3D::AngularAxis( rotationMatrix ); + //} - Float4 ExtractAngularAxis( const Float4x4 &orientationMatrix ) - { - return ::LinearAlgebra3D::ExtractAngularAxis( orientationMatrix ); - } + //Float4 ExtractAngularAxis( const Float4x4 &orientationMatrix ) + //{ + // return ::LinearAlgebra3D::ExtractAngularAxis( orientationMatrix ); + //} Float4x4 & TranslationMatrix( const Float3 &position, Float4x4 &targetMem ) { From 4d6cfaf0462fddb45d393ca016d31c1af92c9cca Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Tue, 28 Jan 2014 08:57:14 +0100 Subject: [PATCH 15/24] ... part 3 -_- --- Code/OysterMath/OysterMath.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Code/OysterMath/OysterMath.h b/Code/OysterMath/OysterMath.h index 559ba0d3..62438e47 100644 --- a/Code/OysterMath/OysterMath.h +++ b/Code/OysterMath/OysterMath.h @@ -167,13 +167,13 @@ namespace Oyster { namespace Math3D //! Oyster's native math library specialized using namespace ::Oyster::Math; // deliberate inheritance from ::Oyster::Math namespace //! Extracts the angularAxis from rotationMatrix - Float4 AngularAxis( const Float3x3 &rotationMatrix ); + //Float4 AngularAxis( const Float3x3 &rotationMatrix ); - //! Extracts the angularAxis from rotationMatrix - Float4 AngularAxis( const Float4x4 &rotationMatrix ); + ////! Extracts the angularAxis from rotationMatrix + //Float4 AngularAxis( const Float4x4 &rotationMatrix ); - //! Extracts the angularAxis from orientationMatrix - Float4 ExtractAngularAxis( const Float4x4 &orientationMatrix ); + ////! Extracts the angularAxis from orientationMatrix + //Float4 ExtractAngularAxis( const Float4x4 &orientationMatrix ); //! Sets and returns targetMem to a translationMatrix with position as translation. Float4x4 & TranslationMatrix( const Float3 &position, Float4x4 &targetMem = Float4x4() ); From 5bf92757a510c789a6b03ea50e6529e4d85afeed Mon Sep 17 00:00:00 2001 From: Robin Engman Date: Tue, 28 Jan 2014 09:01:35 +0100 Subject: [PATCH 16/24] State struct fixed since last inactivation. --- Code/GamePhysics/PhysicsStructs-Impl.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Code/GamePhysics/PhysicsStructs-Impl.h b/Code/GamePhysics/PhysicsStructs-Impl.h index 46de90cc..b6168900 100644 --- a/Code/GamePhysics/PhysicsStructs-Impl.h +++ b/Code/GamePhysics/PhysicsStructs-Impl.h @@ -259,7 +259,7 @@ namespace Oyster this->isSpatiallyAltered = this->isDisturbed = true; } - inline void CustomBodyState::SetRotation( const ::Oyster::Math::Float4x4 &rotation ) + /*inline void CustomBodyState::SetRotation( const ::Oyster::Math::Float4x4 &rotation ) { this->SetRotation( ::Oyster::Math3D::AngularAxis(rotation) ); } @@ -268,7 +268,7 @@ namespace Oyster { this->SetRotation( ::Oyster::Math3D::ExtractAngularAxis(orientation) ); this->SetCenterPosition( orientation.v[3] ); - } + }*/ inline void CustomBodyState::SetLinearMomentum( const ::Oyster::Math::Float4 &g ) { From 6be72da03aeaf8ff54c3fc6a68f9b88e13b0217a Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Tue, 28 Jan 2014 09:23:58 +0100 Subject: [PATCH 17/24] OysterPhysics3D updated * changed Float4 in header API to Float3 * removed all Set...( Float4x4 ) methods --- Code/OysterPhysics3D/Inertia.cpp | 16 +++---- Code/OysterPhysics3D/Inertia.h | 8 ++-- Code/OysterPhysics3D/RigidBody.cpp | 62 ++++++++++++------------- Code/OysterPhysics3D/RigidBody.h | 46 +++++++++--------- Code/OysterPhysics3D/RigidBody_Inline.h | 29 ++++++------ 5 files changed, 80 insertions(+), 81 deletions(-) diff --git a/Code/OysterPhysics3D/Inertia.cpp b/Code/OysterPhysics3D/Inertia.cpp index 69df0e01..2e0e436b 100644 --- a/Code/OysterPhysics3D/Inertia.cpp +++ b/Code/OysterPhysics3D/Inertia.cpp @@ -26,26 +26,26 @@ MomentOfInertia & MomentOfInertia::operator = ( const MomentOfInertia &i ) return *this; } -Float4 MomentOfInertia::CalculateAngularVelocity( const Quaternion &externR, const Float4 &h ) const +Float3 MomentOfInertia::CalculateAngularVelocity( const Quaternion &externR, const Float3 &h ) const { - return this->CalculateAngularVelocity( externR, h, Float4() ); + return this->CalculateAngularVelocity( externR, h, Float3() ); } -Float4 & MomentOfInertia::CalculateAngularVelocity( const Quaternion &externR, const Float4 &h, Float4 &targetMem ) const +Float3 & MomentOfInertia::CalculateAngularVelocity( const Quaternion &externR, const Float3 &h, Float3 &targetMem ) const { // w = (R * I_R) * I_M^-1 * (R * I_R)^-1 * h Float4x4 rotation = RotationMatrix( externR ) * RotationMatrix( this->rotation ); - Float4 w = rotation.GetInverse() * h; + Float4 w = rotation.GetInverse() * Float4( h, 0.0f ); return targetMem = rotation * w.PiecewiseMultiplicationAdd( Float4(1.0f / this->magnitude.x, 1.0f / this->magnitude.y, 1.0f / this->magnitude.z, 0.0f) ); } -Float4 MomentOfInertia::CalculateAngularMomentum( const Quaternion &externR, const Float4 &w ) const +Float3 MomentOfInertia::CalculateAngularMomentum( const Quaternion &externR, const Float3 &w ) const { - return this->CalculateAngularMomentum( externR, w, Float4() ); + return this->CalculateAngularMomentum( externR, w, Float3() ); } -Float4 & MomentOfInertia::CalculateAngularMomentum( const Quaternion &externR, const Float4 &w, Float4 &targetMem ) const +Float3 & MomentOfInertia::CalculateAngularMomentum( const Quaternion &externR, const Float3 &w, Float3 &targetMem ) const { // h = (R * I_R) * I_M * (R * I_R)^-1 * w Float4x4 rotation = RotationMatrix( externR ) * RotationMatrix( this->rotation ); - Float4 h = rotation.GetInverse() * w; + Float4 h = rotation.GetInverse() * Float4( w, 0.0f ); return targetMem = rotation * h.PiecewiseMultiplicationAdd( Float4(this->magnitude.x, this->magnitude.y, this->magnitude.z, 0.0f) ); } \ No newline at end of file diff --git a/Code/OysterPhysics3D/Inertia.h b/Code/OysterPhysics3D/Inertia.h index c7ffc49f..502074a6 100644 --- a/Code/OysterPhysics3D/Inertia.h +++ b/Code/OysterPhysics3D/Inertia.h @@ -19,11 +19,11 @@ namespace Oyster { namespace Physics3D MomentOfInertia & operator = ( const MomentOfInertia &i ); - ::Oyster::Math::Float4 CalculateAngularVelocity( const ::Oyster::Math::Quaternion &externR, const ::Oyster::Math::Float4 &angularMomentum ) const; - ::Oyster::Math::Float4 & CalculateAngularVelocity( const ::Oyster::Math::Quaternion &externR, const ::Oyster::Math::Float4 &angularMomentum, ::Oyster::Math::Float4 &targetMem ) const; + ::Oyster::Math::Float3 CalculateAngularVelocity( const ::Oyster::Math::Quaternion &externR, const ::Oyster::Math::Float3 &angularMomentum ) const; + ::Oyster::Math::Float3 & CalculateAngularVelocity( const ::Oyster::Math::Quaternion &externR, const ::Oyster::Math::Float3 &angularMomentum, ::Oyster::Math::Float3 &targetMem ) const; - ::Oyster::Math::Float4 CalculateAngularMomentum( const ::Oyster::Math::Quaternion &externR, const ::Oyster::Math::Float4 &angularVelocity ) const; - ::Oyster::Math::Float4 & CalculateAngularMomentum( const ::Oyster::Math::Quaternion &externR, const ::Oyster::Math::Float4 &angularVelocity, ::Oyster::Math::Float4 &targetMem ) const; + ::Oyster::Math::Float3 CalculateAngularMomentum( const ::Oyster::Math::Quaternion &externR, const ::Oyster::Math::Float3 &angularVelocity ) const; + ::Oyster::Math::Float3 & CalculateAngularMomentum( const ::Oyster::Math::Quaternion &externR, const ::Oyster::Math::Float3 &angularVelocity, ::Oyster::Math::Float3 &targetMem ) const; static ::Oyster::Math::Float CalculateSphere( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float radius ); static ::Oyster::Math::Float CalculateHollowSphere( const ::Oyster::Math::Float mass, const ::Oyster::Math::Float radius ); diff --git a/Code/OysterPhysics3D/RigidBody.cpp b/Code/OysterPhysics3D/RigidBody.cpp index d4da0d00..8e5f5f2b 100644 --- a/Code/OysterPhysics3D/RigidBody.cpp +++ b/Code/OysterPhysics3D/RigidBody.cpp @@ -72,7 +72,7 @@ void RigidBody::Update_LeapFrog( Float updateFrameLength ) this->impulse_Angular = Float4::null; } -void RigidBody::Predict_LeapFrog( Float4 &outDeltaPos, Float4 &outDeltaAxis, const Float4 &actingLinearImpulse, const Float4 &actingAngularImpulse, Float deltaTime ) +void RigidBody::Predict_LeapFrog( Float3 &outDeltaPos, Float3 &outDeltaAxis, const Float3 &actingLinearImpulse, const Float3 &actingAngularImpulse, Float deltaTime ) { // updating the linear // ds = dt * Formula::LinearVelocity( m, avg_G ) = dt * avg_G / m = (dt / m) * avg_G @@ -87,17 +87,17 @@ void RigidBody::Predict_LeapFrog( Float4 &outDeltaPos, Float4 &outDeltaAxis, con outDeltaAxis = this->momentOfInertiaTensor.CalculateAngularVelocity( this->rotation, AverageWithDelta(this->momentum_Angular, this->impulse_Angular) ); } -void RigidBody::Move( const Float4 &deltaPos, const Float4 &deltaAxis ) +void RigidBody::Move( const Float3 &deltaPos, const Float3 &deltaAxis ) { this->centerPos += deltaPos; this->axis += deltaAxis; this->rotation = Rotation( this->axis ); } -void RigidBody::ApplyImpulse( const Float4 &worldJ, const Float4 &atWorldPos ) +void RigidBody::ApplyImpulse( const Float3 &worldJ, const Float3 &atWorldPos ) { // by Dan Andersson - Float4 worldOffset = atWorldPos - this->centerPos; - if( worldOffset != Float4::null ) + Float3 worldOffset = atWorldPos - this->centerPos; + if( worldOffset != Float3::null ) { this->impulse_Linear += VectorProjection( worldJ, atWorldPos ); this->impulse_Angular += Formula::ImpulseTorque( worldJ, atWorldPos ); @@ -118,7 +118,7 @@ Float RigidBody::GetMass() const return this->mass; } -const Quaternion & RigidBody::GetRotation() const +const Quaternion & RigidBody::GetRotationQuaternion() const { // by Dan Andersson return this->rotation; } @@ -138,24 +138,24 @@ Float4x4 RigidBody::GetView() const return ViewMatrix( this->rotation, this->centerPos ); } -Float4 RigidBody::GetVelocity_Linear() const +Float3 RigidBody::GetVelocity_Linear() const { // by Dan Andersson return Formula::LinearVelocity( this->mass, this->momentum_Linear ); } -Float4 RigidBody::GetVelocity_Angular() const +Float3 RigidBody::GetVelocity_Angular() const { // by Dan Andersson return this->momentOfInertiaTensor.CalculateAngularVelocity( this->rotation, this->momentum_Angular ); } -Float4 RigidBody::GetLinearMomentum( const Float4 &atWorldPos ) const +Float3 RigidBody::GetLinearMomentum( const Float3 &atWorldPos ) const { // by Dan Andersson return this->momentum_Linear + Formula::TangentialLinearMomentum( this->momentum_Angular, atWorldPos - this->centerPos ); } void RigidBody::SetMomentOfInertia_KeepVelocity( const MomentOfInertia &localTensorI ) { // by Dan Andersson - Float4 w = this->momentOfInertiaTensor.CalculateAngularVelocity( this->rotation, this->momentum_Angular ); + Float3 w = this->momentOfInertiaTensor.CalculateAngularVelocity( this->rotation, this->momentum_Angular ); this->momentOfInertiaTensor = localTensorI; this->momentum_Angular = this->momentOfInertiaTensor.CalculateAngularVelocity( this->rotation, w ); } @@ -169,7 +169,7 @@ void RigidBody::SetMass_KeepVelocity( const Float &m ) { // by Dan Andersson if( m != 0.0f ) { // insanity check! Mass must be invertable - Float4 v = Formula::LinearVelocity( this->mass, this->momentum_Linear ); + Float3 v = Formula::LinearVelocity( this->mass, this->momentum_Linear ); this->mass = m; this->momentum_Linear = Formula::LinearMomentum( this->mass, v ); } @@ -183,46 +183,46 @@ void RigidBody::SetMass_KeepMomentum( const Float &m ) } } -void RigidBody::SetOrientation( const Float4x4 &o ) -{ // by Dan Andersson - this->axis = ExtractAngularAxis( o ); - this->rotation = Rotation( this->axis ); - this->centerPos = o.v[3].xyz; -} +//void RigidBody::SetOrientation( const Float4x4 &o ) +//{ // by Dan Andersson +// this->axis = ExtractAngularAxis( o ); +// this->rotation = Rotation( this->axis ); +// this->centerPos = o.v[3].xyz; +//} +// +//void RigidBody::SetRotation( const Float4x4 &r ) +//{ // by Dan Andersson +// this->axis = ExtractAngularAxis( r ); +// this->rotation = Rotation( this->axis ); +//} -void RigidBody::SetRotation( const Float4x4 &r ) +void RigidBody::SetMomentum_Linear( const Float3 &worldG, const Float3 &atWorldPos ) { // by Dan Andersson - this->axis = ExtractAngularAxis( r ); - this->rotation = Rotation( this->axis ); -} - -void RigidBody::SetMomentum_Linear( const Float4 &worldG, const Float4 &atWorldPos ) -{ // by Dan Andersson - Float4 worldOffset = atWorldPos - this->centerPos; + Float3 worldOffset = atWorldPos - this->centerPos; this->momentum_Linear = VectorProjection( worldG, worldOffset ); this->momentum_Angular = Formula::AngularMomentum( worldG, worldOffset ); } -void RigidBody::SetVelocity_Linear( const Float4 &worldV ) +void RigidBody::SetVelocity_Linear( const Float3 &worldV ) { // by Dan Andersson this->momentum_Linear = Formula::LinearMomentum( this->mass, worldV ); } -void RigidBody::SetVelocity_Linear( const Float4 &worldV, const Float4 &atWorldPos ) +void RigidBody::SetVelocity_Linear( const Float3 &worldV, const Float3 &atWorldPos ) { // by Dan Andersson - Float4 worldOffset = atWorldPos - this->centerPos; + Float3 worldOffset = atWorldPos - this->centerPos; this->momentum_Linear = Formula::LinearMomentum( this->mass, VectorProjection(worldV, worldOffset) ); this->momentum_Angular = this->momentOfInertiaTensor.CalculateAngularMomentum( this->rotation, Formula::AngularVelocity(worldV, worldOffset) ); } -void RigidBody::SetVelocity_Angular( const Float4 &worldW ) +void RigidBody::SetVelocity_Angular( const Float3 &worldW ) { // by Dan Andersson this->momentum_Angular = this->momentOfInertiaTensor.CalculateAngularMomentum( this->rotation, worldW ); } -void RigidBody::SetImpulse_Linear( const Float4 &worldJ, const Float4 &atWorldPos ) +void RigidBody::SetImpulse_Linear( const Float3 &worldJ, const Float3 &atWorldPos ) { // by Dan Andersson - Float4 worldOffset = atWorldPos - this->centerPos; + Float3 worldOffset = atWorldPos - this->centerPos; this->impulse_Linear = VectorProjection( worldJ, worldOffset ); this->impulse_Angular = Formula::ImpulseTorque( worldJ, worldOffset ); } \ No newline at end of file diff --git a/Code/OysterPhysics3D/RigidBody.h b/Code/OysterPhysics3D/RigidBody.h index ad619180..c666662a 100644 --- a/Code/OysterPhysics3D/RigidBody.h +++ b/Code/OysterPhysics3D/RigidBody.h @@ -15,7 +15,7 @@ namespace Oyster { namespace Physics3D struct RigidBody { //! A struct of a simple rigid body. public: - ::Oyster::Math::Float4 centerPos, //!< Location of the body's center in the world. + ::Oyster::Math::Float3 centerPos, //!< Location of the body's center in the world. axis, //!< Euler rotationAxis of the body. boundingReach, //!< momentum_Linear, //!< The linear momentum G (kg*m/s). @@ -32,29 +32,29 @@ namespace Oyster { namespace Physics3D RigidBody & operator = ( const RigidBody &body ); void Update_LeapFrog( ::Oyster::Math::Float updateFrameLength ); - void Predict_LeapFrog( ::Oyster::Math::Float4 &outDeltaPos, ::Oyster::Math::Float4 &outDeltaAxis, const ::Oyster::Math::Float4 &actingLinearImpulse, const ::Oyster::Math::Float4 &actingAngularImpulse, ::Oyster::Math::Float deltaTime ); + void Predict_LeapFrog( ::Oyster::Math::Float3 &outDeltaPos, ::Oyster::Math::Float3 &outDeltaAxis, const ::Oyster::Math::Float3 &actingLinearImpulse, const ::Oyster::Math::Float3 &actingAngularImpulse, ::Oyster::Math::Float deltaTime ); - void Move( const ::Oyster::Math::Float4 &deltaPos, const ::Oyster::Math::Float4 &deltaAxis ); - void ApplyImpulse( const ::Oyster::Math::Float4 &worldJ, const ::Oyster::Math::Float4 &atWorldPos ); - void ApplyImpulse_Linear( const ::Oyster::Math::Float4 &worldJ ); - void ApplyImpulse_Angular( const ::Oyster::Math::Float4 &worldJ ); - void ApplyForce( const ::Oyster::Math::Float4 &worldF, ::Oyster::Math::Float updateFrameLength ); - void ApplyForce( const ::Oyster::Math::Float4 &worldF, ::Oyster::Math::Float updateFrameLength, const ::Oyster::Math::Float4 &atWorldPos ); + void Move( const ::Oyster::Math::Float3 &deltaPos, const ::Oyster::Math::Float3 &deltaAxis ); + void ApplyImpulse( const ::Oyster::Math::Float3 &worldJ, const ::Oyster::Math::Float3 &atWorldPos ); + void ApplyImpulse_Linear( const ::Oyster::Math::Float3 &worldJ ); + void ApplyImpulse_Angular( const ::Oyster::Math::Float3 &worldJ ); + void ApplyForce( const ::Oyster::Math::Float3 &worldF, ::Oyster::Math::Float updateFrameLength ); + void ApplyForce( const ::Oyster::Math::Float3 &worldF, ::Oyster::Math::Float updateFrameLength, const ::Oyster::Math::Float3 &atWorldPos ); // GET METHODS //////////////////////////////// const ::Oyster::Physics3D::MomentOfInertia & GetMomentOfInertia() const; ::Oyster::Math::Float GetMass() const; - const ::Oyster::Math::Quaternion & GetRotation() const; + const ::Oyster::Math::Quaternion & GetRotationQuaternion() const; ::Oyster::Math::Float4x4 GetRotationMatrix() const; ::Oyster::Math::Float4x4 GetOrientation() const; ::Oyster::Math::Float4x4 GetView() const; ::Oyster::Math::Float4x4 GetToWorldMatrix() const; ::Oyster::Math::Float4x4 GetToLocalMatrix() const; - ::Oyster::Math::Float4 GetSize() const; - ::Oyster::Math::Float4 GetVelocity_Linear() const; - ::Oyster::Math::Float4 GetVelocity_Angular() const; - ::Oyster::Math::Float4 GetLinearMomentum( const ::Oyster::Math::Float4 &atWorldPos ) const; + ::Oyster::Math::Float3 GetSize() const; + ::Oyster::Math::Float3 GetVelocity_Linear() const; + ::Oyster::Math::Float3 GetVelocity_Angular() const; + ::Oyster::Math::Float3 GetLinearMomentum( const ::Oyster::Math::Float3 &atWorldPos ) const; // SET METHODS //////////////////////////////// @@ -63,19 +63,19 @@ namespace Oyster { namespace Physics3D void SetMass_KeepVelocity( const ::Oyster::Math::Float &m ); void SetMass_KeepMomentum( const ::Oyster::Math::Float &m ); - void SetOrientation( const ::Oyster::Math::Float4x4 &o ); - void SetRotation( const ::Oyster::Math::Float4x4 &r ); - void SetSize( const ::Oyster::Math::Float4 &widthHeight ); + //void SetOrientation( const ::Oyster::Math::Float4x4 &o ); + //void SetRotation( const ::Oyster::Math::Float4x4 &r ); + void SetSize( const ::Oyster::Math::Float3 &widthHeight ); - void SetMomentum_Linear( const ::Oyster::Math::Float4 &worldG, const ::Oyster::Math::Float4 &atWorldPos ); + void SetMomentum_Linear( const ::Oyster::Math::Float3 &worldG, const ::Oyster::Math::Float3 &atWorldPos ); - void SetVelocity_Linear( const ::Oyster::Math::Float4 &worldV ); - void SetVelocity_Linear( const ::Oyster::Math::Float4 &worldV, const ::Oyster::Math::Float4 &atWorldPos ); - void SetVelocity_Angular( const ::Oyster::Math::Float4 &worldW ); + void SetVelocity_Linear( const ::Oyster::Math::Float3 &worldV ); + void SetVelocity_Linear( const ::Oyster::Math::Float3 &worldV, const ::Oyster::Math::Float3 &atWorldPos ); + void SetVelocity_Angular( const ::Oyster::Math::Float3 &worldW ); - void SetImpulse_Linear( const ::Oyster::Math::Float4 &worldJ, const ::Oyster::Math::Float4 &atWorldPos ); - void SetForce( const ::Oyster::Math::Float4 &worldF, ::Oyster::Math::Float updateFrameLength ); - void SetForce( const ::Oyster::Math::Float4 &worldF, ::Oyster::Math::Float updateFrameLength, const ::Oyster::Math::Float4 &atWorldPos ); + void SetImpulse_Linear( const ::Oyster::Math::Float3 &worldJ, const ::Oyster::Math::Float3 &atWorldPos ); + //void SetForce( const ::Oyster::Math::Float3 &worldF, ::Oyster::Math::Float updateFrameLength ); + //void SetForce( const ::Oyster::Math::Float3 &worldF, ::Oyster::Math::Float updateFrameLength, const ::Oyster::Math::Float3 &atWorldPos ); private: ::Oyster::Math::Float mass; //!< m (kg) diff --git a/Code/OysterPhysics3D/RigidBody_Inline.h b/Code/OysterPhysics3D/RigidBody_Inline.h index 980442dd..795ec5e4 100644 --- a/Code/OysterPhysics3D/RigidBody_Inline.h +++ b/Code/OysterPhysics3D/RigidBody_Inline.h @@ -10,22 +10,22 @@ namespace Oyster { namespace Physics3D { - inline void RigidBody::ApplyImpulse_Linear( const ::Oyster::Math::Float4 &worldJ ) + inline void RigidBody::ApplyImpulse_Linear( const ::Oyster::Math::Float3 &worldJ ) { this->impulse_Linear += worldJ; } - inline void RigidBody::ApplyImpulse_Angular( const ::Oyster::Math::Float4 &worldJ ) + inline void RigidBody::ApplyImpulse_Angular( const ::Oyster::Math::Float3 &worldJ ) { this->impulse_Angular += worldJ; } - inline void RigidBody::ApplyForce( const ::Oyster::Math::Float4 &worldF, ::Oyster::Math::Float updateFrameLength ) + inline void RigidBody::ApplyForce( const ::Oyster::Math::Float3 &worldF, ::Oyster::Math::Float updateFrameLength ) { this->impulse_Linear += worldF * updateFrameLength; } - inline void RigidBody::ApplyForce( const ::Oyster::Math::Float4 &worldF, ::Oyster::Math::Float updateFrameLength, const ::Oyster::Math::Float4 &atWorldPos ) + inline void RigidBody::ApplyForce( const ::Oyster::Math::Float3 &worldF, ::Oyster::Math::Float updateFrameLength, const ::Oyster::Math::Float3 &atWorldPos ) { this->ApplyImpulse( worldF * updateFrameLength, atWorldPos ); } @@ -40,26 +40,25 @@ namespace Oyster { namespace Physics3D return this->GetView(); } - inline ::Oyster::Math::Float4 RigidBody::GetSize() const + inline ::Oyster::Math::Float3 RigidBody::GetSize() const { return 2.0f * this->boundingReach; } - inline void RigidBody::SetSize( const ::Oyster::Math::Float4 &widthHeight ) + inline void RigidBody::SetSize( const ::Oyster::Math::Float3 &widthHeight ) { this->boundingReach = ::Utility::Value::Abs( 0.5f * widthHeight ); } - inline void RigidBody::SetForce( const ::Oyster::Math::Float4 &worldF, ::Oyster::Math::Float updateFrameLength ) - { - this->impulse_Linear = worldF * updateFrameLength; - } - - inline void RigidBody::SetForce( const ::Oyster::Math::Float4 &worldF, ::Oyster::Math::Float updateFrameLength, const ::Oyster::Math::Float4 &atWorldPos ) - { - this->SetImpulse_Linear( worldF * updateFrameLength, atWorldPos ); - } + //inline void RigidBody::SetForce( const ::Oyster::Math::Float3 &worldF, ::Oyster::Math::Float updateFrameLength ) + //{ + // this->impulse_Linear = worldF * updateFrameLength; + //} + //inline void RigidBody::SetForce( const ::Oyster::Math::Float3 &worldF, ::Oyster::Math::Float updateFrameLength, const ::Oyster::Math::Float3 &atWorldPos ) + //{ + // this->SetImpulse_Linear( worldF * updateFrameLength, atWorldPos ); + //} } } #endif \ No newline at end of file From 5d1e05cc4e4f5749c846213190d9518cd551f77a Mon Sep 17 00:00:00 2001 From: Robin Engman Date: Tue, 28 Jan 2014 09:24:51 +0100 Subject: [PATCH 18/24] Added new function to set orientation. --- Code/GamePhysics/PhysicsStructs-Impl.h | 9 +++++++++ Code/GamePhysics/PhysicsStructs.h | 5 +++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Code/GamePhysics/PhysicsStructs-Impl.h b/Code/GamePhysics/PhysicsStructs-Impl.h index 7e1e8c46..3fd430ff 100644 --- a/Code/GamePhysics/PhysicsStructs-Impl.h +++ b/Code/GamePhysics/PhysicsStructs-Impl.h @@ -256,6 +256,13 @@ namespace Oyster this->isSpatiallyAltered = this->isDisturbed = true; } + inline void CustomBodyState::SetOrientation( const ::Oyster::Math::Float3 &angularAxis, const ::Oyster::Math::Float3 &translation ) + { + this->angularAxis.xyz = angularAxis ; + this->centerPos.xyz = translation; + this->isSpatiallyAltered = this->isDisturbed = true; + } + /*inline void CustomBodyState::SetRotation( const ::Oyster::Math::Float4x4 &rotation ) { this->SetRotation( ::Oyster::Math3D::AngularAxis(rotation) ); @@ -267,6 +274,8 @@ namespace Oyster this->SetCenterPosition( orientation.v[3] ); }*/ + + inline void CustomBodyState::SetLinearMomentum( const ::Oyster::Math::Float4 &g ) { this->linearMomentum.xyz = g; diff --git a/Code/GamePhysics/PhysicsStructs.h b/Code/GamePhysics/PhysicsStructs.h index 4eaaf46d..00b382c5 100644 --- a/Code/GamePhysics/PhysicsStructs.h +++ b/Code/GamePhysics/PhysicsStructs.h @@ -94,8 +94,9 @@ namespace Oyster { namespace Physics void SetReach( const ::Oyster::Math::Float4 &halfSize ); void SetCenterPosition( const ::Oyster::Math::Float4 ¢erPos ); void SetRotation( const ::Oyster::Math::Float4 &angularAxis ); - void SetRotation( const ::Oyster::Math::Float4x4 &rotation ); - void SetOrientation( const ::Oyster::Math::Float4x4 &orientation ); + //void SetRotation( const ::Oyster::Math::Float4x4 &rotation ); + //void SetOrientation( const ::Oyster::Math::Float4x4 &orientation ); + void SetOrientation( const ::Oyster::Math::Float3 &angularAxis, const ::Oyster::Math::Float3 &translation ); void SetLinearMomentum( const ::Oyster::Math::Float4 &g ); void SetAngularMomentum( const ::Oyster::Math::Float4 &h ); void SetLinearImpulse( const ::Oyster::Math::Float4 &j ); From f96c5a9f7eb5350968792860470150dbf4bbae7c Mon Sep 17 00:00:00 2001 From: Robin Engman Date: Tue, 28 Jan 2014 09:52:58 +0100 Subject: [PATCH 19/24] Changed float4 to float3 --- .../Implementation/PhysicsAPI_Impl.cpp | 16 +-- .../Implementation/SimpleRigidBody.cpp | 12 +- .../Implementation/SphericalRigidBody.cpp | 12 +- Code/GamePhysics/PhysicsStructs-Impl.h | 106 +++++++++--------- Code/GamePhysics/PhysicsStructs.h | 86 +++++++------- 5 files changed, 116 insertions(+), 116 deletions(-) diff --git a/Code/GamePhysics/Implementation/PhysicsAPI_Impl.cpp b/Code/GamePhysics/Implementation/PhysicsAPI_Impl.cpp index bfef1a61..d3650f66 100644 --- a/Code/GamePhysics/Implementation/PhysicsAPI_Impl.cpp +++ b/Code/GamePhysics/Implementation/PhysicsAPI_Impl.cpp @@ -31,8 +31,8 @@ namespace ICustomBody::State protoState; proto->GetState( protoState ); ICustomBody::State deuterState; deuter->GetState( deuterState ); - Float4 protoG = protoState.GetLinearMomentum( worldPointOfContact ), - deuterG = deuterState.GetLinearMomentum( worldPointOfContact ); + Float4 protoG = protoState.GetLinearMomentum( worldPointOfContact.xyz ), + deuterG = deuterState.GetLinearMomentum( worldPointOfContact.xyz ); // calc from perspective of deuter Float4 normal; deuter->GetNormalAt( worldPointOfContact, normal ); @@ -40,7 +40,7 @@ namespace deuterG_Magnitude = deuterG.Dot( normal ); // if they are not relatively moving towards eachother, there is no collision - Float deltaPos = normal.Dot( deuterState.GetCenterPosition() - protoState.GetCenterPosition() ); + Float deltaPos = normal.Dot( Float4(deuterState.GetCenterPosition(), 1) - Float4(protoState.GetCenterPosition(), 1) ); if( deltaPos < 0.0f ) { if( protoG_Magnitude >= deuterG_Magnitude ) @@ -95,13 +95,13 @@ namespace // } - Float kineticEnergyPBefore = Oyster::Physics3D::Formula::LinearKineticEnergy( protoState.GetMass(), protoState.GetLinearMomentum().xyz/protoState.GetMass() ); + Float kineticEnergyPBefore = Oyster::Physics3D::Formula::LinearKineticEnergy( protoState.GetMass(), protoState.GetLinearMomentum()/protoState.GetMass() ); // protoState.ApplyForwarding( forwardedDeltaPos, forwardedDeltaAxis ); - protoState.ApplyImpulse( bounce, worldPointOfContact, normal ); + protoState.ApplyImpulse( bounce.xyz, worldPointOfContact.xyz, normal.xyz ); proto->SetState( protoState ); - Float kineticEnergyPAFter = Oyster::Physics3D::Formula::LinearKineticEnergy( protoState.GetMass(), (protoState.GetLinearMomentum().xyz + protoState.GetLinearImpulse().xyz)/protoState.GetMass() ); + Float kineticEnergyPAFter = Oyster::Physics3D::Formula::LinearKineticEnergy( protoState.GetMass(), (protoState.GetLinearMomentum() + protoState.GetLinearImpulse())/protoState.GetMass() ); proto->CallSubscription_CollisionResponse( deuter, kineticEnergyPBefore - kineticEnergyPAFter ); @@ -179,7 +179,7 @@ void API_Impl::Update() { case Gravity::GravityType_Well: { - Float4 d = Float4( this->gravity[i].well.position, 1.0f ) - state.GetCenterPosition(); + Float4 d = Float4( this->gravity[i].well.position, 1.0f ) - Float4( state.GetCenterPosition(), 1.0f ); Float rSquared = d.Dot( d ); if( rSquared != 0.0 ) { @@ -201,7 +201,7 @@ void API_Impl::Update() if( gravityImpulse != Float4::null ) { - state.ApplyLinearImpulse( gravityImpulse ); + state.ApplyLinearImpulse( gravityImpulse.xyz ); (*proto)->SetGravityNormal( gravityImpulse.GetNormalized().xyz ); (*proto)->SetState( state ); } diff --git a/Code/GamePhysics/Implementation/SimpleRigidBody.cpp b/Code/GamePhysics/Implementation/SimpleRigidBody.cpp index 5a9bf53f..2f6a6c0c 100644 --- a/Code/GamePhysics/Implementation/SimpleRigidBody.cpp +++ b/Code/GamePhysics/Implementation/SimpleRigidBody.cpp @@ -56,7 +56,7 @@ SimpleRigidBody::SimpleRigidBody() SimpleRigidBody::SimpleRigidBody( const API::SimpleBodyDescription &desc ) { - this->rigid.SetRotation( desc.rotation ); + //this->rigid.SetRotation( desc.rotation ); this->rigid.centerPos = desc.centerPosition; this->rigid.SetSize( desc.size ); this->rigid.SetMass_KeepMomentum( desc.mass ); @@ -143,8 +143,8 @@ void SimpleRigidBody::SetState( const SimpleRigidBody::State &state ) if( state.IsForwarded() ) { - this->deltaPos += state.GetForward_DeltaPos(); - this->deltaAxis += state.GetForward_DeltaAxis(); + this->deltaPos += Float4(state.GetForward_DeltaPos(), 0); + this->deltaAxis += Float4(state.GetForward_DeltaAxis(), 0); this->isForwarded; } @@ -205,7 +205,7 @@ Sphere & SimpleRigidBody::GetBoundingSphere( Sphere &targetMem ) const Float4 & SimpleRigidBody::GetNormalAt( const Float4 &worldPos, Float4 &targetMem ) const { - Float4 offset = worldPos - this->rigid.centerPos; + Float4 offset = worldPos.xyz - this->rigid.centerPos; Float distance = offset.Dot( offset ); Float3 normal = Float3::null; @@ -295,7 +295,7 @@ UpdateState SimpleRigidBody::Update( Float timeStepLength ) { if( this->isForwarded ) { - this->rigid.Move( this->deltaPos, this->deltaAxis ); + this->rigid.Move( this->deltaPos.xyz, this->deltaAxis.xyz ); this->deltaPos = Float4::null; this->deltaAxis = Float4::null; this->isForwarded = false; @@ -310,7 +310,7 @@ UpdateState SimpleRigidBody::Update( Float timeStepLength ) void SimpleRigidBody::Predict( Float4 &outDeltaPos, Float4 &outDeltaAxis, const Float4 &actingLinearImpulse, const Float4 &actingAngularImpulse, Float deltaTime ) { - this->rigid.Predict_LeapFrog( outDeltaPos, outDeltaAxis, actingLinearImpulse, actingAngularImpulse, deltaTime ); + this->rigid.Predict_LeapFrog( outDeltaPos.xyz, outDeltaAxis.xyz, actingLinearImpulse.xyz, actingAngularImpulse.xyz, deltaTime ); } void SimpleRigidBody::SetScene( void *scene ) diff --git a/Code/GamePhysics/Implementation/SphericalRigidBody.cpp b/Code/GamePhysics/Implementation/SphericalRigidBody.cpp index bb497851..a164cbe1 100644 --- a/Code/GamePhysics/Implementation/SphericalRigidBody.cpp +++ b/Code/GamePhysics/Implementation/SphericalRigidBody.cpp @@ -24,7 +24,7 @@ SphericalRigidBody::SphericalRigidBody() SphericalRigidBody::SphericalRigidBody( const API::SphericalBodyDescription &desc ) { this->rigid = RigidBody(); - this->rigid.SetRotation( desc.rotation ); + //this->rigid.SetRotation( desc.rotation ); this->rigid.centerPos = desc.centerPosition; this->rigid.boundingReach = Float4( desc.radius, desc.radius, desc.radius, 0.0f ); this->rigid.SetMass_KeepMomentum( desc.mass ); @@ -108,8 +108,8 @@ void SphericalRigidBody::SetState( const SphericalRigidBody::State &state ) if( state.IsForwarded() ) { - this->deltaPos += state.GetForward_DeltaPos(); - this->deltaAxis += state.GetForward_DeltaAxis(); + this->deltaPos += Float4(state.GetForward_DeltaPos(), 0); + this->deltaAxis += Float4(state.GetForward_DeltaAxis()); this->isForwarded = false; } @@ -171,7 +171,7 @@ Sphere & SphericalRigidBody::GetBoundingSphere( Sphere &targetMem ) const Float4 & SphericalRigidBody::GetNormalAt( const Float4 &worldPos, Float4 &targetMem ) const { - targetMem = worldPos - this->rigid.centerPos; + targetMem = worldPos.xyz - this->rigid.centerPos; Float magnitude = targetMem.GetMagnitude(); if( magnitude != 0.0f ) { // sanity check @@ -220,7 +220,7 @@ UpdateState SphericalRigidBody::Update( Float timeStepLength ) { if( this->isForwarded ) { - this->rigid.Move( this->deltaPos, this->deltaAxis ); + this->rigid.Move( this->deltaPos.xyz, this->deltaAxis.xyz ); this->deltaPos = Float4::null; this->deltaAxis = Float4::null; this->isForwarded = false; @@ -235,7 +235,7 @@ UpdateState SphericalRigidBody::Update( Float timeStepLength ) void SphericalRigidBody::Predict( ::Oyster::Math::Float4 &outDeltaPos, ::Oyster::Math::Float4 &outDeltaAxis, const ::Oyster::Math::Float4 &actingLinearImpulse, const ::Oyster::Math::Float4 &actingAngularImpulse, ::Oyster::Math::Float deltaTime ) { - this->rigid.Predict_LeapFrog( outDeltaPos, outDeltaAxis, actingLinearImpulse, actingAngularImpulse, deltaTime ); + this->rigid.Predict_LeapFrog( outDeltaPos.xyz, outDeltaAxis.xyz, actingLinearImpulse.xyz, actingAngularImpulse.xyz, deltaTime ); } void SphericalRigidBody::SetSubscription( ICustomBody::EventAction_Collision functionPointer ) diff --git a/Code/GamePhysics/PhysicsStructs-Impl.h b/Code/GamePhysics/PhysicsStructs-Impl.h index 3fd430ff..fa5533fa 100644 --- a/Code/GamePhysics/PhysicsStructs-Impl.h +++ b/Code/GamePhysics/PhysicsStructs-Impl.h @@ -13,8 +13,8 @@ namespace Oyster inline SimpleBodyDescription::SimpleBodyDescription() { this->rotation = ::Oyster::Math::Float4x4::identity; - this->centerPosition = ::Oyster::Math::Float4::standard_unit_w; - this->size = ::Oyster::Math::Float4( 1.0f ); + this->centerPosition = ::Oyster::Math::Float3::null; + this->size = ::Oyster::Math::Float3( 1.0f ); this->mass = 12.0f; this->restitutionCoeff = 1.0f; this->frictionCoeff_Dynamic = 0.5f; @@ -29,7 +29,7 @@ namespace Oyster inline SphericalBodyDescription::SphericalBodyDescription() { this->rotation = ::Oyster::Math::Float4x4::identity; - this->centerPosition = ::Oyster::Math::Float4::standard_unit_w; + this->centerPosition = ::Oyster::Math::Float3::null; this->radius = 0.5f; this->mass = 10.0f; this->restitutionCoeff = 1.0f; @@ -41,7 +41,7 @@ namespace Oyster this->ignoreGravity = false; } - inline CustomBodyState::CustomBodyState( ::Oyster::Math::Float mass, ::Oyster::Math::Float restitutionCoeff, ::Oyster::Math::Float staticFrictionCoeff, ::Oyster::Math::Float kineticFrictionCoeff, const ::Oyster::Physics3D::MomentOfInertia &inertiaTensor, const ::Oyster::Math::Float4 &reach, const ::Oyster::Math::Float4 ¢erPos, const ::Oyster::Math::Float4 &rotation, const ::Oyster::Math::Float4 &linearMomentum, const ::Oyster::Math::Float4 &angularMomentum, const ::Oyster::Math::Float4 &gravityNormal ) + inline CustomBodyState::CustomBodyState( ::Oyster::Math::Float mass, ::Oyster::Math::Float restitutionCoeff, ::Oyster::Math::Float staticFrictionCoeff, ::Oyster::Math::Float kineticFrictionCoeff, const ::Oyster::Physics3D::MomentOfInertia &inertiaTensor, const ::Oyster::Math::Float3 &reach, const ::Oyster::Math::Float3 ¢erPos, const ::Oyster::Math::Float3 &rotation, const ::Oyster::Math::Float3 &linearMomentum, const ::Oyster::Math::Float3 &angularMomentum, const ::Oyster::Math::Float3 &gravityNormal ) { this->mass = mass; this->restitutionCoeff = restitutionCoeff; @@ -53,8 +53,8 @@ namespace Oyster this->angularAxis = rotation; this->linearMomentum = linearMomentum; this->angularMomentum = angularMomentum; - this->linearImpulse = this->angularImpulse = ::Oyster::Math::Float4::null; - this->deltaPos = this->deltaAxis = ::Oyster::Math::Float4::null; + this->linearImpulse = this->angularImpulse = ::Oyster::Math::Float3::null; + this->deltaPos = this->deltaAxis = ::Oyster::Math::Float3::null; this->isSpatiallyAltered = this->isDisturbed = this->isForwarded = false; this->gravityNormal = gravityNormal; } @@ -107,87 +107,87 @@ namespace Oyster return this->inertiaTensor; } - inline const ::Oyster::Math::Float4 & CustomBodyState::GetReach() const + inline const ::Oyster::Math::Float3 & CustomBodyState::GetReach() const { return this->reach; } - inline ::Oyster::Math::Float4 CustomBodyState::GetSize() const + inline ::Oyster::Math::Float3 CustomBodyState::GetSize() const { return 2.0f * this->GetReach(); } - inline const ::Oyster::Math::Float4 & CustomBodyState::GetCenterPosition() const + inline const ::Oyster::Math::Float3 & CustomBodyState::GetCenterPosition() const { return this->centerPos; } - inline const ::Oyster::Math::Float4 & CustomBodyState::GetAngularAxis() const + inline const ::Oyster::Math::Float3 & CustomBodyState::GetAngularAxis() const { return this->angularAxis; } inline ::Oyster::Math::Float4x4 CustomBodyState::GetRotation() const { - return ::Oyster::Math3D::RotationMatrix( this->GetAngularAxis().xyz ); + return ::Oyster::Math3D::RotationMatrix( this->GetAngularAxis() ); } inline ::Oyster::Math::Float4x4 CustomBodyState::GetOrientation() const { - return ::Oyster::Math3D::OrientationMatrix( this->angularAxis.xyz, this->centerPos.xyz ); + return ::Oyster::Math3D::OrientationMatrix( this->angularAxis, this->centerPos ); } - inline ::Oyster::Math::Float4x4 CustomBodyState::GetOrientation( const ::Oyster::Math::Float4 &offset ) const + inline ::Oyster::Math::Float4x4 CustomBodyState::GetOrientation( const ::Oyster::Math::Float3 &offset ) const { - return ::Oyster::Math3D::OrientationMatrix( this->angularAxis.xyz, (this->centerPos + offset).xyz ); + return ::Oyster::Math3D::OrientationMatrix( this->angularAxis, (this->centerPos + offset) ); } inline ::Oyster::Math::Float4x4 CustomBodyState::GetView() const { - return ::Oyster::Math3D::ViewMatrix( this->angularAxis.xyz, this->centerPos.xyz ); + return ::Oyster::Math3D::ViewMatrix( this->angularAxis, this->centerPos ); } - inline ::Oyster::Math::Float4x4 CustomBodyState::GetView( const ::Oyster::Math::Float4 &offset ) const + inline ::Oyster::Math::Float4x4 CustomBodyState::GetView( const ::Oyster::Math::Float3 &offset ) const { - return ::Oyster::Math3D::ViewMatrix( this->angularAxis.xyz, (this->centerPos + offset).xyz ); + return ::Oyster::Math3D::ViewMatrix( this->angularAxis, (this->centerPos + offset) ); } - inline const ::Oyster::Math::Float4 & CustomBodyState::GetLinearMomentum() const + inline const ::Oyster::Math::Float3 & CustomBodyState::GetLinearMomentum() const { return this->linearMomentum; } - inline ::Oyster::Math::Float4 CustomBodyState::GetLinearMomentum( const ::Oyster::Math::Float4 &at ) const + inline ::Oyster::Math::Float3 CustomBodyState::GetLinearMomentum( const ::Oyster::Math::Float3 &at ) const { return this->linearMomentum + ::Oyster::Physics3D::Formula::TangentialLinearMomentum( this->angularMomentum, at - this->centerPos ); } - inline const ::Oyster::Math::Float4 & CustomBodyState::GetAngularMomentum() const + inline const ::Oyster::Math::Float3 & CustomBodyState::GetAngularMomentum() const { return this->angularMomentum; } - inline const ::Oyster::Math::Float4 & CustomBodyState::GetLinearImpulse() const + inline const ::Oyster::Math::Float3 & CustomBodyState::GetLinearImpulse() const { return this->linearImpulse; } - inline const ::Oyster::Math::Float4 & CustomBodyState::GetAngularImpulse() const + inline const ::Oyster::Math::Float3 & CustomBodyState::GetAngularImpulse() const { return this->angularImpulse; } - inline const ::Oyster::Math::Float4 & CustomBodyState::GetForward_DeltaPos() const + inline const ::Oyster::Math::Float3 & CustomBodyState::GetForward_DeltaPos() const { return this->deltaPos; } - inline const ::Oyster::Math::Float4 & CustomBodyState::GetForward_DeltaAxis() const + inline const ::Oyster::Math::Float3 & CustomBodyState::GetForward_DeltaAxis() const { return this->deltaAxis; } - inline const ::Oyster::Math::Float4 & CustomBodyState::GetGravityNormal() const + inline const ::Oyster::Math::Float3 & CustomBodyState::GetGravityNormal() const { return this->gravityNormal; } @@ -227,39 +227,39 @@ namespace Oyster inline void CustomBodyState::SetMomentOfInertia_KeepVelocity( const ::Oyster::Physics3D::MomentOfInertia &tensor ) { ::Oyster::Math::Quaternion rotation = ::Oyster::Math3D::Rotation(this->angularAxis); - ::Oyster::Math::Float4 w = this->inertiaTensor.CalculateAngularVelocity( rotation, this->angularMomentum ); + ::Oyster::Math::Float3 w = this->inertiaTensor.CalculateAngularVelocity( rotation, this->angularMomentum ); this->inertiaTensor = tensor; this->angularMomentum = this->inertiaTensor.CalculateAngularMomentum( rotation, w ); } - inline void CustomBodyState::SetSize( const ::Oyster::Math::Float4 &size ) + inline void CustomBodyState::SetSize( const ::Oyster::Math::Float3 &size ) { this->SetReach( 0.5f * size ); } - inline void CustomBodyState::SetReach( const ::Oyster::Math::Float4 &halfSize ) + inline void CustomBodyState::SetReach( const ::Oyster::Math::Float3 &halfSize ) { - this->reach.xyz = halfSize; - this->reach = ::Utility::Value::Max( this->reach, ::Oyster::Math::Float4::null ); + this->reach = halfSize; + this->reach = ::Utility::Value::Max( this->reach, ::Oyster::Math::Float3::null ); this->isSpatiallyAltered = this->isDisturbed = true; } - inline void CustomBodyState::SetCenterPosition( const ::Oyster::Math::Float4 ¢erPos ) + inline void CustomBodyState::SetCenterPosition( const ::Oyster::Math::Float3 ¢erPos ) { - this->centerPos.xyz = centerPos; + this->centerPos = centerPos; this->isSpatiallyAltered = this->isDisturbed = true; } - inline void CustomBodyState::SetRotation( const ::Oyster::Math::Float4 &angularAxis ) + inline void CustomBodyState::SetRotation( const ::Oyster::Math::Float3 &angularAxis ) { - this->angularAxis.xyz = angularAxis; + this->angularAxis = angularAxis; this->isSpatiallyAltered = this->isDisturbed = true; } inline void CustomBodyState::SetOrientation( const ::Oyster::Math::Float3 &angularAxis, const ::Oyster::Math::Float3 &translation ) { - this->angularAxis.xyz = angularAxis ; - this->centerPos.xyz = translation; + this->angularAxis = angularAxis ; + this->centerPos = translation; this->isSpatiallyAltered = this->isDisturbed = true; } @@ -276,70 +276,70 @@ namespace Oyster - inline void CustomBodyState::SetLinearMomentum( const ::Oyster::Math::Float4 &g ) + inline void CustomBodyState::SetLinearMomentum( const ::Oyster::Math::Float3 &g ) { - this->linearMomentum.xyz = g; + this->linearMomentum = g; this->isDisturbed = true; } - inline void CustomBodyState::SetAngularMomentum( const ::Oyster::Math::Float4 &h ) + inline void CustomBodyState::SetAngularMomentum( const ::Oyster::Math::Float3 &h ) { - this->angularMomentum.xyz = h; + this->angularMomentum = h; this->isDisturbed = true; } - inline void CustomBodyState::SetLinearImpulse( const ::Oyster::Math::Float4 &j ) + inline void CustomBodyState::SetLinearImpulse( const ::Oyster::Math::Float3 &j ) { - this->linearImpulse.xyz = j; + this->linearImpulse = j; this->isDisturbed = true; } - inline void CustomBodyState::SetAngularImpulse( const ::Oyster::Math::Float4 &j ) + inline void CustomBodyState::SetAngularImpulse( const ::Oyster::Math::Float3 &j ) { - this->angularImpulse.xyz = j; + this->angularImpulse = j; this->isDisturbed = true; } - inline void CustomBodyState::SetGravityNormal( const ::Oyster::Math::Float4 &gravityNormal ) + inline void CustomBodyState::SetGravityNormal( const ::Oyster::Math::Float3 &gravityNormal ) { this->gravityNormal = gravityNormal; } - inline void CustomBodyState::AddRotation( const ::Oyster::Math::Float4 &angularAxis ) + inline void CustomBodyState::AddRotation( const ::Oyster::Math::Float3 &angularAxis ) { this->angularAxis += angularAxis; this->isSpatiallyAltered = this->isDisturbed = true; } - inline void CustomBodyState::AddTranslation( const ::Oyster::Math::Float4 &deltaPos ) + inline void CustomBodyState::AddTranslation( const ::Oyster::Math::Float3 &deltaPos ) { this->centerPos += deltaPos; this->isSpatiallyAltered = this->isDisturbed = true; } - inline void CustomBodyState::ApplyLinearImpulse( const ::Oyster::Math::Float4 &j ) + inline void CustomBodyState::ApplyLinearImpulse( const ::Oyster::Math::Float3 &j ) { this->linearImpulse += j; this->isDisturbed = true; } - inline void CustomBodyState::ApplyAngularImpulse( const ::Oyster::Math::Float4 &j ) + inline void CustomBodyState::ApplyAngularImpulse( const ::Oyster::Math::Float3 &j ) { this->angularImpulse += j; this->isDisturbed = true; } - inline void CustomBodyState::ApplyImpulse( const ::Oyster::Math::Float4 &j, const ::Oyster::Math::Float4 &at, const ::Oyster::Math::Float4 &normal ) + inline void CustomBodyState::ApplyImpulse( const ::Oyster::Math::Float3 &j, const ::Oyster::Math::Float3 &at, const ::Oyster::Math::Float3 &normal ) { - ::Oyster::Math::Float4 offset = at - this->centerPos; - ::Oyster::Math::Float4 deltaAngularImpulse = ::Oyster::Physics3D::Formula::AngularMomentum( j, offset ); + ::Oyster::Math::Float3 offset = at - this->centerPos; + ::Oyster::Math::Float3 deltaAngularImpulse = ::Oyster::Physics3D::Formula::AngularMomentum( j, offset ); this->linearImpulse += j - ::Oyster::Physics3D::Formula::TangentialLinearMomentum( deltaAngularImpulse, offset ); this->angularImpulse += deltaAngularImpulse; this->isDisturbed = true; } - inline void CustomBodyState::ApplyForwarding( const ::Oyster::Math::Float4 &deltaPos, const ::Oyster::Math::Float4 &deltaAxis ) + inline void CustomBodyState::ApplyForwarding( const ::Oyster::Math::Float3 &deltaPos, const ::Oyster::Math::Float3 &deltaAxis ) { this->deltaPos += deltaPos; this->deltaAxis += deltaAxis; diff --git a/Code/GamePhysics/PhysicsStructs.h b/Code/GamePhysics/PhysicsStructs.h index 00b382c5..49cf6993 100644 --- a/Code/GamePhysics/PhysicsStructs.h +++ b/Code/GamePhysics/PhysicsStructs.h @@ -12,8 +12,8 @@ namespace Oyster { namespace Physics struct SimpleBodyDescription { ::Oyster::Math::Float4x4 rotation; - ::Oyster::Math::Float4 centerPosition; - ::Oyster::Math::Float4 size; + ::Oyster::Math::Float3 centerPosition; + ::Oyster::Math::Float3 size; ::Oyster::Math::Float mass; ::Oyster::Math::Float restitutionCoeff; ::Oyster::Math::Float frictionCoeff_Static; @@ -30,7 +30,7 @@ namespace Oyster { namespace Physics struct SphericalBodyDescription { ::Oyster::Math::Float4x4 rotation; - ::Oyster::Math::Float4 centerPosition; + ::Oyster::Math::Float3 centerPosition; ::Oyster::Math::Float radius; ::Oyster::Math::Float mass; ::Oyster::Math::Float restitutionCoeff; @@ -52,12 +52,12 @@ namespace Oyster { namespace Physics ::Oyster::Math::Float staticFrictionCoeff = 1.0f, ::Oyster::Math::Float kineticFrictionCoeff = 1.0f, const ::Oyster::Physics3D::MomentOfInertia &inertiaTensor = ::Oyster::Physics3D::MomentOfInertia(), - const ::Oyster::Math::Float4 &reach = ::Oyster::Math::Float4::null, - const ::Oyster::Math::Float4 ¢erPos = ::Oyster::Math::Float4::standard_unit_w, - const ::Oyster::Math::Float4 &rotation = ::Oyster::Math::Float4::null, - const ::Oyster::Math::Float4 &linearMomentum = ::Oyster::Math::Float4::null, - const ::Oyster::Math::Float4 &angularMomentum = ::Oyster::Math::Float4::null, - const ::Oyster::Math::Float4 &gravityNormal = ::Oyster::Math::Float4::null); + const ::Oyster::Math::Float3 &reach = ::Oyster::Math::Float3::null, + const ::Oyster::Math::Float3 ¢erPos = ::Oyster::Math::Float3::null, + const ::Oyster::Math::Float3 &rotation = ::Oyster::Math::Float3::null, + const ::Oyster::Math::Float3 &linearMomentum = ::Oyster::Math::Float3::null, + const ::Oyster::Math::Float3 &angularMomentum = ::Oyster::Math::Float3::null, + const ::Oyster::Math::Float3 &gravityNormal = ::Oyster::Math::Float3::null); CustomBodyState & operator = ( const CustomBodyState &state ); @@ -66,23 +66,23 @@ namespace Oyster { namespace Physics const ::Oyster::Math::Float GetFrictionCoeff_Static() const; const ::Oyster::Math::Float GetFrictionCoeff_Kinetic() const; const ::Oyster::Physics3D::MomentOfInertia & GetMomentOfInertia() const; - const ::Oyster::Math::Float4 & GetReach() const; - ::Oyster::Math::Float4 GetSize() const; - const ::Oyster::Math::Float4 & GetCenterPosition() const; - const ::Oyster::Math::Float4 & GetAngularAxis() const; + const ::Oyster::Math::Float3 & GetReach() const; + ::Oyster::Math::Float3 GetSize() const; + const ::Oyster::Math::Float3 & GetCenterPosition() const; + const ::Oyster::Math::Float3 & GetAngularAxis() const; ::Oyster::Math::Float4x4 GetRotation() const; ::Oyster::Math::Float4x4 GetOrientation() const; - ::Oyster::Math::Float4x4 GetOrientation( const ::Oyster::Math::Float4 &offset ) const; + ::Oyster::Math::Float4x4 GetOrientation( const ::Oyster::Math::Float3 &offset ) const; ::Oyster::Math::Float4x4 GetView() const; - ::Oyster::Math::Float4x4 GetView( const ::Oyster::Math::Float4 &offset ) const; - const ::Oyster::Math::Float4 & GetLinearMomentum() const; - ::Oyster::Math::Float4 GetLinearMomentum( const ::Oyster::Math::Float4 &at ) const; - const ::Oyster::Math::Float4 & GetAngularMomentum() const; - const ::Oyster::Math::Float4 & GetLinearImpulse() const; - const ::Oyster::Math::Float4 & GetAngularImpulse() const; - const ::Oyster::Math::Float4 & GetForward_DeltaPos() const; - const ::Oyster::Math::Float4 & GetForward_DeltaAxis() const; - const ::Oyster::Math::Float4 & GetGravityNormal() const; + ::Oyster::Math::Float4x4 GetView( const ::Oyster::Math::Float3 &offset ) const; + const ::Oyster::Math::Float3 & GetLinearMomentum() const; + ::Oyster::Math::Float3 GetLinearMomentum( const ::Oyster::Math::Float3 &at ) const; + const ::Oyster::Math::Float3 & GetAngularMomentum() const; + const ::Oyster::Math::Float3 & GetLinearImpulse() const; + const ::Oyster::Math::Float3 & GetAngularImpulse() const; + const ::Oyster::Math::Float3 & GetForward_DeltaPos() const; + const ::Oyster::Math::Float3 & GetForward_DeltaAxis() const; + const ::Oyster::Math::Float3 & GetGravityNormal() const; void SetMass_KeepMomentum( ::Oyster::Math::Float m ); void SetMass_KeepVelocity( ::Oyster::Math::Float m ); @@ -90,26 +90,26 @@ namespace Oyster { namespace Physics void SetFrictionCoeff( ::Oyster::Math::Float staticU, ::Oyster::Math::Float kineticU ); void SetMomentOfInertia_KeepMomentum( const ::Oyster::Physics3D::MomentOfInertia &tensor ); void SetMomentOfInertia_KeepVelocity( const ::Oyster::Physics3D::MomentOfInertia &tensor ); - void SetSize( const ::Oyster::Math::Float4 &size ); - void SetReach( const ::Oyster::Math::Float4 &halfSize ); - void SetCenterPosition( const ::Oyster::Math::Float4 ¢erPos ); - void SetRotation( const ::Oyster::Math::Float4 &angularAxis ); + void SetSize( const ::Oyster::Math::Float3 &size ); + void SetReach( const ::Oyster::Math::Float3 &halfSize ); + void SetCenterPosition( const ::Oyster::Math::Float3 ¢erPos ); + void SetRotation( const ::Oyster::Math::Float3 &angularAxis ); //void SetRotation( const ::Oyster::Math::Float4x4 &rotation ); //void SetOrientation( const ::Oyster::Math::Float4x4 &orientation ); void SetOrientation( const ::Oyster::Math::Float3 &angularAxis, const ::Oyster::Math::Float3 &translation ); - void SetLinearMomentum( const ::Oyster::Math::Float4 &g ); - void SetAngularMomentum( const ::Oyster::Math::Float4 &h ); - void SetLinearImpulse( const ::Oyster::Math::Float4 &j ); - void SetAngularImpulse( const ::Oyster::Math::Float4 &j ); - void SetGravityNormal( const ::Oyster::Math::Float4 &gravityNormal ); + void SetLinearMomentum( const ::Oyster::Math::Float3 &g ); + void SetAngularMomentum( const ::Oyster::Math::Float3 &h ); + void SetLinearImpulse( const ::Oyster::Math::Float3 &j ); + void SetAngularImpulse( const ::Oyster::Math::Float3 &j ); + void SetGravityNormal( const ::Oyster::Math::Float3 &gravityNormal ); - void AddRotation( const ::Oyster::Math::Float4 &angularAxis ); - void AddTranslation( const ::Oyster::Math::Float4 &deltaPos ); + void AddRotation( const ::Oyster::Math::Float3 &angularAxis ); + void AddTranslation( const ::Oyster::Math::Float3 &deltaPos ); - void ApplyLinearImpulse( const ::Oyster::Math::Float4 &j ); - void ApplyAngularImpulse( const ::Oyster::Math::Float4 &j ); - void ApplyImpulse( const ::Oyster::Math::Float4 &j, const ::Oyster::Math::Float4 &at, const ::Oyster::Math::Float4 &normal ); - void ApplyForwarding( const ::Oyster::Math::Float4 &deltaPos, const ::Oyster::Math::Float4 &deltaAxis ); + void ApplyLinearImpulse( const ::Oyster::Math::Float3 &j ); + void ApplyAngularImpulse( const ::Oyster::Math::Float3 &j ); + void ApplyImpulse( const ::Oyster::Math::Float3 &j, const ::Oyster::Math::Float3 &at, const ::Oyster::Math::Float3 &normal ); + void ApplyForwarding( const ::Oyster::Math::Float3 &deltaPos, const ::Oyster::Math::Float3 &deltaAxis ); bool IsSpatiallyAltered() const; bool IsDisturbed() const; @@ -118,11 +118,11 @@ namespace Oyster { namespace Physics private: ::Oyster::Math::Float mass, restitutionCoeff, staticFrictionCoeff, kineticFrictionCoeff; ::Oyster::Physics3D::MomentOfInertia inertiaTensor; - ::Oyster::Math::Float4 reach, centerPos, angularAxis; - ::Oyster::Math::Float4 linearMomentum, angularMomentum; - ::Oyster::Math::Float4 linearImpulse, angularImpulse; - ::Oyster::Math::Float4 deltaPos, deltaAxis; // Forwarding data sum - ::Oyster::Math::Float4 gravityNormal; + ::Oyster::Math::Float3 reach, centerPos, angularAxis; + ::Oyster::Math::Float3 linearMomentum, angularMomentum; + ::Oyster::Math::Float3 linearImpulse, angularImpulse; + ::Oyster::Math::Float3 deltaPos, deltaAxis; // Forwarding data sum + ::Oyster::Math::Float3 gravityNormal; bool isSpatiallyAltered, isDisturbed, isForwarded; }; From 6148783fe4db6b7f7e3f15c249cfff2c4033983b Mon Sep 17 00:00:00 2001 From: Robin Engman Date: Tue, 28 Jan 2014 10:18:26 +0100 Subject: [PATCH 20/24] Added args to ApplyEffect --- Code/GamePhysics/Implementation/Octree.cpp | 4 ++-- Code/GamePhysics/Implementation/Octree.h | 4 ++-- Code/GamePhysics/Implementation/PhysicsAPI_Impl.cpp | 4 ++-- Code/GamePhysics/Implementation/PhysicsAPI_Impl.h | 2 +- Code/GamePhysics/PhysicsAPI.h | 6 ++++-- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/Code/GamePhysics/Implementation/Octree.cpp b/Code/GamePhysics/Implementation/Octree.cpp index 3faff29e..b4395516 100644 --- a/Code/GamePhysics/Implementation/Octree.cpp +++ b/Code/GamePhysics/Implementation/Octree.cpp @@ -128,13 +128,13 @@ void Octree::Visit(ICustomBody* customBodyRef, VisitorAction hitAction ) } } -void Octree::Visit(const Oyster::Collision3D::ICollideable& collideable, VisitorActionCollideable hitAction) +void Octree::Visit(const Oyster::Collision3D::ICollideable& collideable, void* args, VisitorActionCollideable hitAction) { for(unsigned int i = 0; ileafData.size(); i++) { if(collideable.Intersects(this->leafData[i].container)) { - hitAction( this->GetCustomBody(i) ); + hitAction( this->GetCustomBody(i), args ); } } } diff --git a/Code/GamePhysics/Implementation/Octree.h b/Code/GamePhysics/Implementation/Octree.h index 7b350795..50b9569a 100644 --- a/Code/GamePhysics/Implementation/Octree.h +++ b/Code/GamePhysics/Implementation/Octree.h @@ -18,7 +18,7 @@ namespace Oyster static const unsigned int invalid_ref; typedef void(*VisitorAction)(Octree&, unsigned int, unsigned int); - typedef void(*VisitorActionCollideable)(ICustomBody*); + typedef void(*VisitorActionCollideable)(ICustomBody*, void*); struct Data { @@ -53,7 +53,7 @@ namespace Oyster std::vector& Sample(ICustomBody* customBodyRef, std::vector& updateList); std::vector& Sample(const Oyster::Collision3D::ICollideable& collideable, std::vector& updateList); void Visit(ICustomBody* customBodyRef, VisitorAction hitAction ); - void Visit(const Oyster::Collision3D::ICollideable& collideable, VisitorActionCollideable hitAction ); + void Visit(const Oyster::Collision3D::ICollideable& collideable, void* args, VisitorActionCollideable hitAction ); ICustomBody* GetCustomBody(const unsigned int tempRef); diff --git a/Code/GamePhysics/Implementation/PhysicsAPI_Impl.cpp b/Code/GamePhysics/Implementation/PhysicsAPI_Impl.cpp index d3650f66..14c4d9e4 100644 --- a/Code/GamePhysics/Implementation/PhysicsAPI_Impl.cpp +++ b/Code/GamePhysics/Implementation/PhysicsAPI_Impl.cpp @@ -276,9 +276,9 @@ void API_Impl::RemoveGravity( const API::Gravity &g ) } } -void API_Impl::ApplyEffect( const Oyster::Collision3D::ICollideable& collideable, void(hitAction)(ICustomBody*) ) +void API_Impl::ApplyEffect( const Oyster::Collision3D::ICollideable& collideable, void* args, void(hitAction)(ICustomBody*, void*) ) { - this->worldScene.Visit(collideable, hitAction); + this->worldScene.Visit(collideable, args, hitAction); } //void API_Impl::ApplyForceAt( const ICustomBody* objRef, const Float3 &worldPos, const Float3 &worldF ) diff --git a/Code/GamePhysics/Implementation/PhysicsAPI_Impl.h b/Code/GamePhysics/Implementation/PhysicsAPI_Impl.h index b9343ae6..63d8ff08 100644 --- a/Code/GamePhysics/Implementation/PhysicsAPI_Impl.h +++ b/Code/GamePhysics/Implementation/PhysicsAPI_Impl.h @@ -35,7 +35,7 @@ namespace Oyster void AddGravity( const API::Gravity &g ); void RemoveGravity( const API::Gravity &g ); - void ApplyEffect( const Oyster::Collision3D::ICollideable& collideable, void(hitAction)(ICustomBody*) ); + void ApplyEffect( const Oyster::Collision3D::ICollideable& collideable, void* args, void(hitAction)(ICustomBody*, void*) ); //void ApplyForceAt( const ICustomBody* objRef, const ::Oyster::Math::Float3 &worldPos, const ::Oyster::Math::Float3 &worldF ); diff --git a/Code/GamePhysics/PhysicsAPI.h b/Code/GamePhysics/PhysicsAPI.h index 7f20fcf7..3ced2a55 100644 --- a/Code/GamePhysics/PhysicsAPI.h +++ b/Code/GamePhysics/PhysicsAPI.h @@ -139,9 +139,11 @@ namespace Oyster /******************************************************** * Applies an effect to objects that collide with the set volume. * @param collideable: An ICollideable that defines the volume of the effect. - * @param hitAction: A function that contains the effect. + * @param args: The arguments needed for the hitAction function. + * @param hitAction: A function that contains the effect. Parameterlist contains the custom body + the collideable hits, and the arguments sent to the function. ********************************************************/ - virtual void ApplyEffect( const Oyster::Collision3D::ICollideable& collideable, void(hitAction)(ICustomBody*) ) = 0; + virtual void ApplyEffect( const Oyster::Collision3D::ICollideable& collideable, void* args, void(hitAction)(ICustomBody*, void*) ) = 0; ///******************************************************** // * Apply force on an object. From eb27a4edfbbc5905b5937b0f583044b2c79188ae Mon Sep 17 00:00:00 2001 From: Robin Engman Date: Tue, 28 Jan 2014 10:38:58 +0100 Subject: [PATCH 21/24] Added ExtractForward to frustum. --- Code/OysterPhysics3D/Frustrum.cpp | 5 +++++ Code/OysterPhysics3D/Frustrum.h | 2 ++ 2 files changed, 7 insertions(+) diff --git a/Code/OysterPhysics3D/Frustrum.cpp b/Code/OysterPhysics3D/Frustrum.cpp index 54e6a67f..ce2c5256 100644 --- a/Code/OysterPhysics3D/Frustrum.cpp +++ b/Code/OysterPhysics3D/Frustrum.cpp @@ -241,4 +241,9 @@ bool Frustrum::Contains( const ICollideable &target ) const //case Type_line: return false; // TODO: default: return false; } +} + +::Oyster::Math::Float3 Frustrum::ExtractForwad() +{ + return this->bottomPlane.normal.xyz; } \ No newline at end of file diff --git a/Code/OysterPhysics3D/Frustrum.h b/Code/OysterPhysics3D/Frustrum.h index ba5656c5..ae0f086c 100644 --- a/Code/OysterPhysics3D/Frustrum.h +++ b/Code/OysterPhysics3D/Frustrum.h @@ -41,6 +41,8 @@ namespace Oyster { namespace Collision3D bool Intersects( const ICollideable &target ) const; bool Intersects( const ICollideable &target, Oyster::Math::Float4 &worldPointOfContact ) const; bool Contains( const ICollideable &target ) const; + + ::Oyster::Math::Float3 ExtractForwad(); }; // INLINE IMPLEMENTATIONS /////////////////////////////////////// From 8435a2c9708335799cf3bf9d9532cf5f7fbd3261 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Tue, 28 Jan 2014 11:31:11 +0100 Subject: [PATCH 22/24] Formula fix TangentialLinearMomentum(..) --- Code/OysterPhysics3D/OysterPhysics3D.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Code/OysterPhysics3D/OysterPhysics3D.h b/Code/OysterPhysics3D/OysterPhysics3D.h index f814ff46..c6eca8e8 100644 --- a/Code/OysterPhysics3D/OysterPhysics3D.h +++ b/Code/OysterPhysics3D/OysterPhysics3D.h @@ -59,11 +59,20 @@ namespace Oyster { namespace Physics3D /****************************************************************** * Returns the world tangential momentum at worldPos, of a mass in rotation. + * G = ( H x r ) / ( |H| * |r|^2 ) <-> H = r x G * @todo TODO: improve doc ******************************************************************/ inline ::Oyster::Math::Float4 TangentialLinearMomentum( const ::Oyster::Math::Float4 &angularMomentum, const ::Oyster::Math::Float4 &worldOffset ) { - return ::Oyster::Math::Float4( angularMomentum.xyz.Cross(worldOffset.xyz), 0.0f ) /= worldOffset.Dot( worldOffset ); + ::Oyster::Math::Float magnitudeH_squared = angularMomentum.Dot( angularMomentum ); + if( magnitudeH_squared > 0 ) + { + return ::Oyster::Math::Float4( angularMomentum.xyz.Cross(worldOffset.xyz), 0.0f ) /= ( (::Oyster::Math::Float)::std::sqrt(magnitudeH_squared) * worldOffset.Dot( worldOffset ) ); + } + else + { + return ::Oyster::Math::Float4::null; + } } /****************************************************************** From 78706f992980ef1c783b75828cc44673cecbe8b2 Mon Sep 17 00:00:00 2001 From: Dander7BD Date: Tue, 28 Jan 2014 11:43:24 +0100 Subject: [PATCH 23/24] Revert "Formula fix" This reverts commit 8435a2c9708335799cf3bf9d9532cf5f7fbd3261. --- Code/OysterPhysics3D/OysterPhysics3D.h | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/Code/OysterPhysics3D/OysterPhysics3D.h b/Code/OysterPhysics3D/OysterPhysics3D.h index c6eca8e8..f814ff46 100644 --- a/Code/OysterPhysics3D/OysterPhysics3D.h +++ b/Code/OysterPhysics3D/OysterPhysics3D.h @@ -59,20 +59,11 @@ namespace Oyster { namespace Physics3D /****************************************************************** * Returns the world tangential momentum at worldPos, of a mass in rotation. - * G = ( H x r ) / ( |H| * |r|^2 ) <-> H = r x G * @todo TODO: improve doc ******************************************************************/ inline ::Oyster::Math::Float4 TangentialLinearMomentum( const ::Oyster::Math::Float4 &angularMomentum, const ::Oyster::Math::Float4 &worldOffset ) { - ::Oyster::Math::Float magnitudeH_squared = angularMomentum.Dot( angularMomentum ); - if( magnitudeH_squared > 0 ) - { - return ::Oyster::Math::Float4( angularMomentum.xyz.Cross(worldOffset.xyz), 0.0f ) /= ( (::Oyster::Math::Float)::std::sqrt(magnitudeH_squared) * worldOffset.Dot( worldOffset ) ); - } - else - { - return ::Oyster::Math::Float4::null; - } + return ::Oyster::Math::Float4( angularMomentum.xyz.Cross(worldOffset.xyz), 0.0f ) /= worldOffset.Dot( worldOffset ); } /****************************************************************** From 15ae3675b4f936f1c312751de67b44621a0d2a41 Mon Sep 17 00:00:00 2001 From: Robin Engman Date: Tue, 28 Jan 2014 13:39:15 +0100 Subject: [PATCH 24/24] Updated UML with functions --- Code/Dokumentation/Physics_Sprint3.uxf | 756 +++++++++++++------------ 1 file changed, 395 insertions(+), 361 deletions(-) diff --git a/Code/Dokumentation/Physics_Sprint3.uxf b/Code/Dokumentation/Physics_Sprint3.uxf index 0462e35c..6b74de3e 100644 --- a/Code/Dokumentation/Physics_Sprint3.uxf +++ b/Code/Dokumentation/Physics_Sprint3.uxf @@ -6,7 +6,7 @@ com.umlet.element.Class 357 - 609 + 518 252 406 @@ -34,7 +34,7 @@ Forcefield( .. ) : Float com.umlet.element.Class 364 - 819 + 728 238 189 @@ -60,7 +60,7 @@ Cylinder( .. ) : Matrix com.umlet.element.Class 616 - 609 + 518 210 35 @@ -73,7 +73,7 @@ Update_LeapFrog( deltatime : Float ) : void com.umlet.element.Class 616 - 672 + 581 210 203 @@ -101,7 +101,7 @@ CalculateAngularMomentum( .. ) : Vector com.umlet.element.Class 728 - 938 + 847 98 21 @@ -112,7 +112,7 @@ CalculateAngularMomentum( .. ) : Vector com.umlet.element.Class 728 - 966 + 875 98 21 @@ -123,7 +123,7 @@ CalculateAngularMomentum( .. ) : Vector com.umlet.element.Class 728 - 994 + 903 98 21 @@ -134,7 +134,7 @@ CalculateAngularMomentum( .. ) : Vector com.umlet.element.Relation 644 - 623 + 532 132 62 @@ -146,7 +146,7 @@ CalculateAngularMomentum( .. ) : Vector com.umlet.element.Class 350 - 574 + 483 483 448 @@ -157,31 +157,30 @@ bg=green - - - com.umlet.element.Class - - 560 - 511 - 161 - 49 - - Constant : <<namespace>> + + com.umlet.element.Class + + 560 + 420 + 161 + 49 + + Constant : <<namespace>> <<extern>> -- gravity_constant : const Float - - - - com.umlet.element.Class - - 224 - 476 - 329 - 84 - - Default : <<namespace>> + + + + com.umlet.element.Class + + 224 + 385 + 329 + 84 + + Default : <<namespace>> <<intern>> -- EventAction_Destruction : <<PhysicsAPI::EventAction_Destruction>> @@ -189,45 +188,61 @@ EventAction_Collision : <<ICustomBody::EventAction_Collision>> EventAction_CollisionResponse : <<ICustomBody::EventAction_Collision>> EventAction_Move : <<ICustomBody::EventAction_Collision>> - - - - com.umlet.element.Class - - 224 - 161 - 224 - 35 - - API : <<interface>> + + + + com.umlet.element.Class + + 245 + 63 + 224 + 196 + + API : <<interface>> -- {innerclass EventAction_Destruction : <<FunctionPointer>> -innerclass} - - - - com.umlet.element.Class - - 259 - 217 - 133 - 28 - - API_Impl : <<class>> +innerclass} + +Init( .. ) : void +SetFrameTimeLength( .. ) : void +SetGravityConstant( .. ) : void +SetSubscription( .. ) : void +Update() : void +IsInLimbo( .. ) : bool +MoveToLimbo( .. ) : void +ReleaseFromLimbo( .. ) : void +AddObject( .. ) : void +ExtractObject( .. ) : ICustomBody* +DestroyObject( .. ) : void +AddGravity( .. ) : void +RemoveGravity( .. ) : void +ApplyEffect( .. ) : void +CreateRigidBody( .. ) : ICustomBody* + + + + com.umlet.element.Class + + 273 + 280 + 133 + 28 + + API_Impl : <<class>> -- <<uses>> OctTree : class - - - - com.umlet.element.Class - - 455 - 161 - 280 - 84 - - ICustomBody : <<interface>> + + + + com.umlet.element.Class + + 476 + 63 + 280 + 287 + + ICustomBody : <<interface>> {innerclass SubscriptMessage : Enum @@ -243,58 +258,78 @@ innerclass} {innerclass EventAction_Move : <<Subscription : void>> -innerclass} - - - - com.umlet.element.Class - - 259 - 252 - 175 - 35 - - SimpleRigidBody : <<class>> +innerclass} + +Clone() : ICustomBody* +CallSubscription_Collision( .. ) : SubscriptMessage +CallSubscription_CollisionResponse( .. ) : void +CallSubscription_Move() : void +GetState( .. ) : State +SetState( .. ) : void +IsAffectedByGravity() : bool +Intersects( .. ) : bool +GetBoundingSphere : Sphere +GetNormalAt( .. ) : Vector +GetGravityNormal( .. ) : Vector +GetCustomTag() : void* +Update( .. ) : UpdateState +Predict( .. ) : void +SetScene( .. ) : void +SetSubscription( .. ) : void +SetGravity( .. ) : void +SetGravityNormal( .. ) : void +SetCustomTag( .. ) : void + + + + com.umlet.element.Class + + 273 + 315 + 175 + 28 + + SimpleRigidBody : <<class>> -- <<uses>> Physics3D::RigidBody : struct - - - - com.umlet.element.Class - - 259 - 294 - 175 - 35 - - SphericalRigidBody : <<class>> + + + + com.umlet.element.Class + + 273 + 350 + 175 + 28 + + SphericalRigidBody : <<class>> -- <<uses>> Physics3D::RigidBody : struct - - - - com.umlet.element.Class - - 21 - 364 - 196 - 196 - - Formula : <<namespace>> + + + + com.umlet.element.Class + + 21 + 273 + 196 + 196 + + Formula : <<namespace>> <<intern>> -- - - - - com.umlet.element.Class - - 28 - 399 - 175 - 84 - - MomentOfInertia : <<namespace>> + + + + com.umlet.element.Class + + 28 + 308 + 175 + 84 + + MomentOfInertia : <<namespace>> <<intern>> -- CreateSphereMatrix( .. ) : Matrix @@ -302,138 +337,138 @@ CreateHollowSphereMatrix( .. ) : Matrix CreateCuboidMatrix( .. ) : Matrix CreateCylinderMatrix( .. ) : Matrix CreateRodMatrix( .. ) : Matrix - - - - com.umlet.element.Class - - 28 - 497 - 175 - 56 - - CollisionResponse : <<namespace>> + + + + com.umlet.element.Class + + 28 + 406 + 175 + 56 + + CollisionResponse : <<namespace>> <<intern>> -- Bounce( .. ) : Float Friction( .. ) : Vector - - - - com.umlet.element.Relation - - 294 - 175 - 34 - 55 - - lt=<<. - 21;21;21;42 - - - com.umlet.element.Relation - - 413 - 224 - 90 - 55 - - lt=<<. - 77;21;77;42;21;42 - - - com.umlet.element.Class - - 525 - 350 - 203 - 42 - - OctTree : <<class>> + + + + com.umlet.element.Relation + + 308 + 238 + 34 + 55 + + lt=<<. + 21;21;21;42 + + + com.umlet.element.Relation + + 427 + 308 + 97 + 76 + + lt=<<. + 84;42;84;63;35;63;35;21;21;21 + + + com.umlet.element.Class + + 560 + 371 + 203 + 42 + + OctTree : <<class>> -- <<uses>> Collision3D::Sphere : struct <<uses>> Collision3D::BoxAxisAligned : struct - - - - com.umlet.element.Relation - - 546 - 224 - 118 - 139 - - lt=<- -m2= <<uses>> - 105;21;105;112;28;112;28;126 - - - com.umlet.element.Relation - - 413 - 245 - 90 - 69 - - lt=. - 77;21;77;56;21;56 - - - com.umlet.element.Class - - 21 - 161 - 182 - 196 - - Struct : <<namespace>> + + + + com.umlet.element.Relation + + 518 + 329 + 100 + 55 + + lt=<- + <<uses>> + 56;21;56;42 + + + com.umlet.element.Relation + + 427 + 329 + 97 + 55 + + lt=. + 84;21;84;42;21;42 + + + com.umlet.element.Class + + 21 + 63 + 182 + 196 + + Struct : <<namespace>> <<extern>> -- - - - - com.umlet.element.Class - - 28 - 301 - 168 - 14 - - SimpleBodyDescription : struct - - - - com.umlet.element.Class - - 28 - 329 - 168 - 14 - - SimpleSphericalDescription : struct - - - - com.umlet.element.Class - - 28 - 273 - 168 - 14 - - CustomBodyState : struct - - - - com.umlet.element.Class - - 28 - 189 - 168 - 63 - - Gravity : struct + + + + com.umlet.element.Class + + 28 + 203 + 168 + 14 + + SimpleBodyDescription : struct + + + + com.umlet.element.Class + + 28 + 231 + 168 + 14 + + SimpleSphericalDescription : struct + + + + com.umlet.element.Class + + 28 + 175 + 168 + 14 + + CustomBodyState : struct + + + + com.umlet.element.Class + + 28 + 91 + 168 + 63 + + Gravity : struct {innerclass GravityWell innerclass} @@ -443,98 +478,97 @@ innerclass} {innerclass GravityDirectedField innerclass} - - - - com.umlet.element.Relation - - 182 - 189 - 90 - 49 - - lt=<- + + + + com.umlet.element.Relation + + 182 + 105 + 104 + 195 + + lt=<- + <<uses>> + 21;21;56;21;56;168;91;168;91;182 + + + com.umlet.element.Relation + + 182 + 161 + 104 + 139 + + lt=<- + 21;21;56;21;56;112;91;112;91;126 + + + com.umlet.element.Relation + + 385 + 252 + 104 + 49 + + lt=<- <<uses>> - 21;35;77;35 - - - com.umlet.element.Relation - - 182 - 203 - 90 - 83 - - lt=<- - 21;70;42;70;42;21;77;21 - - - com.umlet.element.Relation - - 371 - 189 - 97 - 49 - - lt=<- -<<uses>> - 84;35;21;35 - - - com.umlet.element.Relation - - 182 - 266 - 90 - 49 - - lt=<- -<<uses>> - 21;35;77;35 - - - com.umlet.element.Relation - - 182 - 280 - 90 - 62 - - lt=<- - 21;49;42;49;42;21;77;21 - - - com.umlet.element.Relation - - 231 - 238 - 41 - 76 - - lt=- - 28;21;21;21;21;63 - - - com.umlet.element.Class - - 14 - 126 - 728 - 441 - - Physics : <<namespace>> + 91;35;21;35 + + + com.umlet.element.Relation + + 182 + 189 + 104 + 181 + + lt=<- + 21;21;42;21;42;168;91;168 + + + com.umlet.element.Relation + + 175 + 217 + 111 + 153 + + lt=<- + <<uses>> + 28;21;49;21;49;140;98;140 + + + com.umlet.element.Relation + + 231 + 301 + 55 + 69 + + lt=- + 42;21;42;21;21;21;21;56 + + + com.umlet.element.Class + + 14 + 35 + 756 + 441 + + Physics : <<namespace>> <<extern>> bg=green -- - - - + + com.umlet.element.Class 0 - 91 + 0 847 945 @@ -551,7 +585,7 @@ bg=orange com.umlet.element.Class 175 - 637 + 546 126 21 @@ -562,7 +596,7 @@ bg=orange com.umlet.element.Class 175 - 609 + 518 126 21 @@ -573,7 +607,7 @@ bg=orange com.umlet.element.Class 175 - 665 + 574 126 21 @@ -584,7 +618,7 @@ bg=orange com.umlet.element.Class 175 - 693 + 602 126 21 @@ -595,7 +629,7 @@ bg=orange com.umlet.element.Class 175 - 721 + 630 126 21 @@ -606,7 +640,7 @@ bg=orange com.umlet.element.Class 175 - 861 + 770 126 21 @@ -617,7 +651,7 @@ bg=orange com.umlet.element.Class 175 - 749 + 658 126 21 @@ -628,7 +662,7 @@ bg=orange com.umlet.element.Class 175 - 791 + 700 126 21 @@ -639,7 +673,7 @@ bg=orange com.umlet.element.Class 175 - 819 + 728 126 21 @@ -650,7 +684,7 @@ bg=orange com.umlet.element.Class 175 - 889 + 798 126 21 @@ -661,7 +695,7 @@ bg=orange com.umlet.element.Class 21 - 609 + 518 126 70 @@ -677,7 +711,7 @@ Contain( .. ) : bool com.umlet.element.Relation 280 - 595 + 504 55 321 @@ -688,7 +722,7 @@ Contain( .. ) : bool com.umlet.element.Relation 280 - 812 + 721 55 34 @@ -699,7 +733,7 @@ Contain( .. ) : bool com.umlet.element.Relation 280 - 784 + 693 55 34 @@ -710,7 +744,7 @@ Contain( .. ) : bool com.umlet.element.Relation 280 - 742 + 651 55 34 @@ -721,7 +755,7 @@ Contain( .. ) : bool com.umlet.element.Relation 280 - 854 + 763 55 34 @@ -732,7 +766,7 @@ Contain( .. ) : bool com.umlet.element.Relation 280 - 714 + 623 55 34 @@ -743,7 +777,7 @@ Contain( .. ) : bool com.umlet.element.Relation 280 - 686 + 595 55 34 @@ -754,7 +788,7 @@ Contain( .. ) : bool com.umlet.element.Relation 280 - 658 + 567 55 34 @@ -765,7 +799,7 @@ Contain( .. ) : bool com.umlet.element.Relation 280 - 630 + 539 55 34 @@ -776,7 +810,7 @@ Contain( .. ) : bool com.umlet.element.Relation 196 - 749 + 658 83 55 @@ -788,7 +822,7 @@ Contain( .. ) : bool com.umlet.element.Relation 35 - 658 + 567 153 84 @@ -800,7 +834,7 @@ Contain( .. ) : bool com.umlet.element.Relation 133 - 595 + 504 55 286 @@ -811,7 +845,7 @@ Contain( .. ) : bool com.umlet.element.Relation 196 - 819 + 728 83 55 @@ -823,7 +857,7 @@ Contain( .. ) : bool com.umlet.element.Relation 133 - 805 + 714 55 34 @@ -834,7 +868,7 @@ Contain( .. ) : bool com.umlet.element.Relation 133 - 735 + 644 55 34 @@ -845,7 +879,7 @@ Contain( .. ) : bool com.umlet.element.Relation 133 - 679 + 588 55 34 @@ -856,7 +890,7 @@ Contain( .. ) : bool com.umlet.element.Relation 133 - 651 + 560 55 34 @@ -867,7 +901,7 @@ Contain( .. ) : bool com.umlet.element.Relation 133 - 623 + 532 55 34 @@ -878,7 +912,7 @@ Contain( .. ) : bool com.umlet.element.Class 14 - 574 + 483 329 343 @@ -894,7 +928,7 @@ bg=green com.umlet.element.Class 938 - 168 + 77 98 28 @@ -907,7 +941,7 @@ bg=green com.umlet.element.Class 896 - 266 + 175 42 21 @@ -919,7 +953,7 @@ bg=green com.umlet.element.Class 952 - 266 + 175 70 21 @@ -931,7 +965,7 @@ bg=green com.umlet.element.Relation 896 - 189 + 98 34 90 @@ -942,9 +976,9 @@ bg=green com.umlet.element.Relation 966 - 189 - 34 - 90 + 98 + 28 + 84 lt=()) 21;77;21;21 @@ -953,7 +987,7 @@ bg=green com.umlet.element.Class 896 - 119 + 28 161 28 @@ -966,7 +1000,7 @@ bg=green com.umlet.element.Relation 896 - 126 + 35 48 97 @@ -977,7 +1011,7 @@ bg=green com.umlet.element.Class 889 - 91 + 0 175 133 @@ -990,7 +1024,7 @@ bg=blue com.umlet.element.Relation 910 - 175 + 84 90 48 @@ -1001,9 +1035,9 @@ bg=blue com.umlet.element.Relation 1036 - 112 - 111 - 34 + 21 + 105 + 28 lt=<() r1=provide @@ -1013,9 +1047,9 @@ r1=provide com.umlet.element.Relation 1015 - 161 - 132 - 34 + 70 + 126 + 28 lt=<() r1=provide