From e75eed82b18284bb9704b7c8115351e9ad4dd9a7 Mon Sep 17 00:00:00 2001 From: biss Date: Tue, 12 May 2026 14:53:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lab3/lab3.cpp | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++ lab3/lab3.exe | Bin 0 -> 67928 bytes lab4/lab4.cpp | 2 +- lab4/lab4.exe | Bin 0 -> 67770 bytes 4 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 lab3/lab3.cpp create mode 100644 lab3/lab3.exe create mode 100644 lab4/lab4.exe diff --git a/lab3/lab3.cpp b/lab3/lab3.cpp new file mode 100644 index 0000000..729a02f --- /dev/null +++ b/lab3/lab3.cpp @@ -0,0 +1,124 @@ +#include // 引入OpenGL 头文件,提供窗口和绘图函数。 +#include // 引入数学函数库,用于计算正弦和余弦。 + +const int WIDTH = 800; // 定义窗口宽度。 +const int HEIGHT = 800; // 定义窗口高度。 +const float PI = 3.1415926f; // 定义圆周率常量。 + +struct Point { // 定义用于保存二维点坐标的结构体。 + float x; // 保存点的 x 坐标。 + float y; // 保存点的 y 坐标。 +}; + +// 定义原始三角形的三个顶点。 +Point original[3] = { + {200.0f, 300.0f}, + {200.0f, 200.0f}, + {300.0f, 200.0f} +}; +// 绘制指定颜色的三角形。 +void drawTriangle(Point p[3], float r, float g, float b) { + glColor3f(r, g, b); // 设置绘制颜色。 + + glBegin(GL_TRIANGLES); // 开始按实心三角形方式提交顶点。 + for (int i = 0; i < 3; i++) { // 依次提交三角形的三个顶点。 + glVertex2f(p[i].x, p[i].y); // 提交当前顶点坐标。 + } + glEnd(); // 结束实心三角形绘制。 +} + +void translateTriangle(Point src[3], Point dst[3], float tx, float ty) { // 对三角形进行平移变换。 + for (int i = 0; i < 3; i++) { // 依次处理每个顶点。 + dst[i].x = src[i].x + tx; // x 坐标加上平移量 tx。 + dst[i].y = src[i].y + ty; // y 坐标加上平移量 ty。 + } +} + +void scaleTriangle(Point src[3], Point dst[3], float sx, float sy) { // 对三角形进行缩放变换。 + for (int i = 0; i < 3; i++) { // 依次处理每个顶点。 + dst[i].x = src[i].x * sx; // x 坐标乘以缩放系数 sx。 + dst[i].y = src[i].y * sy; // y 坐标乘以缩放系数 sy。 + } +} + +void rotateTriangle(Point src[3], Point dst[3], float angleDeg) { // 对三角形进行旋转变换。 + float rad = angleDeg * PI / 180.0f; // 将角度转换为弧度。 + float c = cos(rad); // 计算旋转角的余弦值。 + float s = sin(rad); // 计算旋转角的正弦值。 + + for (int i = 0; i < 3; i++) { // 依次处理每个顶点。 + dst[i].x = src[i].x * c - src[i].y * s; // 根据旋转公式计算新的 x 坐标。 + dst[i].y = src[i].x * s + src[i].y * c; // 根据旋转公式计算新的 y 坐标。 + } +} + +void drawAxes() { // 绘制坐标轴,便于观察图形位置。 + glColor3f(0.75f, 0.75f, 0.75f); // 设置坐标轴颜色为灰色。 + glLineWidth(1.0f); // 设置坐标轴线宽。 + glBegin(GL_LINES); // 开始按线段方式提交顶点。 + glVertex2f(0.0f, 0.0f); // 提交 x 轴起点。 + glVertex2f(500.0f, 0.0f); // 提交 x 轴终点。 + glVertex2f(0.0f, 0.0f); // 提交 y 轴起点。 + glVertex2f(0.0f, 500.0f); // 提交 y 轴终点。 + glEnd(); // 结束坐标轴绘制。 +} + +void myDisplay() { // 定义窗口重绘时调用的显示函数。 + glClear(GL_COLOR_BUFFER_BIT); // 清除颜色缓冲区。 + + drawAxes(); // 绘制坐标轴。 + + Point temp[3]; // 临时保存变换后的顶点坐标。 + + // 1. 绘制原始三角形,颜色为红色。 + drawTriangle(original, 1.0f, 0.0f, 0.0f); + + // 2. 绘制平移后的三角形,颜色为绿色。 + translateTriangle(original, temp, 100.0f, 0.0f); + drawTriangle(temp, 0.0f, 0.75f, 0.0f); + + translateTriangle(original, temp, 0.0f, -100.0f); + drawTriangle(temp, 0.0f, 0.75f, 0.0f); + + // 3. 绘制缩放后的三角形,颜色为品红色。 + scaleTriangle(original, temp, 0.5f, 0.5f); + drawTriangle(temp, 1.0f, 0.0f, 1.0f); + + scaleTriangle(original, temp, 1.0f, 1.5f); + drawTriangle(temp, 1.0f, 0.0f, 1.0f); + + scaleTriangle(original, temp, 1.5f, 1.5f); + drawTriangle(temp, 1.0f, 0.0f, 1.0f); + + // 4. 绘制旋转后的三角形,颜色为蓝色。 + rotateTriangle(original, temp, 30.0f); // 逆时针旋转 30 度。 + drawTriangle(temp, 0.0f, 0.0f, 1.0f); + + rotateTriangle(original, temp, -33.0f); // 顺时针旋转 33 度。 + drawTriangle(temp, 0.0f, 0.0f, 1.0f); + + glFlush(); // 强制执行所有尚未执行的 OpenGL 绘图命令。 +} + +void Init() { + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // 设置背景颜色为黑色。 + glMatrixMode(GL_PROJECTION); // 切换到投影矩阵模式。 + glLoadIdentity(); // 将当前投影矩阵重置为单位矩阵。 + gluOrtho2D(-20.0, 500.0, -20.0, 500.0); // 设置二维正交投影范围。 +} + +int main(int argc, char** argv) { // 程序入口函数。 + glutInit(&argc, argv); // 初始化 GLUT。 + glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // 设置显示模式为 RGB 颜色和单缓冲。 + glutInitWindowSize(WIDTH, HEIGHT); // 设置窗口初始大小。 + glutInitWindowPosition(100, 100); // 设置窗口初始位置。 + glutCreateWindow("实验3_03毕爽爽 图形几何变换"); // 创建窗口并设置标题。 + + Init(); // 调用初始化函数。 + + glutDisplayFunc(myDisplay); // 注册显示回调函数。 + + glutMainLoop(); // 进入 GLUT 事件处理主循环。 + return 0; +} + diff --git a/lab3/lab3.exe b/lab3/lab3.exe new file mode 100644 index 0000000000000000000000000000000000000000..97954c8818910f4b9f4ccf952430a1e1ce6995da GIT binary patch literal 67928 zcmeIb3w)bbc|U$+Ta9zIdr9kFph}yxPMeF9IEjEU*sJ((!jnS+bUafoudQ!$1Lb?w@(3WBx%QzwdJ{ z??p#;5|8!s+kSmNmd-iPdCqe?&w0+}ef7F-=P=7>j1}N>_AFz^k<#Vm-!p&pqk7S` z&n{w5&;5rb$6dAmu%x*=lJX>y@vda3$I~8)#o}qt?yx7>8}meBo~ni>PfxrfylUaX zc}pefpr5gh_g~CBf0uVJ+r!wy7cn-;Zea8C@>a1GK)L~+JjRS-r1XJkF8ZcC;3PL) zZYt0fL@j9iO~3`c+EDOtuxyLGAfghgln{Y8!q~wDBFn!MjAbNgULJ+Kw(9KcXpphe zY#_>gk299A)5*eFl@9l%0UNs+UnCIe4n6Fbhq1O*9iemxz;UYZ;zKmo;$yqKjE$~J z3dE8*sDMnY5T9~@r?+2yiZ1evk0GRd~BDO=%u5a9+{3E!-x1c zQ^C5t+%Dm0yj}L;DC!7r8$Pzn3yD{+5rzp8d<-ALYo&s9c?oarCJs1qF_Lk7F2QFf zKDNtCc;#z2xdbm5iNauwJ2LVhQRd1Go4yy>n4RLQVLe$>eiEU;QwqxG_k47$Tr8vi=OxQ(!eptph`K zrvMub47H3+28up650#UFf&G)L_b8gZ2hE1qz?7?Z-ZR$%JyV825BLrae`K`ik)MDe z0097mMV_HilsN-DAGf6MIEBM!@qqv*GCwB*hunYgyR&Dh_~)p6WHjy0tX_^*ua|IQ z?*%bbg6tA0|Kd{^g@M65w0xIr`7030d~*rDO2Bc@{Voi5v@n1;L?jmoLB0sIiFwcP zzIu|H)RO>1i|3FAmkbtXHi+_fs2!E-(M5y)R|fXK!uHL3rjV4md+l$B>;sk68;PYAkkLK||oO6&?iA>6!Y<`Ll^W2Q&tlf)ZLpOW%d4YAro zi^Ka-d1&!Ap1AMiN!?R{!P=!B|KN$b!7;MmI4EREdkCN*_tm0x2@;_FZ|E=4z?&=8 z$$2mSE65GDhbaN#FjUQ4w~)iqfSu$)dt%;6_dh?txW^Cdf0OmT6HWZQiT^lU=@{?b zp_XHCrQ?A|i&6U*UZTMQQ1%+4FN!|C)_OJ%_}n?pj%B{Sj1U*^1^K`rS}yFN+|c58 zBN=ixLz}%S;D*9guJoEw$D047+AVLd7 z5H5;BtG#fyz3}DRNf7@ORGBLJBI~@ZZfANP7yH$}1W5u9d2bE0(@>fUxX=q2Fc^VD z>^551DcpwyF2>Sm2~aXX$$(tZ7e{ZK?*iJ~+vdXx>E#pKsAkB!YhY^8-Z`AlM1X_( z$3Ox@?4zSaUl^SzCm0BgBOM>|Ms4UXi=p zJp-ezz~R7&@qFs_>&O?(fj{p!1Z1!N7GI!TDk6}II4{$nbM!(WIY%8~r{VT}+Wr0HrAKZkHyx4PywEqeXj|6}b z4!jw_+M$IDsP53>ZomSA-wh19@7o9XVBMte>^A}LRB->)*_O##^1?xPDZ*zRh+PbX zT|fuT#We`Q2>yo_()t>%P;vJ?udap(5JYz%sXgT0LZw0X1cK7U-*qba)kGK=a(|P8 z7|6~Am9GZGT(a=xJ_7!Ix`?}1;Ow%>#~3TRmRN9unC;~pi!uG(+t6gFrG)G!ItRp; zevk+{Cs_}ln1>c0O z^yT*q`AdpQzgbjzsi4Br72Z$Yk#A!bn(bjTGE zJ@X#?A{hM;HWSKQO9r@>Se00kD&C1)EWleEiX~j8RzE4KRZc6gY6YWQ>@6?_{lGBw zPO&)#et!b)n3aG#{O1smcQzuN>g(b<*rC|{@CL?yS+wH>@(b_h`FA6Kv45(w=wHA8 z%c7n4Omzl|9z27u*l6Y-J&e6xv~!dY-T=ZYKnQb$ae?rh4PjDt(5qj7$4u8pVC{cn zn#w={YU?JmYek3bA}OaO3;)X5*6ih+d}UV?Wvi!)KIla#;Jt0RBbjb-1NLTQwyj8q z+&+BEk#hM5$bpC4Yc0^#9K_dJ@bDiD5&{hP_e1WBEu=*pNq~Qc4W}gcA2#ftSm1FE zCIP+$;E?;2RrOU~1x6p?8D|{vKEu2ea@+>5%q$mi?_$Jl>T`U)MMQf+j^g>)ZzwEc zVmh?&7uO3EQhqnDem=A7O;Jrv3BH+2@vnbRO+RWi{cAKu^*iW*fj9&PpU*7GYI=4Z zuj5U3T21?8(qi^O_K;u%Tek0c4Njl?5168j{H z)4w)#fBib4z#d5=CQ1BOav>?U*hp-UBtB%3_$xtT@kZIS-Nt>6Yzo^5{jFwwvRQ#_ zw!+qIY^^Y-YIZ#}8*+c@Q58YGW`H7>eaDCmf5`nYUgE+1ZrR??)y;&!h1Q1((iR*s=()z2m?RGh<7@jM~3grkFbEkRELG%^MONk#hHJZ zI(zmRpcAooac<9g^05S_FMw_lpbj8BLtg-Sgm8!4PvVS%-0WqL$XqVGxa7Am0N)?I z`hKzj@EONf%NDUN!P10ZXP5mLXv4#2mwij7&&%}lGX11XKP=OSWtx=fmIKsYtq;yF zyF3WLw{tOGIR=!d?k@?quN0`K%Xp53V?wb>QM^bds z{SM@4@toBp~k@zFHg}HU);e$Rh~wzMObttDTo#h*BX+V(&Guza%gHPJFw1 z@5b8J<5)#yzKJuqiAo5#8q->Uwk-qxsltit;C)yYik%59iuoFj&I!0_2?uTRsm&(; zRPQ$@Ty~|%jR*D@GpxX&3!4y|3DeRZTBbOzO@b$jFfhl)-2fp4H8<;9cW1m#;zK(&Z z{PfNEdf!f*O{C|L)ruzSp^|5{FvCP03Tsuti$b+3tV3akD%^lVS{1HD;SW?{0Sd=u zVVGoky$VY`56=}9_t8=|h**&*rc7X{wNRWl{E&hRjZL`GA@?8%pxwn)OUqs_y7+;m zrT9)S_0$Z0w}$rb&u7{$m-iovN@0dlGD9iM@X!lnA8bBo0NeKuas!8Bt1|2eu&KcQ z481ORw@coK+%;VA=QA#l4-DNS>noLPen@bJ*nem-eD!I7l~cA+->Nmu!_-GZ3!mzN zXJW_K4vELGWz3^36YU&nzvV4~2Nfr=i(PnNCcHpN?T~x-G#It6QBd;Wd~0x&sDfhA z!@fMZdvmWtvrYatiyn*9D3n{U6YwqW;ry`bQVu?}FtLiD&u322Dbdivf5UNePSFot zhDdpI<_B(XH6%dl&cyPe7ZGOw$V5+;Ql#xq-nToMd5a z8Z2eKLoK7e<7H%N9?=`#$0Ird)9q-yW~RnOp2R6c!$aekO6I;FDN?jvdG`okF@B(*Hukn(ShexK97zOrwUM4%JQ74W97vy?kKEy%Gm}XUAZet57(zp9(a+ zy8m$nw_WBRv1Ax>&jD#1KMcBmcdv>)ZD!=6BV6di-~8Di0aejr2M z&rFY3HAD&xPLB{63KYXxx~9Ppu8(NkGF3D9O+Q5i>OrV@8&?tGlOJKYSAhT@1XVP( z*uyo>tOFFX)m$>L-^0?&U_pRRWUi-`6e6>8`&(qzD?o?R?*OMF0vpUBhL!`U1kWnX}& zQ07rO=^mK!r1#>h=+UQmsW3fnV5&G>@#>#)fAWtPeSx7N$Q%d7!^Xy z>G;HrILsA`ND)~`$U_Uiy&Mas=QHX54ab`(7^WG0sE#DJndkWc#_4iS5}rntXGB*D zJa6GLx_2_@KRvMj^zD1QhWw|WrG*ka{o6mLX=NZoM~0^Wr`*ZsNkp@9kZw>w%}xGO z56qLf(Fd`}X*pgyRCfkvVB=^ANq0cfz+m%I55)Z{R?NV)Iw{?b4%*vGo#VsT-unio z3Tf?7oW5$p04Dj@aUVZ)BtIF!z?s-;!QmyKeIj#^;Hxb-g-U`a2!4eHFO=|Bz%g9? zlQa(KMomf4!-o)``NHV6ek(W)x$8UmiSHvc`Qt1KB_7H)B9mD%pUn4W&Tus_S`;{u zDZr#$ka-Zk5Lo^~;84|44_w@=2n@P^62_v^{UdzSg|PLlQc4zopC|5DkjRtM32gW> zCoxb+$idg-!c}Z1)KVcRV-A)yEgpQ`QyLg@4}&;4+q)2b#OCI_AEz9x zg8UiE(W;0RrHfms-67nc8a#3KTih})1Wn6$cwFM~%)OcrRcI^1!bL8!rEGk?MECaw zUMsUlGc1-$5&X&JFsTXk{lysZ1LJuRR~~s^E+Rqk5L*WK^W0Whxz$7KT8ZgGM3c7y zUIQf#XSaO}x7dpgTmpc|KKd2Pew3h(k~7`*5y}qKQuYry?q)Ol=>MYZhdFe>%s%=M zWk19z?4j%-P9dMNk8#}XX7uyXZY&4;O|`4iNr8T3a$B@9+{;GZZ9*XBrP#}vl@2e2SZ zBP8?gTx5Aom5uBni|oUSEFqa>Ct~P72rNlMMV85TkiK3>%xhjSfZ) zIR5`Q_t^s{%I!Y8Py?%R8_eiF93#tpuFXZ3yN}yOc1HIhvbo&ng?V;~?e6m#)JXT~ z!kR}4KaKlv^5i}|V{;#V$MjkR$3JWXBSaf)Ru(@>c@f9XeoMx6?qk;ZfQ+xA9YT-X zjlcKV5_qh*qrF3jP75;}RLnWfS?>hhsiBr)x|@n+4jmW_25G;4J@Mpg%fTf1JjCz{ zF|ZN~3hY7mN&+2n|H@Fvk8xzNEN~112sp&?tho4b#v4ClHojJHGKY!#>%7W8Ine^? zuzpI~F0)M+Z-Y*ICkNqxs2Xgr*5&s5BT>r_SlqR|02`EuutI7; zCYYSdhY3vpNH1D;Qdj*o1pLUmm4$EO6vVV=oh+5n1ZF#DDLU{qSeH&*iXMGYrW5-!8SI#c+@%1} z;~r6HzLcXwbB|4abO&@m7yN7vq*oolb^31Lr2DmdKn>SP_xEHDe4j*C_}yI2cVbb7 zTzH}|lLAwyE!JGp{rURh`#%{r7ai(+&{_rXE;sMa%W+XplFfK)ULw+_1%5J0E0YZJ zbYH#`x8u{Y-mSzjcShC*3+Pxi$lL#PqlIXk^uIwm3sT<8ioQ5TS*jFFrY1H30NEB` zS-uGy6&!S;7!(^LZy`1~9G<#};1lm0@W0`rjT07BB%JpmJTmz<-(R=Udt#a zGEJD`0$9}Uk&BeWTqyTz?n3%;WZa{+|%K4TZE)Ept+CbIV8n%B$!WcrYaimxKS_B zwgW9|f<|1znh1y{tuJ87ZE4M2+SGbVbR-d+l#)8=Nh`ZQDQI%1A%%B4X!fD`Y%F;* z=`rM8x(sIYV0yR&Ap(c5!i?7k26~EJc8{>z@~gRQiRaUIH0BumQO%7`Tm| zXAT^yU0Ra7GVsu=yfiSE1y=GLuig9e!15CT09$wPQ(kKWW4}KTknunBzqm2*cnD5q zFzEP+4m}Fy6Ze&%@O}hx;k6bip5y1o;`tv$3lB(^+Rl$L_GmQSGnv6%OGXC)Lv;u| zEx_BQ$je>f)!<+*Rp`+e!HCO?`4$rb2l4Wd`>R)Ra^@hXyJO;<`b)%U@C2!G$o;!3 z@t6u7dp)0N!t&*rv#8Ac8@@~}9PwY;gPz&Ud>dE;`%4)DH3fvK22vO~NUoi9M4Cu*3 z!7v+{byOzbv|riyOYN1&w{3FrOJtRgWtE3NE{ zj%bt_Ml#$LNu|R{qZ7a52^*1EXB^Oua4vWjJ-UlepYIjbcwhXRZ@#+DC|mcrZ@l!> zOHX|d z_j!5B%11?t?_;9B3uSt2Sd=HT{IuVb+b?{{uHK$-EbZxt_k{2prEoGCPkKtL8tQyC z^~;%Aor=V|dZVFaB)!j5+ElX@b^L1B6HazU<9j{HP^>Ggnm26oH&)j+Y+ufTp=3G| zih82)RLT?Y^rRwPu}EhGzl~}SdrE_~4NXm)Qgb{#EmpIMg`c!^!X2K{mij6sMN90ySbVS4j>~QIgwowmwsiSs&$1N#I%`>~ zbXnI5&$6!N9#3g9oZb_P-iE?Fp{M$;gB|v++`FNie$@N|b#o><%y=?Qg(SEj=4=}0`rJf3ZlWV$yLy{k8z+{YV3)=t=bS%+u$zH~U{ z38g(DlZxVNwhJcXY0y$F_eRp)o_74G%v094tPj5DQMx8l;ogoojD_F(goro&FfAQ# zk4HV|vlIcAb*xhA&D3spB#nN%KWxV*X#v)mKzisN?@d#0bEjD0Nr#eM;WR9VsuiAn zk#Mww3g`e2tlSI22_=ZKs_?^Q9ZEiBhlJPZ$NgF5ku1MQJ1-`3^UAKzE@y&H{I)Fm zW7%an-V}qUv&zS_%Fkt$i?ibO;jH@Mtn#TW{l>D&XR^xUS>@3zdciDxSe87SS2^v` zzrU}D--clqz@ybdxd9rZv-QH z_dd^-WVpRM?P&_d5N=Z|JjspAJ!{slTDz)DSor@ndbB>EYxEYUT?N#+wopDeQ>x~H zOPu8_K-+Vl&u7LN`H#aQsjrPW$YXHlp#;)Ru6s>jXb4sd;-WPkiHk6X5{;kUb6%?L7q~? z7S@eCrF-#7Adh*2J#`&p4Ei1dJB&P~zr5De{#5={oQre59Yo$BX?rahNPmRS)5uREy<-!00>}rE-h!tVT#t(^INVyIEP){cM-d! z+szi`&vjkQNNa98rwu-D`BZafKAz8w*uA;Sn($@;9gfQ{NCa^P z3z-%l74mvyx8MO!l&NZWT9*Gg3!ahX*Jb*q zOc#7wv@DUSN2WK)v_htL$aJSn6~As-J|NR0GJQ^_V=~Riw1CD6u4`l}N?4z~?Qh%^ zZ~L3@i2rJTdnfCP_BJHb-SM?mjNRy}3P;1~a3#*OaTXnIlBctEE|oy3aJn{>O8e=s9Qz9@*Tp+}qu~I~t)gKc&i@I9v)XofAdGuT`86?c z3q^5~n$6&i{MvA6j|OH_`L*#-hvW;Yf8=for(0s(oJ)tluRWZglig|@o`sX_)9$8d zIGkYr;BJnlzWZ>i&T-;V^4`Y{uXSgqt z#?Do7#{s+%3!yvqQVZa`6E(@S5yET5fOtJKc)E_^W{&Cv)j;Y^cR?82AaoBU5=MGo zBFrj83z)ZuZL;!4nAHf(NDN2Vkq#pfqI*Sj)5z3j8w>4@C(~>@6VisEdsi$J6&4SX ze3AHWqq8^Gj&(oRw>{p&P0sQ}xl@$#QA(vdB5@cS2r*+%XCfJir90Wj@v@0%Z>pQI zuP|7A&+gt%c9f;k$!Hio`6T6H?L7%L5B|Rex3yw;=%6cF84ZV$cvY9oRmP*_$5&IC zvgjnltz$aDgbQKVEhb#h58~{Z-;hC@TeIq#FhWV3Ob=gWMxlk<=#kaB^{01d~#)U&B`?^%OuZR zfouO{wd)Rt5{?EzowgXG4lKM64tVO5MUzIb1G^8n^vS}5NA5x2I#AhTz?;n{i?+Ni zun3XZGpGk0$#*$FfAJy896pGIx;qb0?wcC$3{m^p?qc}GjiN|k@N@O|T`ce@R?OL2-{PrUyG}ls;91!dO15|37Q?eOu@FkBPxwUnViRTUKAQLs>&6&9|8E$8MH2L z!oI8{(jHE+e}Q^8yI#bvIbE%&Yi_Cc8%>n~e^pDZ-wq4<8k=i;wML_Vt5N00>Z{6M zU%7+1Y^|F7#xz)Y(_>W!jmn04Jipf5WT%@yeT!V^1r~ahzp2@%_SHff$Z1qJG#XoL zE1BEEXhKy}u(qa|lxboYSv5-h>RR7cu4z-VueO%Wu`ucywzaZCTiIXN(73~>t7)q9 zHCF}<(O|BHP~8GRLre44hMM}VhOZGyU1H$`8yjjHwzl|Re{)M?eG|LJ0#`S*G#Yobz;kMA>S~(VJFF^SEglFpnrpTOnvL3q zhF}wWr&S5ZXx{E?gd&apYCn9E%(lf}@2{?@!~ka3TBx;^LFup_3)tv~v~>+tHPt)V z5(`Y0tf{Z8@>jC!END%Avwy3<(Wt6M3qS9jCU(75-w3vYTa7ygf~o6U4e5&)9(aX^s3Pi#7LuIU&)=N)WVT{*3{ex zo1lx9TUFdxjmDkz4cqJCt3gtwX$!2=(6oi!WZ_|;bL;!bM%xfaI4#(^!BDQ)gm`L- zMP_UA1*+K!C#T1~PnNgZ|R@OJ;&FiKFIqB3ku{Ac7 zsykW`G+XL1)@s>WtD*suK}|Ie(CGZ8dbZB0lLoKGG~j3D7Tn(&q)_ME(!|zVP_jdy zhC4}h4NSkmS=D5#+UTsRu5R@EgRH`W`dgcgin4VT8%Zz(-1_Dww#lmA3SVy&GgXrz zVtozN+H7GEu%%x0V{HQ*9*$a5htYA%bXf2Nj46e7s}n8gtGp8)A^nRiWn$ju#BAOX z^w;{EAQ;hWV()TRlPqP%mK{d0wV@G5dS)-uKx>51n6$|6nvCWKV;jbzcLtQ|#)dkM zYSzA$E=QAn;c+$U#)n`|)UBAIr-H=_qe$852bKtL#)PM z3CG&0AqagejJq8eL_dqfE)5}@#622D^LG1;@ouYLE+MwpGzScHA~UQiU+s3^jwUQ_ zvGO*s-o#3>Vk7?Pj2R_F1gA*}-OEB&MN^=rx_J%TZ9#VWY07GCh8q}ySA7+0x9TyY z)iq!M%AieCGV8Fat9_U-#NcFM3v63F7~30bn*FTPs^nIyTVrgi@fnD2T~)>M8nq&)ZHHJ}NAyaumct;RbrxT--)lpXirmGg7lPMw0-<&pOIR>cR)kHO4%vIG8q=>Sq++E-)k&*b z?jB(Esv0rav9`muso8fYdOLM)MB*%v(-yL@3wI~hYk^h&-zAN+$ExCCyQ#U7?X_T} zePd-K>$5<$a1pjo?m214?$~qw%yn0>++X?{u_vO%nzI}vYsw9#MB$){E!Y&3%X45W zjS;b1tYvO>^2}z8X<_~70*$5bGOd&@(PS<+Fh^N z!14<6aUU=d4flC0SfL3MoAA716QK6z9uwl&(HASq#M{D=qyd~qwKw+3)|t1Bb;|TFrnEdL{mYRXN)V^n5~}S957z2~LkLb}cKsbpEhw{)b!_8E?o_=-oAc+7H9=2H_meLSTBaQ>oW1=|2-|RYSn7-Cl26Oi-(z3N7hwrSlzy_3(sS$ zYGRF>cOe6e6rREf;UStXgMPrcp?nv9JHAr zYTaK~OMlH`!m`RVctF!WY?vhnjiOcEtZR34CEdtMA#YXw-{C;3IwQEL#aIJAzdOsY z3B(ld!zz2TG3#50EC9!M;J{#rIsZFoGObi8*kr<=~U3FOxX*?i%aDnp$3ei}ZGUsQMxfJBe>E z6w61N&u@cTO=;<~DvIYqJNB{`@kijP z|5QvR9<^K^$~rFfUylh$aV6jN7{2FG(Y(}uP$mG}12}E?rs!y0DjIhIB%|@ZE?Pm+ zL$SN*@nsR0A1CACf{9?q`0jgo$%}6;AuoMF;&8n<K|ncIj5tpA}M8^`M=wYS2bOWR+FPmcptY9Y_9O>NeB}tI`~>z=5a!7d8RO zDEThS^X-VgLS>sda-E){@LXhaT*C6IzfJ%m`YRgRy>3-|BEgZ&ulYc4lU8-kaXluE z2RK2KJ6VjpR$SDFbd>|=qdDos1p>bB0?wCn;^6Uqc}0mA^4uC6wg-@A6JqSFT^pGSxyhj?>W6N7oCSW4!szPGL4IJ;cyf)+K65zAA1CrqE(f3 zsc}&Z5FeE;=jbO)H7@#*2LaH*SJtJ*#Z!Qbad99E19arL7)Fg47lgCKfv3iW=?SiG zN4+Z0xHx8dramrIq@CpUA+HkuwSDQvGzKDhvI$v#26P;d@@`OfKsH>1z$qbEijvn( zX_ONh~wS(Ljq%A*?PphkI2qg<>} z?$9V7*C+=x%Fk((OEk)D8fEeXM}L)jHOfac${vmKE{*b0jdF!X`G7{bRHNLgQ6AAK zmuZx{HOgfc<&ID~1TQJWN6e?%I5mBKh2>)rYPNKJUpB9DTGKmhxFKUnD0gJv05378 zbcXH=qhPzbWB9EV$`+l@ba!v;KE`akj8~PNk?>KR(k&B%vuk zB;>qm4)7-aRYsWg7Qx zjr$Y=rjvV##yv4B?khCzZ5sDUjr#(Pd*7_MmulQwHSQUW`|m2w>Q4Wa=v;H$Tc}rgsfrTQ&tK~gt6rWSXJbJ5h6`J&tV`{e z>Hjnd-EnwM+bjEVGukW$AEA5p*-jPjy@b4XWUgB{pBvHY8{8AJTh*9-z6m&E&=h~z zTTwrnReWVfgth^vA1Pn$;J4Re|F^aH+`B)kzkZ1J&N*J2&9k_pfj+;h;|8jfm)iZ& zJ#(@9TdJzeRPFvQ0}hmdri6pQXS-Bi(9L$y7qL*9pITd;q1Ge`t~=4O5s+D>mltIW zd1+NyDHF9?9!6QLAwe+fQu2gNdG_MBLG7Vr$L!<@g1(TaAd8b_=MmIQyQY=nG-b+z zmt)h74@(^W1_S~L`(%5aV5{2@#}QeVvSAzGLgp+46qOA}ke^oOJ`wDiA+zue@^I&+ ze4_$5!Z$Er`FODKRA0Q;)ScdjLGNO)lvjH7pNDU>f%N(7m7~98Up#Kgla8iRy$MSi zdWT0}hY><-hH?1l77!dM6`K&!a5s%^E^~H&4S>41-UFOt=ZF#qfpZORE$OFEkC=2m z0-Q}baReXThW~*I>N)GW5Z^e4X2Lh1VAiz?CQ~4a1S0w=h)4-%>CT-y$!n&?scdXs z+FI+&Kujx&X3-HiJ4u*nagxGUN6}Q^lpzO$*{)TbPL(_Hh8z}ac`axNS>E_R`3 z#JKR-xQMJ87c|3=6ggw2(5rINp}X1LoRE;YwrXl79O=(bqN#|zeKGOs6U(Db-{Ag3 z@@OKPd$cxGoojrJ0!R49^yBMGrabNRo*2h{;NQ1AW2QXFWL?6BHNG@kI+9 zF}|)x&UvY|!~>{-`tUKjH}AaExabCs7#Gve7vBbs^yhRpy$s1_BIQ5FE|KS=nlzZ> zAY&V^}oPK{HRy8G@VeTF`Etcc1 znY`QeoM|z_A^TdFve;tNVtwhpbnZ3nIM02d znym+4f*L}e?Ebpa?602!XEWYjuJ@^sTJ@Ku7u|z(dhmtlMd#sS6wpf1c_|N{0uJ>+ zey+QmvcFCPM|k-3{dKEpA1qGsmOa~ckTZT0Ogu^+4w(nh0uIPK00}xEHv=-_$z`z> zrd0#L@h!=Pv&zKj22S2}0>|ks6a~cf5O6*rahxMg)T`bR@{q-Ti?&NubDmyE@0iwb zRXAu+LG?~CIEdaU({W_)yatPj-XR>C^{q>JZx!f>_=Dc*fd|_>*VOBJvd{UBrW_+h z&iHL00#oK5m2!q{Hs!%m-RMlLDYFDZk^VbUdW6f9J(>b&$(Tf8xp4>sHk7B10*B;r zo~&>jxsvHefe1T&gD|X>!;E^#or@PlM1SQNak9Uz0gmXe=~rmGfFt^gB%o(WtV`*2 z>^%CbAI;8RFT!+Q%75-RAx+U@Sc8+;lP3VE{otIZ_(9B@`(xaiSuw~6x-aK4%o zr^Cb<2hPy4Ty#23oZkZH`#EvCO`OH(qML8XMdw}0e@iIsH||mVPuL!ZZ15Vx}=DeU(O%@YSdg!uGA!Hl@H3zDhWlZf%$H zjbY#jU)Aq`6Z&50P8aufS1EGD)p-p_96F26=O^~gdMbTL;@}|@;OxRTNoHNjhHYRW z;+Xn1j1A`k#`{b*B#M73<-sNq@+2%Kw%lJz96C$PcTs$%o^xK$Nt|MU^Ig_6QFg48 z5(mfTzzN{nNk{d?5wkD!C)kyJMoN`^>>NaXc0T6O2?0X=4py??AAp&1_d7j zbH!&tPU$Xi$j&=a@n5U^=y~Wqavr*W$JCv4`8RmDb;bEhw^PjQFJ5&TIKk!TwuZnV zYtYzq4i*(9Ov)|?W6npNx15hBe9g2*4mxtxL?iB8p73+i8se?o{BSg8-3eNZ3AJqo z-AVB4fm4RTC?WvKW9bg^=BiTAA^Q|Na8NMM$3~E+HraPD0W!~{&c{BdK}3v{>FskI zIOnp@e*i~BEgmI8J*h7K!g00s-U8hdGuTIs6oEr}(ayygxs-1lL(P9mcX=*4jE)d} z;XGO4Hk6U%Wz#;>N0JxL!#ovpkEtbsc`4*eZQuiG*=&r{5Tc}q#`Kr*1zMYrS!mD~Y*SsU_v++&k z8?GfzA}DEkU69W|rzopYuzm_5kjtzf3*tViai_5F z2V}!RjeBrb++WbR7i!!OYupcO+*@bG{glSNSmQpTaeqSN-Zm@lU(>jkXxxu#+($L; z-Lv98rg8UZ+>dG8U$nT(@!mDVcvrE`@?I6|Y#uJXH=(r1700q?kX$$y5bH)TW}yh? zQ`##+0ox^Gf_oK7o{(#2)xW+x8aW6)vJNy0Etho1U+($L;L5;gd<9>Wr z+z)8nPifp+HSQ}k?xVBfeo*5+rg3l6xNp|DpPCi-$29I|H16FR_gxzIu~~5+*0_&r z+!Gr24vqVnS#ke}#yz8P@6)(PE$(uD|LF|#yIR{=vz1!g*k&}jwi#Diy zVUC6(Gp=ncnboSmCbQI?9zmb(E{s|OyoGv|_pAPze%-QuQuXrmI2#Wu-*8w;Dn<%+Uex2*40@+e3-JsrV&M?p61(c*kYdCLWHuh6(BH115<(B%F>i@WUiq8a*K z`Mjlt@_C!4(&s0Y7H@&i_nn8&TQV!3x5+GZUps^D%IDugy~+z!e@*Yt>-$tMPmieL%^hAmwK?pWkMAo%EI|nd7ouv(nl@@Qoi0e3y5ogJ)Mx0G%se8)| zx~mcQ7V1?#srqaB(X_rz_44#M8!uD7;ktI(S;o}sf_#2_Ue*kS zqH#Z}abK!&FPjzj;~IC5#{HPaeU-+&VpiOr)3}#v+>dMAH(1=I&;JQpookk{dQgpb zTQAEV^eQdDGyD2|-;=r(49>Nev1C@`-6pft{n!k;tMUF8>Qz3f`fG;qUZ#3^dYp}; z$~R`1WlX&;Xv7^*l+{>X&y+k0Qch1AIQKFIn%B|u=I8P{i;nU-8!zc~!MD)sO3%aV zESZ(p*<_Yp_q7>xS6=rP>Q#PN_1E+swZ2gG^7J?x4=Ueq-H;ss%wIQb#9ao_@ANMn z@RLH@Q!~^kjwc_;hHx0V*FURXCf@@I+oeAvL^#e%<7JMEaUf#DMe@jdNfcY8gz_$M zLg}tX!Fu|ol4BH<_bWRqoDFZ_kqwC>HEmV?d_ml!8uyIGy-(x*V~u;;thje;+{ZQU z361+{jeGa3xOZsW&uHAcHSS;2xF=@Cy-njjrg3l6xPMmT-Zv}myEN{nH14e$clyPb z)9dD4#^dVh^hwx*h{WSi^%mM;zq%dMhnPjMWQ} zxP+?UkchDnQ)X!4g33%6{IkG$18#|d2^^xPUw;c6dg7NT zeN8y@TMv3aw!pcQK#oiL>e`n9bwrZ&BVg@-l$U{s6Ozb=tRK&AwXqMvi&n(=yO233 zaq{S`IPC`Bilg3lL1Pu~bq3CelvzM7f`5>q8{h$QijW5IFR%Q{{&OLUY9_2hL7F z)SgJ-^biCWl?3DgK#n`O4*{a?<_Mf;0a0r<0r@9Dh8+_A9FQQmljQ}@-1&INxJ4eU zFQP^WZ*Oqu{tcpYv+!cU>t%vCa3%rqn7oYka9<=1nQx+2iq}GTLBb*P6@av1aGX7> zWL`~fjvpFW5R$IjVU1?O!9_bDAmjiOpq=V*cGa$trM_H^M z5cSTPJk}Mhj`pUynR+v)kf#ke>Nf}i@*Y5(nmz;wo!eOQ{1G5@37LDsJ?#lR!Y}Ud z5_kM8dC%_NPS)+{!6Rs;-l{EleGZU5NAG-vcmZPZqIa1y2lrnCQjC5VJ=hb9;?*pS zRhYUP^keC|X8tQS;v;xniXXkTIc#_>AS$*9oVE1BI9!%*cme5l*!gZioZkB&wQ_jf z#{emI==C(Uf>PAeg4aoE<ib$5sUnDvXElvW`0UA~h{t}R*Xk|gp0^%G6i}6z=ujDMauLMNBmsmhH0iy2X z=dpGeUh^a3&p%9hOU1H`g3s@R7B2{?T0&jC^I-WS|I4@ky=^JPF1 z4!vFi#5vwyC5WR{A>K|zYa|3EY3DLPjyiDe0z_Q!78m|2D92VX#+stxa010{$JmLW zl^1k`riOT}T6h$AR!q2`aJYRG_eTI32M%c|H2p9j9)~<5fH?K~EFi_E?(OjuTEk+d zA5!Ug;Hdi-g7Pl_8AXl7D-W9;{Mmft8WayZ^jZnXh#AANii^-HZrm|@ZURn~gYsQ~ zSTh=`SO^g6FJYgQ_}3PAVS(LS9tKX(p~WFUhRs$)=ShNqh~>|J2Z#qXmYu%^$T1T_ z|L->xg**<*KLC!`0r~%lve^n5R)F_Zoia5|rIWGto&>9Kw7MKPGzKksZU)5JUz-65 zf}Vxb4G8t1um^0b5U8-TPqC@;pFw2nF?TmeYX zLHQOy#(`tW(*THiR!#U%KOi*YTM`}uq|_nv9|J<(YteZIkW&r`zYPdEp%qtuMi5*U z<=+CL&e;U_ci>%LK?koJ0U2@hMKvG?9p2jp$hf1`ebmaq>oB!)==CHZXk?Rc6p%4M ztg$l&hP?GhVmPZx)ELxqOul$)HKL8|y6aq-A{yQM* z-m$RQ^>`J_annBPt-m8^VMX;#z&Ym7v=WdCvlWopU4Rq=V)1GNWXhrG9zf`_{O5xj z-7-e5qt&l~Lsqclx#Sx7vxCmH zfY4>(Yy{-EL$6vu5@sv@LwK|}?BKN%ILFY+vQGq%gC-8&KIsE4j z0U3AD`6M92j#i%qWE8C|Uf%}fs2LN8@(%$y?tuI|Acq}#UGfg}g{c>{x(<-XkXrM_ zU4U42CY%%?>i?byAA1at3J2vU01=l5D?J1w3K_PmE9#GRpxo{7@aNEq#*U@eOMp0I z)b{~tHLcN^42Owq8P^oNIFDZfM?EnmM*-fYN3)FZv2v7Fg}aT;B>mT&RUP5oyqw=b;eabw0n0lyhoLyk(k-YK>=NC$H9LLO|qU)EYub52;m>db%#<$JN?^O zdILTES7qEk-xG>PI)Y%`6HbSdfl#a?8cwoQs55Mcz2^2vtPZc!$9BGn{{Luig8qRi zf2sRkCSFgubX79knMfyBDXQRQr1vGl;O%H=80jpCMgT92kLv%M{(G`vF=3B8)G)yY?!ZWgT6f5>z(2#~J-?py7 zJL2l4_*#`X*44?k*!5HBkk}aBay(E!O%!yi1-6W zb)&D&Z*1{zt*OU4ts|Vo89)l-L=0S`GX^yLzX`($m%wavrTYE%-)|fIUD4ij4cW}s z>~F1UHUhrNI~ArHSbTCJ#L8qCQesG=*BlM3%DONd-%bnvd2#*rnyTgiLvBOBU$ZsP zjO?1V9m&w%=41pxCmIf}55^<0bZ2KLRc%Zo6s4kIl~vzVW(bURDRl9)wdLr=+>JrK zg82IS!l^wdZ0gxp6-gzcp?xSB9dYUPMhE?KYX^k?yX$Pj7)E7tL!(h!)6|UqA=ir_ zp4}hrpr$s5)Y{3@NkpV5`i{8STF7EDoWS{#f!A`QwkOorgqI0M;;|I+$@}P~$y74- zCL`(4Zv4k6%)u7Ps~oBStzACfsCeG}ktnvC94e?UlqE_cV=d zG(W^AuNh~JZ5C08Nx4YyX2zvjy-^2oGm!}|5>)`dv8F;`fKXMopourwhdL}4p+v;!Nf~=1F@xUDhi=>h?>C}rj5S6X z=KZE{x+T`lmx&#IwY;j1M8V$FXInUlr#semq7R)5Lz2@u$qPkk2vQ*A#^bV!^_H?` zZ<>~%wefhuj)Mhr7d5ixJ~1(Fk06ZE%}Z!X_x5-<@`$LU$+>_;yiUWcd_im^)QZ@O zW|ocOi7@6&TQ^{o)`n7P#7;hsklj)|woB$VL*!W1!CT_dcyb-4UVdw$y&KHiVNisi zNPCKRSqhVy5$_~ju%4oICsquW2hmEB02Mz7qh6g<7kei;6|8kdc(|aN^_*+L8ol} zj7lSw2)ARo(Qfn88Dfrzc$QC~;}Y54gjycK`Q|2OzMoTeg~QcNm2H~{*<&=+#aaw= z55~n_oOSYW)Pwnod{6E_a|Z;ztEQ2yZGmdzp^jQHsrf+042@ZFi#o*&TBZpxfvBKp ziY_HF_pDi>S^EbSjQGhIAF)ijY7om^tOnW4q12|oDVa1XxmpbjCgN8U#yTp5!*<9s z;;txGXURyPoE}7FBFiB_ry-f{j<2nfglog0J^FC9!YnK!W?P{g-MYb&T6ZdCExr*^ z1!XDCl`VwnM}qQ1rHB}ooFrmWJmm;RH1UhkKW&GLZJTLW+2#Hi!l)LmX4;DMYVmHaqe{ZpzIKFbcZ1(cMn)ycExB&@SrQ_CB$tyC&5M_l*0UN zk2=$PeD+K&Ens&EifvfB(^R3H%Na1$P41ljSmSG!z9^hUK5=qBOC0+gP5V=GhF-Nd z9J&wZMpFg}d$$e!>HJLfm^%LGikhnvxh_(kM-u_&EB?%k zb6+V#8ck-VXUsg-d0aKuOtQUWnVQw!TG=r~SPXJZ;o>lkq8x>OC8qR|J?-sLOvB1Y zRFAexJX3FHptVOc3@UZ1rJOu#U4-fNK56=#1If`t7z4 zq6??Pft@9?(+QzJ0&2UpTXO92v+R}?_Qit0i~?5oJ5B?v<0%#P_+4b>_4-0w)rj~U zjHfWS(ZYJh;hzOg znr7UD5gl<*=!mu2xU%m8sg3meYB6Rh+SwLGq_2272HQt}t#5}>Qx|N&Gk#Syjec6b z?=UrenKzB>_9RN5qqNz>e^&<@2im$}^|A?@pEnr9vCOz&1F_re$X zmNN@PAq-(k>?5aJX69PcIfhs@Hbru|DxE8*;BtXOv2q&Ys_;)LW-mKwl$hIp^*F1! zJIuA8QY{#cT+QQuwVtC&+NIk9({%caoq`%ZrsnpeS9`FXjtuX6jS8u%`K2W}9|;Ju z{J|ZwW93K*xeb%+Xd>j; zOW7LIV_tfUXHRP|?YXxaruV_AY=<{8 t1mrwd$gwW9O~CwD4{8~M8wLDf9`w#M+h>!1mNHq37IPGdWr7)l{|_cXxUc{K literal 0 HcmV?d00001 diff --git a/lab4/lab4.cpp b/lab4/lab4.cpp index 1ea02c9..e8ab0c9 100644 --- a/lab4/lab4.cpp +++ b/lab4/lab4.cpp @@ -99,7 +99,7 @@ int main(int argc, char** argv) { // 程序入口函数,接收命令行参数 glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // 设置显示模式为 RGB 颜色和单缓冲。 glutInitWindowSize(WIDTH, HEIGHT); // 设置窗口大小为 WIDTH x HEIGHT。 glutInitWindowPosition(100, 100); // 设置窗口初始显示位置。 - glutCreateWindow("实验3_03毕爽爽 三次Bezier曲线"); // 创建窗口并设置标题。 + glutCreateWindow("实验4_03毕爽爽 三次Bezier曲线"); // 创建窗口并设置标题。 Init(); // 调用初始化函数。 glutDisplayFunc(myDisplay); // 注册显示回调函数。 diff --git a/lab4/lab4.exe b/lab4/lab4.exe new file mode 100644 index 0000000000000000000000000000000000000000..b0b1f93bad84b66d8280e4b5afdc05b8dd0f4c31 GIT binary patch literal 67770 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 literal 0 HcmV?d00001