From b0837712ac7503c4b037274e41546c4f7f2cfc7f Mon Sep 17 00:00:00 2001 From: Mouse <937279156@qq.com> Date: Wed, 30 May 2018 13:11:20 +0800 Subject: [PATCH] Update --- source/{first-steps.md => 01-first-steps.md} | 0 .../{the-game-loop.md => 02-the-game-loop.md} | 0 source/03-a-brief-about-coordinates.md | 47 ++++++++++++++++++ .../3/3d_cartesian_coordinate_system.png | Bin 0 -> 7300 bytes .../3/alt_3d_cartesian_coordinate_system.png | Bin 0 -> 7302 bytes .../3/alt_cartesian_coordinate_system.png | Bin 0 -> 5773 bytes .../_static/3/cartesian_coordinate_system.png | Bin 0 -> 5179 bytes source/_static/3/opengl_coordinates.png | Bin 0 -> 7065 bytes source/_static/3/righthanded_lefthanded.png | Bin 0 -> 15579 bytes source/index.rst | 5 +- 10 files changed, 50 insertions(+), 2 deletions(-) rename source/{first-steps.md => 01-first-steps.md} (100%) rename source/{the-game-loop.md => 02-the-game-loop.md} (100%) create mode 100644 source/03-a-brief-about-coordinates.md create mode 100644 source/_static/3/3d_cartesian_coordinate_system.png create mode 100644 source/_static/3/alt_3d_cartesian_coordinate_system.png create mode 100644 source/_static/3/alt_cartesian_coordinate_system.png create mode 100644 source/_static/3/cartesian_coordinate_system.png create mode 100644 source/_static/3/opengl_coordinates.png create mode 100644 source/_static/3/righthanded_lefthanded.png diff --git a/source/first-steps.md b/source/01-first-steps.md similarity index 100% rename from source/first-steps.md rename to source/01-first-steps.md diff --git a/source/the-game-loop.md b/source/02-the-game-loop.md similarity index 100% rename from source/the-game-loop.md rename to source/02-the-game-loop.md diff --git a/source/03-a-brief-about-coordinates.md b/source/03-a-brief-about-coordinates.md new file mode 100644 index 0000000..fa15d03 --- /dev/null +++ b/source/03-a-brief-about-coordinates.md @@ -0,0 +1,47 @@ +# 坐标简介(A brief about coordinates) + +本章节中我们将讨论坐标和坐标系,尝试以简单的方式介绍一些基本的数学概念,为后面章节将要介绍的技术和内容提供支持。我们将一些内容简化,为了易于学习而牺牲准确性。 + +我们通过指定坐标来确定物体在空间中的位置。类比地图。通过 +We locate objects in space by specifying its coordinates. Think about a map. You specify a point on a map by stating its latitude or longitude. With just a pair of numbers a point is precisely identified. That pair of numbers are the point coordinates (things are a little bit more complex in reality, since a map is a projection of a non perfect ellipsoid, the earth, so more data is needed but it’s a good analogy). + +A coordinate system is a system which employs one or more numbers, that is, one or more coordinates to uniquely specify the position of a point. There are different coordinate systems (Cartesian, polar, etc.) and you can transform coordinates from one system to another. We will use the Cartesian coordinate system. + +In the Cartesian coordinate system, for two dimensions, a coordinate is defined by two numbers that measure the signed distance to two perpendicular axes, x and y. + +![Cartesian Coordinate System](cartesian_coordinate_system.png) + +Continuing with the map analogy, coordinate systems define an origin. For geographic coordinates the origin is set to the point where the equator and the zero meridian cross. Depending on where we set the origin, coordinates for a specific point are different. A coordinate system may also define the orientation of the axis. In the previous figure, the x coordinate increases as long as we move to the right and the y coordinate increases as we move upwards. But, we could also define an alternative Cartesian coordinate system with different axis orientation in which we would obtain different coordinates. + +![Alternative Cartesian Coordinate System](alt_cartesian_coordinate_system.png) + +As you can see we need to define some arbitrary parameters, such as the origin and the axis orientation in order to give the appropriate meaning to the pair of numbers that constitute a coordinate. We will refer to that coordinate system with the set of arbitrary parameters as the coordinate space. In order to work with a set of coordinates we must use the same coordinate space. The good news is that we can transforms coordinates from one space to another just by performing translations and rotations. + +If we are dealing with 3D coordinates we need an additional axis, the z axis. 3D coordinates will be formed by a set of three numbers (x, y, z). + +![3D Cartesian Coordinate System](3d_cartesian_coordinate_system.png) + +As in 2D Cartesian coordinate spaces we can change the orientation of the axes in 3D coordinate spaces as long as the axes are perpendicular. The next figure shows another 3D coordinate space. + +![Alternative 3D Cartesian Coordinate System](alt_3d_cartesian_coordinate_system.png) + +3D coordinates can be classified in two types: left handed and right handed. How do you know which type it is? Take your hand and form a “L” between your thumb and your index fingers, the middle finger should point in a direction perpendicular to the other two. The thumb should point to the direction where the x axis increases, the index finger should point where the y axis increases and the middle finger should point where the z axis increases. If you are able to do that with your left hand, then its left handed, if you need to use your right hand is right-handed. + +![Right Handed vs Left Handed](righthanded_lefthanded.png) + +2D coordinate spaces are all equivalent since by applying rotation we can transform from one to another. 3D coordinate spaces, on the contrary, are not all equal. You can only transform from one to another by applying rotation if they both have the same handedness, that is, if both are left handed or right handed. + +Now that we have defined some basic topics let’s talk about some commonly used terms when dealing with 3D graphics. When we explain in later chapters how to render 3D models we will see that we use different 3D coordinate spaces, that is because each of those coordinate spaces has a context, a purpose. A set of coordinates is meaningless unless it refers to something. When you examine this coordinates (40.438031, -3.676626) they may say something to you or not. But if I say that they are geometric coordinates (latitude and longitude) you will see that they are the coordinates of a place in Madrid. + +When we will load 3D objects we will get a set of 3D coordinates. Those coordinates are expressed in a 3D coordinate space which is called object coordinate space. When the graphics designers are creating those 3D models they don’t know anything about the 3D scene that this model will be displayed in, so they can only define the coordinates using a coordinate space that is only relevant for the model. + +When we will be drawing a 3D scene all of our 3D objects will be relative to the so called world space coordinate space. We will need to transform from 3D object space to world space coordinates. Some objects will need to be rotated, stretched or enlarged and translated in order to be displayed properly in a 3D scene. + +We will also need to restrict the range of the 3D space that is shown, which is like moving a camera through our 3D space. Then we will need to transform world space coordinates to camera or view space coordinates. Finally these coordinates need to be transformed to screen coordinates, which are 2D, so we need to project 3D view coordinates to a 2D screen coordinate space. + +The following picture shows OpenGL coordinates, (the z axis is perpendicular to the screen) and coordinates are between -1 and +1. + +![OpenGL coordinates](opengl_coordinates.png) + +Don’t worry if you don’t have a clear understanding of all these concepts. They will be revisited during next chapters with practical examples. + diff --git a/source/_static/3/3d_cartesian_coordinate_system.png b/source/_static/3/3d_cartesian_coordinate_system.png new file mode 100644 index 0000000000000000000000000000000000000000..a4070393cc5b4f4e53c77bdb0649a4d60ddaeeb1 GIT binary patch literal 7300 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 literal 0 HcmV?d00001 diff --git a/source/_static/3/alt_3d_cartesian_coordinate_system.png b/source/_static/3/alt_3d_cartesian_coordinate_system.png new file mode 100644 index 0000000000000000000000000000000000000000..3436ef5cea879f4cd4b998df19cbfc684f3538cf GIT binary patch literal 7302 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 F@^Ag%)X@L{ literal 0 HcmV?d00001 diff --git a/source/_static/3/alt_cartesian_coordinate_system.png b/source/_static/3/alt_cartesian_coordinate_system.png new file mode 100644 index 0000000000000000000000000000000000000000..ffcb065de53a73ed1ba6b971473ce04a5d80674e GIT binary patch literal 5773 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 literal 0 HcmV?d00001 diff --git a/source/_static/3/cartesian_coordinate_system.png b/source/_static/3/cartesian_coordinate_system.png new file mode 100644 index 0000000000000000000000000000000000000000..62ce9e9469abbf0c84456d91d9a36a7552e9626b GIT binary patch literal 5179 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 J6_|QH_$M9I_&@*v literal 0 HcmV?d00001 diff --git a/source/_static/3/opengl_coordinates.png b/source/_static/3/opengl_coordinates.png new file mode 100644 index 0000000000000000000000000000000000000000..cb3e7477cb05ca5f866172cc833e6e811f65eed6 GIT binary patch literal 7065 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 Q9H)VxnuZz$>i1s$2LLF!RsaA1 literal 0 HcmV?d00001 diff --git a/source/_static/3/righthanded_lefthanded.png b/source/_static/3/righthanded_lefthanded.png new file mode 100644 index 0000000000000000000000000000000000000000..2c9a38932a59d6ea37acbb353acd7bd866983a2f GIT binary patch literal 15579 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�?-$1KFKq!lOA828oWx^{2%W{iIyQSg+HQu#kHLj;+fbrDROv+x$AC z@JpDIy;sB2f+3P!h240BRY0q#K03x(b?t@&-w0eg)gj3at*?Ao4icH-&*5r&frG;D zwf2g=@iIDc`+4~rB9D*lamLkAA{XhGKRVIbk+r%r+8S=m!nPhgJ8r#E5L)A*JzSGtPl|KanKbaDkw~ci z55WUlCCCp}6XMoq<&t@K`?%5Dh!pJF!_f8w=fi9^YaUX6WHEY;zv78kb9|xtyKHQG zWJ~#!sMRaFTkY{p%jJ`?!A$HN^^LnJX`0Pv7mr8_!{JLgxSSkvt`-^lzNyV~9V^DG z)a&BvV${5M9IZhG;u}#Z@imhp+?xZq$fpc#buY`N9C4B{tj&ym7Z_;i>nYvkeo*Sg zc^sFLulD!D?H<&MDsN3RY?-uNZ*rwdoN=qDsQC5k*GMWK$Cm}pT!6sAgTbg6w`RSr z&6h|R28-x-1RRIQ2g{9an*(t-H#eT1o^sfIjKum6n($y)zc2@bQA~V*=ijx%ClLrp zlyM+5^k2Q$m=Z?RN(<|H8fA=R3xPcS{fE3FbT!(RE;TfVYGKcHk8Pj4>_w6g6Ag4A z^-y5z?oefN#t4nP79i+s0H{-2x=rj5c+4F^_Vj}QOlDRajX&W${`?~Ps z!Xig8`8Lp8!W)0B4E1Na4tQ@ouy)u+AoV$yjZ26RK?cpHgpswf!anr2_$0yiiF8fV zdFcS@RnsKP;Oh8ixuE)O%{mNrkoT{pDYav5j+jzC*SQ*>Z>y|aB(Ff+^dS&MY#`C2 zToHu%lNAX-UmESb2wJ;r`T-b^EC1M?Zt8RG_DSU} z(c3zk5`>gaM|2DVJBwhrwjNYR8p_O1K%6_G5~VN{_9lAq?fvUH_S9WUPaj@r=8BAG zg@!jL<|l)ye-E;wq#%SfJ*sMwWq%HOIkO(fO|$_Zh6)M+n)%TcRxZGK0SkG%T62Ht z!O2v%K5zu$?CqP{BP6zs#M3>Wx@Vr2`RP3^{n+eC{O3wN_&}+J`O5jZTDt?nV?6Sl zJ`z5o7<)Ur-#Ks0%6(X$c^A69dlMBaYdewPP>*6}B^rW1`S_=eJr9>t7`1(b+|v!x zjOI}Dt<^u)0Sv@!+cqUO!~sCX=RQ7MDL@VIHjKT*7jYd?Y~(`xHuY{thTnhz7u53;+Om z)+L2w>m!s^G9ZE0M+uenngJ{p_je=R!#TV?Q5Im>Ry7v?B~e*6AcJ~nnakpR8ZYA8 zM;()&5XQO^i>^oq0m{Jf>GzuJ=%a*|LP8eY*!2M{QJlT*DjS`-> zprx^$P@W1Yn-eZwM)?N}4OG6)^)pxoHqKw8K3B5uxdEW-_vc%$x&aqZwT<3-!JRMY zet&&-koWCh4H=WX_l1Ll>ujKjL>NGrQ!WnppRe)J`AR5XPO@yw^y01X8AD;J$21FQ zh5w0XUP}Osg?8%%Hi9~(Y!V%58eTeFCP_c*3gJIp34QLEoD`%-veU9+dw*R`r{H=J zn&RKqYwhoNQ3d8<^4PvDG6_eTiP}o1{b%`SjZ5d^05optPyp}xP-C_SMD88%15fkK z_gyNi=SYqKn}b+qdbplzQ(L7qg~fSWRto_8y>Y#iV``JK;dSi(-|%~n(aNB5?#DC7 z%WBH`8#!4h`q~`n^FM8C%d;d022tqXSy3uAQ%-}V@dkmL(8l;bQA2k(H-v=_I+~+M zh69SZYdv&|5=ykmAGGdWc+0q}i0(g2{)6Pes3<3uwPxi&fhRQw-28}r6VCKZi!gD-Ey55hu=QWO^$x!^w~M=VLKwe0X7c#Mj}AiJ;f3C##w^ib3+ge2UV4;gY;Ys-NiC<&OJYpudogX8#7)xHVU) z#XK7s`3CT!7UG*wU=VZZ*xXyd4_Jo>$v$P(4(A_0S5Sl1?K&nK=){_9-)-W-( zd%AKjYqwuund2d$suoOK)&BzFU(ho2&l(7V>b^8)zXs}G!*s!Jb%1S@xnJ!!$pNZp zAnWXa_Rjwmx%7KL-e-xCxfAvYiTOJeII;SsK)^6UnBZt&0G&)JE2z)%9Qw>A<@3zA zg5Hyku1@ofnfN@NZs@}Y3M3`IL-c2p$AHSb2kpdr*haM{o`|J5qKkqEqSEetK@Pow z8EMJG$?S;!p5*($A~bT`_cZXXq-E1W{PxaSo)-d+CLM0a#=h6MTrVI%YC)iE{_CYA zZy(A0az_wOJr$kp#IQU|Ty++bea0+C9srYoQ5=UroKAYs5oi^hQPFlyjR$Z*dojOy zo-NYvB{4IOh%}QhTzffr(DqEuzDCFR*jnVZr2O*;G_x(z9e)xkLsx&Ih5|L}YY<$onuD zy3`GDM`_LS04mvgsR8Ij58&UT+JJKg^$GxBFH=&d{J=i5(nstL!Mh{({u zRZu*=sKYPoYTFygl<%oSMe&cFQqv$^t>9x}l&MHei#~YPS4!iO+FDDH5)rUTW$!VS zykFgt#LZ=U|F*dO3zl-EF!c&m&B+nF$u>fB!VY6T2NPVIW`gsL%4SN%?@HU9UUs-% z??c;pTW%jEt`0n)lS!bHkXBZk*lLkmgjGA0l%&~mG#$~mk<&Tly%~r=gU!)p*X3*yd|wqE9QA!ypkYyf zKw+Si#YgQXSrILf3nWUYQljUft0(tV+mz$pl3`eC)M+T192|42Bl!-{mIqsZMyGeT)!sHnL}B1(y^&mLdZVU%kvEbdfA z@KhrCzq(7UD}=PPUW}~#u@do3sj(R!mLL3T*Ze?U0uA+R)qE@p^K29wzJtx~O({aM zoqDAy5O~OrDyx#R{vFuyV1C?(aWD~IHW0H=^&!J8`fT<uT4`Azn=N^)2jKBT!`< zNCa0OE!ErjRTe0Wlu-OON$?&lf+O$L!nqKe@+Jlsu|PE|@{Uf1>O=l=lr4?Gv)(o}#$>$IE8UWH$-!0s zC59@qcYLq9lA85I5G4Q8)8KlRJ=Xv8SP|*ui;6v`@DeTCKjs7c9Th=7Y=*8jB7+6f zPZi)98ST96LIWpBbQe2pQ`|PqZaZPya3721j+4U_j`V8M%9%$Wjq&8#$yuv;6?Iuz zX-PzF#IM^#ZJicF;wm+#w$OOQFzf69|b-2_+_mmpDJi9C9%q}&PUV3=iMH0)T;2H0tyJ3UbEVw_d(8|80Qp1j3kayuVAp0qoe&^BEP@h zU24*|lY(~~m@Q~B^q6IJXk-UL(K(UEj=aa)6`dKM%`=JHIZ^$Q0=sV{G{)y_O>sGK zLYP3HNQD0juMkhz$$IBt0^8*4xq~O45#TUgd3pH|u)B4J5%FMQWA7p}$_{Bo~o zS(upawzoyTQ19j38}Mvd_f^&B@f# zo*B_cd8DMIeT)Rbb%k!`=H@T)m@~;>$E$wp9p9rrf+8FEoVLc6V|>?kc6i-SK1);e zF?UVRijt`TNVp$xb$$IbD|nFA~Zbs+hH7FK84ezIqJ7OHKCG$zliO(|dc1lxj7)gD z;a)-LEcvy4`s%QU{2O_G*g?r+(7Xvb1bk#6Qcy?*Tez}ZRFhm%i%Rirm8mr2>EuQW z087okmStRhs7EmiTxm{bk|xErH{2HXHn@E(jqX-IHl32st|4c-(=J}qhZs-#`tUo@ zM8LIhRzxSbJTd&4sj!*lKIWFIxW4J^EoEA($I)8Pg}IX z7aCzLdBf&ARte)Lte*ViMJw;E3SFSEoRVGpQ@wsd85qCePBULtF%T=)a%Y))hH#uC6af9B(s`(Cidl) z9OJZe`|^u5pxXufX&!A=%4%i<>*>&yDUXpB6@C*-+*9oN4~?fbh7%Dl?Y$@OeEPt! zw59`5(|C6w#sx3I$$=e`OK_pg+_Xlj=W$hHxpi;%5M{qAsHF(3d$%}2lvHoSIw=Z4 z)&A0B>x0Fgy-}E-V4?YB)M?A{&=FP{lguGYrsMEyzN275;9PFUhh?&?*CqN#u+e@M zN>7nIGqz3v_lDF#{Z#!2d6N4nCJsv-R8Ty+enKDJ6w{!1|~_4 zHyt+7N>DI{cpdR6n35SIL0(C`#++w6TN#%8&A@4ws)k!bb~GfT&gvtZxg=qzWNTPQ zu%daWq5N4*)xxS`hTl?=cEXHjT+Mh=584OGQyX2@d4@;F4k}|`(jtke8C1mT4@8yq z6j?Q8E*uN@XU&T+LpxJx8F~6$InME+7TGJ|T!$vXx zjh0Hxn*K$uo0gaFxzM@9OM`=S^AA^IL>ZP_T%eXza88B*9reW*|@g<^Km=Wz_3A*bujWq!o$tkE-yUu9};bjU>eEy!H+%ZeVnyb?{`FeJq2 zVYPm4IT$_=s2_n?RGxF!0d`XC8qUgwNH)HCom zc$Pc9Uyk!49gQlIH#0mrD*8b0l9;9}xoM~;OPBR$Uow|A%E{M3R{YO?fUSA`?b0m+ z48zLsE@LMh<)RQSydHenN-yTZ^$g%E!?N80$uyNQ) zlei5of|#ebTM0QGx#NjFK9Zl8`r7)lMRaHRt!t93Lg`oDwF(fYNbpQ7(lnc)U2{Q? z3m-F^Dt;Vk2P6+%r9nyXbj70bz1HrQvHE3MuF$hzTf`=^im!z8#=%0$()qisVQ+=- zTy{U0*5^>(nkmUzyL{EFnKYN4dNW9N&!@P(t{F zHOj?f*85bzlemFe=jR}v%ZF$~0~(JXXF2mRi}Y9#PIk?=PkyA=S%e09<5s`rnp)o1 zSNisrEaN{WPFei8TOfGYg=e_2R%`N@QB#`$PNX6T(FC~1xPMl9{c!n1|L!f3qT$zH zE0nm}wzp0mu2%~`G0U;H{n%)`-&`u!>BVOrC|^tW$4D4+7>uzo5WLJe;}|jgr1bWH zHmSG)2i zRxP}y>kR&`aU)BqO2ws!kyBkzq}#*2W529^UAlB0LNLoCE-if>G1mRe=QCdHVLYll zEy4nkW>;wZPBC?Uas|J{%M?C|DFshbdfM34?@NY8PI2nfKN}i&%;32n;)%1~ZO>Sp z3ZzF2;?PVz?Q1eisyEPSXsD~dgG0Lbv)+x{ydi;wrXwULuQMaGeyWR+^sYGci0m?N zXHG@sH%C~XpSs*}7eoF&!3EducywA)e0=1i9QmFC{O#4vhgwy{KgOl130E6fT-C>C zM;Xe~xH&TTjr%vzbP4IJyzwI_!VI_h8My|{H$fBX!%v&}Pvz%sRk&J+1m)wfZ|S@r zta38JYpzZPJp6QfUBz@<15j;cKY6XeQrhHvF8e}Bl<&^a@&oS<*{)-Es|}n6R`-n2 zkprp+DjBq-7S$8-*wO8LJjo;cE2Z+b$FTYfB!rZra!i_ zS@kCq#$N`wIPpcW1w9$$%jIpZQhdMPlMz?eEJf6$FM{OLAPp_wsojSYe6x`}uh@HB z)ocyeTObsd%Km;yMrYoJKYIcNLuXHZ=HiK@p*NEHjQtu~Z1ldlK_>g<`%^$^|LDQX z23x!JKqP}n>5y-8JF-mno82@kmwj-Q}J1}*6Qv*&^AA5I&Ln_YdTlZzk3KiqU4v@Qnb9gUi+4j zF`NH%3JNVQ8h}M>{w(L2TrIpLvM7`~>GtwQ8?fe&uElXPI<0-kBKr`RwEU?jz45*& zeuv#5=dtnTPD%0cBw@w@#U^wBMFH6>!AwHi9_oiu|FPCl3%a_7BW)3=vi)W-US4I5 zMj?auW^5BjXQ=vDt$0>$*4{%4wlrEdgQ)$kc=U?hYK9L5tuMpYX~x(g?9ECe9mi_Y z_;O-Vi;v)S`emDk=CM$G9npDA0p%M%_Pr~efX>Yj{(!$+DVMr`d3pDGn^9?8^jJAi z`m-cL3}Z>zZmmWi>Z}icv;dE$Y{ZC*ZKHYF)@eWtV0aSdqe)|V-yVwtV;y-vxL6rvxf99t5BccIPTVQNwr+Sga&uTNMw)rN z#Ve3|N(*X z{T?swI*~dSM{+a=TLqT0b*{N6^td@TKP2cHb0v@qdtxG^?j09d37Ztgre*e1Dz2U| z^R?ktrpwteB>Xe#_auKdnU^ETwmB)3G)xf`che8`#cl9u|8N!4ak<5`rReQeh(AR% zZfGWPCTQ-?6fjoSpuw!e*oaNZuUjx*W`j7DGB*tC#Mr296*%6zU~8O7t~L`!E}sc? zlhRaC+iS6cb!c4~uBN$NIC#AFgm4RaL?p$-{#MX6zbrUD=_KkuL+(S)^ZIFBsk)Np zhP%s`>|1Rm(na%lkN)s^DfhLxP!!v2#7t&HsGzY-fq+!96KXaM9S!c|AQAVEtly%6 z{dUmvk`l$ek8BT$!4#DkA6H_Ei0kFQQqFpTSM!v(PFpd_+uUs8}El={gHD&Wkgg}gGM@3{i#xLDeGumi1 zr35DQ5W;u7*KVbGyZj12t&XhuyYJ_BW)VBKf87*Hvb>m2hgWb4>E{cD+Syn2=o!=m z7fqLcurk2P6f#%Sy<2?sI6O~vgZ1KuxV@b{FEX$!jVwtYhD zjix+znm88rEuQtUv_GtMl-33pd#1R2p(wyzk(KsSE}EGb%h8mgc}!`vVz@CAzpazM z?<{mC;hb7q*7E3|{Pi~&5mtiiR4Albuev znKU{=lG{XA>(iqhDLExawu_n2T0$RW;KUGRp&ITM?H>^p?j5syl~~u~IJ<<$p2KRI z{fPlXp{Asp4-&1%ZI|-zRqPY!U5RZc#3uHc3DhmXsC(i2V5%{2_JYV mZVYo>_tpOovf}aL)X#-EgBw8SO~9+bAZba34<+KC1O6AN0nd>D literal 0 HcmV?d00001 diff --git a/source/index.rst b/source/index.rst index baa188e..a442cca 100644 --- a/source/index.rst +++ b/source/index.rst @@ -5,5 +5,6 @@ :maxdepth: 2 :caption: 目录 - first-steps - the-game-loop + 01-first-steps + 02-the-game-loop + 03-a-brief-about-coordinates