{"id":4054,"date":"2018-05-05T20:47:06","date_gmt":"2018-05-05T12:47:06","guid":{"rendered":"http:\/\/www.bookcard.net\/wordpress\/?p=4054"},"modified":"2018-10-14T21:19:04","modified_gmt":"2018-10-14T13:19:04","slug":"opengl_bezier_curve","status":"publish","type":"post","link":"https:\/\/www.bookcard.net\/wordpress\/opengl_bezier_curve\/","title":{"rendered":"OpenGL\u4e4b\u8c9d\u8cfd\u723e(Bezier)\u66f2\u7dda"},"content":{"rendered":"<figure id=\"attachment_4055\" aria-describedby=\"caption-attachment-4055\" style=\"width: 1024px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2018\/05\/OpenGL_Bezier_Curve.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-4055\" src=\"https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2018\/05\/OpenGL_Bezier_Curve.jpg\" alt=\"\" width=\"1024\" height=\"768\" srcset=\"https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2018\/05\/OpenGL_Bezier_Curve.jpg 1024w, https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2018\/05\/OpenGL_Bezier_Curve-300x225.jpg 300w, https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2018\/05\/OpenGL_Bezier_Curve-768x576.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption id=\"caption-attachment-4055\" class=\"wp-caption-text\">OpenGL\u8c9d\u8cfd\u723e(Bezier)\u66f2\u7dda<\/figcaption><\/figure>\n<p><strong>OpenGL<\/strong><strong>\u652f\u6301\u8c9d\u8cfd\u723e<\/strong><strong>(Bezier)<\/strong><strong>\u66f2\u7dda\u7e6a\u756b<\/strong><strong>,<\/strong><strong>\u8c9d\u8cfd\u723e\u66f2\u7dda<\/strong><strong>\u7531\u8d77\u9ede<\/strong><strong>,<\/strong><strong>\u7d42\u9ede\u548c\u63a7\u5236\u9ede\u7d44\u6210<\/strong><strong>,<\/strong><strong>\u4e26\u4e14\u5177\u6709\u5e73\u6ed1\u7684\u904b\u52d5\u8ecc\u8de1<\/strong><strong>.<\/strong><strong>\u63a7\u5236\u9ede\u7528\u65bc\u5b9a\u7fa9\u66f2\u7dda\u7684\u5f62\u72c0<\/strong><strong>,<\/strong><strong>\u50cf\u78c1\u77f3\u5c07\u66f2\u7dda\u5411\u63a7\u5236\u9ede\u7684\u4f4d\u7f6e\u5438\u5f15<\/strong><strong>.<\/strong><strong>\u4e0a\u5716\u7684\u6f14\u793a\u7a0b\u5f0f\u901a\u904e\u6ed1\u9f20\u9ede\u9078\u5c4f\u5e55\u653e\u7f6e\u300e\u63a7\u5236\u9ede\u300f\u7e6a\u756b<\/strong><strong>\u8c9d\u8cfd\u723e<\/strong><strong>(Bezier)<\/strong><strong>\u66f2\u7dda<\/strong><strong>.<\/strong><strong>\u6309<\/strong><strong>ESC<\/strong><strong>\u9375\u6e05\u7a7a\u300e\u63a7\u5236\u9ede\u300f<\/strong><strong>:<\/strong><a href=\"https:\/\/www.bookcard.net\/wordpress\/wp-content\/uploads\/2018\/05\/OpenGLBezierCurve.zip\"><strong>\u4e0b\u8f09<\/strong><\/a><\/p>\n<p><strong>1.<\/strong><strong>\u8a2d\u7f6e<\/strong><strong>\u8c9d\u8cfd\u723e<\/strong><strong>(Bezier)<\/strong><strong>\u66f2\u7dda<\/strong><\/p>\n<p><strong>void glMap1f(GLenum target,GLfloat u1,GLfloat u2,GLint stride,GLint order,const GLfloat *points);<\/strong><\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"264\"><strong>\u53c3\u6578<\/strong><\/td>\n<td width=\"289\"><strong>\u7c21\u4ecb<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"264\"><strong>target<\/strong><\/td>\n<td width=\"289\"><strong>\u63a7\u5236\u9ede\u985e\u578b<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"264\"><strong>u1, u2<\/strong><\/td>\n<td width=\"289\"><strong>u<\/strong><strong>\u53c3\u6578<\/strong><strong>\u7684\u5b9a\u7fa9\u57df<\/strong><strong>(0~1)<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"264\"><strong>stride<\/strong><\/td>\n<td width=\"289\"><strong>\u9802\u9ede<\/strong>\u8de8\u5ea6<\/td>\n<\/tr>\n<tr>\n<td width=\"264\"><strong>order<\/strong><\/td>\n<td width=\"289\"><strong>\u66f2\u7dda<\/strong><strong>\u9802\u9ede\u500b\u6578<\/strong><strong>(<\/strong><strong>\u7531\u8d77\u9ede<\/strong><strong>,<\/strong><strong>\u7d42\u9ede\u548c\u63a7\u5236\u9ede\u7d44\u6210<\/strong><strong>)<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"264\"><strong>points<\/strong><\/td>\n<td width=\"289\"><strong>\u6307\u5411<\/strong><strong>\u66f2\u7dda<\/strong><strong>\u9802\u9ede\u6578\u7d44\u7531<\/strong><strong>(<\/strong><strong>\u8d77\u9ede<\/strong><strong>,<\/strong><strong>\u7d42\u9ede\u548c\u63a7\u5236\u9ede\u7d44\u6210<\/strong><strong>)<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>\u00a0<\/strong><\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"277\"><strong>\u63a7\u5236\u9ede\u985e\u578b(target)<\/strong><\/td>\n<td width=\"277\"><strong>\u7c21\u4ecb<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"277\"><strong>GL_MAP1_VERTEX_3<\/strong><\/td>\n<td width=\"277\"><strong>\u9802\u9ede\u5ea7\u6a19<\/strong><strong>(x,y,z)<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"277\"><strong>GL_MAP1_VERTEX_4<\/strong><\/td>\n<td width=\"277\"><strong>\u9802\u9ede\u5ea7\u6a19<\/strong><strong>(x,y,z,w)<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"277\"><strong>GL_MAP1_INDEX<\/strong><\/td>\n<td width=\"277\"><strong>\u984f\u8272\u7d22\u5f15<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"277\"><strong>GL_MAP1_COLOR_4<\/strong><\/td>\n<td width=\"277\"><strong>\u984f\u8272\u503c<\/strong><strong>(RGBA)<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"277\"><strong>GL_MAP1_NORMAL<\/strong><\/td>\n<td width=\"277\"><strong>\u6cd5\u7dda\u5ea7\u6a19<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"277\"><strong>GL_MAP1_TEXTURE_COORD_1<\/strong><\/td>\n<td width=\"277\"><strong>\u7d0b\u7406\u5ea7\u6a19<\/strong><strong>(s)<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"277\"><strong>GL_MAP1_TEXTURE_COORD_<\/strong><strong>2<\/strong><\/td>\n<td width=\"277\"><strong>\u7d0b\u7406\u5ea7\u6a19<\/strong><strong>(s,t)<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"277\"><strong>GL_MAP1_TEXTURE_COORD_<\/strong><strong>3<\/strong><\/td>\n<td width=\"277\"><strong>\u7d0b\u7406\u5ea7\u6a19<\/strong><strong>(s,t,r)<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"277\"><strong>GL_MAP1_TEXTURE_COORD_<\/strong><strong>4<\/strong><\/td>\n<td width=\"277\"><strong>\u7d0b\u7406\u5ea7\u6a19<\/strong><strong>(s,t,r,g)<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>2.<\/strong><strong>\u555f\u7528\u63a7\u5236\u9ede<\/strong><\/p>\n<p><strong>glEnable(GL_MAP1_VERTEX_3);<\/strong><\/p>\n<p><strong>3.<\/strong><strong>\u73fe\u5728\u53ef\u4ee5\u7e6a\u756b\u66f2\u7dda<\/strong><strong>,<\/strong><strong>\u4ee5<\/strong><strong>100<\/strong><strong>\u689d\u76f4\u7dda\u7e6a\u756b<\/strong><strong>\u8c9d\u8cfd\u723e<\/strong><strong>(Bezier)<\/strong><strong>\u66f2\u7dda<\/strong><strong>,<\/strong><strong>\u4ee5\u5747\u7b49\u9593\u9694\u7e6a\u756b<\/strong><strong>.<\/strong><\/p>\n<p><strong>glBegin(GL_LINE_STRIP);<\/strong><\/p>\n<p><strong>for (i = 0; i &lt;= 100; ++i)<\/strong><\/p>\n<p><strong>glEvalCoord1f((float)i \/ 100.0f);<\/strong><\/p>\n<p><strong>glEnd();<\/strong><\/p>\n<p><strong>\u4e0a\u9762\u7684\u4ee3\u78bc\u53ef\u4ee5\u7c21\u5316\u70ba<\/strong><\/p>\n<p><strong>glMapGrid1d(100, 0.0f, 1.0f);\/\/ <\/strong><strong>\u5b9a\u7fa9\u5b9a\u7fa9\u5747\u52fb\u7684\u9593\u683c<\/strong><\/p>\n<p><strong>glEvalMesh1(GL_LINE,0, 100);\/\/ <\/strong><strong>\u7e6a\u88fd\u66f2\u7dda<\/strong><\/p>\n<p><strong>4.<\/strong><strong>\u5b8c\u6210\u7e6a\u756b\u5f8c\u9700\u8981\u7e6a\u756b\u63a7\u5236\u9ede<\/strong><\/p>\n<p><strong>glPointSize(5);<\/strong><\/p>\n<p><strong>glBegin(GL_POINTS);<\/strong><\/p>\n<p><strong>for (i = 0; i &lt; bezier-&gt;countol_count; ++i)<\/strong><\/p>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 glVertex3fv(bezier-&gt;control_array[i].M);<\/strong><\/p>\n<p><strong>glEnd();<\/strong><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>OpenGL\u652f\u6301\u8c9d\u8cfd\u723e(Bezier)\u66f2\u7dda\u7e6a\u756b,\u8c9d\u8cfd\u723e\u66f2\u7dda\u7531\u8d77\u9ede,\u7d42\u9ede\u548c\u63a7\u5236\u9ede\u7d44\u6210,\u4e26\u4e14\u5177\u6709\u5e73\u6ed1\u7684\u904b\u52d5\u8ecc\u8de1.\u63a7 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.bookcard.net\/wordpress\/opengl_bezier_curve\/\" class=\"more-link\">\u7e7c\u7e8c\u95b1\u8b80 <span class=\"screen-reader-text\">OpenGL\u4e4b\u8c9d\u8cfd\u723e(Bezier)\u66f2\u7dda<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[62],"tags":[50],"class_list":["post-4054","post","type-post","status-publish","format-standard","hentry","category-opengl","tag-opengl","entry"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/posts\/4054","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/comments?post=4054"}],"version-history":[{"count":3,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/posts\/4054\/revisions"}],"predecessor-version":[{"id":4106,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/posts\/4054\/revisions\/4106"}],"wp:attachment":[{"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/media?parent=4054"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/categories?post=4054"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bookcard.net\/wordpress\/wp-json\/wp\/v2\/tags?post=4054"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}