{"id":218,"date":"2024-03-01T16:17:24","date_gmt":"2024-03-01T08:17:24","guid":{"rendered":"https:\/\/www.yanwenkai.com\/?p=218"},"modified":"2024-09-11T15:34:29","modified_gmt":"2024-09-11T07:34:29","slug":"luckfox%e5%bc%80%e5%8f%91%e6%9d%bf%e7%a7%bb%e6%a4%8d0-96%e5%af%b8oled%e5%b1%8f%e5%b9%95-%e7%ae%97%e6%b3%95%e7%af%87","status":"publish","type":"post","link":"https:\/\/www.yanwenkai.com\/?p=218","title":{"rendered":"Luckfox\u5f00\u53d1\u677f\u79fb\u690d0.96\u5bf8oled\u5c4f\u5e55&#8212;\u7b97\u6cd5\u7bc7"},"content":{"rendered":"<h1>1 \u524d\u8a00<\/h1>\n<p>&emsp;&emsp;\u4e0b\u9762\u7684\u753b\u7ebf\u548c\u753b\u5706\u7b97\u6cd5\u4e86\u89e3\u5176\u601d\u60f3\u5c31\u884c\uff0c\u6211\u4fdd\u8bc1\u5c31\u7b97\u4f60\u73b0\u5728\u770b\u4f1a\u4e86\uff0c\u4ee5\u540e\u60f3\u5199\u7b97\u6cd5\u8fd8\u662f\u8981\u56de\u6765\u518d\u770b\u4e00\u904d\u8d44\u6599\u3002\u6240\u4ee5\u7b97\u6cd5\u8fd9\u79cd\u4e1c\u897f\u4f1a\u7528\u5c31\u53ef\u4ee5\u4e86\uff01<\/p>\n<h1>2 Bresenham\u76f4\u7ebf\u7b97\u6cd5(\u4efb\u610f\u659c\u7387)<\/h1>\n<h2>2.1 \u7b97\u6cd5\u4ea7\u751f\u539f\u56e0<\/h2>\n<p>&emsp;&emsp;\u5728\u4e00\u5f20\u767d\u7eb8\u4e0a\u7ed8\u5236\u4e00\u4e2a\u7ebf\u6bb5\u53ea\u9700\u89812\u4e2a\u70b9\u8fde\u63a5\u5373\u53ef\u5f97\u5230\u3002\u4f46\u5728oled\u5c4f\u5e55\u4e0a\u5374\u5f88\u96be\uff0c\u56e0\u4e3aoled\u5c4f\u5e55\u662f\u7531\u4e00\u4e2a\u4e00\u4e2a\u7684led\u706f\u7ec4\u6210\u7684\u70b9\u9635\u7ec4\u6210\u7684\u3002\u5982\u4e0b\u56fe\uff0c\u6bcf\u4e00\u4e2a\u767d\u5757\u90fd\u662f\u4e00\u4e2aled\u706f\uff0c\u5f53\u6211\u4eec\u7ed8\u5236\u4e00\u6761\u76f4\u7ebf\u65f6\uff0c\u5c31\u9700\u8981\u5224\u65ad\u5728\u8fd9\u6761\u76f4\u7ebf\u4e0a\uff0c\u9700\u8981\u70b9\u4eae\u54ea\u4e9b\u706f\u6765\u6a21\u62df\u8fd9\u6761\u76f4\u7ebf\u3002<\/p>\n<p><center><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.yanwenkai.com:7777\/images\/2024\/03\/01\/oled-2024-0228-1.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" data-original=\"https:\/\/www.yanwenkai.com:7777\/images\/2024\/03\/01\/oled-2024-0228-1.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" width=\"600\" height=\"400\"><\/div><br \/>\n<\/center><\/p>\n<h2>2.2 Bresenham\u76f4\u7ebf\u7b97\u6cd5\u539f\u7406<\/h2>\n<p>&emsp;&emsp;\u5982\u4e0b\u56fe\u662f\u5bf9Bresenham\u76f4\u7ebf\u7b97\u6cd5\u7684\u603b\u7ed3\u3002\u5047\u8bbe\u6211\u4eec\u8981\u7ed8\u5236\u5982\u4e0a\u56fe\u4e2d\u6240\u793a\u76f4\u7ebff(x,y)\uff0c\u5b83\u7684\u8d77\u70b9\u5728(x<sub>k<\/sub>,y<sub>k<\/sub>)\uff0c\u4e0a\u56fe\u4e2d\u7684\u6bcf\u4e00\u4e2a\u5706\u5708\u662f\u4e00\u4e2aled\u706f\u3002<\/p>\n<p><center><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.yanwenkai.com:7777\/images\/2024\/03\/01\/oled-2024-0228-2.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" data-original=\"https:\/\/www.yanwenkai.com:7777\/images\/2024\/03\/01\/oled-2024-0228-2.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" width=\"600\" height=\"400\"><\/div><br \/>\n<\/center><\/p>\n<p>&emsp;&emsp;\u4e3a\u4e86\u7b80\u5316\u7406\u89e3\uff0c\u6211\u4eec\u7684\u8d77\u70b9\u548c\u7ec8\u70b9\u90fd\u662f\u6574\u6570\uff0c\u5e76\u4e14\u76f4\u7ebf\u7684\u659c\u7387\u4e3a0 &lt; m &lt; 1 \u3002\u6240\u4ee5\u6beb\u65e0\u7591\u95ee\uff0c\u6211\u4eec\u9996\u5148\u70b9\u4eae(x<sub>k<\/sub>,y<sub>k<\/sub>)\u8fd9\u4e2aled\u706f\u3002<br \/>\n&emsp;&emsp;\u90a3\u4e48\u4e0b\u4e00\u4e2aled\u706f\uff0c\u6211\u4eec\u5e94\u8be5\u70b9\u4eae\u54ea\u4e00\u4e2a\u5462\uff1f\u89c2\u5bdf\u4e0a\u56fe\u53ef\u4ee5\u5f88\u5bb9\u6613\u53d1\u73b0\uff0c\u6211\u4eec\u5e94\u8be5\u70b9\u4eae(x<sub>k<\/sub>+1,y<sub>k<\/sub>)\u548c(x<sub>k<\/sub>+1,y<sub>k<\/sub>+1)\u4e2d\u7684\u4e00\u4e2a\uff0c\u90a3\u7a76\u7adf\u9009\u62e9\u54ea\u4e2a\u5462\uff1f\u4e00\u4e2a\u5f88\u6734\u7d20\u7684\u60f3\u6cd5\u662f\uff0c\u8c01\u5728y\u65b9\u5411\u4e0a\u8ddd\u79bb\u76f4\u7ebf\u6700\u8fd1\uff0c\u90a3\u5c31\u70b9\u4eae\u8c01\u3002\u8fd9\u4e2a\u60f3\u6cd5\u4e5f\u6b63\u662fBresenham\u76f4\u7ebf\u7b97\u6cd5\u7684\u601d\u60f3\u3002<br \/>\n&emsp;&emsp;\u65e2\u7136\u5df2\u7ecf\u53ef\u4ee5\u786e\u5b9a\u601d\u8def\u4e86\uff0c\u90a3\u6211\u4eec\u4e0b\u4e00\u6b65\u5c31\u53ef\u4ee5\u5c1d\u8bd5\u4f7f\u7528\u6570\u5b66\u516c\u5f0f\u6765\u8868\u793a\u8fd9\u4e2a\u8fc7\u7a0b\u4e86\u3002<br \/>\n&emsp;&emsp;\u73b0\u5728\u6211\u4eec\u53ef\u4ee5\u60f3\u8c61\u4e00\u4e0b\uff0c\u5bf9\u4e8e\u4e0a\u56fe\uff0c\u76f4\u7ebf\u4e0e(x<sub>k<\/sub>+1,y<sub>k<\/sub>)\u548c(x<sub>k<\/sub>+1,y<sub>k<\/sub>+1)\u8fde\u7ebf\u7684\u4ea4\u70b9\uff0c\u5982\u679c\u5728\u7ebf\u6bb5\u4e00\u534a\u7684\u4e0a\u9762\uff0c\u90a3\u4e48\u5c31\u5e94\u8be5\u9009\u62e9\u70b9\u4eae(x<sub>k<\/sub>+1,y<sub>k<\/sub>+1)\uff0c\u5426\u5219\u70b9\u4eae(x<sub>k<\/sub>+1,y<sub>k<\/sub>)\u3002<br \/>\n&emsp;&emsp;\u90a3\u4e48\uff0c\u6211\u4eec\u53ea\u9700\u8981\u5c06\u4e2d\u70b9\u5750\u6807(x<sub>k<\/sub>+1,y<sub>k<\/sub>+1\/2)\u5750\u6807\u5e26\u5165\u76f4\u7ebf\u51fd\u6570f(x,y)\u4e2d:<\/p>\n<p>&emsp;&emsp;\u5982\u679cf(x<sub>k<\/sub>+1,y<sub>k<\/sub>+1\/2)&gt;0\uff0c\u5219\u8bf4\u660e\u76f4\u7ebf\u7684\u4ea4\u70b9\u5728(x<sub>k<\/sub>+1,y<sub>k<\/sub>+1\/2)\u7684\u4e0b\u9762\uff0c\u6b64\u65f6\u9700\u8981\u70b9\u4eae(x<sub>k<\/sub>+1,y<sub>k<\/sub>);<br \/>\n&emsp;&emsp;\u5982\u679cf(x<sub>k<\/sub>+1,y<sub>k<\/sub>+1\/2) &lt; 0\uff0c\u5219\u8bf4\u660e\u76f4\u7ebf\u7684\u4ea4\u70b9\u5728(x<sub>k<\/sub>+1,y<sub>k<\/sub>+1\/2)\u7684\u4e0a\u9762\uff0c\u6b64\u65f6\u9700\u8981\u70b9\u4eae(x<sub>k<\/sub>+1,y<sub>k<\/sub>+1);<\/p>\n<p>&emsp;&emsp;\u81f3\u6b64\u5e03\u96f7\u68ee\u6c49\u59c6\u76f4\u7ebf\u7b97\u6cd5\u6700\u6838\u5fc3\u7684\u601d\u60f3\u5c31\u8bb2\u5b8c\u4e86\u3002<\/p>\n<h2>2.3 \u8fdb\u4e00\u6b65\u63a2\u7d22\u5e03\u96f7\u68ee\u6c49\u59c6\u76f4\u7ebf\u7b97\u6cd5<\/h2>\n<p>&emsp;&emsp;\u4e0a\u9762\u6211\u4eec\u4f7f\u7528\u7684\u662f\u4e2d\u70b9\u7684\u65b9\u6cd5\uff0c\u6211\u4eec\u7a0d\u52a0\u4fee\u6539\u6362\u4e00\u79cd\u8868\u793a(\u5b9e\u9645\u4e0a\u4e5f\u6ca1\u6709\u5f88\u5927\u7684\u53d8\u5316\uff0c\u5b83\u7684\u6838\u5fc3\u601d\u60f3\u4f9d\u7136\u662f\u5224\u65ad\u8ddd\u79bb)\u3002<\/p>\n<p><center><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.yanwenkai.com:7777\/images\/2024\/03\/01\/oled-2024-0228-3.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" data-original=\"https:\/\/www.yanwenkai.com:7777\/images\/2024\/03\/01\/oled-2024-0228-3.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" width=\"600\" height=\"400\"><\/div><br \/>\n<\/center><\/p>\n<p>&emsp;&emsp;\u4e0a\u56fe\u4e2d\u7ea2\u8272\u7684\u7ebf\uff0c\u662f\u6211\u4eec\u60f3\u8981\u7ed8\u5236\u7684\u7ebf\uff0c\u5b83\u7684\u659c\u7387\u662f 0 &lt; m&lt; 1 \uff0c\u73b0\u5728\u8003\u8651\u5728x\u70b9\uff0c\u76f4\u7ebf\u5bf9\u5e94\u7eb5\u8f74\u7684\u503c\u4e3ay+\u03f5\u3002<br \/>\n&emsp;&emsp;\u5f88\u660e\u663e<\/p>\n<pre><code class=\"language-c\">y+\u03f5 < y+0.5<\/code><\/pre>\n<p>&emsp;&emsp;\u6240\u4ee5(x,y)\u70b9\u8ddd\u79bb\u76f4\u7ebf\u66f4\u8fd1\uff0c\u6240\u4ee5\u628a\u8be5\u70b9\u70b9\u4eae\u3002\u4e00\u65e6\u9009\u62e9\u4e86(x,y)\u70b9\uff0c\u90a3\u4e48\u6b64\u65f6\u5230\u76f4\u7ebf\u5c31\u4ea7\u751f\u4e86\u8bef\u5dee\uff1a\u03f5\u3002<br \/>\n&emsp;&emsp;\u90a3\u4e48\u5f53\u6211\u4eec\u7ed8\u5236\u4e0b\u4e00\u4e2a\u70b9\u65f6\uff0c\u5176\u6a2a\u5750\u6807\u662fx+1\uff0c\u5b83\u5bf9\u5e94\u7684\u7eb5\u5750\u6807\u662fy+m+\u03f5<br \/>\n&emsp;&emsp;\u659c\u7387\u4e3am\u7684\u76f4\u7ebf\uff0cx\u589e\u52a01\uff0c\u90a3\u4e48y\u589e\u52a0m<br \/>\n&emsp;&emsp;\u6b64\u65f6\uff0c\u76f4\u7ebf\u5728x+1\u65f6\u5bf9\u5e94\u7684\u7eb5\u5750\u6807\u4e3a:y+\u03f5+m<br \/>\n&emsp;&emsp;\u540c\u6837\u6267\u884c\u5982\u4e0b\u5224\u65ad\uff1a<\/p>\n<pre><code class=\"language-c\">y+\u03f5+m > y+0.5<\/code><\/pre>\n<p>&emsp;&emsp;\u90a3\u4e48\u5f88\u660e\u663e\uff0c\u6b64\u65f6\u6211\u4eec\u9700\u8981\u70b9\u4eae(x+1,y+1)\u5bf9\u5e94\u7684\u706f\u3002<br \/>\n&emsp;&emsp;\u6b64\u65f6\u8bef\u5dee\u5c31\u53d8\u6210\u4e86\uff1a<\/p>\n<pre><code class=\"language-c\">\u03f5<sub>new<\/sub>=(y+\u03f5+m)\u2212(y+1)<\/code><\/pre>\n<p>&emsp;&emsp;\u5982\u679c\u54b1\u4eec\u518d\u5f80\u540e\u8ba1\u7b97\uff0c\u6b64\u65f6\u6a2a\u8f74\u5230\u8fbe\u4e86x+2\uff0c\u7eb5\u8f74\u5230\u8fbe\u4e86y+1\uff0c\u540c\u6837\u7684\u8fdb\u884c\u5982\u4e0b\u5224\u65ad\uff1a<\/p>\n<pre><code class=\"language-c\">y+1+\u03f5 < sub>new<\/sub>+m < y+1+0.5<\/code><\/pre>\n<p>&emsp;&emsp;\u6240\u4ee5\uff0c\u9700\u8981\u70b9\u4eae(x+2,y+1)\u5bf9\u5e94\u7684\u706f\u3002<br \/>\n&emsp;&emsp;\u4ee5\u4e0a\u5206\u522b\u4ece\u76f4\u89c2\u548c\u6570\u5b66\u4e0a\u5bf9\u5e03\u96f7\u68ee\u6c49\u59c6\u76f4\u7ebf\u7b97\u6cd5\u8fdb\u884c\u4ecb\u7ecd\uff0c\u4e0d\u77e5\u9053\u4f60\u662f\u5426\u660e\u767d\u4e86\uff0c\u5176\u5b9e\u5b83\u672c\u8eab\u975e\u5e38\u7b80\u5355\uff0c\u4e00\u5b9a\u8981\u8bb0\u4f4f\u7684\u5b83\u7684\u6838\u5fc3\u601d\u60f3: \u79bb\u8c01\u8fd1\uff0c\u5c31\u9009\u8c01\u3002<br \/>\n&emsp;&emsp;\u4ee5\u4e0a\u8fc7\u7a0b\u7684\u4f2a\u4ee3\u7801\u5f62\u5f0f\u5982\u4e0b\uff1a<\/p>\n<pre><code class=\"language-c\"> function line(x0, x1, y0, y1)\n     int deltax := x1 - x0\n     int deltay := y1 - y0\n     real error := 0\n     real deltaerr := deltay \/ deltax\n     int y := y0\n     for x from x0 to x1\n         plot(x,y)\n         error := error + deltaerr\n         if abs (error) \u2265 0.5 then\n             y := y + 1\n             error := error - 1.0<\/code><\/pre>\n<h2>2.4 \u4efb\u610f\u65b9\u5411\u753b\u7ebf<\/h2>\n<p>&emsp;&emsp;\u4e0a\u9762\u4ecb\u7ecd\u7684\u5e03\u96f7\u68ee\u6c49\u59c6\u76f4\u7ebf\u7b97\u6cd5\uff0c\u662f\u5728\u7b2c\u4e00\u8c61\u9650\uff0c\u5e76\u4e14\u659c\u73870 &lt; m &lt; 1\u65f6\u7684\u60c5\u51b5\u3002\u5982\u679c\u8d85\u8fc7\u4e86\u8fd9\u4e2a\u9650\u5236\uff0c\u90a3\u4e48\u4e0a\u9762\u7684\u8fc7\u7a0b\u5c31\u4e0d\u80fd\u76f4\u63a5\u5e94\u7528\u4e86\uff0c\u5fc5\u987b\u8981\u505a\u4e00\u4e9b\u6539\u8fdb\u3002<br \/>\n&emsp;&emsp;\u54b1\u4eec\u53ef\u4ee5\u6765\u770b\u4e00\u4e0b\u9762\u4e34\u7684\u95ee\u9898\uff1a<br \/>\n&emsp;&emsp;(1) \u53cd\u65b9\u5411<\/p>\n<p><center><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.yanwenkai.com:7777\/images\/2024\/03\/01\/oled-2024-0228-49d8f3f077fd54d8c.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" data-original=\"https:\/\/www.yanwenkai.com:7777\/images\/2024\/03\/01\/oled-2024-0228-49d8f3f077fd54d8c.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" width=\"600\" height=\"400\"><\/div><br \/>\n<\/center><\/p>\n<p>&emsp;&emsp;(2) \u659c\u7387\u4e3a\u8d1f<\/p>\n<p><center><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.yanwenkai.com:7777\/images\/2024\/03\/01\/oled-2024-0228-5.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" data-original=\"https:\/\/www.yanwenkai.com:7777\/images\/2024\/03\/01\/oled-2024-0228-5.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" width=\"600\" height=\"400\"><\/div><br \/>\n<\/center><\/p>\n<p>&emsp;&emsp;(3) \u7efc\u5408\u6240\u6709\u60c5\u51b5<\/p>\n<p><center><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.yanwenkai.com:7777\/images\/2024\/03\/01\/oled-2024-0228-6.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" data-original=\"https:\/\/www.yanwenkai.com:7777\/images\/2024\/03\/01\/oled-2024-0228-6.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" width=\"600\" height=\"400\"><\/div><br \/>\n<\/center><\/p>\n<p>&emsp;&emsp;\u6240\u4ee5\uff0c\u6700\u7ec8\u9700\u8981\u8be5\u7b97\u6cd5\u80fd\u5b8c\u6210\u6574\u4e2a\u5e73\u9762\u4efb\u610f\u65b9\u5f0f\u7ed8\u5236\u76f4\u7ebf\u3002<br \/>\n&emsp;&emsp;\u5982\u4e0b\u662f\u5bf9\u8be5\u7b97\u6cd5\u7684\u5b9e\u73b0\uff0c\u6ca1\u505a\u4f18\u5316\uff0c\u6240\u4ee5\u4ee3\u7801\u7565\u663e\u5197\u4f59\u3002<\/p>\n<pre><code class=\"language-c\">void paint_draw_slope_line(uint16_t xstart, uint16_t ystart, uint16_t xend, uint16_t yend,\n                     uint16_t color, DOT_PIXEL line_width, LINE_STYLE line_style){\n    uint16_t temp = 0;\n    uint16_t xpoint = xstart;\n    uint16_t ypoint = ystart;\n    \/\/\u7b97\u51fa2\u70b9\u95f4\u8ddd\u79bb\uff0c\u786e\u4fdd\u503c\u4e3a\u975e\u8d1f\u503c\uff08abs\u51fd\u6570\u662f\u83b7\u53d6\u7edd\u5bf9\u503c\uff09\n    int dx = (int)xend - (int)xstart >= 0 ? xend - xstart : xstart - xend; \/\/ \u7b97\u51fa\u4e24\u70b9\u8ddd\u79bb\n    int dy = (int)yend - (int)ystart >= 0 ? yend - ystart : ystart - yend;\n    if(dy>dx)\/\/\u4e3a\u771f\u8bc1\u660e\u659c\u7387\u7edd\u5bf9\u503c\u5927\u4e8e1\uff0c\u4e3b\u8981\u4ee5y\u8f74\u65b9\u5411\u9012\u589e\n    {\n       temp = xstart; \/\/x,y\u503c\u4e92\u6362\n        xstart = ystart;\n        ystart = temp;\n        temp = 0;\n    }\n    if(xstart >xend)\/\/\u4e3a\u771f\uff0c\u8bf4\u660e\u8d77\u70b9\u5927\u4e8e\u7ec8\u70b9\uff0c\u4ea4\u6362\u65b9\u5411\n    {\n       temp = xstart;\n       xstart = xend;\n       xend = temp;\n       temp = 0;\n       temp = ystart;\n       ystart = yend;\n       yend = temp;\n       temp = 0;\n    }\n    uint16_t delta_x = xend -xstart;\/\/\u4e0a\u9762\u6362\u7b97\u5224\u65ad\uff0c\u8fd9\u6b65xend\u4e00\u5b9a\u5927\u4e8exstart\n    uint16_t delta_y =  (int)yend - (int)ystart >= 0 ? yend - ystart : ystart - yend;\n    uint16_t error = 0; \/\/\u8bef\u5dee\u91cf\n    uint16_t delta_error = delta_x\/delta_y;\/\/\u659c\u7387\n    uint16_t yk = ystart; \/\/\u4fdd\u5b58\u521d\u503c\n    uint16_t y_step = 0; \/\/\u8bbe\u7f6e\u521d\u59cb\u6b65\u957f\n    if(ystart < yend)\n    {\n        y_step = 1;\n    }else{\n        y_step = -1;\n    }\n    for(uint16_t xk = xstart; xk <= xend; xk++)\n    {\n        if(dy>dx)\n        {\n           paint_draw_point(yk, xk, color, line_width, DOT_FILL_AROUND); \n        }else{\n           paint_draw_point(xk, yk, color, line_width, DOT_FILL_AROUND);\n        }\n        error = error +delta_error;\n        if(error >= 0.5)\n        {\n            yk=yk+y_step;\n            error = error -1;\n        }\n    }\n}<\/code><\/pre>\n<h1>3 Bresenham\u4e2d\u70b9\u753b\u5706\u7b97\u6cd5<\/h1>\n<h2>3.1 \u7b97\u6cd5\u7b80\u4ecb<\/h2>\n<p>&emsp;&emsp;Bresenham\u753b\u5706\u7b97\u6cd5\u53c8\u79f0\u4e2d\u70b9\u753b\u5706\u7b97\u6cd5\uff0c\u4e0eBresenham \u76f4\u7ebf\u7b97\u6cd5\u4e00\u6837\uff0c\u5176\u57fa\u672c\u7684\u65b9\u6cd5\u662f\u5229\u7528\u5224\u522b\u53d8\u91cf\u6765\u5224\u65ad\u9009\u62e9\u6700\u8fd1\u7684\u50cf\u7d20\u70b9\uff0c\u5224\u522b\u53d8\u91cf\u7684\u6570\u503c\u4ec5\u4ec5\u7528\u4e00\u4e9b\u52a0\u3001\u51cf\u548c\u79fb\u4f4d\u8fd0\u7b97\u5c31\u53ef\u4ee5\u8ba1\u7b97\u51fa\u6765\u3002\u4e3a\u4e86\u7b80\u4fbf\u8d77\u89c1\uff0c\u8003\u8651\u4e00\u4e2a\u5706 \u5fc3\u5728\u5750\u6807\u539f\u70b9\u7684\u5706\uff0c\u800c\u4e14\u53ea\u8ba1\u7b97\u516b\u5206\u5706\u5468\u4e0a\u7684\u70b9\uff0c\u5176\u4f59\u5706\u5468\u4e0a\u7684\u70b9\u5229\u7528\u5bf9\u79f0\u6027\u5c31\u53ef\u5f97\u5230\u3002<br \/>\n&emsp;&emsp;\u4e3a\u4ec0\u4e48\u53ea\u8ba1\u7b97\u516b\u5206\u5706\u5468\u4e0a\u7684\u70b9\u5c31\u53ef\u4ee5\u4e86\u5462\uff1f\u548c\u4e0a\u9762\u7684\u76f4\u7ebf\u7b97\u6cd5\u7c7b\u4f3c\uff0c\u5706\u4e5f\u6709\u4e00\u4e2a\u201c\u516b\u5bf9\u79f0\u6027\u201d\uff0c\u5982\u4e0b\u56fe\u6240\u793a\u3002<\/p>\n<p><center><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.yanwenkai.com:7777\/images\/2024\/03\/01\/oled-2024-0228-7.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" data-original=\"https:\/\/www.yanwenkai.com:7777\/images\/2024\/03\/01\/oled-2024-0228-7.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" width=\"600\" height=\"400\"><\/div><br \/>\n<\/center><\/p>\n<p>&emsp;&emsp;\u663e\u7136\uff0c\u6211\u4eec\u53ea\u9700\u8981\u77e5\u9053\u4e86\u5706\u4e0a\u7684\u4e00\u4e2a\u70b9\u7684\u5750\u6807 (x, y) \uff0c\u5229\u7528\u516b\u5bf9\u79f0\u6027\uff0c\u6211\u4eec\u9a6c\u4e0a\u5c31\u80fd\u5f97\u5230\u53e6\u5916\u4e03\u4e2a\u5bf9\u79f0\u70b9\u7684\u5750\u6807\u3002<br \/>\n&emsp;&emsp;\u548c\u76f4\u7ebf\u7b97\u6cd5\u7c7b\u4f3c\uff0cBresenham\u753b\u5706\u7b97\u6cd5\u4e5f\u662f\u7528\u4e00\u7cfb\u5217\u79bb\u6563\u7684\u70b9\u6765\u8fd1\u4f3c\u63cf\u8ff0\u4e00\u4e2a\u5706\uff0c\u5982\u4e0b\u56fe\u3002<\/p>\n<p><center><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.yanwenkai.com:7777\/images\/2024\/03\/01\/oled-2024-0228-8.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" data-original=\"https:\/\/www.yanwenkai.com:7777\/images\/2024\/03\/01\/oled-2024-0228-8.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" width=\"600\" height=\"400\"><\/div><br \/>\n<\/center><\/p>\n<h2>3.2 \u516c\u5f0f\u63a8\u5bfc<\/h2>\n<p>&emsp;&emsp;\u8003\u8651\u5706\u5fc3\u5728\u539f\u70b9\uff0c\u534a\u5f84\u4e3aR\u7684\u5706\u5728\u7b2c\u4e00\u8c61\u9650\u5185\u7684\u516b\u5206\u4e4b\u4e00\u5706\u5f27\uff0c\u4ece\u70b9\uff080, R\uff09\u5230\u70b9\uff08R\u2019 , R\u2019 \uff09\u987a\u65f6\u9488\u65b9\u5411\u786e\u5b9a\u8fd9\u6bb5\u5706\u5f27\u3002\u5047\u5b9a\u67d0\u70b9Pi(xi, yi)\u5df2\u7ecf\u662f\u8be5\u5706\u5f27\u4e0a\u6700\u63a5\u8fd1\u5b9e\u9645\u5706\u5f27\u7684\u70b9\uff0c\u90a3\u4e48Pi\u7684\u4e0b\u4e00\u4e2a\u70b9\u53ea\u53ef\u80fd\u662f\u6b63\u53f3\u65b9\u7684P1\u6216\u53f3\u4e0b\u65b9\u7684P2\u4e24\u8005\u4e4b\u4e00\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><center><br \/>\n<div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/www.yanwenkai.com:7777\/images\/2024\/03\/01\/oled-2024-0228-9.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" data-original=\"https:\/\/www.yanwenkai.com:7777\/images\/2024\/03\/01\/oled-2024-0228-9.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" width=\"600\" height=\"400\"><\/div><br \/>\n<\/center><\/p>\n<p>&emsp;&emsp;\u6784\u9020\u5224\u522b\u51fd\u6570\uff1a<\/p>\n<p>&emsp;&emsp;F(x,y\uff09= x<sup>2<\/sup> + y<sup>2<\/sup> \u2013 R<sup>2<\/sup><\/p>\n<p>&emsp;&emsp;\u5f53F(x,y)=0\uff0c\u8868\u793a\u70b9\u5728\u5706\u4e0a\uff0c\u5f53F(x,y)&gt;0\uff0c\u8868\u793a\u70b9\u5728\u5706\u5916\uff0c\u5f53F(x,y)&lt; 0\uff0c\u8868\u793a\u70b9\u5728\u5706\u5185\u3002\u5982\u679cM\u662fP<sub>1<\/sub>\u548cP<sub>2<\/sub>\u7684\u4e2d\u70b9\uff0c\u5219M\u7684\u5750\u6807\u662f\uff08x<sub>i<\/sub> + 1, y<sub>i<\/sub> \u2013 0.5\uff09\uff0c\u5f53F\uff08x<sub>i<\/sub> + 1, y<sub>i<\/sub> \u2013 0.5\uff09&lt; 0\u65f6\uff0cM\u70b9\u5728\u5706\u5185\uff0c\u8bf4\u660eP<sub>1<\/sub>\u70b9\u79bb\u5b9e\u9645\u5706\u5f27\u66f4\u8fd1\uff0c\u5e94\u8be5\u53d6P<sub>1<\/sub>\u4f5c\u4e3a\u5706\u7684\u4e0b\u4e00\u4e2a\u70b9\u3002\u540c\u7406\u5206\u6790\uff0c\u5f53F\uff08x<sub>i<\/sub> + 1, y<sub>i<\/sub> \u2013 0.5\uff09&gt; 0\u65f6\uff0cP<sub>2<\/sub>\u79bb\u5b9e\u9645\u5706\u5f27\u66f4\u8fd1\uff0c\u5e94\u53d6P<sub>2<\/sub>\u4f5c\u4e3a\u4e0b\u4e00\u4e2a\u70b9\u3002\u5f53F\uff08x<sub>i<\/sub> + 1, y<sub>i<\/sub> \u2013 0.5\uff09= 0\u65f6\uff0cP<sub>1<\/sub>\u548cP<sub>2<\/sub>\u90fd\u53ef\u4ee5\u4f5c\u4e3a\u5706\u7684\u4e0b\u4e00\u4e2a\u70b9\uff0c\u7b97\u6cd5\u7ea6\u5b9a\u53d6P<sub>2<\/sub>\u4f5c\u4e3a\u4e0b\u4e00\u4e2a\u70b9\u3002<br \/>\n&emsp;&emsp;\u73b0\u5728\u5c06M\u70b9\u5750\u6807\uff08x<sub>i<\/sub> + 1, y<sub>i<\/sub> \u2013 0.5\uff09\u5e26\u5165\u5224\u522b\u51fd\u6570F(x, y\uff09\uff0c\u5f97\u5230\u5224\u522b\u5f0fd\uff1a<\/p>\n<p>&emsp;&emsp;d = F\uff08x<sub>i<\/sub> + 1, y<sub>i<\/sub> \u2013 0.5\uff09= (x<sub>i<\/sub> + 1)<sup>2<\/sup> + (y<sub>i<\/sub> \u2013 0.5)<sup>2<\/sup> \u2013 R<sup>2<\/sup><\/p>\n<p>&emsp;&emsp;\u82e5d &lt; 0\uff0c\u5219\u53d6P<sub>1<\/sub>\u4e3a\u4e0b\u4e00\u4e2a\u70b9\uff0c\u6b64\u65f6P<sub>1<\/sub>\u7684\u4e0b\u4e00\u4e2a\u70b9\u7684\u5224\u522b\u5f0f\u4e3a\uff1a<\/p>\n<p>&emsp;&emsp;d\u2019 = F\uff08x<sub>i<\/sub> + 2, y<sub>i<\/sub> \u2013 0.5\uff09= (x<sub>i<\/sub> + 2)<sup>2<\/sup> + (y<sub>i<\/sub> \u2013 0.5)<sup>2<\/sup> \u2013 R<sup>2<\/sup><\/p>\n<p>&emsp;&emsp;\u5c55\u5f00\u540e\u5c06d\u5e26\u5165\u53ef\u5f97\u5230\u5224\u522b\u5f0f\u7684\u9012\u63a8\u5173\u7cfb\uff1a<\/p>\n<p>&emsp;&emsp;d\u2019 = d + 2x<sub>i<\/sub> + 3<\/p>\n<p>&emsp;&emsp;\u82e5d &gt; 0\uff0c\u5219\u53d6P<sub>2<\/sub>\u4e3a\u4e0b\u4e00\u4e2a\u70b9\uff0c\u6b64\u65f6P<sub>2<\/sub>\u7684\u4e0b\u4e00\u4e2a\u70b9\u7684\u5224\u522b\u5f0f\u4e3a\uff1a<\/p>\n<p>&emsp;&emsp;d\u2019 = F\uff08x<sub>i<\/sub> + 2, y<sub>i<\/sub> \u2013 1.5\uff09= (x<sub>i<\/sub> + 2)<sup>2<\/sup> + (y<sub>i<\/sub> \u2013 1.5)<sup>2<\/sup> \u2013 R<sup>2<\/sup><\/p>\n<p>&emsp;&emsp;\u5c55\u5f00\u540e\u5c06d\u5e26\u5165\u53ef\u5f97\u5230\u5224\u522b\u5f0f\u7684\u9012\u63a8\u5173\u7cfb\uff1a<\/p>\n<p>&emsp;&emsp;d\u2019 = d + 2(x<sub>i<\/sub> \u2013 y<sub>i<\/sub>) + 5<\/p>\n<p>&emsp;&emsp;\u7279\u522b\u7684\uff0c\u5728\u7b2c\u4e00\u4e2a\u8c61\u9650\u7684\u7b2c\u4e00\u4e2a\u70b9\uff080, R\uff09\u65f6\uff0c\u53ef\u4ee5\u63a8\u5012\u51fa\u5224\u522b\u5f0fd\u7684\u521d\u59cb\u503cd<sub>0<\/sub>\uff1a<\/p>\n<p>&emsp;&emsp;d<sub>0<\/sub> = F(1, R \u2013 0.5) = 1 \u2013 (R \u2013 0.5)<sup>2<\/sup> \u2013 R<sup>2<\/sup> = 1.25 \u2013 R<\/p>\n<p>&emsp;&emsp;\u5b9e\u9645\u4f7f\u7528\u65f6\u6211\u91c7\u7528\u7684\u8bef\u5dee\u7b97\u6cd5\u662fluckfox\u5b98\u65b9\u4ee3\u7801\u4e2d\u7684\u7b97\u6cd5\u3002<\/p>\n<h2>3.3 \u51fd\u6570\u5b9e\u73b0<\/h2>\n<p>&emsp;&emsp;\u4e0b\u9762\u7684\u7a0b\u5e8f\u662f\u6211\u7ed3\u5408\u6559\u7a0b\u548c\u81ea\u5df1\u7684\u7406\u89e3\u91cd\u5199\u7684\u753b\u5706\u7b97\u6cd5\uff1a<\/p>\n<pre><code class=\"language-c\">void paint_draw_circle(uint16_t x_center, uint16_t y_center, uint16_t radius,\nuint16_t color, DOT_PIXEL line_width, DRAW_FILL draw_fill)\n{\nif (x_center > 128 || y_center > 64)\n{\nDebug(\"\u8d85\u51fa\u6b63\u5e38\u663e\u793a\u8303\u56f4\\r\\n\");\nreturn;\n}\n\/\/ \u753b\u4e00\u4e2a\u5706\u4ece\uff080,r\uff09\u5904\u4f5c\u4e3a\u4e00\u4e2a\u8d77\u70b9\nint16_t xcurrent, ycurrent;\nxcurrent = 0;\nycurrent = radius;\n    \/\/ \u7d2f\u8ba1\u8bef\u5dee\uff0c\u5224\u65ad\u4e0b\u4e00\u4e2a\u70b9\u7684\u4f4d\u7f6e\n    int16_t esp = 3 - (radius << 1);\n\/\/ \u753b\u4e00\u4e2a\u7a7a\u5fc3\u5706\nwhile (xcurrent <= ycurrent)\n{\npaint_draw_point(x_center + xcurrent, y_center + ycurrent, color, line_width, DOT_FILL_AROUND); \/\/ 1\npaint_draw_point(x_center - xcurrent, y_center + ycurrent, color, line_width, DOT_FILL_AROUND); \/\/ 2\npaint_draw_point(x_center - ycurrent, y_center + xcurrent, color, line_width, DOT_FILL_AROUND); \/\/ 3\npaint_draw_point(x_center - ycurrent, y_center - xcurrent, color, line_width, DOT_FILL_AROUND); \/\/ 4\npaint_draw_point(x_center - xcurrent, y_center - ycurrent, color, line_width, DOT_FILL_AROUND); \/\/ 5\npaint_draw_point(x_center + xcurrent, y_center - ycurrent, color, line_width, DOT_FILL_AROUND); \/\/ 6\npaint_draw_point(x_center + ycurrent, y_center - xcurrent, color, line_width, DOT_FILL_AROUND); \/\/ 7\npaint_draw_point(x_center + ycurrent, y_center + xcurrent, color, line_width, DOT_FILL_AROUND); \/\/ 0\n\n            if (esp <0)\n            {\n                esp += 4 * xcurrent + 6;\n            }\n            else\n            {\n                esp += 10 + 4 * (xcurrent - ycurrent);\n                ycurrent--;\n            }\n            xcurrent++;\n        }\n}<\/code><\/pre>\n<h1>4 \u603b\u7ed3<\/h1>\n<p>&emsp;&emsp;\u8fd9\u662f\u6211\u67e5\u9605\u5f88\u591a\u8d44\u6599\u627e\u51fa\u7684\u6700\u597d\u7406\u89e3\u7684\u89e3\u91ca\u4e86\uff0c\u8fd9\u518d\u770b\u4e0d\u4f1a\u53ef\u4ee5\u56de\u5bb6\u5356\u70e4\u7ea2\u85af\u53bb\u4e86\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>1 \u524d\u8a00 &emsp;&emsp;\u4e0b\u9762\u7684\u753b\u7ebf\u548c\u753b\u5706\u7b97\u6cd5\u4e86\u89e3\u5176\u601d\u60f3\u5c31\u884c\uff0c\u6211\u4fdd\u8bc1\u5c31\u7b97\u4f60\u73b0\u5728\u770b\u4f1a\u4e86\uff0c\u4ee5\u540e\u60f3\u5199\u7b97\u6cd5\u8fd8\u662f [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":310,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[34,36],"class_list":["post-218","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-flushbonading-oled","tag-c-c","tag-36"],"_links":{"self":[{"href":"https:\/\/www.yanwenkai.com\/index.php?rest_route=\/wp\/v2\/posts\/218","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yanwenkai.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yanwenkai.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yanwenkai.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yanwenkai.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=218"}],"version-history":[{"count":23,"href":"https:\/\/www.yanwenkai.com\/index.php?rest_route=\/wp\/v2\/posts\/218\/revisions"}],"predecessor-version":[{"id":261,"href":"https:\/\/www.yanwenkai.com\/index.php?rest_route=\/wp\/v2\/posts\/218\/revisions\/261"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.yanwenkai.com\/index.php?rest_route=\/wp\/v2\/media\/310"}],"wp:attachment":[{"href":"https:\/\/www.yanwenkai.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yanwenkai.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=218"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yanwenkai.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}