-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsearch.xml
260 lines (125 loc) · 947 KB
/
search.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>64b66b</title>
<link href="/posts/64b66b/"/>
<url>/posts/64b66b/</url>
<content type="html"><![CDATA[<h1 id="font-color-b5d5ff-stylefont-weightbold背景font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold背景font"></a> <font color= #b5d5ff style='font-weight:bold'>背景</font></h1><ul><li><code>64b/66b</code>编码技术是<code>IEEE 802.3</code>工作组为<code>10G</code>以太网提出的,主要是减少编码开销,降低硬件的复杂性,并作为<code>8b/10b</code>编码的另一种选择,以支持新的程序和数据。可以参考<a href="https://blog.csdn.net/qq_36134761/article/details/80385755">64B/66B编码技术</a>。本文基于<code>2000</code>年<code>IEEE 802.3</code>工作组提出的<code>10G Ethernet</code>编码规则<a href="https://grouper.ieee.org/groups/802/3/ae/public/mar00/walker_1_0300.pdf">64b/66b coding update</a>。</li><li><code>64b/66b</code>编码仅有一个码表,其编码逻辑如下图所示:</li></ul><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/64b66b/64b66b.png" alt="64b66b" /></p><h1 id="font-color-b5d5ff-stylefont-weightbold原理分析font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold原理分析font"></a> <font color= #b5d5ff style='font-weight:bold'>原理分析</font></h1><h2 id="font-color-b5d5ff-stylefont-weightbold编码font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold编码font"></a> <font color= #b5d5ff style='font-weight:bold'>编码</font></h2><p><code>64b/66b</code>编码技术将<code>64bit</code>的数据编码为<code>66bit</code>的<font color= red style='font-weight:bold'>块</font>来传输,根据不同的传输方式,块格式分为两种:</p><ol><li><p>数据块</p><p>数据块类似<code>8b10b</code>编码中的数据码,用于单纯的传递数据。</p></li><li><p>控制块</p><p>控制块类似<code>8b10b</code>编码中的控制码,用于码流控制。</p><ul><li>与<code>8b10b</code>编码相同的是,控制块可以作为起始、结尾、分隔</li><li>与<code>8b10b</code>编码不同的是,控制块不实现链路同步</li></ul></li></ol><h3 id="font-color-b5d5ff-stylefont-weightbold同步头font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold同步头font"></a> <font color= #b5d5ff style='font-weight:bold'>同步头</font></h3><p><code>64b/66b</code>编码技术的链路同步通过前<code>2bit</code>的同步头(<code>Sync Header</code>)实现。两种<code>66bit</code>的<font color= red style='font-weight:bold'>块</font>对应不同的同步头。</p><table><thead><tr><th style="text-align:center">同步头</th><th style="text-align:center">含义</th></tr></thead><tbody><tr><td style="text-align:center">00</td><td style="text-align:center">编码错误</td></tr><tr><td style="text-align:center">01</td><td style="text-align:center">数据块(纯数据)</td></tr><tr><td style="text-align:center">10</td><td style="text-align:center">控制块(混合数据/控制信息)</td></tr><tr><td style="text-align:center">11</td><td style="text-align:center">编码错误</td></tr></tbody></table><p>因此,按照同步机制,每<code>66bit</code>的数据至少会出现一次<code>01</code>或者<code>10</code>的转换。</p><h3 id="font-color-b5d5ff-stylefont-weightbold数据块font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold数据块font"></a> <font color= #b5d5ff style='font-weight:bold'>数据块</font></h3><p>单纯传递数据的块即数据块。</p><p>数据块一共传递<code>8byte=8*8bit=64 bit</code>的数据。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/64b66b/data_block.png" alt="data_block" /></p><h3 id="font-color-b5d5ff-stylefont-weightbold控制块font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold控制块font"></a> <font color= #b5d5ff style='font-weight:bold'>控制块</font></h3><p>包含控制信息传递的块即控制块。控制块可以同时传递数据。</p><p>注意在控制块中,数据字(<code>D0~D7</code>)依旧是<code>byte(8bit)</code>为单位,而其控制字(<code>Z0~Z7</code>or<code>C0~C7</code>)是按照<code>7bit</code>为单位的,因此在某些情况下会存在空闲的位置(即表中标黄的部分)。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/64b66b/control_block.png" alt="control_block" /></p><p><code>64b/66b</code>对应<code>8b/10b</code>编码的控制字如下表所示(参考资料[1]):</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/64b66b/kcode_mapping.png" alt="kcode_mapping" /></p><p>而其实现在使用的<code>64b/66b</code>编码技术也扩展了其他控制字(参考<a href="https://www.ieee802.org/3/bn/public/mar13/hajduczenia_3bn_04_0313.pdf">64b/66b line code - IEEE 802</a>,包含<code>XGMII</code>控制码-<code>8b/10b</code>控制码-<code>10GBASE-R</code>的对应关系):</p><table><thead><tr><th style="text-align:center">控制字符</th><th style="text-align:center">符号</th><th style="text-align:center">XGMII控制码</th><th style="text-align:center">10GBASE-R 控制码</th><th style="text-align:center">10GBASE-R 0码</th><th style="text-align:center">8b/10b码</th><th style="text-align:center">备注</th></tr></thead><tbody><tr><td style="text-align:center">空闲</td><td style="text-align:center">/I/</td><td style="text-align:center">0x07</td><td style="text-align:center">0x00</td><td style="text-align:center"></td><td style="text-align:center">K28.0或K28.3或K28.5</td><td style="text-align:center"></td></tr><tr><td style="text-align:center">开始</td><td style="text-align:center">/S/</td><td style="text-align:center">0xfb</td><td style="text-align:center">由块类型字段编码</td><td style="text-align:center"></td><td style="text-align:center">K27.7</td><td style="text-align:center">默认0x00</td></tr><tr><td style="text-align:center">终止</td><td style="text-align:center">/T/</td><td style="text-align:center">0xfd</td><td style="text-align:center">由块类型字段编码</td><td style="text-align:center"></td><td style="text-align:center">K29.7</td><td style="text-align:center">默认0x00</td></tr><tr><td style="text-align:center">错误</td><td style="text-align:center">/E/</td><td style="text-align:center">0xfe</td><td style="text-align:center">0x1e</td><td style="text-align:center"></td><td style="text-align:center">K30.7</td><td style="text-align:center"></td></tr><tr><td style="text-align:center">序列有序集</td><td style="text-align:center">/Q/</td><td style="text-align:center">0x9c</td><td style="text-align:center">由块类型字段编码加上O模式编码</td><td style="text-align:center">0x0</td><td style="text-align:center">K28.4</td><td style="text-align:center">10GbE LSS 有序集</td></tr><tr><td style="text-align:center">保留0</td><td style="text-align:center">/R/</td><td style="text-align:center">0x1c</td><td style="text-align:center">0x2d</td><td style="text-align:center"></td><td style="text-align:center">K28.0</td><td style="text-align:center"></td></tr><tr><td style="text-align:center">保留1</td><td style="text-align:center"></td><td style="text-align:center">0x3c</td><td style="text-align:center">0x33</td><td style="text-align:center"></td><td style="text-align:center">K28.1</td><td style="text-align:center"></td></tr><tr><td style="text-align:center">保留2</td><td style="text-align:center">/N/</td><td style="text-align:center">0x7c</td><td style="text-align:center">0x4b</td><td style="text-align:center"></td><td style="text-align:center">K28.3</td><td style="text-align:center"></td></tr><tr><td style="text-align:center">保留3</td><td style="text-align:center">/K/</td><td style="text-align:center">0xbc</td><td style="text-align:center">0x55</td><td style="text-align:center"></td><td style="text-align:center">K28.5</td><td style="text-align:center"></td></tr><tr><td style="text-align:center">保留4</td><td style="text-align:center"></td><td style="text-align:center">0xdc</td><td style="text-align:center">0x66</td><td style="text-align:center"></td><td style="text-align:center">K28.6</td><td style="text-align:center"></td></tr><tr><td style="text-align:center">保留5</td><td style="text-align:center"></td><td style="text-align:center">0xf7</td><td style="text-align:center">0x78</td><td style="text-align:center"></td><td style="text-align:center">K23.7</td><td style="text-align:center"></td></tr><tr><td style="text-align:center">信号有序集</td><td style="text-align:center">/Fsig/</td><td style="text-align:center">0x5c</td><td style="text-align:center">由块类型字段编码加上O模式编码</td><td style="text-align:center">0xf</td><td style="text-align:center">K28.2</td><td style="text-align:center">FC 有序集</td></tr></tbody></table><h4 id="font-color-b5d5ff-stylefont-weightbold起始字font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold起始字font"></a> <font color= #b5d5ff style='font-weight:bold'>起始字</font></h4><p>控制块中起始字共<code>2</code>种,根据数据起始需要至少<code>3</code>字节或<code>7</code>字节:</p><ol><li>以<code>0x78</code>作为块类型字段,跟7字节(<code>56bit</code>)数据;</li><li>以<code>0x33</code>作为块类型字段,跟4个控制字(<code>28bit</code>)+空闲(<code>4bit</code>)+3个字节(<code>24bit</code>)数据。</li></ol><h4 id="font-color-b5d5ff-stylefont-weightbold终止字font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold终止字font"></a> <font color= #b5d5ff style='font-weight:bold'>终止字</font></h4><p>控制块中终止字共<code>8</code>种,根据数据在不同位置终止采用不同块类型:</p><ol><li><p>以<code>0x87</code>作为块类型字段,跟0字节(<code>0bit</code>)数据+空闲(<code>7bit</code>)+7个控制字(<code>49bit</code>);</p></li><li><p>以<code>0x99</code>作为块类型字段,跟1字节(<code>8bit</code>)数据+空闲(<code>6bit</code>)+6个控制字(<code>42bit</code>);</p></li><li><p>以<code>0xaa</code>作为块类型字段,跟2字节(<code>16bit</code>)数据+空闲(<code>5bit</code>)+5个控制字(<code>35bit</code>);</p></li><li><p>以<code>0xb4</code>作为块类型字段,跟3字节(<code>24bit</code>)数据+空闲(<code>4bit</code>)+4个控制字(<code>28bit</code>);</p></li><li><p>以<code>0xcc</code>作为块类型字段,跟4字节(<code>32bit</code>)数据+空闲(<code>3bit</code>)+3个控制字(<code>21bit</code>);</p></li><li><p>以<code>0xd2</code>作为块类型字段,跟5字节(<code>40bit</code>)数据+空闲(<code>2bit</code>)+2个控制字(<code>14bit</code>);</p></li><li><p>以<code>0xe1</code>作为块类型字段,跟6字节(<code>48bit</code>)数据+空闲(<code>1bit</code>)+1个控制字(<code>7bit</code>);</p></li><li><p>以<code>0xff</code>作为块类型字段,跟7字节(<code>56bit</code>)数据+空闲(<code>0bit</code>)+0个控制字(<code>0bit</code>)。</p></li></ol><h4 id="font-color-b5d5ff-stylefont-weightbold其他控制字font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold其他控制字font"></a> <font color= #b5d5ff style='font-weight:bold'>其他控制字</font></h4><p>通过块类型也可以编码出其他控制字,举例如下:</p><ul><li>以<code>0x1e</code>作为块类型字段,代表错误字<code>K30.5</code></li><li>以<code>0x55</code>作为块类型字段,代表控制字<code>K28.5</code></li><li>以<code>0x78</code>作为块类型字段,代表控制字<code>K23.7</code></li></ul><p>通过块类型和<code>7bit line code</code>也可以编码出其他控制字,举例如下:</p><ul><li>以<code>0x55</code>作为块类型字段+<code>O模式</code>,代表控制字有序集</li><li>以<code>0x66</code>作为块类型字段+<code>O模式</code>,代表控制字有序集</li></ul><h2 id="font-color-b5d5ff-stylefont-weightbold扰码font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold扰码font"></a> <font color= #b5d5ff style='font-weight:bold'>扰码</font></h2><p>扰码技术是一种对数据进行变换的方法,目的是使数据中的0和1平衡比例(各<code>50%</code>),影响高速传输的质量</p><ul><li>加扰(<code>Scramble</code>)</li><li>解扰(<code>Descramble</code>)</li></ul><p>实际操作就是把数据流与特定模式序列 (<code>pattern</code>) 进行异或 (<code>XOR</code>),使发送数据变随机,特定模式序列用 <code>LFSR</code> (<code>Linear Feedback Shift Register</code>,线性反馈移位寄存器) 产生。<code>64b/66b</code>采用的生成多项式是<code>X58+X19+1=0</code>。</p><p>这里插入一个问题:</p><p><font color= red style='font-weight:bold'>扰码和<code>8b/10b</code>编解码的功能是重复的吗?都做<code>0/1</code>的平衡?</font></p><p>参考<a href="https://www.quchao.me/4186/">8b/10b下的编码/加扰和组帧 – 重新开始</a></p><blockquote><p><strong>請問 8b/10b 和 Scrambler 的功能是不是類似的?</strong><br />编码和加绕还是不一样的,8b/10b 编码的主要功能是保持直流平衡,因为经过 8b/10b 编码后的数据 0 和 1 的个数比较接近,不会出现长 0 或长 1 的情况,出现长 0 或者长 1 可能会导致接收端对电平 0,1 的识别出现误判,而加绕主要是防止不同 lane 之间的干扰,比如一个 x16 的链路,在发相同的有续集 (order set) 时,如果没有加绕,这 16 条 lane 发送的数据就是一样的,更容易产生干扰,加饶之后,每条 lane 传输的数据就变得伪随机了,可以降低 lane 与 lane 之间的干扰。所以在 tx 方向,一般都是先加绕,然后进行 8b/10b 编码。补充:一条 lane 也是可以降低干扰的,这也比较好理解,如果不加扰,一条 lane 传输的内容完全一样,就相当于是形成了高频信号,容易受到外界或者内部干扰。<br /><strong>為什麼需要同時做這 2 種功能呢?</strong><br />因为它们的作用是不一样的<br /><strong>Gen3 之後只使用 Scrambler, 是否說明 8b/10b 不是很有必要呢?</strong><br />gen3-gen5 没有采用 8b/10b 编码是因为 8b/10b 编码的效率比较低,一个 8 比特的数需要 10 比特来编码,这样在传输时会浪费到 20% 的带宽,对 gen3 以上的速率来讲,浪费太多,可能不太容易接受,所以 gen3-gen5 换了更高效的编码 128b/130b 编码,128b/130b 编码从编码方式来讲并不能维持直流平衡,所以协议换了一种加绕算法来让 0,1 的个数稍微平衡点,此外,为了维持 0,1 个数平衡,协议在很多地方都有做专门的处理,比如 TS1,TS2 的 symbol 14-15 就可以根据前面 0,1 个数的差别来看是作为 TS 的标识符还是作为直流平衡用。gen3 很多有续集的定义 0,1 的个数基本是相等的,而且有续集通常还不需要加绕,也都是维持直流平衡。在链路训练过程中,两端交换最对的就是 TS, 所以为了在 128b/130b 编码中,对 TS 的很多 symbol 也都是进行了加绕处理,防止 lane 与 lane 之间的干扰,而在 8b/10b 编码下,TS 没有加绕的,但是在 8b/10b 编码下,一定程度上也可以防止 lane 与 lane 之间的干扰,因为 8b/10b 编码会根据当前运行一致性(就是 0,1 个数的差别)来确定编码后的值,在多 lane 的链路上,一定程度上也可以保证每条 lane 传输的内容不一样</p></blockquote><p>个人理解,<code>8b/10b</code>做的是比随机化序列更严格的直流平衡:</p><ul><li>不仅保证码流总体的<code>0/1</code>数量相等,同时保证码流一定不会出现连续超过<code>5</code>个<code>0/1</code></li><li>代价就是其编码效率不高。</li></ul><h2 id="font-color-b5d5ff-stylefont-weightbold示例font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold示例font"></a> <font color= #b5d5ff style='font-weight:bold'>示例</font></h2><p>示例来自参考资料[3]。</p><ol><li><p><code>Original Data</code>(原始码,以64字节为例)</p><table><thead><tr><th style="text-align:center">byte0</th><th style="text-align:center">byte1</th><th style="text-align:center">byte2</th><th style="text-align:center">byte3</th><th style="text-align:center">byte4</th><th style="text-align:center">byte5</th><th style="text-align:center">byte6</th><th style="text-align:center">byte7</th></tr></thead><tbody><tr><td style="text-align:center">55</td><td style="text-align:center">55</td><td style="text-align:center">55</td><td style="text-align:center">55</td><td style="text-align:center">55</td><td style="text-align:center">55</td><td style="text-align:center">d5</td><td style="text-align:center"></td></tr><tr><td style="text-align:center">08</td><td style="text-align:center">00</td><td style="text-align:center">20</td><td style="text-align:center">77</td><td style="text-align:center">05</td><td style="text-align:center">38</td><td style="text-align:center">0e</td><td style="text-align:center">8b</td></tr><tr><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">08</td><td style="text-align:center">00</td><td style="text-align:center">45</td><td style="text-align:center">00</td></tr><tr><td style="text-align:center">00</td><td style="text-align:center">28</td><td style="text-align:center">1c</td><td style="text-align:center">66</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">1b</td><td style="text-align:center">06</td></tr><tr><td style="text-align:center">9e</td><td style="text-align:center">d7</td><td style="text-align:center">00</td><td style="text-align:center">0</td><td style="text-align:center">59</td><td style="text-align:center">4d</td><td style="text-align:center">00</td><td style="text-align:center">00</td></tr><tr><td style="text-align:center">68</td><td style="text-align:center">d1</td><td style="text-align:center">39</td><td style="text-align:center">28</td><td style="text-align:center">4a</td><td style="text-align:center">eb</td><td style="text-align:center">00</td><td style="text-align:center">00</td></tr><tr><td style="text-align:center">30</td><td style="text-align:center">77</td><td style="text-align:center">00</td><td style="text-align:center">0</td><td style="text-align:center">7a</td><td style="text-align:center">0c</td><td style="text-align:center">50</td><td style="text-align:center">12</td></tr><tr><td style="text-align:center">1e</td><td style="text-align:center">d2</td><td style="text-align:center">62</td><td style="text-align:center">84</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">00</td></tr><tr><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">93</td><td style="text-align:center">eb</td><td style="text-align:center">f7</td><td style="text-align:center">79</td></tr></tbody></table></li><li><p><code>XGMII</code>(<code>Add SOP,EOP,IDLES and convert to RS indications</code>)</p><table><thead><tr><th style="text-align:center"><strong>07,1</strong></th><th style="text-align:center"><strong>07,1</strong></th><th style="text-align:center"><strong>07,1</strong></th><th style="text-align:center"><strong>07,1</strong></th><th style="text-align:center"><strong>07,1</strong></th><th style="text-align:center"><strong>07,1</strong></th><th style="text-align:center"><strong>07,1</strong></th><th style="text-align:center"><strong>07,1</strong></th><th style="text-align:center"><strong>(IDLE /I/)</strong></th></tr></thead><tbody><tr><td style="text-align:center"><strong>fb,1</strong></td><td style="text-align:center">55,0</td><td style="text-align:center">55,0</td><td style="text-align:center">55,0</td><td style="text-align:center">55,0</td><td style="text-align:center">55,0</td><td style="text-align:center">55,0</td><td style="text-align:center">d5,0</td><td style="text-align:center"><strong>(START /S/) Data</strong></td></tr><tr><td style="text-align:center">08,0</td><td style="text-align:center">00,0</td><td style="text-align:center">20,0</td><td style="text-align:center">77,0</td><td style="text-align:center">05,0</td><td style="text-align:center">38,0</td><td style="text-align:center">0e,0</td><td style="text-align:center">8b,0</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center">00,0</td><td style="text-align:center">00,0</td><td style="text-align:center">00,0</td><td style="text-align:center">00,0</td><td style="text-align:center">08,0</td><td style="text-align:center">00,0</td><td style="text-align:center">45,0</td><td style="text-align:center">00,0</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center">00,0</td><td style="text-align:center">28,0</td><td style="text-align:center">1c,0</td><td style="text-align:center">66,0</td><td style="text-align:center">00,0</td><td style="text-align:center">00,0</td><td style="text-align:center">1b,0</td><td style="text-align:center">06,0</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center">9e,0</td><td style="text-align:center">d7,0</td><td style="text-align:center">00,0</td><td style="text-align:center">00,0</td><td style="text-align:center">59,0</td><td style="text-align:center">4d,0</td><td style="text-align:center">00,0</td><td style="text-align:center">00,0</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center">68,0</td><td style="text-align:center">d1,0</td><td style="text-align:center">39,0</td><td style="text-align:center">28,0</td><td style="text-align:center">4a,0</td><td style="text-align:center">eb,0</td><td style="text-align:center">00,0</td><td style="text-align:center">00,0</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center">30,0</td><td style="text-align:center">77,0</td><td style="text-align:center">00,0</td><td style="text-align:center">00,0</td><td style="text-align:center">7a,0</td><td style="text-align:center">0c,0</td><td style="text-align:center">50,0</td><td style="text-align:center">12,0</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center">1e,0</td><td style="text-align:center">d2,0</td><td style="text-align:center">62,0</td><td style="text-align:center">84,0</td><td style="text-align:center">00,0</td><td style="text-align:center">00,0</td><td style="text-align:center">00,0</td><td style="text-align:center">00,0</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center">00,0</td><td style="text-align:center">00,0</td><td style="text-align:center">00,0</td><td style="text-align:center">00,0</td><td style="text-align:center">93,0</td><td style="text-align:center">eb,0</td><td style="text-align:center">f7,0</td><td style="text-align:center">79,0</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center"><strong>fd,1</strong></td><td style="text-align:center"><strong>07,1</strong></td><td style="text-align:center"><strong>07,1</strong></td><td style="text-align:center"><strong>07,1</strong></td><td style="text-align:center"><strong>07,1</strong></td><td style="text-align:center"><strong>07,1</strong></td><td style="text-align:center"><strong>07,1</strong></td><td style="text-align:center"><strong>07,1</strong></td><td style="text-align:center"><strong>(Terminate /T/) (IDLE /I/)</strong></td></tr></tbody></table></li><li><p><code>10GBASE-R</code>(<code>Arrange into frames with type indicators and sync bit</code>)</p><table><thead><tr><th style="text-align:center">sync</th><th style="text-align:center">byte0</th><th style="text-align:center">byte1</th><th style="text-align:center">byte2</th><th style="text-align:center">byte3</th><th style="text-align:center">byte4</th><th style="text-align:center">byte5</th><th style="text-align:center">byte6</th><th style="text-align:center">byte7</th><th style="text-align:center"></th></tr></thead><tbody><tr><td style="text-align:center"><strong>“10”</strong></td><td style="text-align:center"><strong>1e</strong></td><td style="text-align:center"><strong>00</strong></td><td style="text-align:center"><strong>00</strong></td><td style="text-align:center"><strong>00</strong></td><td style="text-align:center"><strong>00</strong></td><td style="text-align:center"><strong>00</strong></td><td style="text-align:center"><strong>00</strong></td><td style="text-align:center"><strong>00</strong></td><td style="text-align:center"><strong>(IDLE /I/)</strong></td></tr><tr><td style="text-align:center"><strong>“10”</strong></td><td style="text-align:center"><strong>78</strong></td><td style="text-align:center">55</td><td style="text-align:center">55</td><td style="text-align:center">55</td><td style="text-align:center">55</td><td style="text-align:center">55</td><td style="text-align:center">55</td><td style="text-align:center">d5</td><td style="text-align:center"><strong>(START /S/) Data</strong></td></tr><tr><td style="text-align:center">“01”</td><td style="text-align:center">08</td><td style="text-align:center">00</td><td style="text-align:center">20</td><td style="text-align:center">77</td><td style="text-align:center">05</td><td style="text-align:center">38</td><td style="text-align:center">0e</td><td style="text-align:center">8b</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center">“01”</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">08</td><td style="text-align:center">00</td><td style="text-align:center">45</td><td style="text-align:center">00</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center">“01”</td><td style="text-align:center">00</td><td style="text-align:center">28</td><td style="text-align:center">1c</td><td style="text-align:center">66</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">1b</td><td style="text-align:center">06</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center">“01”</td><td style="text-align:center">9e</td><td style="text-align:center">d7</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">59</td><td style="text-align:center">4d</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center">“01”</td><td style="text-align:center">68</td><td style="text-align:center">d1</td><td style="text-align:center">39</td><td style="text-align:center">28</td><td style="text-align:center">4a</td><td style="text-align:center">eb</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center">“01”</td><td style="text-align:center">30</td><td style="text-align:center">77</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">7a</td><td style="text-align:center">0c</td><td style="text-align:center">50</td><td style="text-align:center">12</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center">“01”</td><td style="text-align:center">1e</td><td style="text-align:center">d2</td><td style="text-align:center">62</td><td style="text-align:center">84</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center">“01”</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">93</td><td style="text-align:center">eb</td><td style="text-align:center">f7</td><td style="text-align:center">79</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center"><strong>“10”</strong></td><td style="text-align:center"><strong>87</strong></td><td style="text-align:center"><strong>00</strong></td><td style="text-align:center"><strong>00</strong></td><td style="text-align:center"><strong>00</strong></td><td style="text-align:center"><strong>00</strong></td><td style="text-align:center"><strong>00</strong></td><td style="text-align:center"><strong>00</strong></td><td style="text-align:center"><strong>00</strong></td><td style="text-align:center"><strong>(Terminate /T/) (IDLE /I/)</strong></td></tr></tbody></table></li><li><p><code>Scrambler</code>(<code>Scramble and transmit left-to-right, lsb first</code>)</p><table><thead><tr><th style="text-align:center">sync</th><th style="text-align:center">byte0</th><th style="text-align:center">byte1</th><th style="text-align:center">byte2</th><th style="text-align:center">byte3</th><th style="text-align:center">byte4</th><th style="text-align:center">byte5</th><th style="text-align:center">byte6</th><th style="text-align:center">byte7</th><th style="text-align:center"></th></tr></thead><tbody><tr><td style="text-align:center"><strong>“10”</strong></td><td style="text-align:center">1e</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">00</td><td style="text-align:center">80</td><td style="text-align:center">f0</td><td style="text-align:center">ff</td><td style="text-align:center">7b</td><td style="text-align:center"><strong>(IDLE /I/)</strong></td></tr><tr><td style="text-align:center"><strong>“10”</strong></td><td style="text-align:center">78</td><td style="text-align:center">15</td><td style="text-align:center">ad</td><td style="text-align:center">aa</td><td style="text-align:center">aa</td><td style="text-align:center">16</td><td style="text-align:center">30</td><td style="text-align:center">62</td><td style="text-align:center"><strong>(START /S/) Data</strong></td></tr><tr><td style="text-align:center">“01”</td><td style="text-align:center">08</td><td style="text-align:center">e1</td><td style="text-align:center">81</td><td style="text-align:center">c5</td><td style="text-align:center">6e</td><td style="text-align:center">7c</td><td style="text-align:center">76</td><td style="text-align:center">6a</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center">“01”</td><td style="text-align:center">e6</td><td style="text-align:center">30</td><td style="text-align:center">28</td><td style="text-align:center">80</td><td style="text-align:center">cc</td><td style="text-align:center">aa</td><td style="text-align:center">f4</td><td style="text-align:center">8d</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center">“01”</td><td style="text-align:center">83</td><td style="text-align:center">ee</td><td style="text-align:center">49</td><td style="text-align:center">ae</td><td style="text-align:center">6d</td><td style="text-align:center">93</td><td style="text-align:center">db</td><td style="text-align:center">2c</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center">“01”</td><td style="text-align:center">f3</td><td style="text-align:center">46</td><td style="text-align:center">70</td><td style="text-align:center">db</td><td style="text-align:center">82</td><td style="text-align:center">5a</td><td style="text-align:center">90</td><td style="text-align:center">74</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center">“01”</td><td style="text-align:center">1e</td><td style="text-align:center">51</td><td style="text-align:center">79</td><td style="text-align:center">6b</td><td style="text-align:center">1a</td><td style="text-align:center">25</td><td style="text-align:center">7a</td><td style="text-align:center">c5</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center">“01”</td><td style="text-align:center">41</td><td style="text-align:center">1f</td><td style="text-align:center">bf</td><td style="text-align:center">d4</td><td style="text-align:center">0c</td><td style="text-align:center">44</td><td style="text-align:center">ca</td><td style="text-align:center">4a</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center">“01”</td><td style="text-align:center">09</td><td style="text-align:center">28</td><td style="text-align:center">12</td><td style="text-align:center">d2</td><td style="text-align:center">b5</td><td style="text-align:center">2d</td><td style="text-align:center">3f</td><td style="text-align:center">2c</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center">“01”</td><td style="text-align:center">49</td><td style="text-align:center">92</td><td style="text-align:center">de</td><td style="text-align:center">c8</td><td style="text-align:center">b3</td><td style="text-align:center">33</td><td style="text-align:center">0e</td><td style="text-align:center">32</td><td style="text-align:center"><strong>Data</strong></td></tr><tr><td style="text-align:center"><strong>“10”</strong></td><td style="text-align:center">2a</td><td style="text-align:center">a3</td><td style="text-align:center">3a</td><td style="text-align:center">c8</td><td style="text-align:center">d7</td><td style="text-align:center">ad</td><td style="text-align:center">99</td><td style="text-align:center">b5</td><td style="text-align:center"><strong>(Terminate /T/) (IDLE /I/)</strong></td></tr></tbody></table></li></ol><blockquote><p>注:以上扰码器假定初始值为全<code>1</code>,非全<code>0</code></p></blockquote><p>根据上述扰码结果可计算<code>0/1</code>个数分别为<code>326/378</code>,大致是均衡的。</p><h1 id="font-color-b5d5ff-stylefont-weightbold编码器-font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold编码器-font"></a> <font color= #b5d5ff style='font-weight:bold'>编码器 </font></h1><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/64b66b/coder.png" alt="coder" /></p><h1 id="font-color-b5d5ff-stylefont-weightbold解码器-font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold解码器-font"></a> <font color= #b5d5ff style='font-weight:bold'>解码器 </font></h1><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/64b66b/decoder.png" alt="decoder" /></p><h1 id="font-color-b5d5ff-stylefont-weightbold扰码器-解扰器-font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold扰码器-解扰器-font"></a> <font color= #b5d5ff style='font-weight:bold'>扰码器 & 解扰器 </font></h1><p>串行扰码</p><p>并行扰码</p><p><font color= greden style='font-weight:bold' font size= 8>未完待续…长期施工…</font></p><h1 id="font-color-b5d5ff-stylefont-weightbold参考资料font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold参考资料font"></a> <font color= #b5d5ff style='font-weight:bold'>参考资料</font></h1><p>[1] IEEE 802.3ae 10Gb/s Task Force : <a href="https://grouper.ieee.org/groups/802/3/ae/public/jul00/walker_1_0700.pdf">walker_1_0300(64B66B-coding)</a></p><p>[2] P802.3bn EPoC PHY Task Force : <a href="https://www.ieee802.org/3/bn/public/mar13/hajduczenia_3bn_04_0313.pdf">hajduczenia_3bn_04_0313(64B66B-linecode)</a></p><p>[3] IEEE 802.3ae 10Gb/s Task Force : <a href="https://grouper.ieee.org/groups/802/3/ae/public/mar00/walker_1_0300.pdf">walker_1_0700(64b/66b coding update)</a></p><p>[4] <a href="https://www.cnblogs.com/LiamJacob/p/17675759.html">高速接口_(10Gbps )万兆网络中物理编码层 64B66B 编码解码实现 - 李白的白 - 博客园 (cnblogs.com)</a></p>]]></content>
<categories>
<category> ic </category>
<category> design </category>
<category> serdes </category>
</categories>
<tags>
<tag> 64b66b </tag>
<tag> dc balance </tag>
</tags>
</entry>
<entry>
<title>8b10b</title>
<link href="/posts/8b10b/"/>
<url>/posts/8b10b/</url>
<content type="html"><![CDATA[<h1 id="font-color-b5d5ff-stylefont-weightbold背景font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold背景font"></a> <font color= #b5d5ff style='font-weight:bold'>背景</font></h1><ul><li>关于为什么要进行<code>8b10b</code>编码,主要是为了直流平衡(<code>dc balance</code>),由于交流耦合会导致信号抖动、<code>ISI</code>等问题。可以参考<a href="https://blog.csdn.net/qq_37654178/article/details/112391245">8B/10B编码基本原理</a>。本文基于<code>1983</code>年<code>IBM</code>的<code>8b10b</code>编解码的原文章<a href="https://ieeexplore.ieee.org/document/5390392">A DC-Balanced, Partitioned-Block, 8B/10B Transmission Code | IBM Journals & Magazine | IEEE Xplore</a>。</li><li><code>8b10b</code>编码分为<code>5b6b</code>和<code>3b4b</code>两个部分,其编码逻辑如下图所示:</li></ul><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/8b10b_enc.png" alt="8b10b_enc" /></p><ul><li>一般材料会采用<code>5b6b</code>和<code>3b4b</code>如下的两个编码表,但却没有说明<code>EDCBA</code>到<code>abcdei</code>的命名方式,以及原本编码的具体逻辑。</li></ul><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/5b6b_enc.png" alt="5b6b_enc" /></p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/3b4b_enc.png" alt="3b4b_enc" /></p><h1 id="font-color-b5d5ff-stylefont-weightbold原理分析font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold原理分析font"></a> <font color= #b5d5ff style='font-weight:bold'>原理分析</font></h1><h2 id="font-color-b5d5ff-stylefont-weightbold数据码font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold数据码font"></a> <font color= #b5d5ff style='font-weight:bold'>数据码</font></h2><h3 id="font-color-b5d5ff-stylefont-weightbold5b6bfont"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold5b6bfont"></a> <font color= #b5d5ff style='font-weight:bold'>5b6b</font></h3><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/5b6b_d.png" alt="5b6b_d" /></p><p><code>D.x.y</code>中的<code>.x</code>代表<code>8b</code>数据中<code>5b</code>的部分,比如<code>D.13.y</code>就是<code>5'b01101</code>。</p><p><code>5b6b</code>的编码逻辑:</p><ol><li>将<code>5b</code>数据<code>EDCBA</code><font color= red style='font-weight:bold'>倒</font>为<code>ABCDE</code>,最后一位<code>I</code>统一补<code>0</code>,形成<code>ABCDEI</code></li><li>观察<code>ABCDEI</code>的<code>0</code>,<code>1</code>数量是否平衡,<ul><li><code>0</code>,<code>1</code>平衡(各<code>3</code>个),直接输出<code>abcdei=ABCDEI</code></li><li><code>0</code>,<code>1</code>不平衡,根据码表进行比特位翻转<ul><li>码表无标<font color= red style='font-weight:bold'>红</font>比特位,直接输出<code>abcdei=ABCDEI</code></li><li>码表有标<font color= red style='font-weight:bold'>红</font>比特位,翻转对应比特位</li></ul></li></ul></li></ol><p>举例:</p><ul><li><p><code>D.11.y</code>:<code>EDCBA=01011</code>,倒转补<code>0</code>后<code>ABCDEI=110100</code>,<code>0</code>,<code>1</code>平衡,不需要翻转码字,<code>abcdei=ABCDEI=110100</code></p></li><li><p><code>D.18.y</code>:<code>EDCBA=10010</code>,倒转补<code>0</code>后<code>ABCDEI=010010</code>,<code>0</code>,<code>1</code>不平衡,根据码表翻转码字<code>I</code>,<code>abcdei=ABCDEI'=010011</code></p></li><li><p><code>D.24.y</code>:<code>EDCBA=11000</code>,倒转补<code>0</code>后<code>ABCDEI=000110</code>,<code>0</code>,<code>1</code>不平衡,根据码表翻转码字<code>C</code>和<code>E</code>,<code>abcdei=ABC'DE'I=001100</code></p></li><li><p><code>D.30.y</code>:<code>EDCBA=11110</code>,倒转补<code>0</code>后<code>ABCDEI=011110</code>,<code>0</code>,<code>1</code>不平衡,根据码表,不需要翻转码字,<code>abcdei=ABCDEI=011110</code></p></li><li><p><code>D.31.y</code>:<code>EDCBA=11111</code>,倒转补<code>0</code>后<code>ABCDEI=111110</code>,<code>0</code>,<code>1</code>不平衡,根据码表翻转码字<code>B</code>、<code>D</code>和<code>I</code>,<code>abcdei=AB'CD'EI'=101011</code></p></li></ul><h3 id="font-color-b5d5ff-stylefont-weightbold3b4bfont"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold3b4bfont"></a> <font color= #b5d5ff style='font-weight:bold'>3b4b</font></h3><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/3b4b_d.png" alt="3b4b_d" /></p><p><code>D.x.y</code>代表中的<code>.y</code>代表<code>8b</code>数据中<code>3b</code>的部分,比如<code>D.x.4</code>就是<code>3'b100</code>。</p><p><code>3b4b</code>的编码逻辑:</p><ol><li>将<code>3b</code>数据<code>HGF</code>倒为<code>FGH</code>,最后一位<code>J</code>统一补<code>0</code>,形成<code>FGHJ</code></li><li>观察<code>FGHJ</code>的<code>0</code>,<code>1</code>数量是否平衡,<ul><li><code>0</code>,<code>1</code>平衡(各<code>2</code>个),直接输出<code>fghj=FGHJ</code></li><li><code>0</code>,<code>1</code>不平衡,根据码表进行比特位翻转<ul><li>码表无标<font color= red style='font-weight:bold'>红</font>比特位,直接输出<code>fghj=FGHJ</code></li><li>码表有标<font color= red style='font-weight:bold'>红</font>比特位,翻转对应比特位</li></ul></li></ul></li></ol><p>举例:</p><ul><li><p><code>D.x.3</code>:<code>HGF=011</code>,翻转补<code>0</code>后<code>FGHJ=1100</code>,<code>0</code>,<code>1</code>平衡,不需要翻转码字,<code>fghj=FGHJ=1100</code></p></li><li><p><code>D.x.1</code>:<code>HGF=001</code>,翻转补<code>0</code>后<code>FGHJ=1000</code>,<code>0</code>,<code>1</code>不平衡,根据码表翻转码字<code>J</code>,<code>fghj=FGHJ'=1001</code></p></li><li><p><code>D.x.4</code>:<code>HGF=100</code>,翻转补<code>0</code>后<code>FGHJ=0010</code>,<code>0</code>,<code>1</code>不平衡,根据码表,不需要翻转码字,<code>fghj=FGHJ=0010</code></p></li><li><p><code>D.x.7</code>:</p><ul><li><p><code>D.x.P07</code>:<code>HGF=111</code>,翻转补<code>0</code>后<code>FGHJ=1110</code>,<code>0</code>,<code>1</code>不平衡,根据码表,不需要翻转码字,<code>fghj=FGHJ=1110</code></p></li><li><p>若<code>D.x.P07</code>有码流不平衡风险,则使用<code>D.x.A07</code>(<code>Alternative</code>,备用码)根据码表翻转码字<code>F</code>和<code>J</code>,<code>fghj=F'GHJ'=0111</code></p></li><li><p>关于<code>D.x.P07</code>和<code>D.x.A07</code>,后续章节会详细讲解。</p></li></ul></li></ul><h3 id="font-color-b5d5ff-stylefont-weightbold数据极性font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold数据极性font"></a> <font color= #b5d5ff style='font-weight:bold'>数据极性</font></h3><p>不论是<code>5b6b</code>编码,还是<code>3b4b</code>编码,其编码均有属性叫做极性(<code>disparity</code>),极性代表这个码字<code>0</code>和<code>1</code>的数量多少。</p><p><code>5b6b</code>举例:</p><ul><li><code>D.24.y</code>,其<code>6b</code>编码为<code>001100</code>,<code>0</code>比<code>1</code>的数量多<code>2</code>,其极性为<code>-</code>,实际为<code>-2</code></li><li><code>D.30.y</code>:其<code>6b</code>编码为<code>011110</code>,<code>1</code>比<code>0</code>的数量多<code>2</code>,其极性为<code>+</code>,实际为<code>+2</code></li><li><code>D.11.y</code>:其<code>6b</code>编码为<code>110100</code>,<code>1</code>和<code>0</code>的数量一样,其极性为空,实际为<code>0</code></li></ul><p><code>3b4b</code>举例:</p><ul><li><code>D.x.0</code>:其<code>4b</code>编码为<code>0100</code>,<code>0</code>比<code>1</code>的数量多<code>2</code>,其极性为<code>-</code>,实际为<code>-2</code></li><li><code>D.x.7</code>:其<code>4b</code>编码为<code>1110</code>或<code>0111</code>,<code>1</code>比<code>0</code>的数量多<code>2</code>,其极性为<code>+</code>,实际为<code>+2</code></li><li><code>D.x.6</code>:其<code>4b</code>编码为<code>0110</code>,<code>1</code>和<code>0</code>的数量一样,其极性为空,实际为<code>0</code></li></ul><p>观察<code>5b6b</code>和<code>3b4b</code>的编码表可以发现,输出的<code>6b</code>编码和<code>4b</code>编码只存在两种形式:</p><ul><li><p>极性码</p><ul><li><code>0</code>和<code>1</code>的数量不平衡的码字,编码表中不平衡数量仅为<code>2</code>,因此极性码的极性为<code>±2</code></li><li><code>001100</code>(<code>+2</code>),<code>011110</code>(<code>-2</code>)等是<code>6b</code>极性码</li><li><code>0100</code>(<code>+2</code>),<code>1110</code>(<code>-2</code>)等是<code>4b</code>极性码</li></ul></li><li><p>平衡码</p><ul><li><p><code>0</code>和<code>1</code>的数量平衡的码字,平衡码的极性为<code>0</code></p></li><li><p><code>110100</code>,<code>101001</code>等是<code>6b</code>平衡码</p></li><li><p><code>0110</code>,<code>0101</code>等是<code>4b</code>平衡码</p></li></ul></li></ul><h4 id="font-color-b5d5ff-stylefont-weightbold极性码font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold极性码font"></a> <font color= #b5d5ff style='font-weight:bold'>极性码</font></h4><p>极性码按照码表编码,但最终输出的码字有两种。</p><ul><li>直接编码出来<font color= red style='font-weight:bold'>原始</font>的码字</li><li>直接编码后<font color= red style='font-weight:bold'>按位取反</font>的码字</li></ul><p>举例:</p><ul><li><code>D.24.y</code>,原始<code>6b</code>编码为<code>001100</code>,其极性为<code>-</code>,另一种码字为<code>110011</code>,其极性为<code>+</code></li><li><code>D.30.y</code>:原始<code>6b</code>编码为<code>011110</code>,其极性为<code>+</code>,另一种码字为<code>100001</code>,其极性为<code>-</code></li><li><code>D.x.0</code>:原始<code>4b</code>编码为<code>0100</code>,其极性为<code>-</code>,另一种码字为<code>1011</code>,其极性为<code>+</code></li><li><code>D.x.7</code>:原始<code>4b</code>编码为<code>1110</code>,其极性为<code>+</code>,另一种码字为<code>0001</code>,其极性为<code>-</code></li></ul><p>极性码是<code>±</code>极性(<code>positive</code>/<code>negative</code> <code>disparity</code>)的。</p><h4 id="font-color-b5d5ff-stylefont-weightbold平衡码font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold平衡码font"></a> <font color= #b5d5ff style='font-weight:bold'>平衡码</font></h4><p>虽然平衡码都是<code>0</code>和<code>1</code>的数量平衡的码,但他们码字中<code>0</code>和<code>1</code>的间隔不一定一致,可简单分为两种。</p><ul><li><p>完美平衡码(<code>Perfect Balance Code</code>)</p><ul><li><code>6b</code>编码:<code>010101</code>,<code>010101</code>,<code>101100</code>等</li><li><code>4b</code>编码:<code>0101</code>,<code>1001</code>等</li></ul></li><li><p>不完美平衡码(<code>Imperfect Balance Code</code>)</p><ul><li><code>6b</code>编码:<code>111000</code></li><li><code>4b</code>编码:<code>1100</code></li></ul></li></ul><p>平衡码是<code>0</code>极性/空极性(<code>zero/null disparity</code>)的。</p><h4 id="font-color-b5d5ff-stylefont-weightbold特殊极性码font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold特殊极性码font"></a> <font color= #b5d5ff style='font-weight:bold'>特殊极性码</font></h4><p>前面讨论过,<code>D.x.7</code>是一种特殊的极性码,他有两种原始码字。</p><ul><li><code>D.x.P07</code>:原始<code>4b</code>编码为<code>1110</code>,其极性为<code>+</code>,另一种码字为<code>0001</code>,其极性为<code>-</code></li><li><code>D.x.A07</code>:原始<code>4b</code>编码为<code>0111</code>,其极性为<code>+</code>,另一种码字为<code>1000</code>,其极性为<code>-</code></li></ul><p>这种特殊的极性码是为了码间的直流平衡设计的,关于<code>D.x.P07</code>和<code>D.x.A07</code>,可以参考<a href="#%E7%A4%BA%E4%BE%8B2">示例2</a>中的实际使用。</p><h2 id="font-color-b5d5ff-stylefont-weightbold极性控制font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold极性控制font"></a> <font color= #b5d5ff style='font-weight:bold'>极性控制</font></h2><h3 id="font-color-b5d5ff-stylefont-weightbold运行极性font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold运行极性font"></a> <font color= #b5d5ff style='font-weight:bold'>运行极性</font></h3><p>运行极性/运行不一致性(<code>Running Disparity</code>,<code>RD</code>),指的是在编码产生码流的过程中,实时的码流极性。</p><p>比如编码<code>D.30.6</code>+<code>D.11.4</code>的码流,运行极性(<code>RD</code>)分析如下:</p><ul><li>编码过程:<code>011110</code>+<code>0110</code>+<code>110100</code>+<code>0010</code></li><li>假设初始极性为<code>-1</code>,则运行极性(<code>RD</code>):<code>RD = -1 + 2 + 0 + 0 - 2 = -1</code></li></ul><h3 id="font-color-b5d5ff-stylefont-weightbold运行长度font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold运行长度font"></a> <font color= #b5d5ff style='font-weight:bold'>运行长度</font></h3><p>运行长度(<code>Running Length</code>,<code>RL</code>),指的是连续<code>0</code>或者<code>1</code>的数量,注意运行长度不止代表码字内的连续<code>0</code>,<code>1</code>数量,也代表码字间的连续<code>0</code>,<code>1</code>数量,是衡量整个数据流是否直流平衡的一种方式。</p><p>比如编码<code>D.30.6</code>+<code>D.11.4</code>的码流,运行长度(<code>RL</code>)分析如下:</p><ul><li>编码过程:<code>011110</code>+<code>0110</code>+<code>110100</code>+<code>0010</code></li></ul><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/rl.png" alt="rl" /></p><h3 id="font-color-b5d5ff-stylefont-weightbold控制原则1font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold控制原则1font"></a> <font color= #b5d5ff style='font-weight:bold'>控制原则1</font></h3><p>控制直流平衡,有两个方面的考虑:</p><ul><li><code>-2<RD<2</code>,运行极性不超过<code>±2</code>,即总体码流的<code>0</code>,<code>1</code>数量相同</li><li><code>RL<5</code>,运行长度不超过<code>5</code>,即总体码流连续<code>0</code>,<code>1</code>数量不超过<code>5</code></li></ul><p>这里首先考虑<code>RD</code>的控制总体原则:</p><ul><li>当前编码极性为空(<code>0</code>),则<font color= red style='font-weight:bold'>继承</font>码流极性,当前编码不变</li><li>当前编码极性非空(<code>±2</code>),则保持码流极性平衡<ul><li>若当前编码与码流极性相同,则按位取反,<font color= red style='font-weight:bold'>翻转</font>极性</li><li>若当前编码与码流极性相反,则保持编码,<font color= red style='font-weight:bold'>保持</font>极性</li></ul></li></ul><p>简单来说,就是<code>0</code>多了补<code>1</code>,<code>1</code>多了补<code>0</code>,<code>0</code>、<code>1</code>一样多则不变的意思。</p><h3 id="font-color-b5d5ff-stylefont-weightbold示例1font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold示例1font"></a> <font color= #b5d5ff style='font-weight:bold'>示例1</font></h3><blockquote><p>注意:从这里开始的所有示例均未按照<code>8b10b</code>编码规则,即:</p><p><code>8b</code>中后<code>5b</code>编码为<code>6b</code>在前,<code>8b</code>中前<code>3b</code>编码为<code>4b</code>在后</p><p>而是直接按照常识的规则进行的编码,即:</p><p><code>8b</code>中前<code>5b</code>编码为<code>6b</code>在前,<code>8b</code>中后<code>3b</code>编码为<code>4b</code>在后</p><p>但总而言之,编码逻辑是一致的</p></blockquote><p>假设发送码流<code>8'h55,8'hC0,8'hF2,8'hF4</code>,初始极性为<code>RD=-1</code>,编码极性简写为<code>disp</code>(<code>disparity</code>)</p><ol><li><code>8'h55=8'b01010101</code><ul><li><code>5B=5'b01010=5'd10</code>,<code>3B=3'b101=3'd5</code>,<code>D.10.5</code></li><li><code>5B</code>编码:<code>6B=6'b010101</code>,<code>disp=0</code>,继承码流极性,<code>RD=-1+0=-1</code></li><li><code>3B</code>编码:<code>4B=4'b1010</code>,<code>disp=0</code>,继承码流极性,<code>RD=-1+0=-1</code></li></ul></li><li><code>8'hC0=8'b11000000</code><ul><li><code>5B=5'b11000=5'd24</code>,<code>3B=3'b000=3'd0</code>,<code>D.24.0</code></li><li><code>5B</code>编码:<code>6B=6'b110011</code>,<code>disp=+2</code>,保持极性(当前码流<code>RD=-1</code>),<code>RD=-1+2=+1</code></li><li><code>3B</code>编码:<code>4B=4'b0100</code>,<code>disp=-2</code>,保持极性(当前码流<code>RD=+1</code>),<code>RD=+1-2=-1</code></li></ul></li><li><code>8'hF2=8'b11110010</code><ul><li><code>5B=5'b11110=5'd30</code>,<code>3B=3'b010=3'd2</code>,<code>D.30.2</code></li><li><code>5B</code>编码:<code>6B=6'b011110</code>,<code>disp=+2</code>,保持极性(当前码流<code>RD=-1</code>),<code>RD=-1+2=+1</code></li><li><code>3B</code>编码:<code>4B=4'b0101</code>,<code>disp=0</code>,继承码流极性,<code>RD=+1+0=+1</code></li></ul></li><li><code>8'hF4=8'b11110100</code><ul><li><code>5B=5'b11110=5'd30</code>,<code>3B=3'b100=3'd4</code>,<code>D.30.4</code></li><li><code>5B</code>编码:<code>6B=6'b011110</code>,<code>disp=+2</code>,翻转极性(当前码流<code>RD=+1</code>),<code>6B=6'b100001</code>,<code>disp=-2</code>,<code>RD=+1-2=-1</code></li><li><code>3B</code>编码:<code>4B=4'b0010</code>,<code>disp=-2</code>,翻转极性(当前码流<code>RD=-1</code>),<code>4B=4'b1101</code>,<code>disp=+2</code>,<code>RD=-1+2=+1</code></li></ul></li></ol><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/eg1.png" alt="eg1" /></p><h3 id="font-color-b5d5ff-stylefont-weightbold控制原则2font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold控制原则2font"></a> <font color= #b5d5ff style='font-weight:bold'>控制原则2</font></h3><p>在<a href="#%E6%8E%A7%E5%88%B6%E5%8E%9F%E5%88%991">控制原则1</a>中,只讨论了<code>RD</code>控制,虽然正常的<code>RD</code>控制可保证<code>RL<5</code>,但一些特殊情况需要进行特殊控制。</p><h4 id="font-color-b5d5ff-stylefont-weightbold不完美平衡码font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold不完美平衡码font"></a> <font color= #b5d5ff style='font-weight:bold'>不完美平衡码</font></h4><p>不完美平衡码的定义参考<a href="#%E5%B9%B3%E8%A1%A1%E7%A0%81">平衡码</a>。不完美平衡码也必须按极性码的做法保持码流极性平衡,保持或翻转编码。</p><p><code>6b</code>不完美平衡码举例:</p><p>假设发送码流<code>8'A8,8'h38</code>,初始极性为<code>RD=-1</code>,编码极性简写为<code>disp</code>(<code>disparity</code>)</p><ol><li><code>8'hA8=8'b10101000</code><ul><li><code>5B=5'b10101=5'd21</code>,<code>3B=3'b000=3'd0</code>,<code>D.21.0</code></li><li><code>5B</code>编码:<code>6B=6'b101010</code>,<code>disp=0</code>,继承码流极性,<code>RD=-1+0=-1</code></li><li><code>3B</code>编码:<code>4B=4'b1011</code>,<code>disp=+2</code>,保持极性(当前码流<code>RD=-1</code>),<code>RD=-1+2=+1</code></li></ul></li><li><code>8'h38=8'b00111000</code><ul><li><code>5B=5'b00111=5'd7</code>,<code>3B=3'b000=3'd0</code>,<code>D.7.0</code></li><li><code>5B</code>编码:<code>6B=6'b111000</code>,<code>disp=0</code><ul><li>此时,如果按照<code>disp=0</code>,继承码流极性,当前编码不变的话,则前面<code>4B</code>的<code>1011</code>和<code>6B</code>的<code>111000</code>会形成<code>1011_111000</code>,构成<code>RL=5</code>,即连续<code>5</code>个<code>1</code></li><li>因此,按极性码的做法保持码流极性平衡,此时应翻转编码,<code>6B=6'b000111</code>,<code>disp=0</code>,这样<code>1011_000111</code>,就不会有<code>RL=5</code>出现了</li><li><code>RD=+1+0=+1</code></li></ul></li><li><code>3B</code>编码:<code>4B=4'b0100</code>,<code>disp=-2</code>,保持极性(当前码流<code>RD=+1</code>),<code>RD=+1-2=-1</code></li></ul></li></ol><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/eg_bal_code.png" alt="eg_bal_code.png" /></p><p><code>4b</code>不完美平衡码举例:</p><p>假设发送码流<code>8'7B</code>,初始极性为<code>RD=-1</code>,编码极性简写为<code>disp</code>(<code>disparity</code>)</p><ol><li><p><code>8'h7B=8'b01111011</code></p><ul><li><p><code>5B=5'b01111=5'd15</code>,<code>3B=3'b011=3'd3</code>,<code>D.15.3</code></p></li><li><p><code>5B</code>编码:<code>6B=6'b010111</code>,<code>disp=+2</code>,保持极性(当前码流<code>RD=-1</code>),<code>RD=-1+2=+1</code></p></li><li><p><code>3B</code>编码:<code>4B=4'b1100</code>,<code>disp=0</code></p><ul><li><p>此时,如果按照<code>disp=0</code>,继承码流极性,当前编码不变的话,则前面<code>6B</code>的<code>010111</code>和<code>4B</code>的<code>1100</code>会形成<code>010111_1100</code>,构成<code>RL=5</code>,即连续<code>5</code>个<code>1</code></p></li><li><p>因此,按极性码的做法保持码流极性平衡,此时应翻转编码,<code>4B=4'b0011</code>,<code>disp=0</code>,这样<code>010111_0011</code>,就不会有<code>RL=5</code>出现了</p></li><li><p><code>RD=+1+0=+1</code></p></li></ul></li></ul></li></ol><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/eg2_bal_code.png" alt="eg2_bal_code.png" /></p><h4 id="font-color-b5d5ff-stylefont-weightbolddx7font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbolddx7font"></a> <font color= #b5d5ff style='font-weight:bold'>D.x.7</font></h4><p>由于<code>D.x.7</code>原始<code>4b</code>编码为<code>1110</code>,其极性为<code>+</code>,另一种码字为<code>0001</code>,其极性为<code>-</code>。</p><p>这种码字存在连续的<code>111</code>或者<code>000</code>,可能会与前一个<code>6B</code>的完美平衡码末尾的<code>11</code>或<code>00</code>构成<code>RL=5</code>,因此需要使用备用编码。</p><ul><li><code>D.x.P07</code>:原始<code>4b</code>编码为<code>1110</code>,其极性为<code>+</code>,另一种码字为<code>0001</code>,其极性为<code>-</code>(主要编码)</li><li><code>D.x.A07</code>:原始<code>4b</code>编码为<code>0111</code>,其极性为<code>+</code>,另一种码字为<code>1000</code>,其极性为<code>-</code>(备用编码)</li></ul><p>举例:</p><p>假设发送码流<code>8'h8F</code>,初始极性为<code>RD=-1</code>,编码极性简写为<code>disp</code>(<code>disparity</code>)</p><ol><li><code>8'h8F=8'b10001111</code><ul><li><p><code>5B=5'b10001=5'd17</code>,<code>3B=3'b111=3'd7</code>,<code>D.17.7</code></p></li><li><p><code>5B</code>编码:<code>6B=6'b100011</code>,<code>disp=0</code>,继承码流极性,<code>RD=-1+0=-1</code></p></li><li><p><code>3B</code>编码:<code>4B=4'b1110</code>,<code>disp=+2</code></p><ul><li><p>此时,如果按照<code>disp=+2</code>,保持极性(当前码流<code>RD=-1</code>)的话,则前面<code>6B</code>的<code>100011</code>和<code>4B</code>的<code>1110</code>会形成<code>100011_1110</code>,构成<code>RL=5</code>,即连续<code>5</code>个<code>1</code></p></li><li><p>但此时不能翻转编码,因为需要保持<code>RD</code>平衡</p></li><li><p>因此需要<code>disp=+2</code>但没有连续<code>111</code>的码字,即<code>4B=4'b0111</code>,这样<code>100011_0111</code>,就不会有<code>RL=5</code>出现了</p></li><li><p><code>RD=-1+2=+1</code></p></li></ul></li></ul></li></ol><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/eg_d.x.7.png" alt="eg_d.x.7.png" /></p><p>举例:</p><p>假设发送码流<code>8'A8,8'5F</code>,初始极性为<code>RD=-1</code>,编码极性简写为<code>disp</code>(<code>disparity</code>)</p><ol><li><p><code>8'hA8=8'b10101000</code></p><ul><li><code>5B=5'b10101=5'd21</code>,<code>3B=3'b000=3'd0</code>,<code>D.21.0</code></li><li><code>5B</code>编码:<code>6B=6'b101010</code>,<code>disp=0</code>,继承码流极性,<code>RD=-1+0=-1</code></li><li><code>3B</code>编码:<code>4B=4'b1011</code>,<code>disp=+2</code>,保持极性(当前码流<code>RD=-1</code>),<code>RD=-1+2=+1</code></li></ul></li><li><p><code>8'h5F=8'b01011111</code></p><ul><li><p><code>5B=5'b01011=5'd11</code>,<code>3B=3'b111=3'd7</code>,<code>D.11.7</code></p></li><li><p><code>5B</code>编码:<code>6B=6'b110100</code>,<code>disp=0</code>,继承码流极性,<code>RD=+1+0=+1</code></p></li><li><p><code>3B</code>编码:<code>4B=4'b1110</code>,<code>disp=+2</code></p><ul><li><p>此时,如果按照<code>disp=+2</code>,翻转极性(当前码流<code>RD=+1</code>)的话,则前面<code>6B</code>的<code>110100</code>和<code>4B</code>的<code>0001</code>会形成<code>110100_0001</code>,构成<code>RL=5</code>,即连续<code>5</code>个<code>0</code></p></li><li><p>但此时不能翻转编码,因为需要保持<code>RD</code>平衡</p></li><li><p>因此需要<code>disp=-2</code>但没有连续<code>000</code>的码字,即<code>4B=4'b1000</code>,这样<code>100011_1000</code>,就不会有<code>RL=5</code>出现了</p></li><li><p><code>RD=+1-2=-1</code></p></li></ul></li></ul></li></ol><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/eg2_d.x.7.png" alt="eg2_d.x.7.png" /></p><p>以上所有的控制原则可以保证<code>RL<5</code>,完整的证明<code>8b10b</code>编码<code>RL<5</code>可以参考<a href="#%E7%9B%B4%E6%B5%81%E5%B9%B3%E8%A1%A1">直流平衡</a>。</p><h3 id="font-color-b5d5ff-stylefont-weightbold示例2font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold示例2font"></a> <font color= #b5d5ff style='font-weight:bold'>示例2</font></h3><p>在<a href="#%E7%A4%BA%E4%BE%8B1">示例1</a>的基础上,添加<code>8'h3B,8'6F</code>,即发送码流<code>8'h55,8'hC0,8'hF2,8'hF4,8'h3B,8'h6F</code>。</p><ol><li><code>8'h3B=8'b00111011</code><ul><li><code>5B=5'b00111=5'd7</code>,<code>3B=3'b011=3'd3</code>,<code>D.7.3</code></li><li><code>5B</code>编码:<code>6B=6'b111000</code>,<code>disp=0</code>,翻转极性(当前码流<code>RD=+1</code>),<code>6B=6'b000111</code>,<code>disp=0</code>,<code>RD=+1+0=+1</code>(不完美平衡码)</li><li><code>3B</code>编码:<code>4B=4'b0011</code>,<code>disp=0</code>,继承码流极性,<code>RD=+1+0=+1</code></li></ul></li><li><code>8'h6F=8'b01101111</code><ul><li><code>5B=5'b01101=5'd13</code>,<code>3B=3'b111=3'd7</code>,<code>D.13.7</code></li><li><code>5B</code>编码:<code>6B=6'b101100</code>,<code>disp=0</code>,继承码流极性,<code>RD=+1+0=+1</code></li><li><code>3B</code>编码:<code>4B=4'b1110</code>,<code>disp=+2</code>,翻转极性(当前码流<code>RD=+1</code>),即<code>4B=4'b0001</code>,但前一个<code>6B</code>存在连续两个<code>0</code>,因此采用备用编码,<code>4B=4'b1000</code>,<code>disp=-2</code>,<code>RD=+1-2=-1</code></li></ul></li></ol><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/eg2.png" alt="eg2" /></p><h2 id="font-color-b5d5ff-stylefont-weightbold控制码font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold控制码font"></a> <font color= #b5d5ff style='font-weight:bold'>控制码</font></h2><p>控制码(控制字)是用于码流控制的码字,可以作为起始、结尾、分隔,部分码字还可以用于链路同步。</p><p>控制码采用与数据码不同的编码方式实现。</p><p><code>5b6b</code>编码表:</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/5b6b_k.png" alt="5b6b_k" /></p><p><code>3b4b</code>编码表:</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/3b4b_k.png" alt="3b4b_k" /></p><p>控制码主要分为两种,下面分别讨论。</p><h3 id="font-color-b5d5ff-stylefont-weightboldk28yfont"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldk28yfont"></a> <font color= #b5d5ff style='font-weight:bold'>K.28.y</font></h3><p><code>K.28.y</code>是指输入数据<code>5B</code>部分为<code>5b'11100=5'd28</code>类型的控制码。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/k.28.y.png" alt="k28" /></p><p><code>K.28.y</code>的构造逻辑是<code>5b6b</code>编码表中制造与数据不同的编码方式(数据码中不会出现<code>cdei=1111/0000</code>)。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/k.28+d.28.png" alt="k.28+d.28" /></p><h4 id="font-color-b5d5ff-stylefont-weightbold单一性font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold单一性font"></a> <font color= #b5d5ff style='font-weight:bold'>单一性</font></h4><p>注意,与数据不同的编码方式仅代表<code>5b6b</code>数据码中不会出现<code>1111/0000</code>,码间仍然可能组合出<code>1111/0000</code>,因此,这种码字在解码端可能会出现混淆。</p><p>举例:</p><p>假设发送码流<code>8'h1F,8'h88</code>,初始极性为<code>RD=-1</code></p><ul><li><code>D.3.7+D.17.0</code></li><li><code>6B=6'b110001</code>+<code>4B=4'b1110</code>+<code>6B=6'b100011</code>+<code>4B=4'b0100</code>,码流为<code>...1100011110100010100...</code></li><li>可能误识别码流为<code>001111_0100</code>,即<code>K28.0</code></li></ul><p>编码图:</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/sigularity_enc.png" alt="sigularity_enc" /></p><p>码流图:</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/sigularity_flow.png" alt="sigularity_flow" /></p><p>可以避免混淆的码字具备<font color= red style='font-weight:bold'>单一性</font>(<code>singularity</code>)。</p><ul><li><p><code>K28.1</code>,<code>K28.5</code>以及<code>K28.7</code>具有特殊的标志位(<code>RL2+RL5</code>,即<code>...0011111...</code>或<code>...1100000...</code>),这在其他码字以及码间都不可能出现</p></li><li><p>因此,<code>K28.1</code>,<code>K28.5</code>以及<code>K28.7</code>具备单一性(<code>singularity</code>)</p></li><li><p><code>K28.1</code>,<code>K28.5</code>以及<code>K28.7</code>也被称为<font color= red style='font-weight:bold'>逗号码</font>(<code>comma</code>),只有逗号码可以用于链路同步,因为其他码不具备单一性(<code>singularity</code>)</p></li></ul><h4 id="font-color-b5d5ff-stylefont-weightboldk28y-极性font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldk28y-极性font"></a> <font color= #b5d5ff style='font-weight:bold'>K.28.y 极性</font></h4><p>如果连续发送<code>K.28.y</code>,有两种情况:</p><ul><li><p><code>0</code>极性,单码保持,<code>±</code>码字选择根据上一次<code>rd</code>决定,类似<a href="#%E4%B8%8D%E5%AE%8C%E7%BE%8E%E5%B9%B3%E8%A1%A1%E7%A0%81">不完美平衡码</a></p></li><li><p><code>±</code>极性,双码翻转</p></li></ul><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/k.28.y_disp.png" alt="k.28.y_disp" /></p><p>同时,<code>K28.7</code>不能连续发送,会造成连续<code>RL5</code>,即<code>...11111000001111100000...</code>,一般实际使用<code>K28.1</code>,<code>K28.5</code>作为逗号码。</p><h3 id="font-color-b5d5ff-stylefont-weightboldkx7font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldkx7font"></a> <font color= #b5d5ff style='font-weight:bold'>K.x.7</font></h3><p><code>K.x.A07</code>是指输入数据<code>3B</code>部分为<code>3b'111=3'd111</code>类型的控制码。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/k.x.7.png" alt="k.x.7" /></p><p><code>K.x.A07</code>的构造逻辑是<code>3b4b</code>编码表中制造与数据不同的编码方式(数据码中不会出现<code>eifghj=01_0111/10_1000</code>)。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/k.x.7+d.x.7.png" alt="k.x.7+d.x.7" /></p><h4 id="font-color-b5d5ff-stylefont-weightbold单一性font-2"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold单一性font-2"></a> <font color= #b5d5ff style='font-weight:bold'>单一性</font></h4><p>同样的,这种码字也不具备单一性(<code>singularity</code>)。这里就不举例了,可以参考<a href="#K.28.y">K.28.y</a>的例子。</p><h4 id="font-color-b5d5ff-stylefont-weightboldkx7-极性font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldkx7-极性font"></a> <font color= #b5d5ff style='font-weight:bold'>K.x.7 极性</font></h4><p>如果连续发送<code>K.x.7</code>,只有单码保持的平衡情况,<code>±</code>码字选择根据上一次<code>rd</code>决定,类似<a href="#%E4%B8%8D%E5%AE%8C%E7%BE%8E%E5%B9%B3%E8%A1%A1%E7%A0%81">不完美平衡码</a></p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/k.x.7_disp.png" alt="k.x.7_disp.png" /></p><h3 id="font-color-b5d5ff-stylefont-weightbold示例3font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold示例3font"></a> <font color= #b5d5ff style='font-weight:bold'>示例3</font></h3><p>假设发送码流<code>8'hC0,8'hE5,8'hE5(K),8'hE5(K),8'hBF,8'hBF(K),8'hBF(K)</code>,初始极性为<code>RD=-1</code>,编码极性简写为<code>disp</code>(<code>disparity</code>)</p><ol><li><p><code>8'hC0=8'b11000000</code></p><ul><li><code>5B=5'b11000=5'd24</code>,<code>3B=3'b000=3'd0</code>,<code>D.24.0</code></li><li><code>5B</code>编码:<code>6B=6'b110011</code>,<code>disp=+2</code>,保持极性(当前码流<code>RD=-1</code>),<code>RD=-1+2=+1</code></li><li><code>3B</code>编码:<code>4B=4'b0100</code>,<code>disp=-2</code>,保持极性(当前码流<code>RD=+1</code>),<code>RD=+1-2=-1</code></li></ul></li><li><p><code>8'hE5=8'b11100101</code></p><ul><li><code>5B=5'b11100=5'd28</code>,<code>3B=3'b101=3'd5</code>,<code>D.28.5</code></li><li><code>5B</code>编码:<code>6B=6'b001110</code>,<code>disp=0</code>,继承码流极性,<code>RD=-1+0=-1</code></li><li><code>3B</code>编码:<code>4B=4'b1010</code>,<code>disp=0</code>,继承码流极性,<code>RD=-1+0=-1</code></li></ul></li><li><p><code>8'hE5=8'b11100101,K</code></p><ul><li><p><code>5B=5'b11100=5'd28</code>,<code>3B=3'b101=3'd5</code>,<code>K.28.5</code></p></li><li><p><code>5B</code>编码:<code>6B=6'b001111</code>,<code>disp=+2</code>,保持极性(当前码流<code>RD=-1</code>),<code>RD=-1+2=+1</code></p></li><li><p><code>3B</code>编码:<code>4B=4'b1010</code>,<code>disp=0</code>,继承码流极性,<code>RD=+1+0=+1</code></p></li><li><p>这种码字可以叫做<code>K.28.5+</code></p></li></ul></li><li><p><code>8'hE5=8'b11100101,K</code></p><ul><li><p><code>5B=5'b11100=5'd28</code>,<code>3B=3'b101=3'd5</code>,<code>K.28.5</code></p></li><li><p><code>5B</code>编码:<code>6B=6'b001111</code>,<code>disp=+2</code>,翻转极性(当前码流<code>RD=+1</code>),<code>6B=6'b110000</code>,<code>disp=-2</code>,<code>RD=+1-2=-1</code></p></li><li><p><code>3B</code>编码:<code>4B=4'b1010</code>,<code>disp=0</code>,继承码流极性,<code>RD=-1+0=-1</code></p></li><li><p>这种码字可以叫做<code>K.28.5-</code></p></li></ul></li><li><p><code>8'hBF=8'b10111111</code></p><ul><li><p><code>5B=5'b10111=5'd23</code>,<code>3B=3'b111=3'd7</code>,<code>D.23.7</code></p></li><li><p><code>5B</code>编码:<code>6B=6'b111010</code>,<code>disp=+2</code>,保持极性(当前码流<code>RD=-1</code>),<code>RD=-1+2=+1</code></p></li><li><p><code>3B</code>编码:<code>4B=4'b1110</code>,<code>disp=+2</code>,翻转极性(当前码流<code>RD=+1</code>),<code>4B=4'b0001</code>,<code>disp=-2</code>,<code>RD=+1-2=-1</code></p></li></ul></li><li><p><code>8'hBF=8'b10111111,K</code></p><ul><li><p><code>5B=5'b10111=5'd23</code>,<code>3B=3'b111=3'd7</code>,<code>K.23.7</code></p></li><li><p><code>5B</code>编码:<code>6B=6'b111010</code>,<code>disp=+2</code>,保持极性(当前码流<code>RD=-1</code>),<code>RD=-1+2=+1</code></p></li><li><p><code>3B</code>编码:<code>4B=4'b0111</code>,<code>disp=+2</code>,翻转极性(当前码流<code>RD=+1</code>),<code>4B=4'b1000</code>,<code>disp=-2</code>,<code>RD=+1-2=-1</code></p></li></ul></li><li><p><code>8'hBF=8'b10111111,K</code></p><ul><li><p><code>5B=5'b10111=5'd23</code>,<code>3B=3'b111=3'd7</code>,<code>K.23.7</code></p></li><li><p><code>5B</code>编码:<code>6B=6'b111010</code>,<code>disp=+2</code>,保持极性(当前码流<code>RD=-1</code>),<code>RD=-1+2=+1</code></p></li><li><p><code>3B</code>编码:<code>4B=4'b0111</code>,<code>disp=+2</code>,翻转极性(当前码流<code>RD=+1</code>),<code>4B=4'b1000</code>,<code>disp=-2</code>,<code>RD=+1-2=-1</code></p></li></ul></li></ol><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/eg3.png" alt="eg3" /></p><h2 id="font-color-b5d5ff-stylefont-weightbold直流平衡font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold直流平衡font"></a> <font color= #b5d5ff style='font-weight:bold'>直流平衡</font></h2><p>下面完整讨论<code>8b10b</code>如何实现直流平衡(<code>dc balance</code>)。首先,在<a href="#%E6%8E%A7%E5%88%B6%E5%8E%9F%E5%88%991">控制原则1</a>中,已经提到了两个方面的考虑:</p><ul><li><code>-2<RD<2</code>,运行极性不超过<code>±2</code>,即总体码流的<code>0</code>,<code>1</code>数量相同</li><li><code>RL<5</code>,运行长度不超过<code>5</code>,即总体码流连续<code>0</code>,<code>1</code>数量不超过<code>5</code></li></ul><p>通过<a href="#%E6%8E%A7%E5%88%B6%E5%8E%9F%E5%88%991">控制原则1</a>已经可以实现<code>-2<RD<2</code>的目标,具体可以参考<a href="#%E7%A4%BA%E4%BE%8B1">示例1</a>,<a href="#%E7%A4%BA%E4%BE%8B2">示例2</a>和<a href="#%E7%A4%BA%E4%BE%8B3">示例3</a>。</p><p>因此接下来讨论如何保证<code>RL<5</code>。</p><h3 id="font-color-b5d5ff-stylefont-weightboldrl分析font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldrl分析font"></a> <font color= #b5d5ff style='font-weight:bold'>RL分析</font></h3><ol><li><p>码内<code>RL</code></p><ul><li>观察<code>5b6b</code>编码表,<code>6b</code>编码内部<code>RL<=3</code>;</li><li>观察<code>3b4b</code>编码表,<code>4b</code>编码内部<code>RL<=3</code>;</li></ul><p>因此码内<code>RL<5</code>。</p></li><li><p>码间<code>RL</code></p><ul><li><p><code>6b</code>+<code>4b</code></p><ul><li><p>极性码 + 极性码</p><p><code>6b</code>极性码码间<code>RL<=3</code>,根据<a href="#%E6%8E%A7%E5%88%B6%E5%8E%9F%E5%88%991">控制原则1</a>,<code>4b</code>极性码与<code>6b</code>极性必然相反,因此<code>RL<=3</code>。(<code>e.g. 011000_1110</code>)</p></li><li><p>极性码 + 平衡码</p><p><code>6b</code>极性码码间<code>RL<=3</code>。</p><ul><li><code>4b</code>如果是完美平衡码,则码间<code>RL<=1</code>,因此总体<code>RL<=4</code>(<code>e.g. 010111_1001</code>)</li><li><code>4b</code>如果是非完美平衡码,根据<a href="#%E6%8E%A7%E5%88%B6%E5%8E%9F%E5%88%992">控制原则2</a>,<code>4b</code>平衡码与<code>6b</code>极性必然相反,因此总体<code>RL<=3</code>(<code>e.g. 010111_0011</code>)</li></ul></li><li><p>平衡码 + 平衡码</p><p><code>6b</code>平衡码码间<code>RL<=3</code>。</p><ul><li><code>4b</code>如果是完美平衡码,则码间<code>RL<=1</code>,因此总体<code>RL<=4</code>(<code>e.g. 000111_1001</code>)</li><li><code>4b</code>如果是非完美平衡码,根据<a href="#%E6%8E%A7%E5%88%B6%E5%8E%9F%E5%88%992">控制原则2</a>,<code>4b</code>平衡码与<code>6b</code>极性必然相反,因此总体<code>RL<=3</code>(<code>e.g. 111000_1100</code>)</li></ul></li><li><p>平衡码 + 极性码</p><ul><li><code>6b</code>如果是完美平衡码,则码间<code>RL<=2</code>。<code>4b</code>极性码码间<code>RL<=3</code>。<ul><li>根据<a href="#%E6%8E%A7%E5%88%B6%E5%8E%9F%E5%88%992">控制原则2</a>,当<code>4b</code>极性码码间<code>RL=3</code>时,<code>4b</code>极性码采用备用编码,因此<code>RL<=2</code>(<code>e.g. 100011_0111</code>)</li><li>当<code>4b</code>极性码码间<code>RL<=2</code>时,总体<code>RL<=4</code>(<code>e.g. 100011_1011</code>)</li></ul></li><li><code>6b</code>如果是非完美平衡码,则码间<code>RL<=3</code>。根据<a href="#%E6%8E%A7%E5%88%B6%E5%8E%9F%E5%88%991">控制原则1</a>,<code>4b</code>极性码与<code>6b</code>极性必然相反,因此<code>RL<=3</code>(<code>e.g. 111000_1110</code>)</li></ul></li></ul></li><li><p><code>4b</code>+<code>6b</code></p><ul><li><p>极性码 + 极性码</p><p><code>4b</code>极性码码间<code>RL<=3</code>,根据<a href="#%E6%8E%A7%E5%88%B6%E5%8E%9F%E5%88%991">控制原则1</a>,<code>6b</code>极性码与<code>4b</code>极性必然相反,因此<code>RL<=3</code>。(<code>e.g. 0111_011000</code>)</p></li><li><p>极性码 + 平衡码</p><p><code>4b</code>极性码码间<code>RL<=3</code>。</p><ul><li><code>6b</code>如果是完美平衡码,则码间<code>RL<=2</code>,因此总体<font color= red style='font-weight:bold'>可能出现</font><code>RL=5</code>(<code>e.g. 0111_110100</code>)</li><li><code>6b</code>如果是非完美平衡码,根据<a href="#%E6%8E%A7%E5%88%B6%E5%8E%9F%E5%88%992">控制原则2</a>,<code>6b</code>平衡码与<code>4b</code>极性必然相反,因此总体<code>RL<=3</code>(<code>e.g. 0111_000111</code>)</li></ul></li><li><p>平衡码 + 平衡码</p><p><code>4b</code>平衡码码间<code>RL<=2</code>。</p><ul><li><code>6b</code>如果是完美平衡码,则码间<code>RL<=2</code>,因此总体<code>RL<=4</code>(<code>e.g. 0011_110100</code>)</li><li><code>6b</code>如果是非完美平衡码,根据<a href="#%E6%8E%A7%E5%88%B6%E5%8E%9F%E5%88%992">控制原则2</a>,<code>6b</code>平衡码与<code>4b</code>极性必然相反,因此总体<code>RL<=2</code>(<code>e.g. 1100_111000</code>)</li></ul></li><li><p>平衡码 + 极性码</p><p><code>4b</code>平衡码码间<code>RL<=2</code>。</p><ul><li><code>4b</code>如果是完美平衡码,则码间<code>RL<=1</code>。<code>6b</code>极性码码间<code>RL<=3</code>。因此<code>RL<=4</code>(<code>e.g. 1010_000110</code>)</li><li><code>4b</code>如果是非完美平衡码,则码间<code>RL<=2</code>。根据<a href="#%E6%8E%A7%E5%88%B6%E5%8E%9F%E5%88%991">控制原则1</a>,<code>6b</code>极性码与<code>4b</code>极性必然相反,因此<code>RL<=2</code>(<code>e.g. 1100_100111</code>)</li></ul></li></ul></li></ul></li></ol><h3 id="font-color-b5d5ff-stylefont-weightboldrl5font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldrl5font"></a> <font color= #b5d5ff style='font-weight:bold'>RL=5</font></h3><p>根据上一章的分析,连续出现以下情况会存在<code>RL=5</code>:</p><ol><li><p>完美平衡码,末尾<code>RL=2</code>(<code>e.g. 100011</code>)</p></li><li><p><code>D.x.A7</code> (<code>e.g. 100011_0111</code>)</p></li><li><p>完美平衡码,首部<code>RL=2</code>。(<code>e.g. 100011_0111_110100</code>)</p></li></ol><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/rl=5.png" alt="rl=5" /></p><p>此情况为最极端的情况:</p><ul><li>码流前后必为反极性的码字,码流不会出现异常</li><li>不会出现连续两次<code>RL=5</code>的情况</li><li>不会出现与<code>K</code>码混淆(<code>K.28.y</code>采用的是<code>RL2+RL5</code>,此情况只会出现<code>RL1+RL5</code>)</li></ul><p>总体看来,<code>8b10b</code>编码,是直流平衡(<code>dc balance</code>)的,其绝大部分码流<code>RL<=4</code>,最极端情况下<code>RL=5</code>。</p><h1 id="font-color-b5d5ff-stylefont-weightbold电路设计font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold电路设计font"></a> <font color= #b5d5ff style='font-weight:bold'>电路设计</font></h1><h2 id="font-color-b5d5ff-stylefont-weightbold编码器font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold编码器font"></a> <font color= #b5d5ff style='font-weight:bold'>编码器</font></h2><h3 id="font-color-b5d5ff-stylefont-weightbold5b6b编码font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold5b6b编码font"></a> <font color= #b5d5ff style='font-weight:bold'>5b6b编码</font></h3><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/5b6b_d.png" alt="5b6b_d" /></p><h4 id="font-color-b5d5ff-stylefont-weightboldl-函数font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldl-函数font"></a> <font color= #b5d5ff style='font-weight:bold'>L 函数</font></h4><p><code>L</code>函数(<code>L function</code>),主要用于化简编码逻辑。观察表格中<code>Bit Encoding</code>列,里面就是<code>L</code>函数。其代表<code>ABCD</code>中的<code>0</code>和<code>1</code>的个数。</p><p>举例:</p><ul><li><code>L04</code>:<code>ABCD</code>包含<code>0</code>个<code>1</code>,<code>4</code>个<code>0</code>,即<code>ABCD=0000</code>,因此按布尔逻辑<code>L04=A'B'C'D'</code></li><li><code>L13</code>:<code>ABCD</code>包含<code>1</code>个<code>1</code>,<code>3</code>个<code>0</code>,即<code>ABCD=1000/ABCD=0100/ABCD=0010/ABCD=0001</code>,因此按布尔逻辑<code>L13=AB'C'D'+A'BC'D'+A'B'CD'+A'B'C'D = (A^B)C'D'+A'B'(C^D)</code></li><li><code>L22</code>:<code>ABCD</code>包含<code>2</code>个<code>1</code>,<code>2</code>个<code>0</code>,即<code>ABCD=1100/ABCD=1010/ABCD=1001/ABCD=0110/ABCD=0101/ABCD=0011</code>,因此按布尔逻辑<code>L22=ABC'D'+AB'CD'+AB'C'D+A'BCD'+A'BC'D+A'B'CD = ABC'D'+A'B'CD+(A^B)(C^D)</code></li></ul><p>电路图(其中<code>A</code>代表与门,<code>OR</code>代表或门):</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/l-function.png" alt="l-function" /></p><h4 id="font-color-b5d5ff-stylefont-weightbold编码逻辑font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold编码逻辑font"></a> <font color= #b5d5ff style='font-weight:bold'>编码逻辑</font></h4><ul><li><code>EDCBA</code>倒为<code>ABCDE</code>,不需要编码</li><li>最后一位<code>I</code>统一补<code>0</code>,形成<code>ABCDEI</code>,不需要编码</li><li>根据码表标<font color= red style='font-weight:bold'>红</font>比特位编码<code>abcdei</code>(按<code>Bit Encoding</code>)<ul><li>如果从<code>0</code>翻<code>1</code>(强制置<code>1</code>),则取或</li><li>如果从<code>1</code>翻<code>0</code>(强制置<code>0</code>),则取与</li></ul></li></ul><p>举例:</p><ul><li><code>a</code>:观察<code>输出码值</code>列的<code>a</code>,没有标红位置,因此<code>a = A</code></li><li><code>b</code>:观察<code>输出码值</code>列的<code>b</code>,<code>D.00(L04),D.15(L40),D.16(L04),D.31(L40)</code>有标红位置,根据<code>Bit Encoding</code>列,<code>b = B'L04+BL40' = L04 + BL40'</code></li><li><code>e</code>:观察<code>输出码值</code>列的<code>e</code>,<code>D.01(L13E'),D.02(L13E'),D.04(L13E'),D.08(L13E'),D.08(L13E'),D.24(L13DE)</code>有标红位置,根据<code>Bit Encoding</code>列,<code>e = E'L13+E(L13DE)'</code></li><li><code>i</code>:观察<code>输出码值</code>列的<code>i</code>,<code>D.03(L22E'),D.05(L22E'),D.06(L22E'),D.09(L22E'),D.10(L22E'),D.12(L22E'),D.16(L04E),D.17(L13D'E),D.18(L22E'),D.20(L22E'),D.31(L40E)</code>有标红位置,根据<code>Bit Encoding</code>列,<code>i = I'(L22E'+L04E+L13D'E+L40E)</code></li></ul><p>电路图(其中<code>A</code>代表与门,<code>OR</code>代表或门):</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/abcdei.png" alt="abcdei" /></p><h3 id="font-color-b5d5ff-stylefont-weightbold3b4b编码font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold3b4b编码font"></a> <font color= #b5d5ff style='font-weight:bold'>3b4b编码</font></h3><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/3b4b_d.png" alt="3b4b_d" /></p><p><code>3b4b</code>编码相对简单,不需要使用<code>L</code>函数(<code>L function</code>)简化逻辑,其编码逻辑与<code>5b6b</code>类似。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/fgh-function.png" alt="fgh-function" /></p><p>另外,由于存在<code>D.x.A07</code>(<code>Alternative</code>,备用码),因此需要编码时加入特殊编码标志(<code>S</code>,<code>Special</code>)。</p><p>举例:</p><ul><li><code>f</code>:观察<code>输出码值</code>列的<code>f</code>,<code>D.x.A07(FGHS)</code>有标红位置,因此<code>f = F(FGHS)'</code></li><li><code>g</code>:观察<code>输出码值</code>列的<code>g</code>,<code>D.x.00(F'G'H')</code>有标红位置,根据<code>Bit Encoding</code>列,<code>g = G+G'F'G'H' = G + F'G'H'</code></li><li><code>j</code>:观察<code>输出码值</code>列的<code>j</code>,<code>D.x.01((F^G)H'),D.x.02((F^G)H'),D.x.A07(FGHS)</code>有标红位置,根据<code>Bit Encoding</code>列,<code>j = E'(F^G)H'+FGHS)+E = (F^G)H' + FGHS + E</code></li></ul><p>电路图(其中<code>A</code>代表与门,<code>OR</code>代表或门):</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/fghj.png" alt="fghj" /></p><h3 id="font-color-b5d5ff-stylefont-weightboldk编码font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldk编码font"></a> <font color= #b5d5ff style='font-weight:bold'>K编码</font></h3><h4 id="font-color-b5d5ff-stylefont-weightboldk28yfont-2"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldk28yfont-2"></a> <font color= #b5d5ff style='font-weight:bold'>K.28.y</font></h4><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/5b6b_k.png" alt="5b6b_k" /></p><p>同理,根据<code>Bit Encoding</code>列,<code>K.28.y</code>中,<code>i = L22K</code>。电路图参考之前的图。</p><h4 id="font-color-b5d5ff-stylefont-weightboldkx7font-2"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldkx7font-2"></a> <font color= #b5d5ff style='font-weight:bold'>K.x.7</font></h4><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/3b4b_k.png" alt="3b4b_k" /></p><p>同理,根据<code>Bit Encoding</code>列,<code>K.x.7</code>中</p><ul><li><code>f = F(FGHK)'</code></li><li><code>j = FGHK</code></li></ul><p>电路图参考之前的图。</p><h3 id="font-color-b5d5ff-stylefont-weightbolds编码font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbolds编码font"></a> <font color= #b5d5ff style='font-weight:bold'>S编码</font></h3><p>特殊的<code>D.x.A07</code>需要单独通过电路实现查找。主要是查找末尾带<code>11/00</code>的完美平衡码<code>e.g. 100011</code>。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/special.png" alt="special" /></p><h3 id="font-color-b5d5ff-stylefont-weightbold极性编码font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold极性编码font"></a> <font color= #b5d5ff style='font-weight:bold'>极性编码</font></h3><p>注意到极性码以及不完美平衡码是需要翻转极性的,因此需要额外的电路进行实现。</p><h4 id="font-color-b5d5ff-stylefont-weightbold极性计算font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold极性计算font"></a> <font color= #b5d5ff style='font-weight:bold'>极性计算</font></h4><p>实际根据<code>Disparity(D-1)</code>列以及<code>encoded disparity</code>列进行实现。</p><p><code>5b6b</code>极性计算:</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/6bdisp.png" alt="6bdisp" /></p><p>根据<code>Disparity</code>列以及<code>encoded disparity</code>列,</p><ul><li><code>ND-1S6</code>代表下一编码需要<code>-</code>极性(<code>Negative Disparity</code>)</li><li><code>PD-1S6</code>代表下一编码需要<code>+</code>极性(<code>Positive Disparity</code>)</li><li>以上两种都不是,则下一编码需要<code>0</code>极性</li></ul><p>另外,</p><ul><li><code>ND0S6</code>代表当前编码为<code>-</code>极性(与<code>PD-1S6</code>相同)</li><li><code>PD0S6</code>代表当前编码为<code>+</code>极性(与<code>ND-1S6</code>不同仅在于不完美平衡码)</li><li>以上两种都不是,则当前编码是<code>0</code>极性</li></ul><p><code>3b4b</code>极性计算:</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/4bdisp.png" alt="4bdisp" /></p><p>根据<code>Disparity(D-1)</code>列以及<code>encoded disparity</code>列,</p><ul><li><code>ND-1S4</code>代表下一编码需要<code>-</code>极性(<code>Negative Disparity</code>)</li><li><code>PD-1S4</code>代表下一编码需要<code>+</code>极性(<code>Positive Disparity</code>)</li><li>以上两种都不是,则下一编码需要<code>0</code>极性</li></ul><p>另外,</p><ul><li><code>ND0S4</code>代表当前编码为<code>-</code>极性(与<code>PD-1S4</code>不同仅在于<code>K</code>码)</li><li><code>PD0S4</code>代表当前编码为<code>+</code>极性(与<code>ND-1S4</code>不同仅在于不完美平衡码)</li><li>以上两种都不是,则当前编码是<code>0</code>极性</li></ul><h4 id="font-color-b5d5ff-stylefont-weightbold极性翻转font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold极性翻转font"></a> <font color= #b5d5ff style='font-weight:bold'>极性翻转</font></h4><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/compls.png" alt="compls" /></p><p><code>Running Disparity</code>计算(以<code>6b</code>为例,<code>4b</code>同理):</p><ul><li>当前极性为正<code>disp = +2</code>(<code>PD0S6</code>),不翻转极性(<code>COMPLS6'</code>),则<code>RD = +1</code></li><li>当前极性为负<code>disp = -2</code>(<code>ND0S6</code>),翻转极性(<code>COMPLS6</code>),则<code>RD = +1</code></li><li>当前极性为空<code>disp = 0</code>(<code>PD0S6'ND0S6'</code>),极性继承,则<code>RD = rd(上个编码)</code></li></ul><p>极性翻转计算(以<code>4b</code>为例,<code>6b</code>同理):</p><ul><li>运行极性为正<code>RD = +1</code>,需要极性为负(<code>ND-1S4</code>),则翻转极性<code>COMPLS4 = +1</code></li><li>运行极性为负<code>RD = -1</code>,需要极性为正(<code>PD-1S4</code>),则翻转极性<code>COMPLS4 = +1</code></li><li>运行极性为空<code>RD = 0</code>,极性继承,则不翻转极性</li></ul><h3 id="font-color-b5d5ff-stylefont-weightbold电路图font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold电路图font"></a> <font color= #b5d5ff style='font-weight:bold'>电路图</font></h3><p>总体电路图架构如下:</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/architecture.png" alt="architecture" /></p><p>结合上述所有电路,编码器总体电路图如下:</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/encoder.png" alt="encoder" /></p><h2 id="font-color-b5d5ff-stylefont-weightbold解码器font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold解码器font"></a> <font color= #b5d5ff style='font-weight:bold'>解码器</font></h2><h3 id="font-color-b5d5ff-stylefont-weightbold解码逻辑font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold解码逻辑font"></a> <font color= #b5d5ff style='font-weight:bold'>解码逻辑</font></h3><p>按照编码器的实现逻辑,可以按照解码器的码表进行电路搭建。</p><p>注意几点:</p><ol><li>解码器收到的码字可能有<code>+</code>或<code>-</code>两种</li><li>码表之外的码字代表异常</li><li>解码的<code>P</code>函数(<code>P function</code>)类似编码的<code>L</code>函数(<code>L function</code>)</li></ol><p><code>6b5b</code>:</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/5b6b_dec.png" alt="5b6b_dec" /></p><p><code>4b3b</code>:</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/3b4b_dec.png" alt="3b4b_dec" /></p><h3 id="font-color-b5d5ff-stylefont-weightbold故障检测font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold故障检测font"></a> <font color= #b5d5ff style='font-weight:bold'>故障检测</font></h3><p>原文给出了故障检测的几种检查方式:</p><ol><li>所有码字必须保持<code>+2</code>,<code>-2</code>或<code>0</code>极性</li><li>极性码必须调整运行极性</li><li>不完美平衡码(<code>D.7</code>以及<code>D.x.3</code>)必须调整运行极性</li><li>通信结构中收尾必须含有逗号码</li><li>编码异常的电路包含如下(作者总结出来的简化结果):<ul><li><code>a=b=c=d</code></li><li><code>P13e'i'</code></li><li><code>P31ei</code></li><li><code>f=g=h=j</code></li><li><code>e=i=f=g=h</code></li><li><code>i≠e=g=h=j</code></li><li><code>(e=i≠g=h=j)(c=d=e)'</code></li><li><code>P31'ei'g'h'j'</code></li><li><code>P13'e'ighj</code></li></ul></li></ol><h1 id="font-color-b5d5ff-stylefont-weightbold帧结构font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold帧结构font"></a> <font color= #b5d5ff style='font-weight:bold'>帧结构</font></h1><p>原文中推荐的帧结构形式为:</p><ul><li>平时发空闲码(<code>D.21.5/D.10.2</code>)</li><li>起始和结尾发逗号码(<code>K.28.1/K.28.6/K28.7</code>)</li><li>帧间隔发其他控制码(<code>K.23.7/K.27.7/K29.7</code>)</li></ul><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/8b10b/packet.png" alt="packet" /></p><h1 id="font-color-b5d5ff-stylefont-weightbold参考资料font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold参考资料font"></a> <font color= #b5d5ff style='font-weight:bold'>参考资料</font></h1><p>[1] Widmer, A. X., and P. A. Franaszek. 1983. “A DC-Balanced, Partitioned-Block, 8B/10B Transmission Code.” <em>IBM Journal of Research and Development</em> 27, no. 5: 440-451.</p><p><font color= greden style='font-weight:bold' font size= 8>完结撒花~2024/9/1</font></p>]]></content>
<categories>
<category> ic </category>
<category> design </category>
<category> serdes </category>
</categories>
<tags>
<tag> dc balance </tag>
<tag> 8b10b </tag>
<tag> 5b6b </tag>
<tag> 3b4b </tag>
</tags>
</entry>
<entry>
<title>Vimscript-AutoMatic-Verilog</title>
<link href="/posts/vimscript-automatic/"/>
<url>/posts/vimscript-automatic/</url>
<content type="html"><![CDATA[<div class="tip warning faa-horizontal animated"><p>有问题先看文档,再看评论区,依旧有问题可留言。</p><p></p></div><p>最新脚本地址:<a href="https://github.com/HonkW93/automatic-verilog/">GitHub</a></p><p>使用<a href="https://docsify.js.org/#/?id=docsify">docsify</a>优化文档结构,文档迁移至:<a href="https://automatic-verilog.honk.wang/">automatic-verilog文档</a></p><p>此页面只保留评论区作为问题留言板。</p><p>2022.5.25更新:V1.5无法兼容之前的版本,请各位注意。</p><p>2022.12.6更新:当前最新代码可能与文档有部分不一致,暂时没时间更新文档,有问题留言反馈,谢谢。</p>]]></content>
<categories>
<category> ic </category>
<category> editor </category>
</categories>
<tags>
<tag> vim </tag>
<tag> vimscript </tag>
<tag> verilog </tag>
</tags>
</entry>
<entry>
<title>Windows必装</title>
<link href="/posts/windows-software/"/>
<url>/posts/windows-software/</url>
<content type="html"><![CDATA[<div align=center style=font-size:24px><font color="#FFA000">那</font><font color="#F0910F">些</font><font color="#E1821E">值</font><font color="#E0732D">得</font><font color="#E0643C">推</font><font color="#E0554B">荐</font><font color="#E0465A">,</font><font color="#E03769">让</font><font color="#E02878">人</font><font color="#E01987">眼</font><font color="#E00A96">前</font><font color="#E000A5">一</font><font color="#E000B4">亮</font><font color="#E000C3">的</font><font color="#E000D2">软</font><font color="#E000E1">件</font><font color="#E000F0">。</font></div><h2 id="font-color-b5d5ff日常font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff日常font"></a> <font color= #b5d5ff>日常</font></h2><ol><li>下载:<a href="https://www.qbittorrent.org/">qBittorrent</a>,<a href="https://www.internetdownloadmanager.com/">IDM</a>,<a href="https://xdown.org/">Xdown</a>,<a href="https://www.neatdownloadmanager.com/index.php/en/">NDM</a>,<s><a href="https://www.pandownload.com/">PanDownload</a></s>(作者被抓,别再用了),<s><a href="https://www.jokerps.com/?p=1735">迅雷极速版</a></s>(吸血雷,别再用了)</li><li>电脑:<a href="http://www.kbtool.cn/">卡硬工具箱</a>(一共包括了 <code>BIOS</code>工具、<code>CPU</code>检测、<code>CPU</code>超频工具、电池检测、性能测试等<strong>12个分类</strong>的工具,共计<strong>70余个</strong>小工具),<a href="https://wpd.app/">WPD</a>(<code>Windows</code>系统优化)</li><li>桌面:(希望桌面软件能有个集合体)<ol><li>桌面文件分类:<a href="https://www.stardock.com/products/fences/">Fences</a></li><li>隐藏状态栏:<a href="https://www.microsoft.com/zh-cn/p/translucenttb/9pf4kz2vn4w9">TranslucentTB </a></li><li>Todo List:<a href="http://www.yynote.cn/">小黄条</a></li><li>壁纸:<a href="https://store.steampowered.com/app/431960/Wallpaper_Engine/">Wallpaper Engine</a></li></ol></li><li>搜索:<a href="https://www.voidtools.com/zh-cn/">Everything</a>,<a href="https://www.listary.com/">Listary</a></li><li>文件:<a href="https://www.xyplorer.com/">XYplorer</a></li><li>卸载:<a href="https://geekuninstaller.com/">Geek Uninstaller</a></li><li>安全:<a href="https://www.huorong.cn/">火绒</a>(推荐弹窗拦截)</li></ol><h2 id="font-color-b5d5ff编辑font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff编辑font"></a> <font color= #b5d5ff>编辑</font></h2><ol><li>编辑:<a href="https://www.vim.org/download.php">Gvim</a>(编辑器之神),<a href="https://www.gnu.org/software/emacs/">Emacs</a>(神之编辑器),<a href="https://typora.io/">Typora</a>(Markdown力荐),<a href="https://neovim.io/">Neovim</a>(<code>Gvim</code>平替),<a href="https://www.sublimetext.com/">Sublime Text</a>,<s><a href="https://notepad-plus-plus.org/downloads/">Notepad++</a></s>(作者反华,自行斟酌)</li><li>对比:<a href="https://www.scootersoftware.com/">Beyond Compare</a></li><li>IDE:<a href="https://code.visualstudio.com/">VSCode</a>(力荐,可配合<code>neovim</code>),<a href="https://www.anaconda.com/">Anaconda</a>(<a href="https://jupyter.org/">Jupyter Notebook</a>超好用)</li><li>思维导图:<a href="https://www.xmind.cn/">XMind</a></li><li>博客:<ol><li>截图:<a href="https://zh.snipaste.com/">Snipaste</a>(截图 + 贴图)</li><li>GIF:<a href="https://www.cockos.com/licecap/">LICEcap</a></li><li>键盘按键:<a href="http://code52.org/carnac/">Carnac</a></li><li>图床:<a href="https://molunerfinn.com/PicGo/">PicGo</a></li></ol></li></ol><h2 id="font-color-b5d5ff娱乐font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff娱乐font"></a> <font color= #b5d5ff>娱乐</font></h2><ol><li><p>聊天软件:<a href="https://tim.qq.com/index.html">TIM</a>(简洁)</p></li><li><p>视频播放:<a href="https://www.potplayer.org/">PotPlayer</a>(全面)</p></li><li><p>浏览器插件(按重要程度排序):</p><ul><li><p><a href="https://chrome.google.com/webstore/detail/extension-manager/gjldcdngmdknpinoemndlidpcabkggco">Extension Manager</a>(扩展管理器)</p></li><li><p><a href="https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo">Tampermonkey</a>(油猴脚本,相关脚本见后面<code>Greasy Fork</code>部分)</p></li><li><p><a href="http://a.newday.me/">集装箱</a>(一个插件,提供一揽子服务)</p></li><li><p><code>bilibili</code></p><ul><li><a href="https://s.xmcp.ltd/pakkujs/?src=helper">pakku</a>(哔哩哔哩弹幕过滤器 )</li><li><a href="https://bilibilihelper.com/">哔哩哔哩助手</a>(最好用的B站扩展程序)</li></ul></li><li><p><a href="https://www.monknow.com/zh-CN">MONKNOW</a>(新标签页),<a href="https://adblockplus.org/">Adblock+</a>(广告拦截),<a href="https://withpinbox.com/">Pinbox</a>(跨平台收藏),<a href="https://chrome.google.com/webstore/detail/imageassistant-batch-imag/dbjbempljhcmhlfpfacalomonjpalpko">ImageAssistant</a>(图片助手),<a href="https://chrome.google.com/webstore/detail/github%E5%8A%A0%E9%80%9F/mfnkflidjnladnkldfonnaicljppahpg?hl=zh-CN">GitHub加速</a>,<a href="https://www.baiduyun.wiki/">网盘直链下载助手</a>,<a href="https://chrome.google.com/webstore/detail/decentraleyes/ldpochfccmkkmhdbclfhpagapcfdljkj">Decentraleyes</a>(CDN加速,主要用于StackOverflow)</p></li></ul></li><li><p><a href="https://greasyfork.org/zh-CN">Greasy Fork</a>:<a href="https://greasyfork.org/zh-CN/scripts/373563-bilibili-evolved">Bilibili Evolved</a>,<a href="https://greasyfork.org/zh-CN/scripts/394099-%E7%99%BE%E5%BA%A6%E7%B3%BB%E7%BD%91%E7%AB%99%E5%8E%BB%E5%B9%BF%E5%91%8A">百度系网站去广告</a>,<a href="https://greasyfork.org/zh-CN/scripts/14178-ac-baidu-%E9%87%8D%E5%AE%9A%E5%90%91%E4%BC%98%E5%8C%96%E7%99%BE%E5%BA%A6%E6%90%9C%E7%8B%97%E8%B0%B7%E6%AD%8C%E5%BF%85%E5%BA%94%E6%90%9C%E7%B4%A2-favicon-%E5%8F%8C%E5%88%97">AC-baidu</a>(搜索,重定向优化),<s><a href="https://greasyfork.org/en/scripts/399837-endless-google-and-baidu">Endless Google And Baidu</a></s>,(使用AC-baidu则不需要此脚本),<s><a href="https://greasyfork.org/zh-CN/scripts/398094-%E7%99%BE%E5%BA%A6%E6%96%87%E5%BA%93%E5%8E%9F%E6%96%87%E4%BB%B6%E4%B8%8B%E8%BD%BD">百度文库</a></s>(已挂,请主动为文库付费)</p></li></ol>]]></content>
<categories>
<category> tools </category>
</categories>
<tags>
<tag> windows </tag>
<tag> software </tag>
</tags>
</entry>
<entry>
<title>vim-adventure</title>
<link href="/posts/vim-adventure/"/>
<url>/posts/vim-adventure/</url>
<content type="html"><![CDATA[<h1 id="font-color-b5d5ff-stylefont-weightbold前言font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold前言font"></a> <font color= #b5d5ff style='font-weight:bold'>前言</font></h1><blockquote><p>vim作为编辑器来说,学习曲线确实很陡。但入门之后vim会越用越顺手,根据个人配置的vim也会越来越好用。vim-adventure提供了一个学习和游戏结合的环境(虽然最后的游戏难度可能会让人望而却步。。),可以用以入门vim的操作</p></blockquote><p>游戏官网入口:<a href="https://vim-adventures.com/">Learn VIM while playing a game - VIM Adventures</a></p><p>参考攻略入口:<a href="https://blog.csdn.net/weixin_45107866/article/details/93711288">最好的Vim学习教程-Vim Adventures 全攻略(附彩蛋)</a></p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/cover/vim-adventure.png" alt="vim-adventure" /></p><p>在玩vim-adventure的过程中学习(或复习)了一些vim的基础知识,在本文记录笔记,作为以后<font color= greden font size = 6 style='font-weight:bold'>万一</font>遗忘了的搜索材料。</p><h1 id="font-color-b5d5ff-stylefont-weightbold关卡font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold关卡font"></a> <font color= #b5d5ff style='font-weight:bold'>关卡</font></h1><h2 id="font-color-b5d5ff-stylefont-weightboldlevel1hjklfont"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldlevel1hjklfont"></a> <font color= #b5d5ff style='font-weight:bold'>Level1(<code>h</code>,<code>j</code>,<code>k</code>,<code>l</code>)</font></h2><blockquote><p>使用<code>h</code>,<code>j</code>,<code>k</code>,<code>l</code>键使光标单格进行<strong>上下左右</strong>的移动,类似于方向键。</p></blockquote><p>注意如果光标在行末而每一行的长度不同的话,光标会根据长度最长的行自动调整其跳转位置。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/hjkl.gif" alt="hjkl" /></p><h2 id="font-color-b5d5ff-stylefont-weightboldlevel2wbefont"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldlevel2wbefont"></a> <font color= #b5d5ff style='font-weight:bold'>Level2(<code>w</code>,<code>b</code>,<code>e</code>)</font></h2><blockquote><p>使用<code>w</code>,<code>b</code>,<code>e</code>键使光标按<code>词</code>进行移动。</p></blockquote><ul><li><p><code>w</code>使光标跳转到<strong>下个词</strong>(word)开头。</p></li><li><p><code>b</code>使光标跳转到当前词开头,如果已经在当前词<strong>开头</strong>(back),则跳转到<strong>前个词</strong>开头。</p></li><li><p><code>e</code>使光标跳转到当前词结尾,如果已经在当前词<strong>结尾</strong>(edge),则跳转到<strong>下个词</strong>结尾。</p></li></ul><p>注意<code>w</code>,<code>b</code>,<code>e</code>会将标点(如引号<code>"</code>,逗号<code>,</code>还有空格<code><space></code>等)当成一整个<code>词</code>。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/wbe.gif" alt="wbe" /></p><h2 id="font-color-b5d5ff-stylefont-weightboldlevel3-level-4wbexrfont"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldlevel3-level-4wbexrfont"></a> <font color= #b5d5ff style='font-weight:bold'>Level3 & Level 4(<code>W</code>,<code>B</code>,<code>E</code>,<code>x</code>,<code>r</code>)</font></h2><blockquote><p>使用<code>W</code>,<code>B</code>,<code>E</code>键使光标按<code>整词</code>进行移动。整体的移动方式类似<code>w</code>,<code>b</code>,<code>e</code></p></blockquote><p>与<code>w</code>,<code>b</code>,<code>e</code>不同的是,<code>W</code>,<code>B</code>,<code>E</code>会<strong>包含标点</strong>在<code>词</code>内,不会将标点单独当成一整个<code>词</code></p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/WBE_upper.gif" alt="WBE_upper" /></p><blockquote><p>使用<code>x</code>键删除单个字符,使用<code>r</code>键替换单个字符</p></blockquote><p><code>x</code>的作用是<strong>删除</strong>(cross)当前光标下的单个字符。等效于输入<code>dl</code>;大写<code>X</code>的作用是<strong>删除</strong>当前光标前一个光标下的单个字符。</p><p><code>r</code>的作用是<strong>替换</strong>(replace),按<code>r</code>后输入正确字符可以替换当前字符。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/rx.gif" alt="rx" /></p><h2 id="font-color-b5d5ff-stylefont-weightboldlevel5dfont"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldlevel5dfont"></a> <font color= #b5d5ff style='font-weight:bold'>Level5(<code>d</code>)</font></h2><blockquote><p>使用<code>d</code>键配合其他按键进行删除操作</p></blockquote><p><code>d</code>的作用是<strong>删除</strong>(delete)字符/行/段落, <font color= red >但是单独的<code>d</code>只是一个<strong>操作符</strong>(operator),需要根据实际的<strong>动作</strong>(motion)命令来产生效果。</font></p><p>比如之前移动光标的<code>w</code>,<code>b</code>,<code>e</code>就是动作命令。因此</p><ul><li><code>dw</code>删除字符到<strong>下个词</strong>(delete word)开头。</li><li><code>db</code>删除字符到当前词开头,如果已经在当前词<strong>开头</strong>(delete back),则删除字符到<strong>前个词</strong>开头。</li><li><code>de</code>删除字符到当前词结尾,如果已经在当前词<strong>结尾</strong>(delete edge),则删除字符到<strong>下个词</strong>结尾。</li></ul><p>同理,<code>dW</code>,<code>dB</code>,<code>dE</code>删除时会<strong>包含标点</strong>在<code>词</code>内,不会将标点单独当成一整个<code>词</code></p><p>再比如如之前上下左右移动光标的<code>h</code>,<code>j</code>,<code>k</code>,<code>l</code>也是动作命令。因此</p><ul><li><code>dh</code>删除当前光标<strong>左边</strong>的字符,即删除<strong>当前光标之前</strong>的字符(delete h)。</li><li><code>dl</code>删除当前光标<strong>右边</strong>的字符,即删除<strong>当前光标</strong>的字符(delete l),等效于<code>x</code>。</li><li><code>dj</code>删除<strong>当前行及其下一行</strong>的所有字符(delete j)。</li><li><code>dk</code>删除<strong>当前行及其上一行</strong>的所有字符(delete k)。</li></ul><p>另外, <font color= red >重复两次操作符代表对当前行操作</font>,因此</p><ul><li><code>dd</code>删除<strong>当前行</strong>所有字符。</li></ul><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/d-button.gif" alt="d-button" /></p><h2 id="font-color-b5d5ff-stylefont-weightboldlevel6~0dfont"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldlevel6~0dfont"></a> <font color= #b5d5ff style='font-weight:bold'>Level6(<code>~</code>,<code>$</code>,<code>0</code>,<code>^</code>,<code>D</code>)</font></h2><blockquote><p>使用<code>~</code>键对单个字符进行大小写转换</p><p>使用<code>$</code>键跳转到行尾</p><p>使用<code>0</code>键跳转到行首</p><p>使用<code>^</code>键跳转到行首非空字符</p></blockquote><p><code>~</code>的操作类似于<code>r</code>的替换(replace),只针对单个字符使用,如果字符是大写则转换为小写,反之亦然。</p><p>同样的,<code>$</code>,<code>0</code>,<code>^</code>也是动作命令,也可以结合<code>d</code>来操作。因此</p><ul><li><code>d$</code>删除当前光标<strong>到行尾</strong>的所有字符(delete $)。</li><li><code>d0</code>删除当前光标<strong>到行首</strong>的所有字符(delete 0)。</li><li><code>d^</code>删除当前光标<strong>到行首非空字符</strong>的所有字符(delete ^)。</li></ul><p>值得注意的是,<code>D</code>单键等效于<code>d$</code>的功能,之后还会见到一些类似功能。因此,每当想进行“剪切/删除/复制/添加” “到行尾”操作的时候,都可以先看看是不是可以使用大写字母替代其功能,减少操作次数。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/headtail.gif" alt="headtail" /></p><hr /><h2 id="font-color-b5d5ff-stylefont-weightbold小结1-operator-motion-font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold小结1-operator-motion-font"></a> <font color= #b5d5ff style='font-weight:bold'>小结1 ( operator + motion )</font></h2><p><code>vim</code>的基础操作模式可以分为两种。</p><ol><li>单键操作<ul><li><p>单键操作单个字符:</p><ul><li><code>x</code>删除单个字符</li><li><code>r</code>替代单个字符</li><li><code>~</code>单个字符大小写转换</li></ul></li><li><p>单键操作跳转动作(动作命令):</p><ul><li><code>h</code>,<code>j</code>,<code>k</code>,<code>l</code>,跳转单个字符</li><li><code>w</code>,<code>b</code>,<code>e</code>,跳转单个词(<code>W</code>,<code>B</code>,<code>E</code>类似)</li><li><code>$</code>,<code>0</code>,<code>^</code>,跳转行首行末</li></ul></li></ul></li><li>操作符+动作命令<ul><li><code>d</code>删除操作符,配合动作命令完成删除</li></ul></li></ol><hr /><h2 id="font-color-b5d5ff-stylefont-weightboldlevel7ftftzggfont"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldlevel7ftftzggfont"></a> <font color= #b5d5ff style='font-weight:bold'>Level7(<code>f</code>,<code>t</code>,<code>F</code>,<code>T</code>,<code>,</code>,<code>;</code>,<code>z</code>,<code>%</code>,<code>g</code>,<code>G</code>)</font></h2><blockquote><p>使用<code>f</code>键向后跳转到指定字符位置</p><p>使用<code>t</code>键向后跳转到指定字符的位置前</p><p>使用<code>,</code>键和<code>;</code>键重复查找跳转的操作</p></blockquote><p>查找字符跳转操作包括<code>f</code>和<code>t</code></p><ul><li><p><code>f</code>的作用是<strong>向后查找</strong>(find)某个特定的单个字符的位置并跳转。比如按<code>fa</code>后,在查找到下一个字符“a”的位置后光标会跳转到其位置。<code>F</code>的操作与<code>f</code>相同,只是方向是向前查找。</p></li><li><p><code>t</code>的作用是<strong>向后查找直到</strong>(till)某个特定单个字符位置之前的位置并跳转。比如按<code>ta</code>后,在查找到下一个字符“a”的位置后光标会跳转其位置之前的位置。<code>T</code>的操作与<code>t</code>相同,只是方向是向前查找。</p></li></ul><p>在完成一次<code>f</code>或<code>t</code>的单个字符的查找跳转之后,再使用<code>;</code>可以<strong>重复查找操作</strong>,而再使用<code>,</code>可以<strong>反向重复查找操作</strong>。比如按<code>fa</code>之后,光标会跳转到下一个字符"a"的位置;这时按<code>;</code>则等效重复<code>fa</code>的操作,查找到再下一个字符"a"的位置;而按<code>,</code>则等效重复<code>Fa</code>的操作,查找到上一个字符"a"的位置。</p><p>值得注意的是,只要操作过<code>f</code>或者<code>t</code>,操作就会被记录在寄存器中,因此这时可以随时使用<code>;</code>或者<code>,</code>重复这个操作。</p><p>同样的,<code>f</code>,<code>t</code>,<code>F</code>,<code>T</code>也是动作命令,也可以结合<code>d</code>来操作。因此</p><ul><li><code>df</code>+特定字符删除当前光标<strong>到下一个查找到的特定字符</strong>。比如<code>dfa</code>(delete find a),会从当前光标删除字符到下一个字符"a"所在位置。</li><li><code>dt</code>+特定字符删除当前光标<strong>直到下一个查找到的特定字符</strong>之前的位置。比如<code>dta</code>(delete till a),会从当前光标删除字符直到下一个字符"a"所在位置之前的位置。</li><li><code>dT</code>和<code>dF</code>的原理跟上面两个指令相同,只是查找方向相反</li></ul><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/findandtill.gif" alt="findandtill" /></p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/deletefind.gif" alt="deletefind" /></p><blockquote><p>使用<code>z</code>键配合其他按键进行窗口调整操作</p></blockquote><p><code>z</code>的作用是<strong>调整窗口页面视角的位置</strong>(scroll,发音类似zcroll)。类似的,<code>z</code>只是一个<strong>操作符</strong>(operator),会根据实际的<strong>动作</strong>(motion)命令来产生效果。<code>z</code>的用法比较特殊,主要是以下几个</p><ul><li><code>zz</code>调整窗口页面视角使当前行在<strong>居中位置</strong>。(<font color= red >重复两次操作符代表对当前行操作</font>)</li><li><code>zt</code>调整窗口页面视角使当前行在<strong>最顶层</strong>(scroll top)。</li><li><code>zb</code>调整窗口页面视角使当前行在<strong>最底层</strong>(scroll bottom)。</li></ul><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/z-button.gif" alt="z-button" /></p><blockquote><p>使用<code>%</code>键在括号间匹配跳转</p></blockquote><p><code>%</code>的作用是括号<strong>匹配跳转</strong>(match)。<code>%</code>主要用于在编程中方便地在<strong>匹配</strong>的括号(包括<code>{}</code>,<code>()</code>)或是<strong>成对</strong>的标签之间跳转。比如在字符<code>{</code>处按<code>%</code>,则会跳转到<strong>与之对应</strong>的<code>}</code>处。</p><p>在不同的编程语言中,匹配的方式是不同的。在vim中可以通过配置文件自行添加标签匹配,比如在<code>verilog</code>中,<code>begin</code>和<code>end</code>就是一对匹配的标签,添加后即可匹配跳转。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/mathpattern.gif" alt="mathpattern" /></p><blockquote><p>使用<code>g</code>键进行全文跳转</p></blockquote><p><code>g</code>的作用是<strong>全文跳转</strong>(go)。类似的,单独的<code>g</code>只是一个<strong>操作符</strong>(operator),会根据实际的<strong>动作</strong>(motion)命令来产生效果。<code>g</code>的用法同样比较特殊,主要是以下几个</p><ul><li><p><code>gg</code>使光标跳转到<strong>全文的开头</strong>。</p></li><li><p><code>G</code>使光标跳转到<strong>全文的结尾</strong>。</p></li></ul><p>其实<code>G</code>可以配合数字使用跳转到指定行,不过当前这关还没有引入数字。比如<code>5G</code>可以跳转到第5行。</p><p>同样的,<code>g</code>,<code>G</code>也是动作命令,也可以结合<code>d</code>来操作。因此</p><ul><li><p><code>dgg</code>删除当前光标到<strong>全文的开头</strong>的所有字符。(delete gg)</p></li><li><p><code>dG</code>删除当前光标到<strong>全文的结尾</strong>的所有字符。 (delete G)</p></li></ul><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/gotoline.gif" alt="gotoline" /></p><h2 id="font-color-b5d5ff-stylefont-weightboldlevel8nnfont"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldlevel8nnfont"></a> <font color= #b5d5ff style='font-weight:bold'>Level8(<code>*</code>,<code>#</code>,<code>n</code>,<code>N</code>)</font></h2><blockquote><p>使用<code>*</code>键搜索距离光标最近的词,同时跳转过去(正向)。</p><p>使用<code>#</code>键搜索距离光标最近的词,同时跳转过去(反向)。</p><p>使用<code>n</code>键和<code>N</code>键重复搜索跳转的操作</p></blockquote><p>整词搜索跳转操作包括<code>*</code>和<code>#</code></p><ul><li><code>*</code>的作用是<strong>向后查找</strong>某个特定的<code>词</code>的位置并跳转。</li><li><code>#</code>的操作与<code>*</code>相同,只是方向是<strong>向前查找</strong>。</li></ul><p>在完成一次<code>*</code>或<code>#</code>的整<code>词</code>搜索跳转之后,再使用<code>n</code>(next)可以<strong>重复搜索操作</strong>,而再使用<code>N</code>可以<strong>反向重复查找操作</strong>。比如按<code>*</code>之后,光标会跳转到下一个距离最近<code>词</code>的位置;这时按<code>n</code>则等效重复<code>*</code>的操作,查找到再下一个<code>词</code>的位置;而按<code>N</code>则等效重复<code>#</code>的操作,查找到上一个<code>词</code>的位置。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/serachjump.gif" alt="serachjump" /></p><h2 id="font-color-b5d5ff-stylefont-weightboldlevel9-number-font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldlevel9-number-font"></a> <font color= #b5d5ff style='font-weight:bold'>Level9( number )</font></h2><blockquote><p>数字操作</p></blockquote><p>数字操作是一个强大的重复功能,几乎之前所有的动作命令都可以<strong>通过数字进行重复</strong>,而通过操作符+动作命令的操作同样可以通过数字进行多次重复操作。以之前每个level的一些命令为例</p><ul><li><code>j</code>使光标进行<strong>向下</strong>的移动,而<code>2j</code>则使光标进行<strong>向下</strong>的移动<strong>2次</strong></li><li><code>w</code>使光标跳转到<strong>下个单词</strong>(word)开头,而<code>3w</code>则使光标跳转到<strong>往下第3个单词</strong>(3 word)的开头</li><li><code>x</code>的作用是<strong>删除</strong>(cross)当前光标下的单个字符,而<code>5x</code>则是<strong>删除</strong>(cross)当前光标往后的<strong>5个</strong>字符</li><li><code>r</code>的作用是<strong>替换</strong>(replace),而<code>5r</code>则是<strong>替换</strong>(replace)当前光标往后的<strong>5个</strong>字符为同一个字符</li><li><code>dw</code>删除字符到<strong>下个单词</strong>(delete word)开头,而<code>5dw</code>或<code>d5w</code>则是删除字符到<strong>下5个词</strong>(5 delete word / delete 5 word)开头,简单来说就是删除5个词</li><li><code>dj</code>删除<strong>当前行及其下一行</strong>的所有字符(delete j),而<code>6dj</code>或<code>d6j</code>则是删除<strong>当前行及其下6行</strong>的所有字符(6 delete j/ delete 6 j),简单来说就是加上当前行删7行</li><li><code>dd</code>删除<strong>当前行</strong>所有字符,而<code>6dd</code>或<code>d6d</code>则是删除<strong>当前6行</strong>的所有字符,简单来说就是加上当前行删6行</li><li><code>$</code>使光标<strong>跳转到行尾</strong>,而<code>7$</code>则是使光标<strong>跳转到往下第7个行尾</strong></li><li><code>fa</code>(find a)在<strong>查找到下一个字符“a”的位置</strong>后光标会跳转到其位置,而<code>3fa</code>或<code>f3a</code>会<strong>查找到往后第3个字符“a”</strong>(3 find a / find 3 a)并跳转到其位置</li><li><code>dtb</code>(delete till b)会从当前光标删除字符直到下一个字符"b"所在位置之前的位置,而<code>d2tb</code>(delete 2 till b)会从当前光标删除字符直到**下2个字符"b"**所在位置之前的位置。</li><li><code>5G</code>可以<strong>跳转到第5行</strong>。</li><li>在完成一次<code>*</code>或<code>#</code>的整<code>词</code>搜索跳转之后,再使用<code>n</code>(next)可以<strong>重复搜索操作</strong>,而如果在这时使用<code>5n</code>,则会<strong>执行5次重复搜索</strong>操作。</li></ul><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/numberoperation.gif" alt="numberoperation" /></p><p><strong><font color= red >加入数字的操作极大的减少了键盘的操作次数,可以通过数字进行大量的重复操作。</font></strong></p><hr /><h2 id="font-color-b5d5ff-stylefont-weightbold小结2-operator-number-motionfont"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold小结2-operator-number-motionfont"></a> <font color= #b5d5ff style='font-weight:bold'>小结2( operator + number + motion)</font></h2><p><code>vim</code>的基础操作模式可以分为几种。</p><ol><li><p>单字符操作</p><ul><li><code>x</code>删除单个字符</li><li><code>r</code>替代单个字符</li><li><code>~</code>单个字符大小写转换</li></ul></li><li><p>特殊操作</p><ul><li><code>z</code>组合操作窗口调整(<code>zz</code>,<code>zt</code>,<code>zb</code>)</li><li><code>g</code>操作全文跳转(<code>gg</code>,<code>G</code>)</li><li><code>%</code>匹配跳转</li></ul></li><li><p>跳转动作(动作命令):</p><ul><li><code>h</code>,<code>j</code>,<code>k</code>,<code>l</code>,跳转单个字符</li><li><code>w</code>,<code>b</code>,<code>e</code>,跳转单个词(<code>W</code>,<code>B</code>,<code>E</code>类似)</li><li><code>$</code>,<code>0</code>,<code>^</code>,跳转行首行末</li><li><code>f</code>,<code>t</code>,查找字符跳转;<code>;</code>,<code>,</code>,重复查找</li><li><code>gg</code>,<code>G</code>,全文跳转</li><li><code>*</code>,<code>#</code>,搜索词跳转;<code>n</code>,<code>N</code>,重复搜索</li></ul></li><li><p>数字+操作符+动作命令 或 操作符+数字+动作命令</p><ul><li><code>d</code>删除<strong>操作符</strong>,配合<strong>动作命令</strong>(3中的任何动作)以及<strong>数字</strong>完成多次删除</li></ul></li></ol><hr /><h2 id="font-color-b5d5ff-stylefont-weightboldlevel10ppyreg1-9a-zfont"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldlevel10ppyreg1-9a-zfont"></a> <font color= #b5d5ff style='font-weight:bold'>Level10(<code>p</code>,<code>P</code>,<code>y</code>,<code>:reg</code>,<code>"1-9</code>,<code>""</code>,<code>"a-z</code>)</font></h2><blockquote><p>使用<code>p</code>键进行粘贴操作</p></blockquote><p>在文本编辑器中被删除的内容一般可以通过撤销来恢复,因此被删除的内容其实是被存在了寄存器(register)中;在<code>vim</code>中也类似,只是可以通过操作访问各个寄存器并实现特定的复制(剪切)及粘贴操作。</p><p>寄存器包括无名寄存器(unnamed,最常用的寄存器),小删除寄存器(small delete),数字寄存器(numbered,1-9),具名寄存器(named,a-z),黑洞寄存器(black hole)等。 这些都不需要记忆,当使用的时候自然就会明白这些寄存器是拿来做什么的。</p><p><code>p</code>的作用是<strong>粘贴</strong>(paste)。粘贴的可以是删除(即剪切,针对<code>d</code>和<code>x</code>)掉的内容,也可以是复制(针对<code>y</code>)的内容,根据最新一次的操作决定。</p><ul><li><code>p</code>的粘贴操作在<strong>当前光标之后</strong>。</li><li><code>P</code>的粘贴操作在<strong>当前光标之前</strong>。</li></ul><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/paste-button.gif" alt="paste-button" /></p><blockquote><p><code>"</code> 指定剪切/复制所使用的寄存器</p><p><code>:reg</code>查看当前寄存器</p><p><code>"1</code>,<code>"2</code>…<code>"9</code>数字寄存器(numbered)</p></blockquote><p><code>"</code>的作用是<strong>指定寄存器</strong>,而<code>:reg</code>的作用是<strong>查看寄存器</strong>。以数字寄存器(numbered)为例</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/number-reg.gif" alt="number-reg" /></p><p>由上面的图可见,在这里通过<code>dd</code>指令删除了4行,而4行内容被依次记录在了数字寄存器1~4中,<strong>越新的内容记录的位置越前</strong>,即1号寄存器记录最新删除的内容。因此,数字寄存器的作用是<strong>记录历史</strong>删除(即剪切,针对<code>d</code>和<code>x</code>)或复制(针对<code>y</code>)的内容。</p><p>假如删除了4行然后想粘贴第1行内容到当前位置怎么办呢?现在已知第1行的内容已经在4号寄存器,因此只要使用<code>"4p</code>(number 4 register paste)就可以了。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/pastefirstline.gif" alt="pastefirstline" /></p><blockquote><p>使用<code>y</code>键配合其他按键进行复制操作</p></blockquote><p><code>y</code>的作用是<strong>复制</strong>(yank)字符/行/段落,类似于<code>d</code>,单独的<code>y</code>只是一个<strong>操作符</strong>(operator),需要根据实际的<strong>动作</strong>(motion)命令来产生效果。因此所有对<code>d</code>有效果的动作命令对<code>y</code>依然有效,只是动作从删除变为了复制。例如</p><ul><li><code>yw</code>复制字符到<strong>下个词</strong>(yank word)开头。</li><li><code>yj</code>复制<strong>当前行及其下一行</strong>的所有字符(yank j)。</li><li><code>yy</code>复制<strong>当前行</strong>所有字符。</li><li><code>yG</code>复制当前光标到<strong>全文的结尾</strong>的所有字符。 (yank G)</li></ul><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/yank.gif" alt="yank" /></p><p>类似的,使用数字重复操作也同样适用于<code>y</code>。同时复制的内容也会存入数字寄存器。同样的,通过<code>p</code>或者<code>P</code>进行复制内容的粘贴操作。</p><ul><li><code>yw</code>复制字符到<strong>下个单词</strong>(yank word)开头,而<code>5yw</code>或<code>y5w</code>则是复制字符到<strong>下5个词</strong>(5 yank word / yank 5 word)开头,简单来说就是复制5个词</li><li><code>yj</code>复制<strong>当前行及其下一行</strong>的所有字符(yank j),而<code>6yj</code>或<code>y6j</code>则是复制<strong>当前行及其下6行</strong>的所有字符(6 yank j/ yank 6 j),简单来说就是加上当前行复制7行</li><li><code>yy</code>复制<strong>当前行</strong>所有字符,而<code>6yy</code>或<code>y6y</code>则是复制<strong>当前6行</strong>的所有字符,简单来说就是加上当前行复制6行</li></ul><p>值得注意的是,类似于<code>D</code>单键等效于<code>d$</code>的功能,<s><code>Y</code>单键等效于<code>y$</code>的功能。因此,可通过<code>Y</code>键进行<strong>从当前光标复制到行尾</strong>的操作,减少操作次数</s><code>Y</code>单键等效于<code>yy</code>的功能。因此,可通过<code>Y</code>键进行复制<strong>当前行</strong>所有字符的操作,减少操作次数。</p><p>简而言之,所有<code>y</code>相关操作均可参考<code>d</code>。</p><blockquote><p><code>""</code>无名寄存器(unnamed)</p></blockquote><p>最近一次删除(即剪切,针对<code>d</code>和<code>x</code>)或复制(针对<code>y</code>)的内容会保存在无名寄存器(unnamed),按<code>p</code>或<code>P</code>的时候调用的就是无名寄存器存储的值。</p><blockquote><p><code>"a</code>,<code>"b</code>…<code>"z</code>具名寄存器(named)</p></blockquote><p>删除(即剪切,针对<code>d</code>和<code>x</code>)或复制(针对<code>y</code>)的内容可以指定存在<code>"a</code>-<code>"z</code>的具名寄存器中,通过<code>p</code>或<code>P</code>粘贴时也可以指定具名寄存器粘贴。当某个具名寄存器已有内容时,<code>"a</code>-<code>"z</code>会<strong>替换</strong>寄存器内的内容,而<code>"A</code>-<code>"Z</code>则会在对应寄存器后进行<strong>追加</strong>。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/named-reg.gif" alt="named-reg" /></p><p>例如上图的操作中,通过<code>"ayw</code>复制词<code>Through<space></code><strong>替换</strong>a寄存器(register a yank word),通过<code>"Ayw</code>复制词<code>God!</code><strong>追加</strong>到a寄存器尾部,再次通过<code>"Ayw"</code>复制词<code>all</code>到a寄存器尾部,从而实现了从多个地方复制。在最后通过<code>"ap</code>进行粘贴操作(register a paste)。</p><h2 id="font-color-b5d5ff-stylefont-weightboldlevel11ccsiiaaoofont"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldlevel11ccsiiaaoofont"></a> <font color= #b5d5ff style='font-weight:bold'>Level11(<code>c</code>,<code>C</code>,<code>s</code>,<code>i</code>,<code>I</code>,<code>a</code>,<code>A</code>,<code>o</code>,<code>O</code>)</font></h2><blockquote><p>插入模式</p></blockquote><p>之前的操作均是在<strong>普通模式</strong>下进行的,即所有操作是对已经写好的文本进行剪切、复制、粘贴、转换等操作,并不进行新文本的插入。而要进行新文本的插入,则需要进入<strong>插入模式</strong>。使用一些按键(比如<code>i</code>,<code>a</code>,<code>c</code>)进入插入模式,通过<code><Esc></code>或者<code><C-[></code>回到普通模式。</p><blockquote><p>使用<code>c</code>键配合其他按键进行删除然后进入插入模式的操作</p></blockquote><p><code>c</code>的作用是<strong>改变</strong>(change)字符/行/段落,类似于<code>d</code>,单独的<code>c</code>只是一个<strong>操作符</strong>(operator),需要根据实际的<strong>动作</strong>(motion)命令来产生效果。因此所有对<code>d</code>有效果的动作命令对<code>c</code>依然有效,只是动作从删除变为了改变(即删除然后进入插入模式)。例如</p><ul><li><code>cw</code>删除字符到<strong>下个词</strong>(change word)开头,并进入插入模式。</li><li><code>cj</code>删除<strong>当前行及其下一行</strong>的所有字符(change j)。</li><li><code>cc</code>删除<strong>当前行</strong>所有字符,并进入插入模式。</li><li><code>cG</code>删除当前光标到<strong>全文的结尾</strong>的所有字符,并进入插入模式(change G)。</li></ul><p>同时,类似于<code>d</code>的是,通过<code>c</code>删除的内容也会存储在数字寄存器内。</p><p>值得注意的是,类似于<code>D</code>单键等效于<code>d$</code>的功能,<code>C</code>单键等效于<code>c$</code>的功能。因此,可通过<code>C</code>键进行<strong>从当前光标删除到行尾,并进入插入模式</strong>的操作,减少操作次数。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/change-button.gif" alt="change-button" /></p><blockquote><p>使用<code>s</code>键删除单个字符并进入插入模式</p></blockquote><p>如果说<code>c</code>对应<code>d</code>+<code>进入插入模式</code>的话,<code>s</code>应该就是对应<code>x</code>+<code>进入插入模式</code>了。前者要进入插入模式插入文字,后者依旧保持普通模式,不进行文字插入。因此</p><ul><li><code>dl</code>删除当前光标<strong>右边</strong>的字符,即删除<strong>当前光标</strong>的字符(delete l),等效于<code>x</code>。</li><li><code>cl</code>删除当前光标<strong>右边</strong>的字符并进入插入模式,即改变<strong>当前光标</strong>的字符(change l),等效于<code>s</code>。</li></ul><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/s-button.gif" alt="s-button" /></p><blockquote><p>使用<code>i</code> 键在当前字符前进入插入模式。</p><p>使用<code>a</code> 键在当前字符后进入插入模式。</p></blockquote><p><code>i</code>和<code>a</code>是最常用的进入插入模式插入文本的方法,注意<code>i</code>和<code>a</code>并不是操作符,因此并不能搭配动作指令,它们的指令效果是立刻生效的。</p><p>值得注意的是,类似于<code>D</code>单键等效于<code>d$</code>的功能,<code>A</code>单键等效于<code>$a</code>(注意<code>a</code>不是操作符,因此不能使用<code>a$</code>)的功能。因此,可通过<code>A</code>键进行<strong>从当前光标跳转到行尾,并在行尾后进入插入模式</strong>的操作,减少操作次数。</p><p>类似的,<code>I</code>单键等效于<code>^i</code>(注意<code>i</code>不是操作符,因此不能使用<code>i^</code>)的功能。因此,可通过<code>I</code>键进行<strong>从当前光标跳转到行首(非空格),并在行首前进入插入模式</strong>的操作,减少操作次数。</p><p>简而言之,通过<code>i</code>和<code>a</code>进行当前光标<strong>字符前插入和字符后插入</strong>,通过<code>I</code>和<code>A</code>进行<strong>行首插入和行末插入</strong>。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/ianda.gif" alt="ianda" /></p><blockquote><p>使用<code>o</code> 键新建空白行并进入插入模式。</p></blockquote><p><code>o</code>的作用是<strong>在当前光标下新建空白行并进入插入模式</strong>。<code>O</code>则是在上一行插入。</p><ul><li><code>o</code>的新建一行操作在<strong>当前光标之下</strong>。</li><li><code>O</code>的新建一行操作在<strong>当前光标之上</strong>。</li></ul><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/o-button.gif" alt="o-button" /></p><blockquote><p>数字操作</p></blockquote><p>普通模式的命令进入插入模式时仍可以<strong>通过数字进行重复</strong>。以之前的一些命令为例</p><ul><li><code>cw</code>删除字符到<strong>下个词</strong>(change word)开头,并进入插入模式;而<code>c2w</code>会删除到<strong>下2个词</strong>(change 2 word)开头,并进入插入模式。</li><li><code>a</code> 在当前字符后进入插入模式。 而<code>2a</code>会进入插入模式,并在退回普通模式时插入2次内容。</li><li><code>o</code>的新建一行操作在<strong>当前光标之下</strong>。而<code>3o</code>会进入插入模式,并在退回普通模式时候插入3行内容。</li></ul><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/numberandinsert.gif" alt="numberandinsert" /></p><h2 id="font-color-b5d5ff-stylefont-weightbold小结3-uppercase-font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold小结3-uppercase-font"></a> <font color= #b5d5ff style='font-weight:bold'>小结3( uppercase )</font></h2><p><code>vim</code>的模式有普通模式和插入模式。基础操作模式可以分为几种。</p><ol><li><p>特殊操作</p><ul><li><code>z</code>组合操作窗口调整(<code>zz</code>,<code>zt</code>,<code>zb</code>)</li><li><code>%</code>匹配跳转</li></ul></li><li><p>跳转动作(动作命令)+数字(可不加):</p><ul><li><code>h</code>,<code>j</code>,<code>k</code>,<code>l</code>,跳转单个字符</li><li><code>w</code>,<code>b</code>,<code>e</code>,跳转单个词(<code>W</code>,<code>B</code>,<code>E</code>类似)</li><li><code>$</code>,<code>0</code>,<code>^</code>,跳转行首行末</li><li><code>f</code>,<code>t</code>,查找字符跳转;<code>;</code>,<code>,</code>,重复查找</li><li><code>gg</code>,<code>G</code>,全文跳转</li><li><code>*</code>,<code>#</code>,搜索词跳转;<code>n</code>,<code>N</code>,重复搜索</li></ul></li><li><p>单字符+数字(可不加)操作</p><ul><li><code>x</code>删除单个字符,<code>r</code>替代单个字符,<code>s</code>删除单个字符并进入插入模式</li><li><code>~</code>单个字符大小写转换</li><li><code>i</code>和<code>a</code>进入插入模式(字符前/后)</li></ul></li><li><p>数字+操作符+动作命令 或 操作符+数字+动作命令</p><ul><li><code>d</code>删除<strong>操作符</strong>,配合<strong>动作命令</strong>(2中的任何动作)以及<strong>数字</strong>完成多次删除</li><li><code>y</code>复制<strong>操作符</strong>,配合<strong>动作命令</strong>(2中的任何动作)以及<strong>数字</strong>完成多次复制</li><li><code>c</code>改变<strong>操作符</strong>,配合<strong>动作命令</strong>(2中的任何动作)以及<strong>数字</strong>完成多次改变(即删除+进入插入模式)</li></ul></li></ol><p>大写按键需要注意的是,有些大写按键等效于<strong>操作符+首尾动作命令</strong>的操作,有些则是<strong>反向操作</strong>:</p><table><thead><tr><th style="text-align:center">小写按键</th><th style="text-align:center">意义</th><th style="text-align:center">大写按键</th><th>意义</th></tr></thead><tbody><tr><td style="text-align:center"><code>w</code> <code>b</code> <code>e</code></td><td style="text-align:center">字跳转</td><td style="text-align:center"><code>W</code> <code>B</code> <code>E</code></td><td>字跳转(带标点、空格)</td></tr><tr><td style="text-align:center"><code>x</code></td><td style="text-align:center">向后删除单字符</td><td style="text-align:center"><code>X</code></td><td>向前删除单字符</td></tr><tr><td style="text-align:center"><code>r</code></td><td style="text-align:center">替换单字符</td><td style="text-align:center"><code>R</code></td><td>替换多个字符</td></tr><tr><td style="text-align:center"><code>f</code> <code>t</code></td><td style="text-align:center">查找跳转</td><td style="text-align:center"><code>F</code> <code>T</code></td><td>反向查找跳转</td></tr><tr><td style="text-align:center"><code>p</code></td><td style="text-align:center">粘贴在光标后</td><td style="text-align:center"><code>P</code></td><td>粘贴在光标前</td></tr><tr><td style="text-align:center"><code>i</code> <code>a</code></td><td style="text-align:center">进入插入模式</td><td style="text-align:center"><code>I</code> <code>A</code></td><td>行首/行尾进入插入模式</td></tr><tr><td style="text-align:center"><code>o</code></td><td style="text-align:center">下方新建行</td><td style="text-align:center"><code>O</code></td><td>上方新建行</td></tr><tr><td style="text-align:center"><code>d</code></td><td style="text-align:center">删除操作符</td><td style="text-align:center"><code>D</code></td><td>等效<code>d$</code>,删除到行尾</td></tr><tr><td style="text-align:center"><code>y</code></td><td style="text-align:center">复制操作符</td><td style="text-align:center"><code>Y</code></td><td><s>等效<code>y$</code>,复制到行尾</s> 等效<code>yy</code>,复制当前行</td></tr><tr><td style="text-align:center"><code>c</code></td><td style="text-align:center">改变操作符</td><td style="text-align:center"><code>C</code></td><td>等效<code>c$</code>,改变到行尾</td></tr></tbody></table><p>上表也不需要记忆,在实际使用的时候会自然形成习惯,即用了小写的按键,自然会考虑大写按键的类似操作。</p><h2 id="font-color-b5d5ff-stylefont-weightboldlevel12objectfont"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldlevel12objectfont"></a> <font color= #b5d5ff style='font-weight:bold'>Level12(<code>(</code>,<code>)</code>,<code>{</code>,<code>}</code>,<code>[</code>,<code>]</code>,<code>object</code>,<code>.</code>)</font></h2><blockquote><p>使用<code>(</code>和<code>)</code>进行句子跳转的操作</p></blockquote><p>句子跳转操作包括<code>(</code>和<code>)</code>。句子按照标点句号<code>.</code>,问号<code>?</code>以及感叹号<code>!</code>作为结尾标识。</p><ul><li><p><code>(</code>的作用是<strong>向前跳转到上一句</strong>(首个非空字符)。</p></li><li><p><code>)</code>的作用是<strong>向后跳转到下一句</strong>(首个非空字符)。</p></li></ul><p>同样的,<code>(</code>,<code>)</code>也是动作命令,也可以结合<code>d</code>、<code>y</code>、<code>c</code>等操作符来操作。同样的,此操作仍可以通过数字进行重复。因此</p><ul><li><code>d3)</code><strong>向后删除3句话</strong>(delete 3 sentence forward)。</li><li><code>y2(</code> <strong>向前复制2句话</strong>(yank 2 sentence backward)。</li></ul><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/sentence.gif" alt="sentence" /></p><blockquote><p>使用<code>{</code>和<code>}</code>进行段落跳转的操作</p></blockquote><p>段落跳转操作包括<code>{</code>和<code>}</code>。段落按照空行作为分隔标识。</p><ul><li><code>{</code>的作用是<strong>向前跳转到上一段落</strong>。</li><li><code>}</code>的作用是<strong>向后跳转到下一段落</strong>。</li></ul><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/paragraph.gif" alt="paragraph" /></p><p><code>{</code>,<code>}</code>也是动作命令,也可以结合<code>d</code>、<code>y</code>、<code>c</code>等操作符来操作。同样的,此操作仍可以通过数字进行重复。与前述按句子操作类似,在此不赘述。</p><blockquote><p>使用<code>[]</code>配合其他括号,包括<code>[{</code>,<code>}]</code>,<code>[(</code>,<code>)]</code>,<code>[[</code>,<code>]]</code>,进行查找未闭合括号跳转的操作</p></blockquote><p>每一对括号在代码中应该是匹配的,通过<code>[]</code>搜索未闭合括号的的操作可以方便查询代码结构。</p><ul><li><p><code>[</code>的作用是<strong>向前匹配到上一个未闭合括号(括号为<code>{</code>,<code>(</code>,<code>[</code>)</strong>。</p></li><li><p><code>]</code>的作用是<strong>向后跳转到下一个未闭合括号(括号为<code>}</code>,<code>)</code>,<code>]</code>)</strong>。</p></li></ul><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/closedbracket.gif" alt="closedbracket" /></p><blockquote><p>object对象操作。<code>i</code>,inner object,<code>a</code>,an object 对象,需配合操作符使用</p></blockquote><p>普通的操作符+动作命令的<strong>操作对象</strong>均是由按键决定的,比如<strong>词</strong>(<code>w</code>,<code>b</code>,<code>e</code>),<strong>首尾</strong>(<code>0</code>,<code>^</code>,<code>$</code>),<strong>搜索位置</strong>(<code>f</code>,<code>t</code>)等,但有时实际的操作对象可能要求要<strong>更精确一些</strong>。</p><p>在小结3中总结过通过<strong>操作符</strong>(<code>d</code>,<code>y</code>,<code>c</code>)配合<strong>动作命令和数字</strong>进行批量修改,但有时动作命令可能无法满足操作复杂度的要求。因此<code>vim</code>引入了<strong>对象(object)<strong>的概念。以<code>w</code>为例,<code>w</code>本身是动作命令,会使光标跳转到</strong>下个词</strong>(word)开头。 而配合动作命令则可以得到<code>dw</code>删除字符到<strong>下个词</strong>(delete word)开头。 假设现在的操作光标在词的中间位置,则<code>dw</code>无法进行完整的删除,如下图所示。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/deleteword.gif" alt="deleteword" /></p><p>这时若将整个词(word)作为对象(object)进行处理,采用<code>daw</code>(delete an object word),则可以直接删除掉整个词。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/deleteaword.gif" alt="deleteaword" /></p><blockquote><p>常见的对象(object)包括括号(<code>{}</code>,<code>()</code>,<code>[]</code>),引号(<code>''</code>,<code>""</code>),word(<code>w</code>),sentence(<code>s</code>),paragraph(<code>p</code>)等。</p></blockquote><p><code>a</code>和<code>i</code>的区别在于是否<strong>包括对象本身</strong>(边缘)。下面部分演示使用未提及的<strong>可视模式</strong>(Visual Mode)来展示<strong>对象(object)选择</strong>功能。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/iaobject.gif" alt="iaobject" /></p><blockquote><p><code>.</code>重复</p></blockquote><p><code>.</code>的作用是<strong>重复</strong>(repeat)最近一次进行的修改。修改内容可以是删除(<code>d</code>),也可以是改变(<code>c</code>),小结3中的<strong>操作符+数字+动作命令</strong>均可通过<code>.</code>进行重复。<code>.</code>操作与配合数字操作不同的是,<code>.</code>的操作效果更直观,且数量控制更精确,通常<code>.</code>操作会配合<code>u</code>(undo)撤销操作一起,即<strong>重复多了就撤销,不需要在意具体的重复次数</strong>。下面演示几个简单功能来说明<code>.</code>操作。</p><ol><li><p>重复删除行,重复粘贴</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/delandpastere.gif" alt="delandpastere" /></p></li><li><p>重复改变词</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/rechangeword.gif" alt="rechangeword" /></p></li><li><p>重复行尾添加分号<code>;</code></p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/addatendofs.gif" alt="addatendofs" /></p></li></ol><h2 id="font-color-b5d5ff-stylefont-weightboldlevel13nullfont"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldlevel13nullfont"></a> <font color= #b5d5ff style='font-weight:bold'>Level13(null)</font></h2><p>13在国外不吉利,没有这关</p><h2 id="font-color-b5d5ff-stylefont-weightboldlevel14uc-rhlmcountmfont"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldlevel14uc-rhlmcountmfont"></a> <font color= #b5d5ff style='font-weight:bold'>Level14(<code>u</code>,<code><C-r></code>,<code>H</code>,<code>L</code>,<code>M</code>,<code>|</code>,<code>:count</code>,<code>/</code>,<code>?</code>,<code>m</code>,<code>`</code>,<code>'</code>)</font></h2><blockquote><p><code>u</code>撤销</p><p><code><C-r></code>取消撤销</p></blockquote><p><code>u</code>的作用是<strong>撤销</strong>(undo)最近一次进行的修改。而<code><C-r></code>的作用是<strong>重做</strong>(redo)撤销的操作。类似Windows中的通用命令<code><C-z></code>撤销和<code><C-y></code>重做。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/undoandredo.gif" alt="undoandredo" /></p><blockquote><p>使用<code>H</code> <code>L</code> <code>M</code>移动光标</p><p>使用<code>:<count><CR></code>进行行跳转</p><p>使用<code><count>|</code>进行列跳转</p></blockquote><p>以上几个命令除了<code>:<count><CR></code>平时使用较少,适合于进行某些需要<strong>精确行列号</strong>跳转的场景。</p><p><code>H</code>的作用是在<strong>不滚动屏幕</strong>的状态下,将光标移动至<strong>当前屏幕显示的首行</strong>(High)。</p><p><code>L</code>的作用是在<strong>不滚动屏幕</strong>的状态下,将光标移动至<strong>当前屏幕显示的尾行</strong>(Low)。</p><p><code>M</code>的作用是在<strong>不滚动屏幕</strong>的状态下,将光标移动至<strong>当前屏幕显示的中间行</strong>(Middle)。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/hlmwindow.gif" alt="hlmwindow" /></p><p><code>:<count><CR></code>的<code>count</code>输入任意数字可以<strong>跳转到对应行</strong>,其功能类似于<code><count>G</code>。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/linejump.gif" alt="linejump" /></p><p><code><count>|</code>的<code>count</code>输入任意数字可以<strong>跳转到对应列</strong>。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/rowjump.gif" alt="rowjump" /></p><blockquote><p>使用<code>/<word><CR></code> 键全文搜索名称为<code><word></code>的词并跳转至第一个词(正向),同时高亮所有匹配的词。</p><p>使用<code>?<word><CR></code> 键全文搜索名称为<code><word></code>的词并跳转至第一个词(反向),同时高亮所有匹配的词。</p></blockquote><p><code>/</code>和<code>?</code>的搜索方式与<code>*</code>和<code>#</code>类似,因此依然可以使用<code>n</code>和<code>N</code>重复搜索跳转的操作。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/searchwithword.gif" alt="searchwithword" /></p><blockquote><p>使用<code>m</code>键在指定的位置设置标记。</p><p>使用<code>`</code>跳转到制定的标记位置。</p><p>使用<code>'</code>跳转到指定的标记位置的第一个非空字符。</p></blockquote><p><code>m</code>的作用是标记位置(mark),例如命令 <code>ma</code> (mark a)表示用 <code>a</code> 标记当前的光标位置。可以通过输入<code>:mark<CR></code>来查看当前的使用的所有mark标记。</p><p>标记包括每个缓冲区的局部标记和全局标记。局部标记可使用<code>a</code>-<code>z</code>的所有小写字母标记,而全局标记可使用<code>A</code>-<code>Z</code>的所有-大写字母标记。简单来说,局部标记可在当前文件前后跳转,全局标记可在文件间跳转。标记完成后可通过<code>`</code>跳转到制定的标记位置,或通过<code>'</code>跳转到指定的标记位置的第一个非空字符。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/markjump.gif" alt="markjump" /></p><h2 id="font-color-b5d5ff-stylefont-weightbold补可视模式演示font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold补可视模式演示font"></a> <font color= #b5d5ff style='font-weight:bold'>补:可视模式演示</font></h2><p>本游戏vim-adventure缺少了一个重要部分,即可视模式(Visual Mode)。</p><blockquote><p><code>v</code> 普通可视模式</p><p><code>V</code>行可视模式</p><p><code><C-v></code>(Linux or MAC)或<code><C-q></code>(Windows专用)列可视模式</p></blockquote><p>可视模式的操作逻辑类似鼠标点选后修改,不过具体到<code>vim</code>上与其他编辑器略有不同(比如列操作时不会对所有行进行同时显示,只有退出可视模式后才会统一弹出)。这里只演示功能,不进行具体功能介绍,。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/vim-adventure/visualmodedemo.gif" alt="visualmodedemo" /></p><h1 id="font-color-b5d5ff-stylefont-weightbold结语font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold结语font"></a> <font color= #b5d5ff style='font-weight:bold'>结语</font></h1><p>本教程仅供入门,关于<code>vim</code>使用相关知识最全面的首推<a href="http://drewneil.com/">Drew Neil</a>的<a href="https://book.douban.com/subject/10599776/">Practical Vim</a>一书,针对普通模式、插入模式、可视模式及命令行模式等多种模式、多种操作方式均有详细的技巧教程。当然因为书本身只针对<code>vim</code>的技术点,因此关于<code>vim</code>配置<code>vimrc</code>的相关知识就相对少一些,不过相信读完全书后每位读者都会有自己的认知和配置要求,就能自己动手开始定制自己的<code>vim</code>了。</p><hr /><p><font color= greden style='font-weight:bold' font size= 24>完结撒花~2020/7/7</font></p>]]></content>
<categories>
<category> ic </category>
<category> editor </category>
</categories>
<tags>
<tag> vim </tag>
<tag> gvim </tag>
</tags>
</entry>
<entry>
<title>hexo博客搭建</title>
<link href="/posts/hexo-blog-construction/"/>
<url>/posts/hexo-blog-construction/</url>
<content type="html"><![CDATA[<blockquote><p>本文旨在列举博客搭建的所有参考资料来源。</p><p>PS:本人不会网页前端,所有来源均参考各位博客大佬及网络资源。</p></blockquote><h1 id="font-color-b5d5ff-stylefont-weightbold框架font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold框架font"></a> <font color= #b5d5ff style='font-weight:bold'>框架</font></h1><h2 id="font-color-b5d5ff-stylefont-weightbold入门font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold入门font"></a> <font color= #b5d5ff style='font-weight:bold'>入门</font></h2><p>博主之前刚开始接触hexo时用的yilia主题,小歪的教程。</p><blockquote><ul><li><a href="https://zhangslob.github.io/2017/02/28/%E6%95%99%E4%BD%A0%E5%85%8D%E8%B4%B9%E6%90%AD%E5%BB%BA%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2%EF%BC%8CHexo-Github/">教你免费搭建个人博客,Hexo&Github | 小歪的博客</a></li><li><a href="https://hexo.io/zh-cn/docs/">文档 | Hexo</a></li></ul></blockquote><h2 id="font-color-b5d5ff-stylefont-weightbold主题font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold主题font"></a> <font color= #b5d5ff style='font-weight:bold'>主题</font></h2><div class="tabs" id="theme"><ul class="nav-tabs"><li class="tab active"><button type="button" data-href="#theme-1">butterfly🦋</button></li><li class="tab"><button type="button" data-href="#theme-2"><i class="fas fa-stop-circle"></i>yilia</button></li><li class="tab"><button type="button" data-href="#theme-3"><i class="fab fa-github"></i>replica</button></li></ul><div class="tab-contents"><div class="tab-item-content active" id="theme-1"><p>本站使用的主题butterfly,作者JerryC,基于<a href="https://github.com/Molunerfinn/hexo-theme-melody">hexo-theme-melod</a>升级。</p><blockquote><ul><li><a href="https://demo.jerryc.me/">Butterfly - A Simple and Card UI Design theme for Hexo</a></li><li><a href="https://github.com/jerryc127/hexo-theme-butterfl">jerryc127/hexo-theme-butterfly: 🦋 A Hexo Theme: Butterfly</a></li><li><a href="https://jerryc.me/">JerryC - 今日事,今日畢</a></li></ul></blockquote><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="theme-2"><p>小歪教程使用的主题yilia,作者已停更多年。</p><blockquote><ul><li><a href="https://github.com/litten/hexo-theme-yilia">litten/hexo-theme-yilia: 一个简洁优雅的hexo主题 A simple and elegant theme for hexo</a></li><li><a href="http://litten.me/">Litten的博客</a></li></ul></blockquote><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="theme-3"><p>GitHub风格的博客主题。</p><blockquote><ul><li><a href="https://github.com/sabrinaluo/hexo-theme-replica">sabrinaluo/hexo-theme-replica: Github style replication for hexo theme</a></li><li><a href="https://sabrinaluo.github.io/tech/">小白妹妹写代码</a></li></ul></blockquote><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div></div><h2 id="font-color-b5d5ff-stylefont-weightbold优化font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold优化font"></a> <font color= #b5d5ff style='font-weight:bold'>优化</font></h2><div class="tabs" id="optimization"><ul class="nav-tabs"><li class="tab active"><button type="button" data-href="#optimization-1">美化</button></li><li class="tab"><button type="button" data-href="#optimization-2">全优化</button></li><li class="tab"><button type="button" data-href="#optimization-3">双部署</button></li><li class="tab"><button type="button" data-href="#optimization-4">SSL</button></li></ul><div class="tab-contents"><div class="tab-item-content active" id="optimization-1"><p>首推超逸的博客,详细且很照顾新手,本人也很有意思。</p><blockquote><ul><li><a href="https://yangchaoyi.vip/posts/520520/">【源码开放】Hexo+Github 博客butterfly 和 matery 主题 搭建完全教程【整理】 | 超逸の博客</a></li></ul></blockquote><p>HCLonely大佬的一揽子美化教程也很好,包括访客地图、文章日历、投票系统、加载动画(新版butterfly已自带)、页脚跳动的❤、页脚显示网站运行时间、双评论系统、随机文章跳转、文章统计图等。</p><blockquote><ul><li><a href="https://blog.hclonely.com/posts/57bd67ce/#butterfly%E4%B8%BB%E9%A2%98">Hexo博客美化 | HCLonely Blog</a></li></ul></blockquote><p>小康的方法主要通过inject css和js进行美化,不用修改模板,很方便。另外可以辅以乐特的文章,自行修改。</p><blockquote><ul><li><a href="https://www.antmoe.com/posts/a811d614/index.html">Hexo博客之butterfly主题优雅魔改系列(持续更新) | 小康博客</a></li><li><a href="https://blog.lete114.top/article/eef7397d.html">Butterfly(蝴蝶)主题美化、优化、无修改源码 (持续更新中…) | Lete乐特 's Blog</a></li></ul></blockquote><p>其他优化参考:</p><blockquote><ul><li><a href="https://blog.imzjw.cn/posts/b74f504f/">关于我 Butterfly 主题的所有美化 | 小嘉的部落格</a></li><li><a href="https://lovelijunyi.gitee.io/posts/c898.html">小弋の生活馆全样式预览 | 小弋の生活馆</a></li><li><a href="https://ethant.top/articles/hexo541u/#%E6%88%91%E7%9A%84%E8%A1%A8%E6%83%85%E6%95%B0%E6%8D%AE%E5%8C%85">Hexo+Butterfly主题美化 | 唐先森の博客</a></li></ul></blockquote><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="optimization-2"><p>各种一揽子优化教程,包括图片加载、代码压缩、全站CDN加速、SEO、URL永久链接以及其他一些小技巧,不一一细说,自行查阅。</p><blockquote><ul><li><a href="https://blog.sky03.cn/posts/42790.html#toc-heading-15">Hexo进阶之各种优化 | Sky03’s Blog</a></li><li><a href="https://yafine-blog.cn/posts/ee35.html#CDN%E5%8A%A0%E9%80%9F">使用Jsdelivr/CDN加速博客访问速度 | 过客~励む</a></li></ul></blockquote><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="optimization-3"><p>GitHub+Coding双线部署。主要是注意域名解析出问题的时候证书生成会有问题,暂停解析一下就好。(最新已改为部署至Vercel)</p><blockquote><ul><li><a href="https://snow.js.org/hexo-vercel/">Hexo:将你的博客部署到 Vercel | Serok’s Blog</a></li><li><a href="https://www.cnblogs.com/aoguai/p/11405829.html">2019hexo博客部署到coding该绕的坑-奥怪的小栈 - 奥怪 - 博客园</a></li><li><a href="https://www.jianshu.com/p/25587e049d54">hexo干货系列:(四)将hexo博客同时托管到github和coding - 简书</a></li><li><a href="https://blog.csdn.net/qq_36759224/article/details/100890801">Coding Pages 申请 SSL 证书错误:urn:acme:error:unauthorized: Invalid response from http://xxxxx/_网络_TRHX’S BLOG-CSDN博客</a></li></ul></blockquote><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="optimization-4"><p>升级https。</p><blockquote><ul><li><a href="https://blog.csdn.net/qq_37683287/article/details/91559605">为自定义域名的Hexo博客升级到Https网站_网络_qq_37683287的博客-CSDN博客</a></li><li><a href="https://cloud.tencent.com/document/product/400/6813">SSL 证书 腾讯云实现全站 HTTPS 方案 - 产品简介 - 文档中心 - 腾讯云</a></li></ul></blockquote><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div></div><h2 id="font-color-b5d5ff-stylefont-weightbold功能font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold功能font"></a> <font color= #b5d5ff style='font-weight:bold'>功能</font></h2><p>以下的是一些其他的附加功能,可按需添加。</p><div class="tabs" id="function"><ul class="nav-tabs"><li class="tab active"><button type="button" data-href="#function-1"><i class="fas fa-wrench"></i>hexo插件</button></li><li class="tab"><button type="button" data-href="#function-2"><i class="fas fa-hammer"></i>小功能</button></li></ul><div class="tab-contents"><div class="tab-item-content active" id="function-1"><div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>卡通-Live2D</span></div> <div class="hide-content"><p>向你的Hexo里放上一只萌萌哒二次元看板娘!</p><blockquote><ul><li><a href="https://github.com/EYHN/hexo-helper-live2d">EYHN/hexo-helper-live2d: Add the Sseexxyyy live2d to your hexo!</a></li><li><a href="https://www.jianshu.com/p/c2f7e68e9c33">Hexo博客yilia主题首页添加helper-live2d模型插件 - 简书</a></li></ul></blockquote></div></div><div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>统计-hexo-chart</span></div> <div class="hide-content"><p>懒人大佬将<a href="https://github.com/blinkfox/hexo-theme-matery">matery主题</a>中的<code>文章发布统计图</code>、<code>标签统计图</code>、<code>文章分类统计图</code>做成了插件。</p><blockquote><ul><li><a href="https://github.com/HCLonely/hexo-charts">HCLonely/hexo-charts: Render hexo posts, categories, and tags into charts.</a></li><li><a href="https://demo.hclonely.com/posts/e8bb6eed/">hexo-charts插件Demo | HCLonely Blog [Demo]</a></li></ul></blockquote></div></div><div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>音乐-hexo-tag-aplayer</span></div> <div class="hide-content"><p>主题自带js和css,但仍需安装插件</p><blockquote><ul><li><a href="https://github.com/MoePlayer/hexo-tag-aplayer">MoePlayer/hexo-tag-aplayer: Embed aplayer in Hexo posts/pages</a></li></ul></blockquote></div></div><div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>链接-hexo-abbrlink</span></div> <div class="hide-content"><p>hexo的页面地址转换为永久链接,有效简化地址长度。</p><blockquote><ul><li><a href="https://github.com/rozbo/hexo-abbrlink">rozbo/hexo-abbrlink: create one and only link for every post for hexo</a></li><li><a href="https://www.yansheng.xyz/article/faa5d14.html">hexo+yilia添加URL持久化 | 荷塘月色的博客</a></li></ul></blockquote></div></div><div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>加密-hexo-blog-encrypt</span></div> <div class="hide-content"><p>你可能需要写一些私密的博客,通过密码验证的方式让人不能随意浏览。</p><blockquote><ul><li><a href="https://github.com/MikeCoder/hexo-blog-encrypt/blob/master/ReadMe.zh.md">hexo-blog-encrypt/ReadMe.zh.md at master · MikeCoder/hexo-blog-encrypt</a></li></ul></blockquote></div></div> <div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>备份-hexo-git-backup</span></div> <div class="hide-content"><p>备份hexo博客源文件,建议private。</p><blockquote><ul><li><a href="https://plushine.cn/54808.html">Hexo 常用插件 | XJHui’s Blog</a></li><li><a href="https://github.com/coneycode/hexo-git-backup">coneycode/hexo-git-backup: you can use it to backup your blog into git.</a></li></ul></blockquote></div></div> <div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>置顶-hexo-generator-index-pin-top</span></div> <div class="hide-content"><p>文章置顶,主题自带支持,安装插件即可。</p><blockquote><ul><li><a href="https://github.com/netcan/hexo-generator-index-pin-top">netcan/hexo-generator-index-pin-top: Index generator plugin for Hexo. Pin top version</a></li><li><a href="https://demo.jerryc.me/posts/4aa8abbe/#%E6%96%87%E7%AB%A0%E7%BD%AE%E9%A0%82">Butterfly 安裝文檔(三) 主題配置-1 | Butterfly</a></li></ul></blockquote></div></div> <div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>外链-hexo-filter-nofollow</span></div> <div class="hide-content"><p>自动为 Hexo 博客中的外链添加<code>rel="external nofollow noreferrer"</code> 的插件,从而<a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types">改善你的网站的安全性和 SEO</a>。</p><blockquote><ul><li><a href="https://blog.skk.moe/post/hexo-filter-nofollow-joined-hexo-official-plugin/">hexo-filter-nofollow - Hexo 官方的 nofollow 插件 | Sukka’s Blog</a></li><li><a href="https://github.com/hexojs/hexo-filter-nofollow">hexojs/hexo-filter-nofollow: Add nofollow attribute to all external links automatically.</a></li></ul></blockquote></div></div> <div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>贡献-hexo-githubcalendar</span></div> <div class="hide-content"><p>自动为 Hexo 博客添加github贡献日历。</p><blockquote><ul><li><a href="https://zfe.space/post/hexo-githubcalendar.html">教程:hexo-githubcalendar 插件 1.0 | 小冰博客 (zfe.space)</a></li><li><a href="https://github.com/Zfour/hexo-github-calendar">Zfour/hexo-github-calendar: 基于hexo的github calendar贡献插件</a></li></ul></blockquote></div></div> <div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>双栏-hexo-butterfly-article-double-row</span></div> <div class="hide-content"><p>butterfly主题文章双栏布局插件。</p><blockquote><ul><li><a href="https://zfe.space/post/hexo-butterfly-article-double-row.html">教程:butterfly主题文章双栏布局插件 | 小冰博客 (zfe.space)</a></li><li><a href="https://github.com/Zfour/hexo-butterfly-article-double-row">Zfour/hexo-butterfly-article-double-row: Change the layout of the hexo-theme-butterfly article to double columns (github.com)</a></li></ul></blockquote></div></div> <div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>分类-hexo-magnet</span></div> <div class="hide-content"><p>自动为 Hexo 博客主页添加分类磁贴。</p><blockquote><ul><li><a href="https://zfe.space/post/hexo-magnet.html">教程:hexo-magnet 插件 1.0 | 小冰博客 (zfe.space)</a></li><li><a href="https://github.com/Zfour/hexo-magnet">Zfour/hexo-magnet: 基于hexo的magnet插件 (github.com)</a></li></ul></blockquote></div></div><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="function-2"><div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>访客地图-Clustrmaps</span></div> <div class="hide-content"><p>访客地图用于统计访客来源。</p><blockquote><ul><li><a href="https://blog.csdn.net/cungudafa/article/details/105925710?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5.nonecase">hexo(butterfly)加入clustrmaps访问者地图_定位,html,javascript_cungudafa的博客-CSDN博客</a></li><li><a href="https://clustrmaps.com/">Free Website Counter Showing Visitor Location on Map</a></li></ul></blockquote></div></div><div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>评论系统-Valine</span></div> <div class="hide-content"><p>注意各位大佬的Valine-Admin的模板不一样,配置的环境变量也不同。只能选择一个部署,自行选择。</p><blockquote><ul><li><a href="https://xiabor.com/2019/12/28/valine-admin/#valine%E7%9A%84%E9%82%AE%E4%BB%B6%E6%8F%90%E9%86%92">Valine Admin 邮件回复提醒 | Xuexi’s Blog</a></li><li><a href="https://blog.hclonely.com/posts/409d3090/">Valine添加博主标签及评论微信、QQ通知 | HCLonely Blog</a></li><li><a href="https://www.antmoe.com/posts/2380732b/index.html">Valine评论之Valine-admin配置攻略 | 小康博客</a></li><li><a href="https://www.antmoe.com/posts/284f2e1c/index.html">Valine添加自定义表情 | 小康博客</a></li><li><a href="https://www.antmoe.com/posts/ff6aef7b/index.html">优雅解决LeanCloud流控问题 | 小康博客</a></li><li><a href="https://valine.js.org/">Valine 一款快速、简洁且高效的无后端评论系统。</a></li><li><a href="https://www.leancloud.cn/">LeanCloud</a></li></ul></blockquote></div></div><div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>评论系统-Twikoo</span></div> <div class="hide-content"><p>切换为twikoo主要是国内使用方便,全部都搭建在腾讯云上。另外可以通过企业微信直接推送微信,没有次数限制。</p><blockquote><ul><li><a href="https://twikoo.js.org/">Twikoo 中文文档</a></li><li><a href="https://guole.fun/posts/626/">搭建微信通知API实现Twikoo新消息提醒 | guole’s Blog</a></li><li><a href="https://blog.zhheo.com/p/1e9f35bc.html">微信菌:利用企业微信搭建微信消息提醒API | 张洪Heo</a></li></ul></blockquote></div></div><div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>说说-Artitalk</span></div> <div class="hide-content"><p>说说界面,发布心情、吐槽。</p><blockquote><ul><li><a href="https://artitalk.js.org/doc.html">Artitalk.js</a></li></ul></blockquote></div></div><div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>时间线-Timeline</span></div> <div class="hide-content"><p>发布建站历史的时间轴。</p><blockquote><ul><li><a href="https://codyhouse.co/demo/vertical-timeline/index.html">Responsive Vertical Timeline | CodyHouse</a></li></ul></blockquote></div></div><div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>版本徽章-Badges</span></div> <div class="hide-content"><p>项目版本的徽章标志。已从shields.io换为badgen。</p><blockquote><ul><li><a href="https://lpd-ios.github.io/2017/05/03/GitHub-Badge-Introduction/">GitHub 项目徽章的添加和设置 - LPD-iOS</a></li><li><a href="https://shields.io/">Shields.io: Quality metadata badges for open source projects</a></li><li><a href="https://badgen.net/">Badgen - Fast badge generating service</a></li></ul></blockquote></div></div><div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>名言生成-诗词&一言</span></div> <div class="hide-content"><p>自动生成一句话的API接口,可以在butterfly中配置副标题source为下面的接口,也可以放在网站或文章任意位置。</p><blockquote><ul><li><a href="https://cungudafa.top/post/3af9.html#%E4%B8%80%E3%80%81%E4%BB%8A%E6%97%A5%E8%AF%97%E8%AF%8D">为你的博客引入——今日诗词、每日一言(js插件分享) | cungudafa</a></li><li><a href="https://hitokoto.cn/">Hitokoto - 一言</a></li><li><a href="https://www.jinrishici.com/#">今日诗词 - 一言API - 诗词实时智能推荐 - 今日诗词开放接口 - 今日诗词 API</a></li></ul></blockquote></div></div><div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>图床-PicGo+CDN</span></div> <div class="hide-content"><p>方案很多,用腾讯/阿里云自己搭、白嫖jsDelivr等,自行选择。</p><blockquote><ul><li><a href="https://www.jianshu.com/p/33eeacac3344">github做Markdown图床 - 简书</a></li><li><a href="https://www.shuzhiduo.com/A/QV5ZPwpbzy/">Hexo 博客图片添加至图床—腾讯云COS图床使用。</a></li><li><a href="https://yafine-blog.cn/posts/eb3a.html">使用PicGo+Github搭建免费图床 | 过客~励む</a></li><li><a href="https://cungudafa.top/post/2103.html">Github+PicGo+cdn配置私人图床(丝滑操作撰写md文章) | cungudafa</a></li></ul></blockquote></div></div><div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>简历-nimo-markdown-cv</span></div> <div class="hide-content"><p>使用wodeni的模板生成一个html文件即可。</p><blockquote><ul><li><a href="https://github.com/wodeni/nimo-markdown-cv">wodeni/nimo-markdown-cv: Maintain your CV in Markdown</a></li><li><a href="https://blog.csdn.net/qq_40922859/article/details/100877777">Hexo博客添加自定义HTML页面_javascript_本该如此-CSDN博客</a></li></ul></blockquote></div></div><div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>导航-WebstackPage</span></div> <div class="hide-content"><p>需要后台,使用WordPress、Laravel或者Typecho等均可。</p><blockquote><ul><li><a href="https://github.com/WebStackPage/WebStackPage.github.io">WebStackPage/WebStackPage.github.io: ❤️静态响应式网址导航网站 - webstack.cc</a></li><li><a href="https://www.iowen.cn/wordpress-version-webstack/">WordPress 版 WebStack 导航主题使用说明,更新于20200115 | 一为忆</a></li><li><a href="https://www.shtion.com/6341.html">Windows 系统本地安装 WordPress 博客的方法 - SHTION|时讯联科</a></li><li><a href="https://github.com/hui-ho/WebStack-Laravel">hui-ho/WebStack-Laravel: 一个开源的网址导航网站项目,您可以拿来制作自己的网址导航。</a></li><li><a href="https://blog.devyi.com/archives/511/">typecho使用WebStack搭建网址导航 - 游轶的小站</a></li></ul></blockquote></div></div><div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>设计-Canva&Logosc</span></div> <div class="hide-content"><p>进行Banner和Logo等图标设计。</p><blockquote><ul><li><a href="https://www.canva.cn/login">Canva在线平面设计软件_免费设计模板素材和海量正版图片 - Canva中文官网</a></li><li><a href="https://www.logosc.cn/">LOGO设计神器!人工智能为您在线设计LOGO,设计名片,打造完整企业VI</a></li></ul></blockquote></div></div><div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>手机-Termux</span></div> <div class="hide-content"><p>使用移动设备进行hexo博客的编写</p><blockquote><ul><li><a href="https://blog.anotia.top/posts/deploy-on-mobile/">如何在移动设备上进行 Hexo 博客编辑和部署 | 艾迪的小栈</a></li></ul></blockquote></div></div><div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>加密-PageCrypt</span></div> <div class="hide-content"><p>HTML的单页面加密。</p><p><a href="https://www.maxlaumeister.com/pagecrypt/">PageCrypt - Password Protect HTML</a></p></div></div><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div></div><h1 id="font-color-b5d5ff-stylefont-weightbold问题font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold问题font"></a> <font color= #b5d5ff style='font-weight:bold'>问题</font></h1><div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>文章页面404</span></div> <div class="hide-content"><p><a href="https://dyhnoah.github.io/2022/03/15/Hexo-Word-Case/">Hexo部署到Github的大小写问题 | Ushioの鸽子屋 (dyhnoah.github.io)</a></p><p><a href="https://docle.github.io/2018/04/03/The-Case-Insensitivity-Problem-When-Hexo-Deploying-To-GitHub/#%E9%97%AE%E9%A2%98">记 Hexo 部署网站到 GitHub 时遇到的大小写不敏感问题 | Docle の Blog</a></p></div></div><h1 id="font-color-b5d5ff-stylefont-weightbold致谢font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold致谢font"></a> <font color= #b5d5ff style='font-weight:bold'>致谢</font></h1><p>搭博客的过程就是参考一个大佬,然后发现另一个大佬的大佬,然后发现更多的大佬。</p><p>首先感谢主题butterfly的原作者<a href="https://jerryc.me/">JerryC</a>,做了一个非常适合新手的hexo主题。</p><p>其余各位大佬的链接均在<a href="/link/">友链</a>界面,在此一并感谢,帮助了本人很多。</p>]]></content>
<categories>
<category> hexo </category>
</categories>
<tags>
<tag> hexo </tag>
<tag> blog </tag>
</tags>
</entry>
<entry>
<title>cordic</title>
<link href="/posts/cordic/"/>
<url>/posts/cordic/</url>
<content type="html"><![CDATA[<div class="tip error faa-horizontal animated"><p>公式渲染引擎由Mathjax换为Katex,文章可能存在渲染问题,如有发现问题请留言。</p><p></p></div><h1 id="font-color-b5d5ff-stylefont-weightbold前世今生font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold前世今生font"></a> <font color= #b5d5ff style='font-weight:bold'>前世今生</font></h1><blockquote><p>以下源自参考资料<sup>[6]</sup>:CORDIC技术并不是什么新鲜的东西。事实上它可以追溯到1957年由J.Volder发表的一篇文章。在上个世纪五十年代,在大型实际的计算机中的实行移位相加受到了当时技术上的限制,所以使用CORDIC变得非常必要。到了七十年代,Hewlett Packard和其他公司出产了手持计算器,许多计算器使用一个内部CORDIC单元来计算所有的三角函数(了解这件事的人们一定还记得,那时求一个角度的正切值需要延迟大约1秒中)。二十世纪八十年代,随着高速度乘法器与带有大存储量的通用处理器的出现,CORDIC算法变得无关紧要了。然而在二十一世纪的今天,对于FPGA来说,CORDIC一定是在DSP应用中(诸如多输入多输出(MIMO),波束形成以及其他自适应系统)计算三角函数的备选技术。</p></blockquote><p>本文将详细介绍<code>CORDIC</code>算法,所有参考资料见文章尾部。</p><h1 id="font-color-b5d5ff-stylefont-weightboldcordic详解font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldcordic详解font"></a> <font color= #b5d5ff style='font-weight:bold'>Cordic详解</font></h1><h2 id="font-color-b5d5ff-stylefont-weightbold圆周坐标系font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold圆周坐标系font"></a> <font color= #b5d5ff style='font-weight:bold'>圆周坐标系</font></h2><h3 id="font-color-b5d5ff-stylefont-weightbold从坐标旋转开始font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold从坐标旋转开始font"></a> <font color= #b5d5ff style='font-weight:bold'>从坐标旋转开始</font></h3><p>如下图,一个直角坐标点<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo stretchy="false">(</mo><msub><mi>x</mi><mn>1</mn></msub><mo separator="true">,</mo><msub><mi>y</mi><mn>1</mn></msub><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(x_1,y_1)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span>逆时针旋转<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>θ</mi></mrow><annotation encoding="application/x-tex">θ</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span></span>角度到点<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo stretchy="false">(</mo><msub><mi>x</mi><mn>2</mn></msub><mo separator="true">,</mo><msub><mi>y</mi><mn>2</mn></msub><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(x_2,y_2)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span>,<font color= #green >如何计算<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo stretchy="false">(</mo><msub><mi>x</mi><mn>2</mn></msub><mo separator="true">,</mo><msub><mi>y</mi><mn>2</mn></msub><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(x_2,y_2)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span>呢?</font></p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/cordic-algorithm/cordic1.png" alt="cordic1" /></p><p>公式如下:</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>x</mi><mn>2</mn></msub><mo>=</mo><msub><mi>x</mi><mn>1</mn></msub><mi>c</mi><mi>o</mi><mi>s</mi><mi>θ</mi><mo>−</mo><msub><mi>y</mi><mn>1</mn></msub><mi>c</mi><mi>o</mi><mi>s</mi><mi>θ</mi><mspace linebreak="newline"></mspace><msub><mi>y</mi><mn>2</mn></msub><mo>=</mo><msub><mi>x</mi><mn>1</mn></msub><mi>s</mi><mi>i</mi><mi>n</mi><mi>θ</mi><mo>+</mo><msub><mi>y</mi><mn>1</mn></msub><mi>c</mi><mi>o</mi><mi>s</mi><mi>θ</mi></mrow><annotation encoding="application/x-tex">x_2 = x_1cosθ-y_1cosθ \\y_2 = x_1sinθ+y_1cosθ</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.58056em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.84444em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.84444em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span></span></span></p><p>其实只需要一点高中的知识就能推导这个公式了。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/cordic-algorithm/cordic2.png" alt="cordic2" /></p><p>假设底角为<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>α</mi></mrow><annotation encoding="application/x-tex">α</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.0037em;">α</span></span></span></span>,旋转半径为<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>1</mn></mrow><annotation encoding="application/x-tex">1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span></span></span></span>,则</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>x</mi><mn>2</mn></msub><mo>=</mo><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mi>α</mi><mo>+</mo><mi>θ</mi><mo stretchy="false">)</mo><mo>=</mo><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mi>α</mi><mo stretchy="false">)</mo><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mi>θ</mi><mo stretchy="false">)</mo><mo>−</mo><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mi>α</mi><mo stretchy="false">)</mo><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mi>θ</mi><mo stretchy="false">)</mo><mo>=</mo><msub><mi>x</mi><mn>1</mn></msub><mi>c</mi><mi>o</mi><mi>s</mi><mi>θ</mi><mo>−</mo><msub><mi>y</mi><mn>1</mn></msub><mi>c</mi><mi>o</mi><mi>s</mi><mi>θ</mi><mspace linebreak="newline"></mspace><msub><mi>y</mi><mn>2</mn></msub><mo>=</mo><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mi>α</mi><mo>+</mo><mi>θ</mi><mo stretchy="false">)</mo><mo>=</mo><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mi>α</mi><mo stretchy="false">)</mo><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mi>θ</mi><mo stretchy="false">)</mo><mo>+</mo><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mi>α</mi><mo stretchy="false">)</mo><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mi>θ</mi><mo stretchy="false">)</mo><mo>=</mo><msub><mi>x</mi><mn>1</mn></msub><mi>s</mi><mi>i</mi><mi>n</mi><mi>θ</mi><mo>+</mo><msub><mi>y</mi><mn>1</mn></msub><mi>c</mi><mi>o</mi><mi>s</mi><mi>θ</mi></mrow><annotation encoding="application/x-tex">x_2=cos(α+θ) = cos(α)cos(θ) - sin(α)sin(θ) =x_1cosθ-y_1cosθ \\y_2=sin(α+θ) = sin(α)cos(θ) + cos(α)sin(θ) =x_1sinθ+y_1cosθ</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.58056em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.0037em;">α</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.0037em;">α</span><span class="mclose">)</span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.0037em;">α</span><span class="mclose">)</span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.84444em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.0037em;">α</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.0037em;">α</span><span class="mclose">)</span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.0037em;">α</span><span class="mclose">)</span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.84444em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.8888799999999999em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span></span></span></p><p>上面的公式也可以写成矩阵的形式,即</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mn>2</mn></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mn>2</mn></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mi>θ</mi></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mi>s</mi><mi>i</mi><mi>n</mi><mi>θ</mi></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>s</mi><mi>i</mi><mi>n</mi><mi>θ</mi></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mi>θ</mi></mrow></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mn>1</mn></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mn>1</mn></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow></mrow><annotation encoding="application/x-tex">\left[\begin{matrix} x_2\\ y_2 \end{matrix}\right]=\left[\begin{matrix} cosθ&-sinθ\\ sinθ&cosθ \end{matrix}\right]\left[\begin{matrix} x_1\\ y_1 \end{matrix}\right]</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span></span></span></span></span></p><p>以上公式对应逆时针旋转。若是顺时针旋转,则公式应为</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mn>1</mn></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mn>1</mn></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mi>θ</mi></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>s</mi><mi>i</mi><mi>n</mi><mi>θ</mi></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mi>s</mi><mi>i</mi><mi>n</mi><mi>θ</mi></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mi>θ</mi></mrow></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mn>2</mn></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mn>2</mn></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow></mrow><annotation encoding="application/x-tex">\left[\begin{matrix} x_1\\ y_1 \end{matrix}\right]=\left[\begin{matrix} cosθ&sinθ\\ -sinθ&cosθ \end{matrix}\right]\left[\begin{matrix} x_2\\ y_2 \end{matrix}\right]</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span></span></span></span></span></p><p>那么<font color= #green >已知旋转角<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>θ</mi></mrow><annotation encoding="application/x-tex">θ</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span></span>,如何通过FPGA来计算<span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>x</mi><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">x_2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.58056em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>和<span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>y</mi><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">y_2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>呢?</font>答案就是<b><font color= red>反复迭代</font></b>。</p><h3 id="font-color-b5d5ff-stylefont-weightbold二分角度旋转font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold二分角度旋转font"></a> <font color= #b5d5ff style='font-weight:bold'>二分角度旋转</font></h3><blockquote><p>假设<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo stretchy="false">(</mo><msub><mi>x</mi><mn>1</mn></msub><mo separator="true">,</mo><msub><mi>y</mi><mn>1</mn></msub><mo stretchy="false">)</mo><mo>=</mo><mo stretchy="false">(</mo><mn>100</mn><mo separator="true">,</mo><mn>200</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(x_1,y_1)=(100,200)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">1</span><span class="mord">0</span><span class="mord">0</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">2</span><span class="mord">0</span><span class="mord">0</span><span class="mclose">)</span></span></span></span>,要求其极坐标系下的坐标<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo stretchy="false">(</mo><mi>ρ</mi><mo separator="true">,</mo><mi>θ</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(ρ,θ)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord mathdefault">ρ</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span></span></span></span>。当然,求<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>θ</mi></mrow><annotation encoding="application/x-tex">θ</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span></span>的过程也就是求<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>a</mi><mi>r</mi><mi>c</mi><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mi>y</mi><mi mathvariant="normal">/</mi><mi>x</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">arctan(y/x)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">a</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">c</span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="mord">/</span><span class="mord mathdefault">x</span><span class="mclose">)</span></span></span></span>的过程。首先通过计算器得到结果<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo stretchy="false">(</mo><mi>ρ</mi><mo separator="true">,</mo><mi>θ</mi><mo stretchy="false">)</mo><mo>=</mo><mo stretchy="false">(</mo><mn>223.61</mn><mo separator="true">,</mo><mn>63.435</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(ρ,θ) = (223.61,63.435)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord mathdefault">ρ</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">2</span><span class="mord">2</span><span class="mord">3</span><span class="mord">.</span><span class="mord">6</span><span class="mord">1</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">6</span><span class="mord">3</span><span class="mord">.</span><span class="mord">4</span><span class="mord">3</span><span class="mord">5</span><span class="mclose">)</span></span></span></span>。下面计算先只关注<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>θ</mi></mrow><annotation encoding="application/x-tex">θ</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span></span>的旋转变化,不关注<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>ρ</mi></mrow><annotation encoding="application/x-tex">ρ</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathdefault">ρ</span></span></span></span>的长度变化。这时最直观简单的想法就是先旋转一个角度进行一次尝试。</p></blockquote><p>已知角度在<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo stretchy="false">(</mo><mn>0</mn><mi mathvariant="normal">°</mi><mo separator="true">,</mo><mn>90</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(0°,90°)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">0</span><span class="mord">°</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">9</span><span class="mord">0</span><span class="mord">°</span><span class="mclose">)</span></span></span></span>这个范围内,借鉴二分法的思想,先顺时针旋转<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>45</mn><mi mathvariant="normal">°</mi></mrow><annotation encoding="application/x-tex">45°</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord">4</span><span class="mord">5</span><span class="mord">°</span></span></span></span>进行尝试。根据之前推导的公式可知</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>x</mi></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>y</mi></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mn>45</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mn>45</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mn>45</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mn>45</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>100</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>200</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>212.13</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>70.711</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow></mrow><annotation encoding="application/x-tex">\left[\begin{matrix} x\\ y \end{matrix}\right]=\left[\begin{matrix} cos(45°)&sin(45°)\\ -sin(45°)&cos(45°) \end{matrix}\right]\left[\begin{matrix} 100\\ 200 \end{matrix}\right]=\left[ \begin{matrix} 212.13\\ 70.711 \end{matrix}\right]</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">x</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord">4</span><span class="mord">5</span><span class="mord">°</span><span class="mclose">)</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">4</span><span class="mord">5</span><span class="mord">°</span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">4</span><span class="mord">5</span><span class="mord">°</span><span class="mclose">)</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord">4</span><span class="mord">5</span><span class="mord">°</span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span><span class="mord">0</span><span class="mord">0</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">0</span><span class="mord">0</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">1</span><span class="mord">2</span><span class="mord">.</span><span class="mord">1</span><span class="mord">3</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">7</span><span class="mord">0</span><span class="mord">.</span><span class="mord">7</span><span class="mord">1</span><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span></span></span></span></span></p><p>发现纵坐标<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>y</mi><mo>></mo><mn>0</mn></mrow><annotation encoding="application/x-tex">y>0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7335400000000001em;vertical-align:-0.19444em;"></span><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span>,则旋转的角度不够,则在此基础上继续顺时针旋转<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>45</mn><mi mathvariant="normal">/</mi><mn>2</mn><mo>=</mo><mn>22.5</mn><mi mathvariant="normal">°</mi></mrow><annotation encoding="application/x-tex">45/2=22.5°</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">4</span><span class="mord">5</span><span class="mord">/</span><span class="mord">2</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord">2</span><span class="mord">2</span><span class="mord">.</span><span class="mord">5</span><span class="mord">°</span></span></span></span>,此时角度为<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>45</mn><mo>+</mo><mn>22.5</mn><mo>=</mo><mn>67.5</mn><mi mathvariant="normal">°</mi></mrow><annotation encoding="application/x-tex">45+22.5=67.5°</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.72777em;vertical-align:-0.08333em;"></span><span class="mord">4</span><span class="mord">5</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">2</span><span class="mord">2</span><span class="mord">.</span><span class="mord">5</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord">6</span><span class="mord">7</span><span class="mord">.</span><span class="mord">5</span><span class="mord">°</span></span></span></span>。根据推导的公式可知</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>x</mi></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>y</mi></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mn>22.5</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mn>22.5</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mn>22.5</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mn>22.5</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>212.13</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>70.711</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>223.04</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mn>15.85</mn></mrow></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow></mrow><annotation encoding="application/x-tex">\left[\begin{matrix} x\\ y \end{matrix}\right]=\left[\begin{matrix} cos(22.5°)&sin(22.5°)\\ -sin(22.5°)&cos(22.5°) \end{matrix}\right]\left[\begin{matrix} 212.13\\ 70.711 \end{matrix}\right]=\left[ \begin{matrix} 223.04\\ -15.85 \end{matrix}\right]</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">x</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord">2</span><span class="mord">2</span><span class="mord">.</span><span class="mord">5</span><span class="mord">°</span><span class="mclose">)</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">2</span><span class="mord">2</span><span class="mord">.</span><span class="mord">5</span><span class="mord">°</span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">2</span><span class="mord">2</span><span class="mord">.</span><span class="mord">5</span><span class="mord">°</span><span class="mclose">)</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord">2</span><span class="mord">2</span><span class="mord">.</span><span class="mord">5</span><span class="mord">°</span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">1</span><span class="mord">2</span><span class="mord">.</span><span class="mord">1</span><span class="mord">3</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">7</span><span class="mord">0</span><span class="mord">.</span><span class="mord">7</span><span class="mord">1</span><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">2</span><span class="mord">3</span><span class="mord">.</span><span class="mord">0</span><span class="mord">4</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord">1</span><span class="mord">5</span><span class="mord">.</span><span class="mord">8</span><span class="mord">5</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span></span></span></span></span></p><p>发现纵坐标<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>y</mi><mo><</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">y<0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7335400000000001em;vertical-align:-0.19444em;"></span><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel"><</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span>,则旋转角度超过了范围,则在此基础上逆时针回转<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>22.5</mn><mi mathvariant="normal">/</mi><mn>2</mn><mo>=</mo><mn>11.25</mn><mi mathvariant="normal">°</mi></mrow><annotation encoding="application/x-tex">22.5/2=11.25°</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">2</span><span class="mord">2</span><span class="mord">.</span><span class="mord">5</span><span class="mord">/</span><span class="mord">2</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord">1</span><span class="mord">1</span><span class="mord">.</span><span class="mord">2</span><span class="mord">5</span><span class="mord">°</span></span></span></span>,此时角度为<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>45</mn><mo>+</mo><mn>22.5</mn><mo>−</mo><mn>11.25</mn><mo>=</mo><mn>56.25</mn><mi mathvariant="normal">°</mi></mrow><annotation encoding="application/x-tex">45+22.5-11.25=56.25°</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.72777em;vertical-align:-0.08333em;"></span><span class="mord">4</span><span class="mord">5</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.72777em;vertical-align:-0.08333em;"></span><span class="mord">2</span><span class="mord">2</span><span class="mord">.</span><span class="mord">5</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span><span class="mord">1</span><span class="mord">.</span><span class="mord">2</span><span class="mord">5</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord">5</span><span class="mord">6</span><span class="mord">.</span><span class="mord">2</span><span class="mord">5</span><span class="mord">°</span></span></span></span>。根据推导的公式可知</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>x</mi></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>y</mi></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mn>11.25</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mn>11.25</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mn>11.25</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mn>11.25</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>223.04</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mn>15.85</mn></mrow></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>221.85</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>27.967</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow></mrow><annotation encoding="application/x-tex">\left[\begin{matrix} x\\ y \end{matrix}\right]=\left[\begin{matrix} cos(11.25°)&-sin(11.25°)\\ sin(11.25°)&cos(11.25°) \end{matrix}\right]\left[\begin{matrix} 223.04\\ -15.85 \end{matrix}\right]=\left[ \begin{matrix} 221.85\\ 27.967 \end{matrix}\right]</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">x</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord">1</span><span class="mord">1</span><span class="mord">.</span><span class="mord">2</span><span class="mord">5</span><span class="mord">°</span><span class="mclose">)</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">1</span><span class="mord">1</span><span class="mord">.</span><span class="mord">2</span><span class="mord">5</span><span class="mord">°</span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">1</span><span class="mord">1</span><span class="mord">.</span><span class="mord">2</span><span class="mord">5</span><span class="mord">°</span><span class="mclose">)</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord">1</span><span class="mord">1</span><span class="mord">.</span><span class="mord">2</span><span class="mord">5</span><span class="mord">°</span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">2</span><span class="mord">3</span><span class="mord">.</span><span class="mord">0</span><span class="mord">4</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord">1</span><span class="mord">5</span><span class="mord">.</span><span class="mord">8</span><span class="mord">5</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">2</span><span class="mord">1</span><span class="mord">.</span><span class="mord">8</span><span class="mord">5</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">7</span><span class="mord">.</span><span class="mord">9</span><span class="mord">6</span><span class="mord">7</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span></span></span></span></span></p><p>发现纵坐标<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>y</mi><mo>></mo><mn>0</mn></mrow><annotation encoding="application/x-tex">y>0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7335400000000001em;vertical-align:-0.19444em;"></span><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span>,则旋转的角度又不够,则此基础上继续顺时针旋转<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>11.25</mn><mi mathvariant="normal">/</mi><mn>2</mn><mo>=</mo><mn>5.625</mn><mi mathvariant="normal">°</mi></mrow><annotation encoding="application/x-tex">11.25/2=5.625°</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">1</span><span class="mord">1</span><span class="mord">.</span><span class="mord">2</span><span class="mord">5</span><span class="mord">/</span><span class="mord">2</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord">5</span><span class="mord">.</span><span class="mord">6</span><span class="mord">2</span><span class="mord">5</span><span class="mord">°</span></span></span></span>,此时角度为<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>45</mn><mo>+</mo><mn>22.5</mn><mo>−</mo><mn>11.25</mn><mo>+</mo><mn>5.625</mn><mo>=</mo><mn>61.875</mn><mi mathvariant="normal">°</mi></mrow><annotation encoding="application/x-tex">45+22.5-11.25+5.625=61.875°</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.72777em;vertical-align:-0.08333em;"></span><span class="mord">4</span><span class="mord">5</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.72777em;vertical-align:-0.08333em;"></span><span class="mord">2</span><span class="mord">2</span><span class="mord">.</span><span class="mord">5</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.72777em;vertical-align:-0.08333em;"></span><span class="mord">1</span><span class="mord">1</span><span class="mord">.</span><span class="mord">2</span><span class="mord">5</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">5</span><span class="mord">.</span><span class="mord">6</span><span class="mord">2</span><span class="mord">5</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord">6</span><span class="mord">1</span><span class="mord">.</span><span class="mord">8</span><span class="mord">7</span><span class="mord">5</span><span class="mord">°</span></span></span></span>。根据推导的公式可知</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>x</mi></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>y</mi></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mn>5.625</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mn>5.625</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mn>5.625</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mn>5.625</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>221.85</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>27.967</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>223.52</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>6.0874</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow></mrow><annotation encoding="application/x-tex">\left[\begin{matrix} x\\ y \end{matrix}\right]=\left[\begin{matrix} cos(5.625°)&sin(5.625°)\\ -sin(5.625°)&cos(5.625°) \end{matrix}\right]\left[\begin{matrix} 221.85\\ 27.967 \end{matrix}\right]=\left[ \begin{matrix} 223.52\\ 6.0874 \end{matrix}\right]</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">x</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord">5</span><span class="mord">.</span><span class="mord">6</span><span class="mord">2</span><span class="mord">5</span><span class="mord">°</span><span class="mclose">)</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">5</span><span class="mord">.</span><span class="mord">6</span><span class="mord">2</span><span class="mord">5</span><span class="mord">°</span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">5</span><span class="mord">.</span><span class="mord">6</span><span class="mord">2</span><span class="mord">5</span><span class="mord">°</span><span class="mclose">)</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord">5</span><span class="mord">.</span><span class="mord">6</span><span class="mord">2</span><span class="mord">5</span><span class="mord">°</span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">2</span><span class="mord">1</span><span class="mord">.</span><span class="mord">8</span><span class="mord">5</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">7</span><span class="mord">.</span><span class="mord">9</span><span class="mord">6</span><span class="mord">7</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">2</span><span class="mord">3</span><span class="mord">.</span><span class="mord">5</span><span class="mord">2</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">6</span><span class="mord">.</span><span class="mord">0</span><span class="mord">8</span><span class="mord">7</span><span class="mord">4</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span></span></span></span></span></p><p>这时纵坐标已经比较接近<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>0</mn></mrow><annotation encoding="application/x-tex">0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span>了。按照这个模式继续算下去,可以不断逼近真实的结果。比如现在的结果范围为<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo stretchy="false">(</mo><mi>ρ</mi><mo separator="true">,</mo><mi>θ</mi><mo stretchy="false">)</mo><mo>=</mo><mo stretchy="false">(</mo><mn>223.52</mn><mo separator="true">,</mo><mn>61.875</mn><mo>±</mo><mn>5.625</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(ρ,θ)=(223.52,61.875±5.625)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord mathdefault">ρ</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">2</span><span class="mord">2</span><span class="mord">3</span><span class="mord">.</span><span class="mord">5</span><span class="mord">2</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">6</span><span class="mord">1</span><span class="mord">.</span><span class="mord">8</span><span class="mord">7</span><span class="mord">5</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">±</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">5</span><span class="mord">.</span><span class="mord">6</span><span class="mord">2</span><span class="mord">5</span><span class="mclose">)</span></span></span></span>,已经接近实际结果<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo stretchy="false">(</mo><mi>ρ</mi><mo separator="true">,</mo><mi>θ</mi><mo stretchy="false">)</mo><mo>=</mo><mo stretchy="false">(</mo><mn>223.61</mn><mo separator="true">,</mo><mn>63.435</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(ρ,θ)=(223.61,63.435)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord mathdefault">ρ</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">2</span><span class="mord">2</span><span class="mord">3</span><span class="mord">.</span><span class="mord">6</span><span class="mord">1</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">6</span><span class="mord">3</span><span class="mord">.</span><span class="mord">4</span><span class="mord">3</span><span class="mord">5</span><span class="mclose">)</span></span></span></span>了。旋转过程演示图如下。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/cordic-algorithm/rotate.png" alt="rotate" /></p><p>因此通过多次迭代,可以逐渐逼近结果。但是<font color= #green>如何计算上面的<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mn>45</mn><mo stretchy="false">)</mo><mo separator="true">,</mo><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mn>45</mn><mo stretchy="false">)</mo><mo separator="true">,</mo><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mn>22.5</mn><mo stretchy="false">)</mo><mo separator="true">,</mo><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mn>22.5</mn><mo stretchy="false">)</mo><mo separator="true">,</mo><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mn>11.25</mn><mo stretchy="false">)</mo><mo separator="true">,</mo><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mn>11.25</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">cos(45),sin(45),cos(22.5),sin(22.5),cos(11.25),sin(11.25)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord">4</span><span class="mord">5</span><span class="mclose">)</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">4</span><span class="mord">5</span><span class="mclose">)</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord">2</span><span class="mord">2</span><span class="mord">.</span><span class="mord">5</span><span class="mclose">)</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">2</span><span class="mord">2</span><span class="mord">.</span><span class="mord">5</span><span class="mclose">)</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord">1</span><span class="mord">1</span><span class="mord">.</span><span class="mord">2</span><span class="mord">5</span><span class="mclose">)</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">1</span><span class="mord">1</span><span class="mord">.</span><span class="mord">2</span><span class="mord">5</span><span class="mclose">)</span></span></span></span>等值?</font>其实如果仔细观察,这些点都是固定的,因此他们的<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">cos()</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mclose">)</span></span></span></span>和<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">sin()</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mclose">)</span></span></span></span>也是固定的,<b><font color= red >所以只需要把要用的点的<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">sin()</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mclose">)</span></span></span></span>和<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">cos()</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mclose">)</span></span></span></span>提前计算好存起来,用时查表即可。</font></b>Python实现如下。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> math</span><br><span class="line"><span class="keyword">import</span> numpy <span class="keyword">as</span> np</span><br><span class="line"></span><br><span class="line">ITERATION_TIMES = <span class="number">64</span></span><br><span class="line">i = <span class="number">0</span></span><br><span class="line">d = <span class="number">45</span></span><br><span class="line">cos = [<span class="number">0</span>] * ITERATION_TIMES</span><br><span class="line">sin = [<span class="number">0</span>] * ITERATION_TIMES</span><br><span class="line">degree = [<span class="number">0</span>] * ITERATION_TIMES</span><br><span class="line"></span><br><span class="line">x = <span class="number">100</span></span><br><span class="line">y = <span class="number">200</span></span><br><span class="line">x_n = <span class="number">0</span></span><br><span class="line">y_n = <span class="number">0</span></span><br><span class="line">z = <span class="number">0</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#查找表</span></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(ITERATION_TIMES):</span><br><span class="line"> cos[i] = np.cos(d*np.pi/<span class="number">180</span>)</span><br><span class="line"> sin[i] = np.sin(d*np.pi/<span class="number">180</span>)</span><br><span class="line"> degree[i] = d;</span><br><span class="line"> d = d/<span class="number">2</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#迭代计算</span></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(ITERATION_TIMES):</span><br><span class="line"> <span class="keyword">if</span>(y><span class="number">0</span>):</span><br><span class="line"> x_n = x * cos[i] + y * sin[i]</span><br><span class="line"> y_n = y * cos[i] - x * sin[i]</span><br><span class="line"> z = z + degree[i]</span><br><span class="line"> x = x_n</span><br><span class="line"> y = y_n</span><br><span class="line"> <span class="comment">#print("rotate_angle=",degree[i],"y=",y_n,"z=",z)</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> x_n = x * cos[i] - y * sin[i]</span><br><span class="line"> y_n = y * cos[i] + x * sin[i]</span><br><span class="line"> z = z - degree[i]</span><br><span class="line"> x = x_n</span><br><span class="line"> y = y_n</span><br><span class="line"> <span class="comment">#print("rotate_angle=",degree[i],"y=",y_n,"z=",z)</span></span><br><span class="line"><span class="built_in">print</span>(z)</span><br></pre></td></tr></table></figure><p>经过不同迭代次数,得到不同的结果。迭代次数越高,精度自然就越高。</p><table><thead><tr><th style="text-align:center">迭代次数</th><th style="text-align:center">计算角度(实际结果63.43494882292201)</th></tr></thead><tbody><tr><td style="text-align:center">16</td><td style="text-align:center">63.433685302734375</td></tr><tr><td style="text-align:center">32</td><td style="text-align:center">63.43494881177321</td></tr><tr><td style="text-align:center">64</td><td style="text-align:center">63.43494882292201</td></tr></tbody></table><h3 id="font-color-b5d5ff-stylefont-weightbold长度缩放旋转font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold长度缩放旋转font"></a> <font color= #b5d5ff style='font-weight:bold'>长度缩放旋转</font></h3><blockquote><p>二分角度旋转的计算存在一个问题:<b><font color= red >计算量巨大。</font></b>可以发现每一次旋转变换都需要进行4次浮点乘法运算,对于FPGA来说这个运算量过大。改进的方法就是通过变换坐标旋转的公式。</p></blockquote><p>每次的旋转公式可以总结为</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>d</mi><mi>i</mi></msub><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><msub><mi>d</mi><mi>i</mi></msub><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mi>i</mi></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>d</mi><mi>i</mi></msub><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><msub><mi>d</mi><mi>i</mi></msub><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mi>i</mi></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mspace linebreak="newline"></mspace><msub><mi>z</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>z</mi><mi>i</mi></msub><mo>+</mo><msub><mi>θ</mi><mi>i</mi></msub><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle><mtext>>0</mtext></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>z</mi><mi>i</mi></msub><mo>−</mo><msub><mi>θ</mi><mi>i</mi></msub><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle><mtext>≤0</mtext></mrow></mstyle></mtd></mtr></mtable></mrow><mspace linebreak="newline"></mspace><mi>w</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>e</mi><mtext> </mtext><msub><mi>d</mi><mi>i</mi></msub><mo>=</mo><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>+</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle><mtext>>0</mtext></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle><mtext>≤0</mtext></mrow></mstyle></mtd></mtr></mtable></mrow><mtext> </mtext><mo separator="true">,</mo><msub><mi>θ</mi><mi>i</mi></msub><mo>=</mo><mfrac><mrow><mn>45</mn><mi mathvariant="normal">°</mi></mrow><msup><mn>2</mn><mi>i</mi></msup></mfrac></mrow><annotation encoding="application/x-tex">\left[\begin{matrix} x_{i+1}\\ y_{i+1} \end{matrix}\right]=\left[\begin{matrix} cos(θ_i)&d_isin(θ_i)\\ -d_isin(θ_i)&cos(θ_i) \end{matrix}\right]\left[\begin{matrix} x_i\\ y_i \end{matrix}\right]=cos(θ_i)\left[\begin{matrix} 1&d_itan(θ_i)\\ -d_itan(θ_i)&1 \end{matrix}\right]\left[\begin{matrix} x_i\\ y_i \end{matrix}\right]\\z_{i+1} = \begin{cases}z_i + θ_i, & \text{if $y_i$>0} \\z_i - θ_i, & \text{if $y_i$≤0}\end{cases}\\where\ d_i =\begin{cases}+1, & \text{if $y_i$>0} \\-1, & \text{if $y_i$≤0}\end{cases}\ ,θ_i=\frac{45°}{2^i}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.638891em;vertical-align:-0.208331em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:3.0000299999999998em;vertical-align:-1.25003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">{</span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">>0</span></span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">≤0</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.84444em;vertical-align:-0.15em;"></span><span class="mord mathdefault" style="margin-right:0.02691em;">w</span><span class="mord mathdefault">h</span><span class="mord mathdefault">e</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">e</span><span class="mspace"> </span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:3.0000299999999998em;vertical-align:-1.25003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">{</span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord">+</span><span class="mord">1</span><span class="mpunct">,</span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord">−</span><span class="mord">1</span><span class="mpunct">,</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">>0</span></span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">≤0</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mspace"> </span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.05744em;vertical-align:-0.686em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.37144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.750664em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">4</span><span class="mord">5</span><span class="mord">°</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span></p><p>这样进行转换后可以<b><font color= red >将<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mi>θ</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">cos(θ)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span></span></span></span>从矩阵运算中提取出来并省略掉。</font></b><font color= #green>为什么可以将<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mi>θ</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">cos(θ)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span></span></span></span>省略掉呢?</font> 因为现在的计算只求<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>θ</mi></mrow><annotation encoding="application/x-tex">θ</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span></span>的值,即旋转角度变化,不关心<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>ρ</mi></mrow><annotation encoding="application/x-tex">ρ</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathdefault">ρ</span></span></span></span>长度的变化,省略掉的<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mi>θ</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">cos(θ)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span></span></span></span>只是在长度上进行了放缩,并不影响其旋转的角度。因此转换公式变为</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>d</mi><mi>i</mi></msub><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><msub><mi>d</mi><mi>i</mi></msub><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mi>i</mi></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mspace linebreak="newline"></mspace><mi>w</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>e</mi><mtext> </mtext><msub><mi>d</mi><mi>i</mi></msub><mo>=</mo><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>+</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle><mtext>>0</mtext></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle><mtext>≤0</mtext></mrow></mstyle></mtd></mtr></mtable></mrow></mrow><annotation encoding="application/x-tex">\left[\begin{matrix} x_{i+1}\\ y_{i+1} \end{matrix}\right]=\left[\begin{matrix} 1&d_itan(θ_i)\\ -d_itan(θ_i)&1 \end{matrix}\right]\left[\begin{matrix} x_i\\ y_i \end{matrix}\right]\\where\ d_i =\begin{cases}+1, & \text{if $y_i$>0} \\-1, & \text{if $y_i$≤0}\end{cases}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.84444em;vertical-align:-0.15em;"></span><span class="mord mathdefault" style="margin-right:0.02691em;">w</span><span class="mord mathdefault">h</span><span class="mord mathdefault">e</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">e</span><span class="mspace"> </span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:3.0000299999999998em;vertical-align:-1.25003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">{</span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord">+</span><span class="mord">1</span><span class="mpunct">,</span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord">−</span><span class="mord">1</span><span class="mpunct">,</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">>0</span></span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">≤0</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span></p><p>这种旋转方式被称为<b><font color= red >伪旋转(Pseudo-Rotation)。</font></b>这样乘法的个数就从每一次旋转变换的4次变为了两次,存查找表的值也只需要<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mn>45</mn><mo stretchy="false">)</mo><mo separator="true">,</mo><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mn>22.5</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">tan(45),tan(22.5)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">4</span><span class="mord">5</span><span class="mclose">)</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">2</span><span class="mord">2</span><span class="mord">.</span><span class="mord">5</span><span class="mclose">)</span></span></span></span>…这样的值,减少了一半。过程演示图如下。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/cordic-algorithm/rotate2.png" alt="rotate" /></p><p>由上方过程演示图对比可以看出,旋转向量的长度在增长,但其旋转角度变化保持与之前一致。Python实现如下。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> math</span><br><span class="line"><span class="keyword">import</span> numpy <span class="keyword">as</span> np</span><br><span class="line"></span><br><span class="line">ITERATION_TIMES = <span class="number">64</span></span><br><span class="line">i = <span class="number">0</span></span><br><span class="line">d = <span class="number">45</span></span><br><span class="line">tan = [<span class="number">0</span>] * ITERATION_TIMES</span><br><span class="line">degree = [<span class="number">0</span>] * ITERATION_TIMES</span><br><span class="line"></span><br><span class="line">x = <span class="number">100</span></span><br><span class="line">y = <span class="number">200</span></span><br><span class="line">x_n = <span class="number">0</span></span><br><span class="line">y_n = <span class="number">0</span></span><br><span class="line">z = <span class="number">0</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#查找表</span></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(ITERATION_TIMES):</span><br><span class="line"> tan[i] = np.tan(d*np.pi/<span class="number">180</span>)</span><br><span class="line"> degree[i] = d;</span><br><span class="line"> d = d/<span class="number">2</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#迭代计算</span></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(ITERATION_TIMES):</span><br><span class="line"> <span class="keyword">if</span>(y><span class="number">0</span>):</span><br><span class="line"> x_n = x + y * tan[i]</span><br><span class="line"> y_n = y - x * tan[i]</span><br><span class="line"> z = z + degree[i]</span><br><span class="line"> x = x_n</span><br><span class="line"> y = y_n</span><br><span class="line"> <span class="comment">#print("rotate_angle=",degree[i],"y=",y_n,"z=",z)</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> x_n = x - y * tan[i]</span><br><span class="line"> y_n = y + x * tan[i]</span><br><span class="line"> z = z - degree[i]</span><br><span class="line"> x = x_n</span><br><span class="line"> y = y_n</span><br><span class="line"> <span class="comment">#print("rotate_angle=",degree[i],"y=",y_n,"z=",z)</span></span><br><span class="line"><span class="built_in">print</span>(z)</span><br></pre></td></tr></table></figure><p>结果与之前的二分角度旋转一致。</p><h3 id="font-color-b5d5ff-stylefont-weightboldcordic旋转font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldcordic旋转font"></a> <font color= #b5d5ff style='font-weight:bold'>cordic旋转</font></h3><blockquote><p>经过了长度缩放的变换,算法成功将乘法运算减少了一半。<font color= #green>那还能不能继续减少运算量呢?</font>其实依旧可以从之前的长度缩放变换的转换公式入手。</p></blockquote><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>d</mi><mi>i</mi></msub><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><msub><mi>d</mi><mi>i</mi></msub><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mi>i</mi></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mi>w</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>e</mi><mtext> </mtext><msub><mi>d</mi><mi>i</mi></msub><mo>=</mo><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>+</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle><mtext>>0</mtext></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle><mtext>≤0</mtext></mrow></mstyle></mtd></mtr></mtable></mrow></mrow><annotation encoding="application/x-tex">\left[\begin{matrix} x_{i+1}\\ y_{i+1} \end{matrix}\right]=\left[\begin{matrix} 1&d_itan(θ_i)\\ -d_itan(θ_i)&1 \end{matrix}\right]\left[\begin{matrix} x_i\\ y_i \end{matrix}\right]where\ d_i=\begin{cases}+1, & \text{if $y_i$>0} \\-1, & \text{if $y_i$≤0}\end{cases}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault" style="margin-right:0.02691em;">w</span><span class="mord mathdefault">h</span><span class="mord mathdefault">e</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">e</span><span class="mspace"> </span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:3.0000299999999998em;vertical-align:-1.25003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">{</span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord">+</span><span class="mord">1</span><span class="mpunct">,</span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord">−</span><span class="mord">1</span><span class="mpunct">,</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">>0</span></span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">≤0</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span></p><p>第一次旋转45°时,转换公式为</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mn>45</mn><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mn>45</mn><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mi>i</mi></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mn>1</mn></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mi>i</mi></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow></mrow><annotation encoding="application/x-tex">\left[\begin{matrix} x_{i+1}\\ y_{i+1} \end{matrix}\right]=\left[\begin{matrix} 1&tan(45)\\ -tan(45)&1 \end{matrix}\right]\left[\begin{matrix} x_i\\ y_i \end{matrix}\right]=\left[\begin{matrix} 1&1\\ -1&1 \end{matrix}\right]\left[\begin{matrix} x_i\\ y_i \end{matrix}\right]</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">4</span><span class="mord">5</span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">4</span><span class="mord">5</span><span class="mclose">)</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span></span></span></span></span></p><p>可见此次转换其实不需要进行乘法运算,可以直接进行加减运算就可以得到结果。然而第二次旋转<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>22.5</mn><mi mathvariant="normal">°</mi></mrow><annotation encoding="application/x-tex">22.5°</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord">2</span><span class="mord">2</span><span class="mord">.</span><span class="mord">5</span><span class="mord">°</span></span></span></span>的时候,由于<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mn>22.5</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo><mo>=</mo><mn>0.4142135623731</mn></mrow><annotation encoding="application/x-tex">tan(22.5°)=0.4142135623731</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">2</span><span class="mord">2</span><span class="mord">.</span><span class="mord">5</span><span class="mord">°</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span><span class="mord">.</span><span class="mord">4</span><span class="mord">1</span><span class="mord">4</span><span class="mord">2</span><span class="mord">1</span><span class="mord">3</span><span class="mord">5</span><span class="mord">6</span><span class="mord">2</span><span class="mord">3</span><span class="mord">7</span><span class="mord">3</span><span class="mord">1</span></span></span></span>,这是一个<b><font color= red >不整的小数。</font></b>因此需要复杂的乘法运算才能得到结果。</p><p><font color= #green>那有没有办法规避这种复杂乘法?</font>当然是有的。注意一开始的二分法是通过对<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>45</mn><mi mathvariant="normal">°</mi></mrow><annotation encoding="application/x-tex">45°</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord">4</span><span class="mord">5</span><span class="mord">°</span></span></span></span>角进行二分得到了<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>22.5</mn><mi mathvariant="normal">°</mi></mrow><annotation encoding="application/x-tex">22.5°</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord">2</span><span class="mord">2</span><span class="mord">.</span><span class="mord">5</span><span class="mord">°</span></span></span></span>,但其实迭代旋转角度可以不选择<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>22.5</mn><mi mathvariant="normal">°</mi></mrow><annotation encoding="application/x-tex">22.5°</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord">2</span><span class="mord">2</span><span class="mord">.</span><span class="mord">5</span><span class="mord">°</span></span></span></span>,只要比<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>45</mn><mi mathvariant="normal">°</mi></mrow><annotation encoding="application/x-tex">45°</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord">4</span><span class="mord">5</span><span class="mord">°</span></span></span></span>角小就可以。假设选择<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mi>θ</mi><mo stretchy="false">)</mo><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mrow><annotation encoding="application/x-tex">tan(θ)=\frac{1}{2}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1.190108em;vertical-align:-0.345em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">2</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span>的<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>θ</mi></mrow><annotation encoding="application/x-tex">θ</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span></span>角(<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>θ</mi><mo>=</mo><mn>26.565051177078</mn><mi mathvariant="normal">°</mi></mrow><annotation encoding="application/x-tex">θ=26.565051177078°</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord">2</span><span class="mord">6</span><span class="mord">.</span><span class="mord">5</span><span class="mord">6</span><span class="mord">5</span><span class="mord">0</span><span class="mord">5</span><span class="mord">1</span><span class="mord">1</span><span class="mord">7</span><span class="mord">7</span><span class="mord">0</span><span class="mord">7</span><span class="mord">8</span><span class="mord">°</span></span></span></span>),则第二次旋转的公式变换为</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mn>26.565051177078</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mn>26.565051177078</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mi>i</mi></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mfrac><mn>1</mn><mn>2</mn></mfrac></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mi>i</mi></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow></mrow><annotation encoding="application/x-tex">\left[\begin{matrix} x_{i+1}\\ y_{i+1} \end{matrix}\right]=\left[\begin{matrix} 1&tan(26.565051177078°)\\ -tan(26.565051177078°)&1 \end{matrix}\right]\left[\begin{matrix} x_i\\ y_i \end{matrix}\right]=\left[\begin{matrix} 1&\frac{1}{2}\\ -\frac{1}{2}&1 \end{matrix}\right]\left[\begin{matrix} x_i\\ y_i \end{matrix}\right]</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">2</span><span class="mord">6</span><span class="mord">.</span><span class="mord">5</span><span class="mord">6</span><span class="mord">5</span><span class="mord">0</span><span class="mord">5</span><span class="mord">1</span><span class="mord">1</span><span class="mord">7</span><span class="mord">7</span><span class="mord">0</span><span class="mord">7</span><span class="mord">8</span><span class="mord">°</span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">2</span><span class="mord">6</span><span class="mord">.</span><span class="mord">5</span><span class="mord">6</span><span class="mord">5</span><span class="mord">0</span><span class="mord">5</span><span class="mord">1</span><span class="mord">1</span><span class="mord">7</span><span class="mord">7</span><span class="mord">0</span><span class="mord">7</span><span class="mord">8</span><span class="mord">°</span><span class="mclose">)</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.410216em;vertical-align:-0.9551080000000003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.4551079999999998em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span><span style="top:-2.404892em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">2</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9551080000000003em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.4551079999999998em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">2</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-2.404892em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9551080000000003em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span></span></span></span></span></p><p>同样的,每次选择<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mi>θ</mi><mo stretchy="false">)</mo><mo>=</mo><mn>1</mn><mo separator="true">,</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo separator="true">,</mo><mfrac><mn>1</mn><mn>4</mn></mfrac></mrow><annotation encoding="application/x-tex">tan(θ)=1,\frac{1}{2},\frac{1}{4}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1.190108em;vertical-align:-0.345em;"></span><span class="mord">1</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">2</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">4</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span>…依次类推,这样计算就<b><font color= red >在定点运算层面简化了。</font></b>因为乘<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mfrac><mn>1</mn><mn>2</mn></mfrac></mrow><annotation encoding="application/x-tex">\frac{1}{2}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.190108em;vertical-align:-0.345em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">2</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span>的操作等于将数右移一位,乘<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mfrac><mn>1</mn><mn>4</mn></mfrac></mrow><annotation encoding="application/x-tex">\frac{1}{4}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1.190108em;vertical-align:-0.345em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">4</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span>等于将数右移两位,以此类推。这样,<b><font color= red >复杂的乘法运算转化为了简单的移位和加减运算</font></b>。通项转换公式变换为</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>d</mi><mi>i</mi></msub><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><msub><mi>d</mi><mi>i</mi></msub><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mi>i</mi></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mfrac><msub><mi>d</mi><mi>i</mi></msub><msup><mn>2</mn><mi>i</mi></msup></mfrac></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mfrac><msub><mi>d</mi><mi>i</mi></msub><msup><mn>2</mn><mi>i</mi></msup></mfrac></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mi>i</mi></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mspace linebreak="newline"></mspace><msub><mi>z</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>z</mi><mi>i</mi></msub><mo>+</mo><msub><mi>θ</mi><mi>i</mi></msub><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle><mtext>>0</mtext></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>z</mi><mi>i</mi></msub><mo>−</mo><msub><mi>θ</mi><mi>i</mi></msub><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle><mtext>≤0</mtext></mrow></mstyle></mtd></mtr></mtable></mrow><mspace linebreak="newline"></mspace><mi>w</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>e</mi><mtext> </mtext><msub><mi>d</mi><mi>i</mi></msub><mo>=</mo><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>+</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle><mtext>>0</mtext></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle><mtext>≤0</mtext></mrow></mstyle></mtd></mtr></mtable></mrow><mtext> </mtext><mo separator="true">,</mo><msub><mi>θ</mi><mi>i</mi></msub><mo>=</mo><mi>a</mi><mi>r</mi><mi>c</mi><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mfrac><mn>1</mn><msup><mn>2</mn><mi>i</mi></msup></mfrac><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">\left[\begin{matrix} x_{i+1}\\ y_{i+1} \end{matrix}\right]=\left[\begin{matrix} 1&d_itan(θ_i)\\ -d_itan(θ_i)&1 \end{matrix}\right]\left[\begin{matrix} x_i\\ y_i \end{matrix}\right]=\left[\begin{matrix} 1&\frac{d_i}{2^i}\\ -\frac{d_i}{2^i}&1 \end{matrix}\right]\left[\begin{matrix} x_i\\ y_i \end{matrix}\right]\\z_{i+1} = \begin{cases}z_i + θ_i, & \text{if $y_i$>0} \\z_i - θ_i, & \text{if $y_i$≤0}\end{cases}\\where\ d_i =\begin{cases}+1, & \text{if $y_i$>0} \\-1, & \text{if $y_i$≤0}\end{cases}\ ,θ_i=arctan(\frac{1}{2^i})</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.512416em;vertical-align:-1.0062080000000002em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.5062079999999998em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span><span style="top:-2.353792em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8962079999999999em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7570857142857143em;"><span style="top:-2.786em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.4101em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathdefault mtight">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3280857142857143em;"><span style="top:-2.357em;margin-left:0em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.143em;"><span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.0062080000000002em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.5062079999999998em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8962079999999999em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7570857142857143em;"><span style="top:-2.786em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.4101em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathdefault mtight">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3280857142857143em;"><span style="top:-2.357em;margin-left:0em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.143em;"><span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-2.353792em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.0062080000000002em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.638891em;vertical-align:-0.208331em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:3.0000299999999998em;vertical-align:-1.25003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">{</span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">>0</span></span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">≤0</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.84444em;vertical-align:-0.15em;"></span><span class="mord mathdefault" style="margin-right:0.02691em;">w</span><span class="mord mathdefault">h</span><span class="mord mathdefault">e</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">e</span><span class="mspace"> </span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:3.0000299999999998em;vertical-align:-1.25003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">{</span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord">+</span><span class="mord">1</span><span class="mpunct">,</span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord">−</span><span class="mord">1</span><span class="mpunct">,</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">>0</span></span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">≤0</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mspace"> </span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.00744em;vertical-align:-0.686em;"></span><span class="mord mathdefault">a</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">c</span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.32144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.750664em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span></span></span></span></p><p>同样的,<b><font color= red >可以将<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>θ</mi><mo>=</mo><mi>a</mi><mi>r</mi><mi>c</mi><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mfrac><mn>1</mn><msup><mn>2</mn><mi>i</mi></msup></mfrac><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">θ=arctan(\frac{1}{2^i})</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1.190108em;vertical-align:-0.345em;"></span><span class="mord mathdefault">a</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">c</span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7570857142857143em;"><span style="top:-2.786em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span></span></span>的值预先计算出来存起来,用时查表就可以。</font></b></p><table><thead><tr><th style="text-align:center">tan(θ)</th><th style="text-align:center">θ</th></tr></thead><tbody><tr><td style="text-align:center">1</td><td style="text-align:center">45.0°</td></tr><tr><td style="text-align:center">0.5</td><td style="text-align:center">26.56505117707799°</td></tr><tr><td style="text-align:center">0.25</td><td style="text-align:center">14.036243467926477°</td></tr><tr><td style="text-align:center">0.125</td><td style="text-align:center">7.125016348901798°</td></tr><tr><td style="text-align:center">0.0625</td><td style="text-align:center">3.5763343749973515°</td></tr><tr><td style="text-align:center">0.03125</td><td style="text-align:center">1.7899106082460694°</td></tr><tr><td style="text-align:center">0.015625</td><td style="text-align:center">0.8951737102110744°</td></tr><tr><td style="text-align:center">…</td><td style="text-align:center">…</td></tr></tbody></table><p>过程演示图如下。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/cordic-algorithm/rotate3.png" alt="rotate" /></p><p>由上方过程演示图对比可以看出,<code>cordic</code>变换向量的长度与长度缩放旋转的变化类似,而其旋转角度发生了根本性变化,使得横纵坐标的变化的<b><font color= red >小数更整。</font></b>Python实现如下。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> math</span><br><span class="line"><span class="keyword">import</span> numpy <span class="keyword">as</span> np</span><br><span class="line"></span><br><span class="line">ITERATION_TIMES = <span class="number">64</span></span><br><span class="line">i = <span class="number">0</span></span><br><span class="line">d = <span class="number">1</span></span><br><span class="line">degree = [<span class="number">0</span>] * ITERATION_TIMES</span><br><span class="line"></span><br><span class="line">x = <span class="number">100</span></span><br><span class="line">y = <span class="number">200</span></span><br><span class="line">x_n = <span class="number">0</span></span><br><span class="line">y_n = <span class="number">0</span></span><br><span class="line">z = <span class="number">0</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#查找表</span></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(ITERATION_TIMES):</span><br><span class="line"> degree[i] = math.atan(d)</span><br><span class="line"> d = d/<span class="number">2</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#迭代计算</span></span><br><span class="line">d = <span class="number">1</span></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(ITERATION_TIMES):</span><br><span class="line"> <span class="keyword">if</span>(y><span class="number">0</span>):</span><br><span class="line"> x_n = x + (y >> d)</span><br><span class="line"> y_n = y - (x >> d)</span><br><span class="line"> z = z + degree[i]</span><br><span class="line"> x = x_n</span><br><span class="line"> y = y_n</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> x_n = x - (y >> d)</span><br><span class="line"> y_n = y + (x >> d)</span><br><span class="line"> z = z - degree[i]</span><br><span class="line"> x = x_n</span><br><span class="line"> y = y_n</span><br><span class="line"> d = d >> <span class="number">1</span></span><br><span class="line"> </span><br><span class="line"><span class="built_in">print</span>(z*<span class="number">180</span>/np.pi)</span><br></pre></td></tr></table></figure><p>至此基本讲清了<code>cordic</code>算法的本质原理(在圆周坐标下)。接下来<b><font color= red >补充</font></b>一些其他<code>cordic</code>算法的相关内容。</p><h2 id="font-color-b5d5ff-stylefont-weightbold参数-模式与坐标系font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold参数-模式与坐标系font"></a> <font color= #b5d5ff style='font-weight:bold'>参数、模式与坐标系</font></h2><h3 id="font-color-b5d5ff-stylefont-weightbold伸缩因子ksubnsubfont"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold伸缩因子ksubnsubfont"></a> <font color= #b5d5ff style='font-weight:bold'>伸缩因子K<sub>n</sub></font></h3><p>上一节中只关注了角度<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>θ</mi></mrow><annotation encoding="application/x-tex">θ</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span></span>的求解,并没有关注到长度<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>ρ</mi></mrow><annotation encoding="application/x-tex">ρ</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathdefault">ρ</span></span></span></span>的求解。实际上,如果考虑长度变化的话,那么<code>cordic</code>旋转公式应还原为(也就是将省略掉的<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><mi>θ</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">cos(θ)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span></span></span></span>补回来):</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>d</mi><mi>i</mi></msub><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><msub><mi>d</mi><mi>i</mi></msub><mi>s</mi><mi>i</mi><mi>n</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mi>i</mi></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>d</mi><mi>i</mi></msub><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><msub><mi>d</mi><mi>i</mi></msub><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mi>i</mi></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mfrac><msub><mi>d</mi><mi>i</mi></msub><msup><mn>2</mn><mi>i</mi></msup></mfrac></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mfrac><msub><mi>d</mi><mi>i</mi></msub><msup><mn>2</mn><mi>i</mi></msup></mfrac></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>x</mi><mi>i</mi></msub></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mspace linebreak="newline"></mspace><msub><mi>z</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>z</mi><mi>i</mi></msub><mo>+</mo><msub><mi>d</mi><mi>i</mi></msub><msub><mi>θ</mi><mi>i</mi></msub><mspace linebreak="newline"></mspace><mspace linebreak="newline"></mspace><mi>w</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>e</mi><mtext> </mtext><msub><mi>d</mi><mi>i</mi></msub><mo>=</mo><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>+</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle><mtext>>0</mtext></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle><mtext>≤0</mtext></mrow></mstyle></mtd></mtr></mtable></mrow><mo separator="true">,</mo><mtext> </mtext><msub><mi>θ</mi><mi>i</mi></msub><mo>=</mo><mi>a</mi><mi>r</mi><mi>c</mi><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mfrac><mn>1</mn><msup><mn>2</mn><mi>i</mi></msup></mfrac><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">\left[\begin{matrix} x_{i+1}\\ y_{i+1} \end{matrix}\right]=\left[\begin{matrix} cos(θ_i)&d_isin(θ_i)\\ -d_isin(θ_i)&cos(θ_i) \end{matrix}\right]\left[\begin{matrix} x_i\\ y_i \end{matrix}\right]=cos(θ_i)\left[\begin{matrix} 1&d_itan(θ_i)\\ -d_itan(θ_i)&1 \end{matrix}\right]\left[\begin{matrix} x_i\\ y_i \end{matrix}\right]=cos(θ_i)\left[\begin{matrix} 1&\frac{d_i}{2^i}\\ -\frac{d_i}{2^i}&1 \end{matrix}\right]\left[\begin{matrix} x_i\\ y_i \end{matrix}\right]\\z_{i+1} = z_i + d_iθ_i\\\\where\ d_i = \begin{cases}+1, & \text{if $y_i$>0} \\-1, & \text{if $y_i$≤0}\end{cases},\ θ_i = arctan(\frac{1}{2^i})</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.512416em;vertical-align:-1.0062080000000002em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.5062079999999998em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span><span style="top:-2.353792em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8962079999999999em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7570857142857143em;"><span style="top:-2.786em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.4101em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathdefault mtight">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3280857142857143em;"><span style="top:-2.357em;margin-left:0em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.143em;"><span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.0062080000000002em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.5062079999999998em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8962079999999999em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7570857142857143em;"><span style="top:-2.786em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.4101em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathdefault mtight">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3280857142857143em;"><span style="top:-2.357em;margin-left:0em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.143em;"><span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-2.353792em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.0062080000000002em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.638891em;vertical-align:-0.208331em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.73333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.84444em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span><span class="mspace newline"></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.84444em;vertical-align:-0.15em;"></span><span class="mord mathdefault" style="margin-right:0.02691em;">w</span><span class="mord mathdefault">h</span><span class="mord mathdefault">e</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">e</span><span class="mspace"> </span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:3.0000299999999998em;vertical-align:-1.25003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">{</span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord">+</span><span class="mord">1</span><span class="mpunct">,</span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord">−</span><span class="mord">1</span><span class="mpunct">,</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">>0</span></span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">≤0</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mspace"> </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.00744em;vertical-align:-0.686em;"></span><span class="mord mathdefault">a</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">c</span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.32144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.750664em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span></span></span></span></p><p>还原为方程组的形式:</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>x</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo><mo stretchy="false">(</mo><msub><mi>x</mi><mi>i</mi></msub><mo>+</mo><msub><mi>d</mi><mi>i</mi></msub><msub><mi>y</mi><mi>i</mi></msub><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo><mo>=</mo><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo><mo stretchy="false">(</mo><msub><mi>x</mi><mi>i</mi></msub><mo>+</mo><msub><mi>d</mi><mi>i</mi></msub><mfrac><msub><mi>y</mi><mi>i</mi></msub><msup><mn>2</mn><mi>i</mi></msup></mfrac><mo stretchy="false">)</mo><mspace linebreak="newline"></mspace><msub><mi>y</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo><mo stretchy="false">(</mo><msub><mi>y</mi><mi>i</mi></msub><mo>−</mo><msub><mi>d</mi><mi>i</mi></msub><msub><mi>x</mi><mi>i</mi></msub><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo><mo>=</mo><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>i</mi></msub><mo stretchy="false">)</mo><mo stretchy="false">(</mo><msub><mi>y</mi><mi>i</mi></msub><mo>−</mo><msub><mi>d</mi><mi>i</mi></msub><mfrac><msub><mi>x</mi><mi>i</mi></msub><msup><mn>2</mn><mi>i</mi></msup></mfrac><mo stretchy="false">)</mo><mspace linebreak="newline"></mspace><msub><mi>z</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>z</mi><mi>i</mi></msub><mo>+</mo><msub><mi>d</mi><mi>i</mi></msub><msub><mi>θ</mi><mi>i</mi></msub><mspace linebreak="newline"></mspace><mi>w</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>e</mi><mtext> </mtext><msub><mi>d</mi><mi>i</mi></msub><mo>=</mo><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>+</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle><mtext>>0</mtext></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle><mtext>≤0</mtext></mrow></mstyle></mtd></mtr></mtable></mrow><mo separator="true">,</mo><mtext> </mtext><msub><mi>θ</mi><mi>i</mi></msub><mo>=</mo><mi>a</mi><mi>r</mi><mi>c</mi><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mfrac><mn>1</mn><msup><mn>2</mn><mi>i</mi></msup></mfrac><mo stretchy="false">)</mo><mspace linebreak="newline"></mspace></mrow><annotation encoding="application/x-tex">x_{i+1} = cos(θ_i)(x_i+d_iy_itan(θ_i)=cos(θ_i)(x_i+d_i\frac{y_i}{2^i})\\y_{i+1} = cos(θ_i)(y_i-d_ix_itan(θ_i)=cos(θ_i)(y_i-d_i\frac{x_i}{2^i})\\z_{i+1} = z_i + d_iθ_i\\where\ d_i = \begin{cases}+1, & \text{if $y_i$>0} \\-1, & \text{if $y_i$≤0}\end{cases}, \ θ_i = arctan(\frac{1}{2^i})\\</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.638891em;vertical-align:-0.208331em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1.7935599999999998em;vertical-align:-0.686em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.1075599999999999em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.750664em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.638891em;vertical-align:-0.208331em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1.7935599999999998em;vertical-align:-0.686em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.1075599999999999em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.750664em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.638891em;vertical-align:-0.208331em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.73333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.84444em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.84444em;vertical-align:-0.15em;"></span><span class="mord mathdefault" style="margin-right:0.02691em;">w</span><span class="mord mathdefault">h</span><span class="mord mathdefault">e</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">e</span><span class="mspace"> </span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:3.0000299999999998em;vertical-align:-1.25003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">{</span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord">+</span><span class="mord">1</span><span class="mpunct">,</span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord">−</span><span class="mord">1</span><span class="mpunct">,</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">>0</span></span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">≤0</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mspace"> </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.00744em;vertical-align:-0.686em;"></span><span class="mord mathdefault">a</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">c</span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.32144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.750664em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span><span class="mspace newline"></span></span></span></span></p><p>假设进行64次迭代,则结果计算为</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>x</mi><mn>64</mn></msub><mo>=</mo><munderover><mo>∏</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mn>63</mn></munderover><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>n</mi></msub><mo stretchy="false">)</mo><mo stretchy="false">(</mo><msub><mi>x</mi><mi>n</mi></msub><mo>+</mo><mi>d</mi><mfrac><msub><mi>y</mi><mi>n</mi></msub><msup><mn>2</mn><mi>n</mi></msup></mfrac><mo stretchy="false">)</mo><mspace linebreak="newline"></mspace><msub><mi>y</mi><mn>64</mn></msub><mo>=</mo><munderover><mo>∏</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mn>63</mn></munderover><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>n</mi></msub><mo stretchy="false">)</mo><mo stretchy="false">(</mo><msub><mi>y</mi><mi>n</mi></msub><mo>−</mo><mi>d</mi><mfrac><msub><mi>x</mi><mi>n</mi></msub><msup><mn>2</mn><mi>n</mi></msup></mfrac><mo stretchy="false">)</mo><mspace linebreak="newline"></mspace><msub><mi>z</mi><mn>64</mn></msub><mo>=</mo><msub><mi>z</mi><mn>0</mn></msub><mo>+</mo><munderover><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mn>63</mn></munderover><mi>d</mi><msub><mi>θ</mi><mi>n</mi></msub><mspace linebreak="newline"></mspace><mi>w</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>e</mi><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>d</mi><mo>=</mo><mo>+</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>n</mi></msub></mstyle><mtext>>0</mtext></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>d</mi><mo>=</mo><mo>−</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>n</mi></msub></mstyle><mtext>≤0</mtext></mrow></mstyle></mtd></mtr></mtable></mrow><mo separator="true">,</mo><mtext> </mtext><msub><mi>θ</mi><mi>n</mi></msub><mo>=</mo><mi>a</mi><mi>r</mi><mi>c</mi><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mfrac><mn>1</mn><msup><mn>2</mn><mi>n</mi></msup></mfrac><mo stretchy="false">)</mo><mspace linebreak="newline"></mspace></mrow><annotation encoding="application/x-tex">x_{64} = \prod_{n=0}^{63}cos(θ_n)(x_n+d\frac{y_n}{2^n})\\y_{64} = \prod_{n=0}^{63}cos(θ_n)(y_n-d\frac{x_n}{2^n})\\z_{64} = z_0 + \sum_{n=0}^{63}dθ_n \\where\begin{cases}d = +1, & \text{if $y_n$>0} \\d = -1, & \text{if $y_n$≤0}\end{cases},\ θ_n = arctan(\frac{1}{2^n})\\</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.58056em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">6</span><span class="mord mtight">4</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:3.068226em;vertical-align:-1.267113em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.8011130000000004em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∏</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">6</span><span class="mord mtight">3</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1.7935599999999998em;vertical-align:-0.686em;"></span><span class="mord mathdefault">d</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.1075599999999999em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.590392em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">6</span><span class="mord mtight">4</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:3.068226em;vertical-align:-1.267113em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.8011130000000004em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∏</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">6</span><span class="mord mtight">3</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1.7935599999999998em;vertical-align:-0.686em;"></span><span class="mord mathdefault">d</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.1075599999999999em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.590392em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.58056em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">6</span><span class="mord mtight">4</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.73333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">0</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:3.068226em;vertical-align:-1.267113em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.8011130000000004em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">6</span><span class="mord mtight">3</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault">d</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:3.0000299999999998em;vertical-align:-1.25003em;"></span><span class="mord mathdefault" style="margin-right:0.02691em;">w</span><span class="mord mathdefault">h</span><span class="mord mathdefault">e</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">e</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">{</span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">+</span><span class="mord">1</span><span class="mpunct">,</span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">−</span><span class="mord">1</span><span class="mpunct">,</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">>0</span></span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">≤0</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mspace"> </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.00744em;vertical-align:-0.686em;"></span><span class="mord mathdefault">a</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">c</span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.32144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.590392em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span><span class="mspace newline"></span></span></span></span></p><p>可以发现其实迭代过程的计算分为两部分,一部分是<code>cordic</code>的旋转变换,一部分是<code>cordic</code>的长度伸缩变换。</p><p>cordic长度伸缩变换:</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><munderover><mo>∏</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mn>63</mn></munderover><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>n</mi></msub><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">\prod_{n=0}^{63}cos(θ_n)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:3.068226em;vertical-align:-1.267113em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.8011130000000004em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∏</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">6</span><span class="mord mtight">3</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span></span></p><p>cordic旋转变换:</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><munderover><mo>∏</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mn>63</mn></munderover><mo stretchy="false">(</mo><msub><mi>x</mi><mi>n</mi></msub><mo>+</mo><mi>d</mi><mfrac><msub><mi>y</mi><mi>n</mi></msub><msup><mn>2</mn><mi>n</mi></msup></mfrac><mo stretchy="false">)</mo><mspace linebreak="newline"></mspace><munderover><mo>∏</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mn>63</mn></munderover><mo stretchy="false">(</mo><msub><mi>y</mi><mi>n</mi></msub><mo>−</mo><mi>d</mi><mfrac><msub><mi>x</mi><mi>n</mi></msub><msup><mn>2</mn><mi>n</mi></msup></mfrac><mo stretchy="false">)</mo><mspace linebreak="newline"></mspace><mi>w</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>e</mi><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>d</mi><mo>=</mo><mo>+</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>n</mi></msub></mstyle><mtext>>0</mtext></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>d</mi><mo>=</mo><mo>−</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>n</mi></msub></mstyle><mtext>≤0</mtext></mrow></mstyle></mtd></mtr></mtable></mrow></mrow><annotation encoding="application/x-tex">\prod_{n=0}^{63}(x_n+d\frac{y_n}{2^n})\\\prod_{n=0}^{63}(y_n-d\frac{x_n}{2^n})\\where\begin{cases}d = +1, & \text{if $y_n$>0} \\d = -1, & \text{if $y_n$≤0}\end{cases}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:3.068226em;vertical-align:-1.267113em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.8011130000000004em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∏</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">6</span><span class="mord mtight">3</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1.7935599999999998em;vertical-align:-0.686em;"></span><span class="mord mathdefault">d</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.1075599999999999em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.590392em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:3.068226em;vertical-align:-1.267113em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.8011130000000004em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∏</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">6</span><span class="mord mtight">3</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1.7935599999999998em;vertical-align:-0.686em;"></span><span class="mord mathdefault">d</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.1075599999999999em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.590392em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:3.0000299999999998em;vertical-align:-1.25003em;"></span><span class="mord mathdefault" style="margin-right:0.02691em;">w</span><span class="mord mathdefault">h</span><span class="mord mathdefault">e</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">e</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">{</span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">+</span><span class="mord">1</span><span class="mpunct">,</span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">−</span><span class="mord">1</span><span class="mpunct">,</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">>0</span></span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">≤0</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span></p><p>由于在<code>cordic</code>旋转变换中,已知<span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>θ</mi><mi>n</mi></msub><mo>=</mo><mi>a</mi><mi>r</mi><mi>c</mi><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mfrac><mn>1</mn><msup><mn>2</mn><mi>n</mi></msup></mfrac><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">θ_n=arctan(\frac{1}{2^n})</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.84444em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1.190108em;vertical-align:-0.345em;"></span><span class="mord mathdefault">a</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">c</span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.5935428571428571em;"><span style="top:-2.786em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span></span></span>,因此长度伸缩变换可以变化为:</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><munderover><mo>∏</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mn>63</mn></munderover><mo stretchy="false">(</mo><mi>c</mi><mi>o</mi><mi>s</mi><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>n</mi></msub><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo>=</mo><munderover><mo>∏</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mn>63</mn></munderover><mo stretchy="false">(</mo><msqrt><mfrac><mn>1</mn><mrow><mn>1</mn><mo>+</mo><mi>t</mi><mi>a</mi><msup><mi>n</mi><mn>2</mn></msup><mo stretchy="false">(</mo><msub><mi>θ</mi><mi>n</mi></msub><mo stretchy="false">)</mo></mrow></mfrac></msqrt><mo stretchy="false">)</mo><mo>=</mo><munderover><mo>∏</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mn>63</mn></munderover><mo stretchy="false">(</mo><msqrt><mfrac><mn>1</mn><mrow><mn>1</mn><mo>+</mo><mo stretchy="false">(</mo><mfrac><mn>1</mn><msup><mn>2</mn><mi>n</mi></msup></mfrac><msup><mo stretchy="false">)</mo><mn>2</mn></msup></mrow></mfrac></msqrt><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">\prod_{n=0}^{63}(cos(θ_n))=\prod_{n=0}^{63}(\sqrt{\frac{1}{1+tan^2(θ_n)}})=\prod_{n=0}^{63}(\sqrt{\frac{1}{1+(\frac{1}{2^n})^2}})</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:3.068226em;vertical-align:-1.267113em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.8011130000000004em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∏</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">6</span><span class="mord mtight">3</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mopen">(</span><span class="mord mathdefault">c</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:3.0937080000000003em;vertical-align:-1.267113em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.8011130000000004em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∏</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">6</span><span class="mord mtight">3</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mopen">(</span><span class="mord sqrt"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.8265950000000002em;"><span class="svg-align" style="top:-5em;"><span class="pstrut" style="height:5em;"></span><span class="mord" style="padding-left:1em;"><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.32144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord"><span class="mord mathdefault">n</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.740108em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.936em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-3.786595em;"><span class="pstrut" style="height:5em;"></span><span class="hide-tail" style="min-width:1.02em;height:3.08em;"><svg width='400em' height='3.08em' viewBox='0 0 400000 3240' preserveAspectRatio='xMinYMin slice'><path d='M473,2793c339.3,-1799.3,509.3,-2700,510,-2702c3.3,-7.3,9.3,-11,18,-11H400000v40H1017.7s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,606zM1001 80H400000v40H1017z'/></svg></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.2134049999999998em;"><span></span></span></span></span></span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:3.0865720000000008em;vertical-align:-1.2854590000000004em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.8011130000000004em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∏</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">6</span><span class="mord mtight">3</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mopen">(</span><span class="mord sqrt"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.7545409999999997em;"><span class="svg-align" style="top:-5em;"><span class="pstrut" style="height:5em;"></span><span class="mord" style="padding-left:1em;"><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.32144em;"><span style="top:-2.2648919999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mopen">(</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.5935428571428571em;"><span style="top:-2.786em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose"><span class="mclose">)</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.740108em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.080108em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-3.7145409999999996em;"><span class="pstrut" style="height:5em;"></span><span class="hide-tail" style="min-width:1.02em;height:3.08em;"><svg width='400em' height='3.08em' viewBox='0 0 400000 3240' preserveAspectRatio='xMinYMin slice'><path d='M473,2793c339.3,-1799.3,509.3,-2700,510,-2702c3.3,-7.3,9.3,-11,18,-11H400000v40H1017.7s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,606zM1001 80H400000v40H1017z'/></svg></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.2854590000000004em;"><span></span></span></span></span></span><span class="mclose">)</span></span></span></span></span></p><p>当<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>n</mi><mo>→</mo><mi mathvariant="normal">∞</mi></mrow><annotation encoding="application/x-tex">n\to∞</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathdefault">n</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord">∞</span></span></span></span>,上面的式子是收敛的,当结束变换时,应当<b><font color= red >乘以收敛值的倒数以恢复</font></b>长度变换带来的影响。恢复长度变换影响而乘的这个数就叫做<b><font color= red >伸缩因子<span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>K</mi><mi>n</mi></msub></mrow><annotation encoding="application/x-tex">K_n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.83333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.07153em;">K</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.07153em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span></font></b>,是一个固定常数。</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>K</mi><mi>n</mi></msub><mo>=</mo><munder><mo><mi>lim</mi><mo></mo></mo><mrow><mi>n</mi><mo>→</mo><mi mathvariant="normal">∞</mi></mrow></munder><mo stretchy="false">(</mo><munderover><mo>∏</mo><mn>0</mn><mi>n</mi></munderover><mo stretchy="false">(</mo><msqrt><mrow><mn>1</mn><mo>+</mo><mo stretchy="false">(</mo><mfrac><mn>1</mn><msup><mn>2</mn><mi>n</mi></msup></mfrac><msup><mo stretchy="false">)</mo><mn>2</mn></msup></mrow></msqrt><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo>≈</mo><mn>1.64676</mn><mspace linebreak="newline"></mspace><mfrac><mn>1</mn><msub><mi>K</mi><mi>n</mi></msub></mfrac><mo>≈</mo><mn>0.6073</mn></mrow><annotation encoding="application/x-tex">K_n=\lim_{n\to∞}(\prod_{0}^{n}(\sqrt{1+(\frac{1}{2^n})^2}))≈1.64676 \\\frac{1}{K_n}≈ 0.6073</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.83333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.07153em;">K</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.07153em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.9187079999999996em;vertical-align:-1.267113em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.69444em;"><span style="top:-2.1em;margin-left:0em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">→</span><span class="mord mtight">∞</span></span></span></span><span style="top:-2.7em;"><span class="pstrut" style="height:2.7em;"></span><span><span class="mop">lim</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.7em;"><span></span></span></span></span></span><span class="mopen">(</span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.6513970000000002em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∏</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mopen">(</span><span class="mord sqrt"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.651595em;"><span class="svg-align" style="top:-4.4em;"><span class="pstrut" style="height:4.4em;"></span><span class="mord" style="padding-left:1em;"><span class="mord">1</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mopen">(</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.32144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.590392em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose"><span class="mclose">)</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.740108em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span><span style="top:-3.6115950000000003em;"><span class="pstrut" style="height:4.4em;"></span><span class="hide-tail" style="min-width:1.02em;height:2.48em;"><svg width='400em' height='2.48em' viewBox='0 0 400000 2592' preserveAspectRatio='xMinYMin slice'><path d='M424,2478c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081c4,-6.7,10,-10,18,-10H400000v40H1014.6s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185c-2,6,-10,9,-24,9c-8,0,-12,-0.7,-12,-2z M1001 80H400000v40H1014z'/></svg></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.788405em;"><span></span></span></span></span></span><span class="mclose">)</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">≈</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span><span class="mord">.</span><span class="mord">6</span><span class="mord">4</span><span class="mord">6</span><span class="mord">7</span><span class="mord">6</span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:2.1574400000000002em;vertical-align:-0.8360000000000001em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.32144em;"><span style="top:-2.3139999999999996em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.07153em;">K</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.07153em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.8360000000000001em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">≈</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span><span class="mord">.</span><span class="mord">6</span><span class="mord">0</span><span class="mord">7</span><span class="mord">3</span></span></span></span></span></p><p>通过下表可见伸缩因子随迭代次数的变化</p><table><thead><tr><th style="text-align:center">迭代次数</th><th style="text-align:center">伸缩因子K<sub>n</sub></th></tr></thead><tbody><tr><td style="text-align:center">10</td><td style="text-align:center">1.646759211139822</td></tr><tr><td style="text-align:center">20</td><td style="text-align:center">1.6467602581200669</td></tr><tr><td style="text-align:center">50</td><td style="text-align:center">1.6467602581210652</td></tr><tr><td style="text-align:center">100</td><td style="text-align:center">1.6467602581210652</td></tr></tbody></table><p>可见伸缩因子随着迭代次数增加而变化越来越小,最终收敛。这样可以利用<code>cordic</code>旋转后通过乘以伸缩因子来保证长度变换也是正确的,从而求到长度<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>ρ</mi></mrow><annotation encoding="application/x-tex">ρ</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathdefault">ρ</span></span></span></span>。最终的变换公式如下。</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>x</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>K</mi><mi>n</mi></msub><munderover><mo>∏</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mi>n</mi></munderover><mo stretchy="false">(</mo><msub><mi>x</mi><mi>n</mi></msub><mo>+</mo><mi>d</mi><mfrac><msub><mi>y</mi><mi>n</mi></msub><msup><mn>2</mn><mi>n</mi></msup></mfrac><mo stretchy="false">)</mo><mspace linebreak="newline"></mspace><msub><mi>y</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>K</mi><mi>n</mi></msub><munderover><mo>∏</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mi>n</mi></munderover><mo stretchy="false">(</mo><msub><mi>y</mi><mi>n</mi></msub><mo>−</mo><mi>d</mi><mfrac><msub><mi>x</mi><mi>n</mi></msub><msup><mn>2</mn><mi>n</mi></msup></mfrac><mo stretchy="false">)</mo><mspace linebreak="newline"></mspace><msub><mi>z</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>z</mi><mn>0</mn></msub><mo>+</mo><munderover><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mi>n</mi></munderover><mi>d</mi><msub><mi>θ</mi><mi>n</mi></msub><mspace linebreak="newline"></mspace><mi>w</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>e</mi><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>d</mi><mo>=</mo><mo>+</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>n</mi></msub></mstyle><mtext>>0</mtext></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>d</mi><mo>=</mo><mo>−</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>n</mi></msub></mstyle><mtext>≤0</mtext></mrow></mstyle></mtd></mtr></mtable></mrow><mo separator="true">,</mo><mtext> </mtext><msub><mi>θ</mi><mi>n</mi></msub><mo>=</mo><mi>a</mi><mi>r</mi><mi>c</mi><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mfrac><mn>1</mn><msup><mn>2</mn><mi>n</mi></msup></mfrac><mo stretchy="false">)</mo><mspace linebreak="newline"></mspace></mrow><annotation encoding="application/x-tex">x_{n+1} = K_n\prod_{n=0}^{n}(x_n+d\frac{y_n}{2^n})\\y_{n+1} = K_n\prod_{n=0}^{n}(y_n-d\frac{x_n}{2^n})\\z_{n+1} = z_0 + \sum_{n=0}^{n}dθ_n\\where\begin{cases}d = +1, & \text{if $y_n$>0} \\d = -1, & \text{if $y_n$≤0}\end{cases},\ θ_n = arctan(\frac{1}{2^n})\\</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.638891em;vertical-align:-0.208331em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.301108em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.9185100000000004em;vertical-align:-1.267113em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.07153em;">K</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.07153em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.6513970000000002em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∏</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1.7935599999999998em;vertical-align:-0.686em;"></span><span class="mord mathdefault">d</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.1075599999999999em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.590392em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.638891em;vertical-align:-0.208331em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.301108em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.9185100000000004em;vertical-align:-1.267113em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.07153em;">K</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.07153em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.6513970000000002em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∏</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1.7935599999999998em;vertical-align:-0.686em;"></span><span class="mord mathdefault">d</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.1075599999999999em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.590392em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.638891em;vertical-align:-0.208331em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.301108em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.73333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">0</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:2.9185100000000004em;vertical-align:-1.267113em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.6513970000000002em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault">d</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:3.0000299999999998em;vertical-align:-1.25003em;"></span><span class="mord mathdefault" style="margin-right:0.02691em;">w</span><span class="mord mathdefault">h</span><span class="mord mathdefault">e</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">e</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">{</span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">+</span><span class="mord">1</span><span class="mpunct">,</span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">−</span><span class="mord">1</span><span class="mpunct">,</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">>0</span></span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">≤0</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mspace"> </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.00744em;vertical-align:-0.686em;"></span><span class="mord mathdefault">a</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">c</span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.32144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.590392em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span><span class="mspace newline"></span></span></span></span></p><h3 id="font-color-b5d5ff-stylefont-weightbold两种旋转模式font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold两种旋转模式font"></a> <font color= #b5d5ff style='font-weight:bold'>两种旋转模式</font></h3><p>在圆周坐标系下的坐标旋转其实存在两个问题:</p><blockquote><ol><li><p>已知<span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>x</mi><mn>1</mn></msub></mrow><annotation encoding="application/x-tex">x_1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.58056em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>,<span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>y</mi><mn>1</mn></msub></mrow><annotation encoding="application/x-tex">y_1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>,<font color= #green>如何计算旋转角<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>θ</mi></mrow><annotation encoding="application/x-tex">θ</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span></span>使得<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>y</mi><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">y=0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span>?</font></p></li><li><p>已知旋转角<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>θ</mi></mrow><annotation encoding="application/x-tex">θ</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span></span>,<span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>x</mi><mn>1</mn></msub></mrow><annotation encoding="application/x-tex">x_1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.58056em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>,且<span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>y</mi><mn>1</mn></msub><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">y_1=0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span>,<font color= #green>如何计算<span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>x</mi><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">x_2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.58056em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>和<span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>y</mi><mn>2</mn></msub></mrow><annotation encoding="application/x-tex">y_2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>?</font></p></li></ol></blockquote><p>这是两个<b><font color= red >镜像问题</font></b>,只是从两个方向来考虑。</p><blockquote><ol><li><p>通过不断进行<code>cordic</code>旋转变换逼近<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>y</mi><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">y=0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span>的点(顺时针,逼近<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>y</mi><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">y=0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span>点)</p><p>使结果纵坐标<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>y</mi><mo>→</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">y\to0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span>的<code>cordic</code>旋转变换称为<b><font color= red >向量模式(vector mode)</font></b>。</p></li><li><p>通过不断进行<code>cordic</code>旋转变换逼近旋转角<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>θ</mi></mrow><annotation encoding="application/x-tex">θ</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span></span>(逆时针,逼近<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>θ</mi><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">θ=0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span>的点)</p><p>使结果角度<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>θ</mi><mo>→</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">θ\to0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span>的<code>cordic</code>旋转变换被称为<b><font color= red >旋转模式(rotation mode)</font></b>。</p></li></ol></blockquote><ul><li>圆周坐标的向量模式(vector mode)的公式为(上一节已经推导)</li></ul><ol><li><p>迭代式:</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>x</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>x</mi><mi>i</mi></msub><mo>+</mo><msub><mi>d</mi><mi>i</mi></msub><mfrac><msub><mi>y</mi><mi>i</mi></msub><msup><mn>2</mn><mi>i</mi></msup></mfrac></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>y</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>y</mi><mi>i</mi></msub><mo>−</mo><msub><mi>d</mi><mi>i</mi></msub><mfrac><msub><mi>x</mi><mi>i</mi></msub><msup><mn>2</mn><mi>i</mi></msup></mfrac></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>z</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>z</mi><mi>i</mi></msub><mo>+</mo><mi>d</mi><msub><mi>θ</mi><mi>i</mi></msub></mrow></mstyle></mtd></mtr></mtable></mrow><mspace linebreak="newline"></mspace><mi>w</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>e</mi><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>d</mi><mi>i</mi></msub><mo>=</mo><mo>+</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle><mtext>>0</mtext></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>d</mi><mi>i</mi></msub><mo>=</mo><mo>−</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle><mtext>≤0</mtext></mrow></mstyle></mtd></mtr></mtable></mrow><mo separator="true">,</mo><msub><mi>θ</mi><mi>i</mi></msub><mo>=</mo><mi>a</mi><mi>r</mi><mi>c</mi><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mfrac><mn>1</mn><msup><mn>2</mn><mi>i</mi></msup></mfrac><mo stretchy="false">)</mo><mspace linebreak="newline"></mspace></mrow><annotation encoding="application/x-tex">\begin{cases}x_{i+1} = x_i+d_i\frac{y_i}{2^i}\\y_{i+1} = y_i-d_i\frac{x_i}{2^i}\\z_{i+1} = z_i + dθ_i\\\end{cases}\\where\begin{cases}d_i = +1, & \text{if $y_i$>0} \\d_i = -1, & \text{if $y_i$≤0}\end{cases},θ_i = arctan(\frac{1}{2^i})\\</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:4.32em;vertical-align:-1.9099999999999997em;"></span><span class="minner"><span class="mopen"><span class="delimsizing mult"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.35002em;"><span style="top:-2.19999em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎩</span></span></span><span style="top:-2.19999em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-3.1500100000000004em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎨</span></span></span><span style="top:-4.30001em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-4.60002em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎧</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.8500199999999998em;"><span></span></span></span></span></span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.41em;"><span style="top:-4.41em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.7475em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7570857142857143em;"><span style="top:-2.786em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.446108em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3280857142857143em;"><span style="top:-2.357em;margin-left:-0.03588em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.143em;"><span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-2.97em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.7114919999999999em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7570857142857143em;"><span style="top:-2.786em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.4101em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathdefault mtight">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3280857142857143em;"><span style="top:-2.357em;margin-left:0em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.143em;"><span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-1.5300000000000002em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord mathdefault">d</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.9099999999999997em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:3.0000299999999998em;vertical-align:-1.25003em;"></span><span class="mord mathdefault" style="margin-right:0.02691em;">w</span><span class="mord mathdefault">h</span><span class="mord mathdefault">e</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">e</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">{</span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">+</span><span class="mord">1</span><span class="mpunct">,</span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">−</span><span class="mord">1</span><span class="mpunct">,</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">>0</span></span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">≤0</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.00744em;vertical-align:-0.686em;"></span><span class="mord mathdefault">a</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">c</span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.32144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.750664em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span><span class="mspace newline"></span></span></span></span></p></li><li><p>结果式:</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>x</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>K</mi><mi>n</mi></msub><munderover><mo>∏</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mi>n</mi></munderover><mo stretchy="false">(</mo><msub><mi>x</mi><mi>n</mi></msub><mo>+</mo><mi>d</mi><mfrac><msub><mi>y</mi><mi>n</mi></msub><msup><mn>2</mn><mi>n</mi></msup></mfrac><mo stretchy="false">)</mo><mspace linebreak="newline"></mspace><msub><mi>y</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>K</mi><mi>n</mi></msub><munderover><mo>∏</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mi>n</mi></munderover><mo stretchy="false">(</mo><msub><mi>y</mi><mi>n</mi></msub><mo>−</mo><mi>d</mi><mfrac><msub><mi>x</mi><mi>n</mi></msub><msup><mn>2</mn><mi>n</mi></msup></mfrac><mo stretchy="false">)</mo><mspace linebreak="newline"></mspace><msub><mi>z</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>z</mi><mn>0</mn></msub><mo>+</mo><munderover><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mi>n</mi></munderover><mi>d</mi><msub><mi>θ</mi><mi>n</mi></msub><mspace linebreak="newline"></mspace><mi>w</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>e</mi><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>d</mi><mo>=</mo><mo>+</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>n</mi></msub></mstyle><mtext>>0</mtext></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>d</mi><mo>=</mo><mo>−</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>n</mi></msub></mstyle><mtext>≤0</mtext></mrow></mstyle></mtd></mtr></mtable></mrow><mo separator="true">,</mo><mtext> </mtext><msub><mi>θ</mi><mi>n</mi></msub><mo>=</mo><mi>a</mi><mi>r</mi><mi>c</mi><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mfrac><mn>1</mn><msup><mn>2</mn><mi>n</mi></msup></mfrac><mo stretchy="false">)</mo><mspace linebreak="newline"></mspace></mrow><annotation encoding="application/x-tex">x_{n+1} = K_n\prod_{n=0}^{n}(x_n+d\frac{y_n}{2^n})\\y_{n+1} = K_n\prod_{n=0}^{n}(y_n-d\frac{x_n}{2^n})\\z_{n+1} = z_0 + \sum_{n=0}^{n}dθ_n\\where\begin{cases}d = +1, & \text{if $y_n$>0} \\d = -1, & \text{if $y_n$≤0}\end{cases},\ θ_n = arctan(\frac{1}{2^n})\\</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.638891em;vertical-align:-0.208331em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.301108em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.9185100000000004em;vertical-align:-1.267113em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.07153em;">K</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.07153em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.6513970000000002em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∏</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1.7935599999999998em;vertical-align:-0.686em;"></span><span class="mord mathdefault">d</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.1075599999999999em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.590392em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.638891em;vertical-align:-0.208331em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.301108em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.9185100000000004em;vertical-align:-1.267113em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.07153em;">K</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.07153em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.6513970000000002em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∏</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1.7935599999999998em;vertical-align:-0.686em;"></span><span class="mord mathdefault">d</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.1075599999999999em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.590392em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.638891em;vertical-align:-0.208331em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.301108em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.73333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">0</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:2.9185100000000004em;vertical-align:-1.267113em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.6513970000000002em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault">d</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:3.0000299999999998em;vertical-align:-1.25003em;"></span><span class="mord mathdefault" style="margin-right:0.02691em;">w</span><span class="mord mathdefault">h</span><span class="mord mathdefault">e</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">e</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">{</span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">+</span><span class="mord">1</span><span class="mpunct">,</span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">−</span><span class="mord">1</span><span class="mpunct">,</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">>0</span></span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">≤0</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mspace"> </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.00744em;vertical-align:-0.686em;"></span><span class="mord mathdefault">a</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">c</span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.32144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.590392em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span><span class="mspace newline"></span></span></span></span></p></li></ol><ul><li>圆周坐标下旋转模式(rotation mode)的公式为</li></ul><ol><li><p>迭代式:</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>x</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>x</mi><mi>i</mi></msub><mo>−</mo><msub><mi>d</mi><mi>i</mi></msub><mfrac><msub><mi>y</mi><mi>i</mi></msub><msup><mn>2</mn><mi>i</mi></msup></mfrac></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>y</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>y</mi><mi>i</mi></msub><mo>+</mo><msub><mi>d</mi><mi>i</mi></msub><mfrac><msub><mi>x</mi><mi>i</mi></msub><msup><mn>2</mn><mi>i</mi></msup></mfrac></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>z</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>z</mi><mi>i</mi></msub><mo>−</mo><msub><mi>d</mi><mi>i</mi></msub><msub><mi>θ</mi><mi>i</mi></msub></mrow></mstyle></mtd></mtr></mtable></mrow><mspace linebreak="newline"></mspace><mi>w</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>e</mi><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>d</mi><mi>i</mi></msub><mo>=</mo><mo>+</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>z</mi><mi>i</mi></msub></mstyle><mtext>>0</mtext></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>d</mi><mi>i</mi></msub><mo>=</mo><mo>−</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>z</mi><mi>i</mi></msub></mstyle><mtext>≤0</mtext></mrow></mstyle></mtd></mtr></mtable></mrow><mo separator="true">,</mo><msub><mi>θ</mi><mi>i</mi></msub><mo>=</mo><mi>a</mi><mi>r</mi><mi>c</mi><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mfrac><mn>1</mn><msup><mn>2</mn><mi>i</mi></msup></mfrac><mo stretchy="false">)</mo><mspace linebreak="newline"></mspace></mrow><annotation encoding="application/x-tex">\begin{cases}x_{i+1} = x_i-d_i\frac{y_i}{2^i}\\y_{i+1} = y_i+d_i\frac{x_i}{2^i}\\z_{i+1} = z_i - d_iθ_i\\\end{cases}\\where\begin{cases}d_i = +1, & \text{if $z_i$>0} \\d_i = -1, & \text{if $z_i$≤0}\end{cases},θ_i = arctan(\frac{1}{2^i})\\</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:4.32em;vertical-align:-1.9099999999999997em;"></span><span class="minner"><span class="mopen"><span class="delimsizing mult"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.35002em;"><span style="top:-2.19999em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎩</span></span></span><span style="top:-2.19999em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-3.1500100000000004em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎨</span></span></span><span style="top:-4.30001em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-4.60002em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎧</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.8500199999999998em;"><span></span></span></span></span></span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.41em;"><span style="top:-4.41em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.7475em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7570857142857143em;"><span style="top:-2.786em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.446108em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathdefault mtight" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3280857142857143em;"><span style="top:-2.357em;margin-left:-0.03588em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.143em;"><span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-2.97em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.7114919999999999em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7570857142857143em;"><span style="top:-2.786em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.4101em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathdefault mtight">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3280857142857143em;"><span style="top:-2.357em;margin-left:0em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.143em;"><span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-1.5300000000000002em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.9099999999999997em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:3.0000299999999998em;vertical-align:-1.25003em;"></span><span class="mord mathdefault" style="margin-right:0.02691em;">w</span><span class="mord mathdefault">h</span><span class="mord mathdefault">e</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">e</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">{</span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">+</span><span class="mord">1</span><span class="mpunct">,</span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">−</span><span class="mord">1</span><span class="mpunct">,</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">>0</span></span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">≤0</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.00744em;vertical-align:-0.686em;"></span><span class="mord mathdefault">a</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">c</span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.32144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.750664em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span><span class="mspace newline"></span></span></span></span></p></li><li><p>结果式:</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>x</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>K</mi><mi>n</mi></msub><munderover><mo>∏</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mi>n</mi></munderover><mo stretchy="false">(</mo><msub><mi>x</mi><mi>n</mi></msub><mo>−</mo><mi>d</mi><mfrac><msub><mi>y</mi><mi>n</mi></msub><msup><mn>2</mn><mi>n</mi></msup></mfrac><mo stretchy="false">)</mo><mspace linebreak="newline"></mspace><msub><mi>y</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>K</mi><mi>n</mi></msub><munderover><mo>∏</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mi>n</mi></munderover><mo stretchy="false">(</mo><msub><mi>y</mi><mi>n</mi></msub><mo>+</mo><mi>d</mi><mfrac><msub><mi>x</mi><mi>n</mi></msub><msup><mn>2</mn><mi>n</mi></msup></mfrac><mo stretchy="false">)</mo><mspace linebreak="newline"></mspace><msub><mi>z</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>z</mi><mn>0</mn></msub><mo>−</mo><munderover><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mi>n</mi></munderover><mi>d</mi><msub><mi>θ</mi><mi>n</mi></msub><mspace linebreak="newline"></mspace><mi>w</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>e</mi><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>d</mi><mo>=</mo><mo>+</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>z</mi><mi>n</mi></msub></mstyle><mtext>>0</mtext></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>d</mi><mo>=</mo><mo>−</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>z</mi><mi>n</mi></msub></mstyle><mtext>≤0</mtext></mrow></mstyle></mtd></mtr></mtable></mrow><mo separator="true">,</mo><mtext> </mtext><msub><mi>θ</mi><mi>n</mi></msub><mo>=</mo><mi>a</mi><mi>r</mi><mi>c</mi><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mfrac><mn>1</mn><msup><mn>2</mn><mi>n</mi></msup></mfrac><mo stretchy="false">)</mo><mspace linebreak="newline"></mspace></mrow><annotation encoding="application/x-tex">x_{n+1} = K_n\prod_{n=0}^{n}(x_n-d\frac{y_n}{2^n})\\y_{n+1} = K_n\prod_{n=0}^{n}(y_n+d\frac{x_n}{2^n})\\z_{n+1} = z_0 - \sum_{n=0}^{n}dθ_n\\where\begin{cases}d = +1, & \text{if $z_n$>0} \\d = -1, & \text{if $z_n$≤0}\end{cases},\ θ_n = arctan(\frac{1}{2^n})\\</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.638891em;vertical-align:-0.208331em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.301108em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.9185100000000004em;vertical-align:-1.267113em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.07153em;">K</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.07153em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.6513970000000002em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∏</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1.7935599999999998em;vertical-align:-0.686em;"></span><span class="mord mathdefault">d</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.1075599999999999em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.590392em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.638891em;vertical-align:-0.208331em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.301108em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.9185100000000004em;vertical-align:-1.267113em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.07153em;">K</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.07153em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.6513970000000002em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∏</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1.7935599999999998em;vertical-align:-0.686em;"></span><span class="mord mathdefault">d</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.1075599999999999em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.590392em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.638891em;vertical-align:-0.208331em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.301108em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.73333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">0</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:2.9185100000000004em;vertical-align:-1.267113em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.6513970000000002em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault">d</span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:3.0000299999999998em;vertical-align:-1.25003em;"></span><span class="mord mathdefault" style="margin-right:0.02691em;">w</span><span class="mord mathdefault">h</span><span class="mord mathdefault">e</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">e</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">{</span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">+</span><span class="mord">1</span><span class="mpunct">,</span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">−</span><span class="mord">1</span><span class="mpunct">,</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">>0</span></span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">≤0</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mspace"> </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.02778em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.00744em;vertical-align:-0.686em;"></span><span class="mord mathdefault">a</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">c</span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.32144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.590392em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose">)</span></span><span class="mspace newline"></span></span></span></span></p></li></ol><h3 id="font-color-b5d5ff-stylefont-weightbold三种坐标系font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold三种坐标系font"></a> <font color= #b5d5ff style='font-weight:bold'>三种坐标系</font></h3><p>上文只讨论了圆周坐标系,实际<code>cordic</code>算法可用于三种坐标系,进行不同的复杂运算。</p><ul><li><b><font color= red >圆周坐标系(circular rotations)</font></b></li><li><b><font color= red >线性坐标系(linear rotations)</font></b></li><li><b><font color= red >双曲线坐标系(hyperbolic rotations)</font></b></li></ul><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/cordic-algorithm/cordic3.png" alt="cordic3" /></p><h4 id="font-color-b5d5ff-stylefont-weightbold-圆周坐标系font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold-圆周坐标系font"></a> <font color= #b5d5ff style='font-weight:bold'> 圆周坐标系</font></h4><blockquote><p>之前的所有讨论均基于圆周坐标系。这里不再赘述。</p></blockquote><h4 id="font-color-b5d5ff-stylefont-weightbold-线性坐标系font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold-线性坐标系font"></a> <font color= #b5d5ff style='font-weight:bold'> 线性坐标系</font></h4><blockquote><p>假设<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo stretchy="false">(</mo><msub><mi>x</mi><mn>1</mn></msub><mo separator="true">,</mo><msub><mi>y</mi><mn>1</mn></msub><mo stretchy="false">)</mo><mo>=</mo><mo stretchy="false">(</mo><mn>250</mn><mo separator="true">,</mo><mn>100</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(x_1,y_1)=(250,100)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">2</span><span class="mord">5</span><span class="mord">0</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">1</span><span class="mord">0</span><span class="mord">0</span><span class="mclose">)</span></span></span></span>,要求其在线性坐标系下的旋转角<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>θ</mi></mrow><annotation encoding="application/x-tex">θ</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span></span>。首先根据观察可知<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>t</mi><mi>a</mi><mi>n</mi><mi>θ</mi><mo>=</mo><mfrac><mn>2</mn><mn>5</mn></mfrac></mrow><annotation encoding="application/x-tex">tanθ=\frac{2}{5}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1.190108em;vertical-align:-0.345em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">5</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">2</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span> 。这时利用<code>cordic</code>旋转算法进行尝试。</p></blockquote><p>类似的,先逆时针"旋转"<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>45</mn><mi mathvariant="normal">°</mi></mrow><annotation encoding="application/x-tex">45°</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord">4</span><span class="mord">5</span><span class="mord">°</span></span></span></span>进行尝试。根据之前推导的公式可知,此时显然<span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>x</mi><mn>2</mn></msub><mo>=</mo><msub><mi>x</mi><mn>1</mn></msub><mo>=</mo><mn>100</mn></mrow><annotation encoding="application/x-tex">x_2=x_1=100</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.58056em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.58056em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">1</span><span class="mord">0</span><span class="mord">0</span></span></span></span>,<span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>y</mi><mn>2</mn></msub><mo>=</mo><msub><mi>y</mi><mn>1</mn></msub><mo>−</mo><msub><mi>x</mi><mn>1</mn></msub><mi>t</mi><mi>a</mi><mi>n</mi><mn>45</mn><mi mathvariant="normal">°</mi><mo>=</mo><msub><mi>y</mi><mn>1</mn></msub><mo>−</mo><msub><mi>x</mi><mn>1</mn></msub></mrow><annotation encoding="application/x-tex">y_2=y_1-x_1tan45°=y_1-x_1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.7777700000000001em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.84444em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mord">4</span><span class="mord">5</span><span class="mord">°</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.7777700000000001em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.58056em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>。写成矩阵的形式:</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>x</mi></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>y</mi></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>0</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mn>45</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>250</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>100</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>0</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mn>1</mn></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>250</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>100</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>250</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mn>150</mn></mrow></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow></mrow><annotation encoding="application/x-tex">\left[\begin{matrix} x\\ y \end{matrix}\right]=\left[\begin{matrix} 1&0\\ -tan(45°)&1 \end{matrix}\right]\left[\begin{matrix} 250\\ 100 \end{matrix}\right]=\left[\begin{matrix} 1&0\\ -1&1 \end{matrix}\right]\left[\begin{matrix} 250\\ 100 \end{matrix}\right]=\left[ \begin{matrix} 250\\ -150 \end{matrix}\right]</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">x</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">4</span><span class="mord">5</span><span class="mord">°</span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">0</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">5</span><span class="mord">0</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span><span class="mord">0</span><span class="mord">0</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">0</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">5</span><span class="mord">0</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span><span class="mord">0</span><span class="mord">0</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">5</span><span class="mord">0</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord">1</span><span class="mord">5</span><span class="mord">0</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span></span></span></span></span></p><p>发现纵坐标<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>y</mi><mo><</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">y<0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7335400000000001em;vertical-align:-0.19444em;"></span><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel"><</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span>,则旋转角度超过了范围,则在此基础上顺时针"回转"<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mi>θ</mi><mo stretchy="false">)</mo><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac></mrow><annotation encoding="application/x-tex">tan(θ)=\frac{1}{2}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1.190108em;vertical-align:-0.345em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">2</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span>的<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>θ</mi></mrow><annotation encoding="application/x-tex">θ</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span></span>角(<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>θ</mi><mo>=</mo><mn>26.565051177078</mn><mi mathvariant="normal">°</mi></mrow><annotation encoding="application/x-tex">θ=26.565051177078°</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord">2</span><span class="mord">6</span><span class="mord">.</span><span class="mord">5</span><span class="mord">6</span><span class="mord">5</span><span class="mord">0</span><span class="mord">5</span><span class="mord">1</span><span class="mord">1</span><span class="mord">7</span><span class="mord">7</span><span class="mord">0</span><span class="mord">7</span><span class="mord">8</span><span class="mord">°</span></span></span></span>)。写成矩阵的形式:</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>x</mi></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>y</mi></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>0</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mn>26.565051177078</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>250</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mn>150</mn></mrow></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>0</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mfrac><mn>1</mn><mn>2</mn></mfrac></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>250</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mn>150</mn></mrow></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>250</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mn>25</mn></mrow></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow></mrow><annotation encoding="application/x-tex">\left[\begin{matrix} x\\ y \end{matrix}\right]=\left[\begin{matrix} 1&0\\ tan(26.565051177078°)&1 \end{matrix}\right]\left[\begin{matrix} 250\\ -150 \end{matrix}\right]=\left[\begin{matrix} 1&0\\ \frac{1}{2}&1 \end{matrix}\right]\left[\begin{matrix} 250\\ -150 \end{matrix}\right]=\left[ \begin{matrix} 250\\ -25 \end{matrix}\right]</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">x</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">2</span><span class="mord">6</span><span class="mord">.</span><span class="mord">5</span><span class="mord">6</span><span class="mord">5</span><span class="mord">0</span><span class="mord">5</span><span class="mord">1</span><span class="mord">1</span><span class="mord">7</span><span class="mord">7</span><span class="mord">0</span><span class="mord">7</span><span class="mord">8</span><span class="mord">°</span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">0</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">5</span><span class="mord">0</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord">1</span><span class="mord">5</span><span class="mord">0</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.4051080000000002em;vertical-align:-0.9525540000000003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.452554em;"><span style="top:-3.612554em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span><span style="top:-2.4074459999999998em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">2</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9525540000000003em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.452554em;"><span style="top:-3.612554em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">0</span></span></span><span style="top:-2.4074459999999998em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9525540000000003em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">5</span><span class="mord">0</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord">1</span><span class="mord">5</span><span class="mord">0</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">5</span><span class="mord">0</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord">2</span><span class="mord">5</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span></span></span></span></span></p><p>发现纵坐标<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>y</mi><mo><</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">y<0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7335400000000001em;vertical-align:-0.19444em;"></span><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel"><</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span>,则旋转角度依然不够,则在此基础上顺时针"回转"<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mi>θ</mi><mo stretchy="false">)</mo><mo>=</mo><mfrac><mn>1</mn><mn>4</mn></mfrac></mrow><annotation encoding="application/x-tex">tan(θ)=\frac{1}{4}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1.190108em;vertical-align:-0.345em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">4</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span>的<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>θ</mi></mrow><annotation encoding="application/x-tex">θ</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span></span>角(<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>θ</mi><mo>=</mo><mn>14.036243467926477</mn><mi mathvariant="normal">°</mi></mrow><annotation encoding="application/x-tex">θ=14.036243467926477°</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord">1</span><span class="mord">4</span><span class="mord">.</span><span class="mord">0</span><span class="mord">3</span><span class="mord">6</span><span class="mord">2</span><span class="mord">4</span><span class="mord">3</span><span class="mord">4</span><span class="mord">6</span><span class="mord">7</span><span class="mord">9</span><span class="mord">2</span><span class="mord">6</span><span class="mord">4</span><span class="mord">7</span><span class="mord">7</span><span class="mord">°</span></span></span></span>)。写成矩阵的形式:</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>x</mi></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>y</mi></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>0</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mn>14.036243467926477</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>250</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mn>25</mn></mrow></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>0</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mfrac><mn>1</mn><mn>4</mn></mfrac></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>250</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mn>25</mn></mrow></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>250</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>37.5</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow></mrow><annotation encoding="application/x-tex">\left[\begin{matrix} x\\ y \end{matrix}\right]=\left[\begin{matrix} 1&0\\ tan(14.036243467926477°)&1 \end{matrix}\right]\left[\begin{matrix} 250\\ -25 \end{matrix}\right]=\left[\begin{matrix} 1&0\\ \frac{1}{4}&1 \end{matrix}\right]\left[\begin{matrix} 250\\ -25 \end{matrix}\right]=\left[ \begin{matrix} 250\\ 37.5 \end{matrix}\right]</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">x</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">1</span><span class="mord">4</span><span class="mord">.</span><span class="mord">0</span><span class="mord">3</span><span class="mord">6</span><span class="mord">2</span><span class="mord">4</span><span class="mord">3</span><span class="mord">4</span><span class="mord">6</span><span class="mord">7</span><span class="mord">9</span><span class="mord">2</span><span class="mord">6</span><span class="mord">4</span><span class="mord">7</span><span class="mord">7</span><span class="mord">°</span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">0</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">5</span><span class="mord">0</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord">2</span><span class="mord">5</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.4051080000000002em;vertical-align:-0.9525540000000003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.452554em;"><span style="top:-3.612554em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span><span style="top:-2.4074459999999998em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">4</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9525540000000003em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.452554em;"><span style="top:-3.612554em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">0</span></span></span><span style="top:-2.4074459999999998em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9525540000000003em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">5</span><span class="mord">0</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord">2</span><span class="mord">5</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">5</span><span class="mord">0</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">3</span><span class="mord">7</span><span class="mord">.</span><span class="mord">5</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span></span></span></span></span></p><p>发现纵坐标<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>y</mi><mo>></mo><mn>0</mn></mrow><annotation encoding="application/x-tex">y>0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7335400000000001em;vertical-align:-0.19444em;"></span><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span>,则旋转角度超过了范围,则在此基础上继续逆时针"旋转"<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mi>θ</mi><mo stretchy="false">)</mo><mo>=</mo><mfrac><mn>1</mn><mn>8</mn></mfrac></mrow><annotation encoding="application/x-tex">tan(θ)=\frac{1}{8}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1.190108em;vertical-align:-0.345em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">8</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span>的<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>θ</mi></mrow><annotation encoding="application/x-tex">θ</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span></span></span></span>角(<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>θ</mi><mo>=</mo><mn>7.125016348901798</mn><mi mathvariant="normal">°</mi></mrow><annotation encoding="application/x-tex">θ=7.125016348901798°</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.02778em;">θ</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.69444em;vertical-align:0em;"></span><span class="mord">7</span><span class="mord">.</span><span class="mord">1</span><span class="mord">2</span><span class="mord">5</span><span class="mord">0</span><span class="mord">1</span><span class="mord">6</span><span class="mord">3</span><span class="mord">4</span><span class="mord">8</span><span class="mord">9</span><span class="mord">0</span><span class="mord">1</span><span class="mord">7</span><span class="mord">9</span><span class="mord">8</span><span class="mord">°</span></span></span></span>)。写成矩阵的形式:</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>x</mi></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi>y</mi></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>0</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mn>7.125016348901798</mn><mi mathvariant="normal">°</mi><mo stretchy="false">)</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>250</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>37.5</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>0</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mo>−</mo><mfrac><mn>1</mn><mn>8</mn></mfrac></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>1</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>250</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>37.5</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>=</mo><mrow><mo fence="true">[</mo><mtable rowspacing="0.15999999999999992em" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>250</mn></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mn>6.25</mn></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow></mrow><annotation encoding="application/x-tex">\left[\begin{matrix} x\\ y \end{matrix}\right]=\left[\begin{matrix} 1&0\\ -tan(7.125016348901798°)&1 \end{matrix}\right]\left[\begin{matrix} 250\\ 37.5 \end{matrix}\right]=\left[\begin{matrix} 1&0\\ -\frac{1}{8}&1 \end{matrix}\right]\left[\begin{matrix} 250\\ 37.5 \end{matrix}\right]=\left[ \begin{matrix} 250\\ 6.25 \end{matrix}\right]</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">x</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord">7</span><span class="mord">.</span><span class="mord">1</span><span class="mord">2</span><span class="mord">5</span><span class="mord">0</span><span class="mord">1</span><span class="mord">6</span><span class="mord">3</span><span class="mord">4</span><span class="mord">8</span><span class="mord">9</span><span class="mord">0</span><span class="mord">1</span><span class="mord">7</span><span class="mord">9</span><span class="mord">8</span><span class="mord">°</span><span class="mclose">)</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">0</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">5</span><span class="mord">0</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">3</span><span class="mord">7</span><span class="mord">.</span><span class="mord">5</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.4051080000000002em;vertical-align:-0.9525540000000003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.452554em;"><span style="top:-3.612554em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span><span style="top:-2.4074459999999998em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">−</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.845108em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">8</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9525540000000003em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:0.5em;"></span><span class="arraycolsep" style="width:0.5em;"></span><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.452554em;"><span style="top:-3.612554em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">0</span></span></span><span style="top:-2.4074459999999998em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9525540000000003em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">5</span><span class="mord">0</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">3</span><span class="mord">7</span><span class="mord">.</span><span class="mord">5</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:2.40003em;vertical-align:-0.95003em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">[</span></span><span class="mord"><span class="mtable"><span class="col-align-c"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.45em;"><span style="top:-3.61em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span><span class="mord">5</span><span class="mord">0</span></span></span><span style="top:-2.4099999999999997em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">6</span><span class="mord">.</span><span class="mord">2</span><span class="mord">5</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.9500000000000004em;"><span></span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">]</span></span></span></span></span></span></span></p><p>这时纵坐标已经比较接近<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mn>0</mn></mrow><annotation encoding="application/x-tex">0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span>了。类似的,按照这个模式继续算下去,可以不断逼近真实的结果。比如现在的结果范围为<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo stretchy="false">(</mo><mi>x</mi><mo separator="true">,</mo><mi>y</mi><mo stretchy="false">)</mo><mo>=</mo><mo stretchy="false">(</mo><mn>250</mn><mo separator="true">,</mo><mn>6.25</mn><mo>±</mo><mn>15.625</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(x,y)=(250,6.25±15.625)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord mathdefault">x</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">2</span><span class="mord">5</span><span class="mord">0</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">6</span><span class="mord">.</span><span class="mord">2</span><span class="mord">5</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">±</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">1</span><span class="mord">5</span><span class="mord">.</span><span class="mord">6</span><span class="mord">2</span><span class="mord">5</span><span class="mclose">)</span></span></span></span>,已经接近实际结果<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mo stretchy="false">(</mo><mi>x</mi><mo separator="true">,</mo><mi>y</mi><mo stretchy="false">)</mo><mo>=</mo><mo stretchy="false">(</mo><mn>250</mn><mo separator="true">,</mo><mn>0</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(x,y)=(250,0)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord mathdefault">x</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">2</span><span class="mord">5</span><span class="mord">0</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord">0</span><span class="mclose">)</span></span></span></span>了。旋转过程演示图如下。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/cordic-algorithm/linear-rotate.png" alt="linear-rotate" /></p><p>线性坐标系的"旋转"其实与圆周坐标系下的旋转含义并不相同了,因为这里的矩阵变化(所谓旋转)其实表现的就是一种迭代映射,其变换逻辑图如下:</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/cordic-algorithm/linear-map.gif" alt="linear-map" /></p><p>注意,上述讨论分析的是使结果纵坐标<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>y</mi><mo>→</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">y\to0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.19444em;"></span><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">→</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.64444em;vertical-align:0em;"></span><span class="mord">0</span></span></span></span>的<code>cordic</code>旋转变换,因此是<b><font color= red >向量模式(vector mode)</font></b>。</p><ul><li>线性坐标的向量模式(vector mode)的公式为(根据上述内容推导,<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>z</mi></mrow><annotation encoding="application/x-tex">z</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.43056em;vertical-align:0em;"></span><span class="mord mathdefault" style="margin-right:0.04398em;">z</span></span></span></span>为<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>t</mi><mi>a</mi><mi>n</mi><mo stretchy="false">(</mo><mi>y</mi><mn>1</mn><mi mathvariant="normal">/</mi><mi>x</mi><mn>1</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">tan(y1/x1)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord mathdefault">t</span><span class="mord mathdefault">a</span><span class="mord mathdefault">n</span><span class="mopen">(</span><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="mord">1</span><span class="mord">/</span><span class="mord mathdefault">x</span><span class="mord">1</span><span class="mclose">)</span></span></span></span>,注意<code>cordic</code>算法规定迭代n从1开始,且由于没有迭代乘法,并不存在伸缩因子<span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>K</mi><mi>n</mi></msub></mrow><annotation encoding="application/x-tex">K_n</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.83333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.07153em;">K</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.07153em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>)</li></ul><ol><li><p>迭代式:</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>x</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>x</mi><mi>i</mi></msub></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>y</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>y</mi><mi>i</mi></msub><mo>−</mo><msub><mi>d</mi><mi>i</mi></msub><mfrac><msub><mi>x</mi><mi>i</mi></msub><msup><mn>2</mn><mi>i</mi></msup></mfrac></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>z</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>z</mi><mi>i</mi></msub><mo>+</mo><msub><mi>d</mi><mi>i</mi></msub><mfrac><msub><mi>x</mi><mi>i</mi></msub><msup><mn>2</mn><mi>i</mi></msup></mfrac></mrow></mstyle></mtd></mtr></mtable></mrow><mspace linebreak="newline"></mspace><mi>w</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>e</mi><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>d</mi><mi>i</mi></msub><mo>=</mo><mo>+</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle><mtext>>0</mtext></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>d</mi><mi>i</mi></msub><mo>=</mo><mo>−</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>i</mi></msub></mstyle><mtext>≤0</mtext></mrow></mstyle></mtd></mtr></mtable></mrow></mrow><annotation encoding="application/x-tex">\begin{cases}x_{i+1} = x_i\\y_{i+1} = y_i - d_i\frac{x_i}{2^i}\\z_{i+1} = z_i + d_i\frac{x_i}{2^i}\\\end{cases}\\where\begin{cases}d_i = +1, & \text{if $y_i$>0} \\d_i = -1, & \text{if $y_i$≤0}\end{cases}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:4.32em;vertical-align:-1.9099999999999997em;"></span><span class="minner"><span class="mopen"><span class="delimsizing mult"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.35002em;"><span style="top:-2.19999em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎩</span></span></span><span style="top:-2.19999em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-3.1500100000000004em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎨</span></span></span><span style="top:-4.30001em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-4.60002em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎧</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.8500199999999998em;"><span></span></span></span></span></span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.41em;"><span style="top:-4.41em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.97em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.7114919999999999em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7570857142857143em;"><span style="top:-2.786em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.4101em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathdefault mtight">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3280857142857143em;"><span style="top:-2.357em;margin-left:0em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.143em;"><span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-1.5300000000000002em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.7114919999999999em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7570857142857143em;"><span style="top:-2.786em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.4101em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathdefault mtight">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3280857142857143em;"><span style="top:-2.357em;margin-left:0em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.143em;"><span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.9099999999999997em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:3.0000299999999998em;vertical-align:-1.25003em;"></span><span class="mord mathdefault" style="margin-right:0.02691em;">w</span><span class="mord mathdefault">h</span><span class="mord mathdefault">e</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">e</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">{</span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">+</span><span class="mord">1</span><span class="mpunct">,</span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">d</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">−</span><span class="mord">1</span><span class="mpunct">,</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">>0</span></span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">≤0</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span></p></li><li><p>结果式:</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>x</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>x</mi><mi>n</mi></msub><mo>=</mo><msub><mi>x</mi><mn>0</mn></msub><mspace linebreak="newline"></mspace><msub><mi>y</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>y</mi><mn>0</mn></msub><mo>−</mo><munderover><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mi>n</mi></munderover><mfrac><mrow><mi>d</mi><msub><mi>x</mi><mi>n</mi></msub></mrow><msup><mn>2</mn><mi>n</mi></msup></mfrac><mspace linebreak="newline"></mspace><msub><mi>z</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>z</mi><mn>0</mn></msub><mo>+</mo><munderover><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><mfrac><mi>d</mi><msup><mn>2</mn><mi>n</mi></msup></mfrac><mspace linebreak="newline"></mspace><mi>w</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>e</mi><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>d</mi><mo>=</mo><mo>+</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>n</mi></msub></mstyle><mtext>>0</mtext></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>d</mi><mo>=</mo><mo>−</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>y</mi><mi>n</mi></msub></mstyle><mtext>≤0</mtext></mrow></mstyle></mtd></mtr></mtable></mrow></mrow><annotation encoding="application/x-tex">x_{n+1} = x_n = x_0\\y_{n+1} = y_0 - \sum_{n=0}^{n}\frac{dx_n}{2^n}\\z_{n+1} = z_0 + \sum_{n=1}^{n}\frac{d}{2^n}\\where\begin{cases}d = +1, & \text{if $y_n$>0} \\d = -1, & \text{if $y_n$≤0}\end{cases}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.638891em;vertical-align:-0.208331em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.301108em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.58056em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.58056em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">0</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.638891em;vertical-align:-0.208331em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.301108em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.7777700000000001em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">0</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:2.9185100000000004em;vertical-align:-1.267113em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.6513970000000002em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.37144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.590392em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.638891em;vertical-align:-0.208331em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.301108em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.73333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">0</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:2.9185100000000004em;vertical-align:-1.267113em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.6513970000000002em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">1</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.37144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.590392em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">d</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:3.0000299999999998em;vertical-align:-1.25003em;"></span><span class="mord mathdefault" style="margin-right:0.02691em;">w</span><span class="mord mathdefault">h</span><span class="mord mathdefault">e</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">e</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">{</span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">+</span><span class="mord">1</span><span class="mpunct">,</span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">−</span><span class="mord">1</span><span class="mpunct">,</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">>0</span></span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">≤0</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span></p></li></ol><ul><li>圆周坐标下旋转模式(rotation mode)的公式为</li></ul><ol><li><p>迭代式:</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>x</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>x</mi><mi>i</mi></msub></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>y</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>y</mi><mi>i</mi></msub><mo>+</mo><mi>d</mi><mfrac><msub><mi>x</mi><mi>i</mi></msub><msup><mn>2</mn><mi>i</mi></msup></mfrac></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><msub><mi>z</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>z</mi><mi>i</mi></msub><mo>−</mo><mi>d</mi><mfrac><msub><mi>x</mi><mi>i</mi></msub><msup><mn>2</mn><mi>i</mi></msup></mfrac></mrow></mstyle></mtd></mtr></mtable></mrow><mspace linebreak="newline"></mspace><mi>w</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>e</mi><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>d</mi><mo>=</mo><mo>+</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>z</mi><mi>i</mi></msub></mstyle><mtext>>0</mtext></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>d</mi><mo>=</mo><mo>−</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>z</mi><mi>i</mi></msub></mstyle><mtext>≤0</mtext></mrow></mstyle></mtd></mtr></mtable></mrow></mrow><annotation encoding="application/x-tex">\begin{cases}x_{i+1} = x_i\\y_{i+1} = y_i + d\frac{x_i}{2^i}\\z_{i+1} = z_i - d\frac{x_i}{2^i}\\\end{cases}\\where\begin{cases}d = +1, & \text{if $z_i$>0} \\d = -1, & \text{if $z_i$≤0}\end{cases}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:4.32em;vertical-align:-1.9099999999999997em;"></span><span class="minner"><span class="mopen"><span class="delimsizing mult"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.35002em;"><span style="top:-2.19999em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎩</span></span></span><span style="top:-2.19999em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-3.1500100000000004em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎨</span></span></span><span style="top:-4.30001em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎪</span></span></span><span style="top:-4.60002em;"><span class="pstrut" style="height:3.15em;"></span><span class="delimsizinginner delim-size4"><span>⎧</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.8500199999999998em;"><span></span></span></span></span></span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.41em;"><span style="top:-4.41em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.97em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord mathdefault">d</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.7114919999999999em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7570857142857143em;"><span style="top:-2.786em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.4101em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathdefault mtight">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3280857142857143em;"><span style="top:-2.357em;margin-left:0em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.143em;"><span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-1.5300000000000002em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.311664em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">i</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mord mathdefault">d</span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.7114919999999999em;"><span style="top:-2.6550000000000002em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mtight">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7570857142857143em;"><span style="top:-2.786em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.4101em;"><span class="pstrut" style="height:3em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathdefault mtight">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3280857142857143em;"><span style="top:-2.357em;margin-left:0em;margin-right:0.07142857142857144em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.143em;"><span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.345em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.9099999999999997em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:3.0000299999999998em;vertical-align:-1.25003em;"></span><span class="mord mathdefault" style="margin-right:0.02691em;">w</span><span class="mord mathdefault">h</span><span class="mord mathdefault">e</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">e</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">{</span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">+</span><span class="mord">1</span><span class="mpunct">,</span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">−</span><span class="mord">1</span><span class="mpunct">,</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">>0</span></span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.31166399999999994em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">i</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">≤0</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span></p></li><li><p>结果式:</p><p><span class="katex-display"><span class="katex"><span class="katex-mathml"><math><semantics><mrow><msub><mi>x</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>x</mi><mi>n</mi></msub><mo>=</mo><msub><mi>x</mi><mn>0</mn></msub><mspace linebreak="newline"></mspace><msub><mi>y</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>y</mi><mn>0</mn></msub><mo>+</mo><munderover><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow><mi>n</mi></munderover><mfrac><mrow><mi>d</mi><msub><mi>x</mi><mi>n</mi></msub></mrow><msup><mn>2</mn><mi>n</mi></msup></mfrac><mspace linebreak="newline"></mspace><msub><mi>z</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><msub><mi>z</mi><mn>0</mn></msub><mo>−</mo><munderover><mo>∑</mo><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><mfrac><mi>d</mi><msup><mn>2</mn><mi>n</mi></msup></mfrac><mspace linebreak="newline"></mspace><mi>w</mi><mi>h</mi><mi>e</mi><mi>r</mi><mi>e</mi><mrow><mo fence="true">{</mo><mtable rowspacing="0.3599999999999999em" columnalign="left left" columnspacing="1em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>d</mi><mo>=</mo><mo>+</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>z</mi><mi>n</mi></msub></mstyle><mtext>>0</mtext></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mi>d</mi><mo>=</mo><mo>−</mo><mn>1</mn><mo separator="true">,</mo></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="false"><mrow><mtext>if </mtext><mstyle scriptlevel="0" displaystyle="false"><msub><mi>z</mi><mi>n</mi></msub></mstyle><mtext>≤0</mtext></mrow></mstyle></mtd></mtr></mtable></mrow></mrow><annotation encoding="application/x-tex">x_{n+1} = x_n = x_0\\y_{n+1} = y_0 + \sum_{n=0}^{n}\frac{dx_n}{2^n}\\z_{n+1} = z_0 - \sum_{n=1}^{n}\frac{d}{2^n}\\where\begin{cases}d = +1, & \text{if $z_n$>0} \\d = -1, & \text{if $z_n$≤0}\end{cases}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.638891em;vertical-align:-0.208331em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.301108em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.58056em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.58056em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">0</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.638891em;vertical-align:-0.208331em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.301108em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.7777700000000001em;vertical-align:-0.19444em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.03588em;">y</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.03588em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">0</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:2.9185100000000004em;vertical-align:-1.267113em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.6513970000000002em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">0</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.37144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.590392em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="mord"><span class="mord mathdefault">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:0.638891em;vertical-align:-0.208331em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.301108em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mbin mtight">+</span><span class="mord mtight">1</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.208331em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span></span><span class="base"><span class="strut" style="height:0.73333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.30110799999999993em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">0</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:2.9185100000000004em;vertical-align:-1.267113em;"></span><span class="mop op-limits"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.6513970000000002em;"><span style="top:-1.882887em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span><span class="mrel mtight">=</span><span class="mord mtight">1</span></span></span></span><span style="top:-3.050005em;"><span class="pstrut" style="height:3.05em;"></span><span><span class="mop op-symbol large-op">∑</span></span></span><span style="top:-4.3000050000000005em;margin-left:0em;"><span class="pstrut" style="height:3.05em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.267113em;"><span></span></span></span></span></span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.37144em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord">2</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.590392em;"><span style="top:-2.9890000000000003em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathdefault">d</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span><span class="mspace newline"></span><span class="base"><span class="strut" style="height:3.0000299999999998em;vertical-align:-1.25003em;"></span><span class="mord mathdefault" style="margin-right:0.02691em;">w</span><span class="mord mathdefault">h</span><span class="mord mathdefault">e</span><span class="mord mathdefault" style="margin-right:0.02778em;">r</span><span class="mord mathdefault">e</span><span class="mspace" style="margin-right:0.16666666666666666em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size4">{</span></span><span class="mord"><span class="mtable"><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">+</span><span class="mord">1</span><span class="mpunct">,</span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord mathdefault">d</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2777777777777778em;"></span><span class="mord">−</span><span class="mord">1</span><span class="mpunct">,</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span><span class="arraycolsep" style="width:1em;"></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.69em;"><span style="top:-3.69em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">>0</span></span></span></span><span style="top:-2.25em;"><span class="pstrut" style="height:3.008em;"></span><span class="mord"><span class="mord text"><span class="mord">if </span><span class="mord"><span class="mord mathdefault" style="margin-right:0.04398em;">z</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.151392em;"><span style="top:-2.5500000000000003em;margin-left:-0.04398em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathdefault mtight">n</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">≤0</span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:1.19em;"><span></span></span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span></p></li></ol><h4 id="font-color-b5d5ff-stylefont-weightbold-双曲坐标系font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold-双曲坐标系font"></a> <font color= #b5d5ff style='font-weight:bold'> 双曲坐标系</font></h4><blockquote><p>双曲坐标系的<code>cordic</code>旋转比较类似于圆周坐标系。</p></blockquote><p>注意特殊的<strong>重复迭代</strong>。</p><h2 id="font-color-b5d5ff-stylefont-weightbold应用问题font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold应用问题font"></a> <font color= #b5d5ff style='font-weight:bold'>应用问题</font></h2><h3 id="font-color-b5d5ff-stylefont-weightboldcordic功能表font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldcordic功能表font"></a> <font color= #b5d5ff style='font-weight:bold'>cordic功能表</font></h3><p>图源为参考文献<sup>[6]</sup> ,侵删。</p><p><img src="https://cdn-1301954091.cos.ap-chengdu.myqcloud.com/blog/posts/cordic-algorithm/cordic_function_list.png" alt="cordic_function_list" /></p><h3 id="font-color-b5d5ff-stylefont-weightboldcordic计算范围及转换font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldcordic计算范围及转换font"></a> <font color= #b5d5ff style='font-weight:bold'>cordic计算范围及转换</font></h3><blockquote><p><code>cordic</code>算法的计算是有范围限制的,超范围的值需要进行转换后才能利用<code>cordic</code>算法进行计算。</p></blockquote><h3 id="font-color-b5d5ff-stylefont-weightboldcordic计算误差font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldcordic计算误差font"></a> <font color= #b5d5ff style='font-weight:bold'>cordic计算误差</font></h3><blockquote><p>近似误差和舍入误差</p></blockquote><p>见参考文献<sup>[7]</sup></p><h2 id="font-color-b5d5ff-stylefont-weightboldfpga实现font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightboldfpga实现font"></a> <font color= #b5d5ff style='font-weight:bold'>FPGA实现</font></h2><h1 id="font-color-b5d5ff-stylefont-weightbold总结font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold总结font"></a> <font color= #b5d5ff style='font-weight:bold'>总结</font></h1><hr /><p><font color= greden style='font-weight:bold' font size= 8>未完待续…放弃施工…</font></p><h1 id="font-color-b5d5ff-stylefont-weightbold参考资料font"><a class="markdownIt-Anchor" href="#font-color-b5d5ff-stylefont-weightbold参考资料font"></a> <font color= #b5d5ff style='font-weight:bold'>参考资料</font></h1><p>[1] 邹熙. 基于CORDIC的指数函数的FPGA实现[J]. 大众科技, 2008, 000(010):36-37.</p><p>[2] <a href="https://blog.csdn.net/xiabodan/article/details/10948521?depth_1-utm_source=distribute.wap_relevant.none-task&utm_source=distribute.wap_relevant.none-task">三角函数计算,Cordic 算法入门</a></p><p>[3] <a href="https://baike.baidu.com/item/CORDIC/5189325?fr=aladdin">CORDIC_百度百科</a></p><p>[4] 周晓青, 李合生, 陶荣辉, et al. 基于CORDIC算法的双曲正余弦函数FPGA实现[J]. 太赫兹科学与电子信息学报, 2010(2):211-214.</p><p>[5] <a href="https://blog.csdn.net/u010712012/article/details/77755567">cordic算法详解 转载</a></p><p>[6] Xilinx CORDIC算法</p><p>[7] Y. H. Hu, “The Quantization Effects of the CORDIC Algorithm”, in IEEE Trans. On Signal Processing, Vol 40,<br />No 4, April 1992</p>]]></content>
<categories>
<category> ic </category>
<category> design </category>
</categories>
<tags>
<tag> cordic </tag>
</tags>
</entry>
<entry>
<title>hexo&butterfly</title>
<link href="/posts/hexo-and-butterfly/"/>
<url>/posts/hexo-and-butterfly/</url>
<content type="html"><![CDATA[<h1 id="hexo使用"><a class="markdownIt-Anchor" href="#hexo使用"></a> hexo使用</h1><h2 id="流程"><a class="markdownIt-Anchor" href="#流程"></a> 流程</h2><p>在git bash中跳转到hexo的博客文件夹,输入</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ hexo new <span class="built_in">test</span></span><br><span class="line">INFO Created: ~\desktop\hexo\blog\<span class="built_in">source</span>\_posts\test.md</span><br></pre></td></tr></table></figure><p>找到该文章,打开,使用<a href="https://www.jianshu.com/p/191d1e21f7ed/">Markdown语法</a></p><p>注意每次generate之前最好清除掉之前的缓存。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo clean</span><br></pre></td></tr></table></figure><p>编辑完成后,执行以下命令(简写hexo g / hexo s)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo generate</span><br></pre></td></tr></table></figure><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">$ hexo server</span><br><span class="line">INFO Start processing</span><br><span class="line">INFO Hexo is running at http://localhost:4000 . Press Ctrl+C to stop.</span><br></pre></td></tr></table></figure><p>打开<a href="http://localhost:4000">http://localhost:4000/</a>,文章已经成功发布。</p><p>然后发布到github上,执行以下命令(简写hexo d)</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo deploy</span><br></pre></td></tr></table></figure><h2 id="草稿"><a class="markdownIt-Anchor" href="#草稿"></a> 草稿</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo new (post)</span><br></pre></td></tr></table></figure><p>其实是省略了post的写法,会新生成一个post页面。</p><p>如果暂时不想发布,只想作为草稿编辑的话,应使用</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo new draft XXX</span><br></pre></td></tr></table></figure><p>通过以下命令查看带草稿页面的hexo预览。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo server --draft</span><br></pre></td></tr></table></figure><p>通过以下命令将草稿页面publish到正式的post文件中,并自动添加发布时间。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo pubulish XXX newXXX </span><br></pre></td></tr></table></figure><h1 id="butterfly使用"><a class="markdownIt-Anchor" href="#butterfly使用"></a> butterfly使用</h1><p><s>butterfly v3.0.0 地址迁移至<a href="https://demo.jerryc.me/">Butterfly - A Simple and Card UI Design theme for Hexo</a></s></p><p>butterfly地址迁移至<a href="https://butterfly.js.org/">Butterfly - A Simple and Card UI Design theme for Hexo</a>。</p><p>以下内容均转自<a href="https://demo.jerryc.me/">Butterfly - A Simple and Card UI Design theme for Hexo</a>,<a href="https://lovelijunyi.gitee.io/posts/c898.html">小弋の生活馆全样式预览 | 小弋の生活馆</a>以及 <a href="https://www.antmoe.com/posts/a811d614/index.html">Hexo博客之butterfly主题优雅魔改系列(持续更新) | 小康博客</a>,相关内容可自行去各位大佬博客查询。</p><h2 id="渐变色"><a class="markdownIt-Anchor" href="#渐变色"></a> 渐变色</h2><blockquote><p>直接生成即可。<a href="https://www.sioe.cn/yingyong/caisejianbianzi-html/">彩色渐变字HTML代码生成器</a></p></blockquote><p><font color="#FFA000">渐</font><font color="#E06D33">变</font><font color="#E03A66">色</font><font color="#E00799">文</font><font color="#E000CC">字</font></p><h2 id="标签外挂note"><a class="markdownIt-Anchor" href="#标签外挂note"></a> 标签外挂(note)</h2><h3 id="主题自带note"><a class="markdownIt-Anchor" href="#主题自带note"></a> 主题自带note</h3><blockquote><p>主题自带的标签。</p></blockquote><div class="note default flat"><p>default 提示塊標籤</p></div><div class="note primary no-icon flat"><p>primary 提示塊標籤</p></div><div class="note success flat"><p>success 提示塊標籤</p></div><div class="note info flat"><p>info 提示塊標籤</p></div><div class="note warning flat"><p>warning 提示塊標籤</p></div><div class="note danger flat"><p>danger 提示塊標籤</p></div><h3 id="另一种note"><a class="markdownIt-Anchor" href="#另一种note"></a> 另一种note</h3><blockquote><p>实现起来也很简单,只是对简单的 p 标签进行修改,为了方便添加颜色,这里提供了以上五种配色的样式。</p></blockquote><p>使用起来也会简单,为了兼容各种平台,不推荐 tag 标签的写法。因此只又 html 标签的写法。这样做的好处是即便复制到各大平台也不会出现奇奇怪怪的标签符号或者报错。</p><p>note 效果展示:</p><p class='div-border green'>绿色</p><p class='div-border red'>红色</p><p class='div-border yellow'>黄色</p><p class='div-border grey'>灰色</p><p class='div-border blue'>蓝色</p><p>小 tag 标签效果展示:</p><p><span class="inline-tag red">红色小标签</span><br /><span class="inline-tag green">绿色小标签</span><br /><span class="inline-tag blue">蓝色小标签</span><br /><span class="inline-tag yellow">黄色小标签</span><br /><span class="inline-tag grey">灰色小标签</span></p><h3 id="渐变note上标式外挂标签"><a class="markdownIt-Anchor" href="#渐变note上标式外挂标签"></a> 渐变note(上标式外挂标签)</h3><blockquote><p>因为标签外挂的语法会导致复制到其他平台不便利,因此建议使用 HTML 写法。</p></blockquote><div class='tip' ><p>默认情况<p></div><div class='tip success'><p>success<p></div><div class='tip error'><p>error<p></div><div class='tip warning'><p>warning<p></div><div class="tip wtgo"><p>为简单的一句话提供的简便写法。</p><p></p></div><div class="tip ban"><p>为简单的一句话提供的简便写法。</p><p></p></div><div class="tip home"><p>为简单的一句话提供的简便写法。</p><p></p></div><div class="tip important"><p>为简单的一句话提供的简便写法。</p><p></p></div><div class="tip ref"><p>为简单的一句话提供的简便写法。</p><p></p></div><div class="tip ffa"><p>为简单的一句话提供的简便写法。</p><p></p></div><div class="tip key"><p>为简单的一句话提供的简便写法。</p><p></p></div><div class="tip socd"><p>为简单的一句话提供的简便写法。</p><p></p></div><h3 id="动画标签"><a class="markdownIt-Anchor" href="#动画标签"></a> 动画标签</h3><p>各种标签也可以用<code>html</code>的方式配合上动画,变成<strong>动画标签</strong>,效果还是比较夸张的!!!</p><div class="tip faa-horizontal animated"><p>默认情况</p><p></p></div><div class="tip success faa-flash animated"><p>success</p><p></p></div><div class="tip error faa-spin animated"><p>error</p><p></p></div><div class="tip warning faa-shake animated"><p>warning</p><p></p></div><h3 id="volantis-主题的-note"><a class="markdownIt-Anchor" href="#volantis-主题的-note"></a> volantis 主题的 note</h3><blockquote><p>因为标签外挂的语法会导致复制到其他平台不便利,因此只提供 HTML 写法。</p></blockquote><div class="snote red"><p>默认 red</p></div><div class="snote info"><p>info</p></div><div class="snote done"><p>done</p></div><div class="snote success"><p>success</p></div><div class="snote danger"><p>danger</p></div><div class="snote error"><p>error</p></div><div class="snote radiation"><p>radiation</p></div><div class="snote bug"><p>bug</p></div><div class="snote idea yellow"><p>idea-yellow</p></div><div class="snote link blue"><p>link- blue</p></div><div class="snote paperclip"><p>paperclip</p></div><div class="snote todo"><p>todo</p></div><div class="snote msg cyan"><p>msg cyan</p></div><div class="snote guide"><p>guide</p></div><div class="snote download"><p>download</p></div><div class="snote up"><p>up</p></div><div class="snote undo"><p>undo</p></div><div class="snote quote"><p class="p subtitle">小标题</p><p>Windows 10不是为所有人设计,而是为每个人设计</p><p class="p subtitle">嵌套测试</p> <div class="snote done"><p>请坐和放宽,我正在帮你搞定一切…</p> </div> </div><h2 id="隐藏按钮tag-hide"><a class="markdownIt-Anchor" href="#隐藏按钮tag-hide"></a> 隐藏按钮(tag-hide )</h2><blockquote><p>主题自带的隐藏按钮。</p></blockquote><h3 id="inline"><a class="markdownIt-Anchor" href="#inline"></a> inline</h3><p>哪個英文字母最酷? <span class="hide-inline"><button type="button" class="hide-button button--animated" style="background-color: #FF7242;color: #fff">查看答案 </button><span class="hide-content">因為西裝褲(C裝酷)</span></span></p><p>門裏站着一個人? <span class="hide-inline"><button type="button" class="hide-button button--animated" style="">Click </button><span class="hide-content">閃</span></span></p><h3 id="block"><a class="markdownIt-Anchor" href="#block"></a> block</h3><div class="hide-block"><button type="button" class="hide-button button--animated" style="">查看答案 </button><div class="hide-content"><p>傻子,怎麼可能有答案</p></div></div><h3 id="toggle"><a class="markdownIt-Anchor" href="#toggle"></a> toggle</h3><div class="hide-toggle" ><div class="hide-button toggle-title" style=""><i class="fas fa-caret-right fa-fw"></i><span>Butterfly安裝方法</span></div> <div class="hide-content"><p>在你的博客根目錄裏</p><p>git clone -b master <a href="https://github.com/jerryc127/hexo-theme-butterfly.git">https://github.com/jerryc127/hexo-theme-butterfly.git</a> themes/Butterfly</p><p>如果想要安裝比較新的dev分支,可以</p><p>git clone -b dev <a href="https://github.com/jerryc127/hexo-theme-butterfly.git">https://github.com/jerryc127/hexo-theme-butterfly.git</a> themes/Butterfly</p></div></div><h2 id="标签"><a class="markdownIt-Anchor" href="#标签"></a> 标签</h2><p>简单的:</p><div class="tabs" id="test1-3"><ul class="nav-tabs"><li class="tab active"><button type="button" data-href="#test1-3-1">test1 3 1</button></li><li class="tab"><button type="button" data-href="#test1-3-2">test1 3 2</button></li><li class="tab"><button type="button" data-href="#test1-3-3">test1 3 3</button></li></ul><div class="tab-contents"><div class="tab-item-content active" id="test1-3-1"><p><strong>This is Tab 1.</strong></p><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="test1-3-2"><p><strong>This is Tab 2.</strong></p><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="test1-3-3"><p><strong>This is Tab 3.</strong></p><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div></div><p>带图标的:</p><div class="tabs" id="test4"><ul class="nav-tabs"><li class="tab active"><button type="button" data-href="#test4-1">第一個Tab</button></li><li class="tab"><button type="button" data-href="#test4-2"><i class="fab fa-apple-pay" style="text-align: center;"></i></button></li><li class="tab"><button type="button" data-href="#test4-3"><i class="fas fa-bomb"></i>炸彈</button></li></ul><div class="tab-contents"><div class="tab-item-content active" id="test4-1"><p><strong>tab名字為第一個Tab</strong></p><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="test4-2"><p><strong>只有圖標 沒有Tab名字</strong></p><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="test4-3"><p><strong>名字+icon</strong></p><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div></div><h2 id="复选框"><a class="markdownIt-Anchor" href="#复选框"></a> 复选框</h2><div class='checkbox'><input type="checkbox" /> <p>纯文本测试</p> </div><div class='checkbox checked'><input type="checkbox" checked="checked"/> <p>支持简单的 markdown 语法</p> </div><div class='checkbox red'><input type="checkbox" /> <p>支持自定义颜色</p> </div><div class='checkbox green checked'><input type="checkbox" checked="checked"/> <p>绿色 + 默认选中</p> </div><div class='checkbox yellow checked'><input type="checkbox" checked="checked"/> <p>黄色 + 默认选中</p> </div><div class='checkbox cyan checked'><input type="checkbox" checked="checked"/> <p>青色 + 默认选中</p> </div><div class='checkbox blue checked'><input type="checkbox" checked="checked"/> <p>蓝色 + 默认选中</p> </div><div class='checkbox plus green checked'><input type="checkbox" checked="checked"/> <p>增加</p> </div><div class='checkbox minus yellow checked'><input type="checkbox" checked="checked"/> <p>减少</p> </div><div class='checkbox times red checked'><input type="checkbox" checked="checked"/> <p>叉</p> </div><div class='checkbox'><input type="radio" /> <p>纯文本测试</p> </div><div class='checkbox checked'><input type="radio" checked="checked"/> <p>支持简单的 markdown 语法</p> </div><div class='checkbox red'><input type="radio" /> <p>支持自定义颜色</p> </div><div class='checkbox green'><input type="radio" /> <p>绿色</p> </div><div class='checkbox yellow'><input type="radio" /> <p>黄色</p> </div><div class='checkbox cyan'><input type="radio" /> <p>青色</p> </div><div class='checkbox blue'><input type="radio" /> <p>蓝色</p> </div><h2 id="按钮"><a class="markdownIt-Anchor" href="#按钮"></a> 按钮</h2><h3 id="文内按钮"><a class="markdownIt-Anchor" href="#文内按钮"></a> 文内按钮</h3><p>This is my website, click the button <a class="btn-beautify button--animated " href="http://www.jerryc.me" title="JerryC"><span>JerryC</span></a><br />This is my website, click the button <a class="btn-beautify button--animated " href="http://www.jerryc.me" title="JerryC"><i class="far fa-hand-point-right"></i><span>JerryC</span></a><br />This is my website, click the button <a class="btn-beautify button--animated outline" href="http://www.jerryc.me" title="JerryC"><span>JerryC</span></a><br />This is my website, click the button <a class="btn-beautify button--animated outline" href="http://www.jerryc.me" title="JerryC"><i class="far fa-hand-point-right"></i><span>JerryC</span></a><br />This is my website, click the button <a class="btn-beautify button--animated larger" href="http://www.jerryc.me" title="JerryC"><i class="far fa-hand-point-right"></i><span>JerryC</span></a></p><h3 id="独占一行的按钮"><a class="markdownIt-Anchor" href="#独占一行的按钮"></a> 独占一行的按钮</h3><a class="btn-beautify button--animated block" href="http://www.jerryc.me" title="JerryC"><i class="far fa-hand-point-right"></i><span>JerryC</span></a><a class="btn-beautify button--animated block center larger" href="http://www.jerryc.me" title="JerryC"><i class="far fa-hand-point-right"></i><span>JerryC</span></a><a class="btn-beautify button--animated block right outline larger" href="http://www.jerryc.me" title="JerryC"><i class="far fa-hand-point-right"></i><span>JerryC</span></a><h3 id="一行多个实心按钮"><a class="markdownIt-Anchor" href="#一行多个实心按钮"></a> 一行多个实心按钮</h3><a class="btn-beautify button--animated larger" href="http://www.jerryc.me" title="JerryC"><i class="far fa-hand-point-right"></i><span>JerryC</span></a><a class="btn-beautify button--animated blue larger" href="http://www.jerryc.me" title="JerryC"><i class="far fa-hand-point-right"></i><span>JerryC</span></a><a class="btn-beautify button--animated pink larger" href="http://www.jerryc.me" title="JerryC"><i class="far fa-hand-point-right"></i><span>JerryC</span></a><a class="btn-beautify button--animated red larger" href="http://www.jerryc.me" title="JerryC"><i class="far fa-hand-point-right"></i><span>JerryC</span></a><a class="btn-beautify button--animated purple larger" href="http://www.jerryc.me" title="JerryC"><i class="far fa-hand-point-right"></i><span>JerryC</span></a><a class="btn-beautify button--animated orange larger" href="http://www.jerryc.me" title="JerryC"><i class="far fa-hand-point-right"></i><span>JerryC</span></a><a class="btn-beautify button--animated green larger" href="http://www.jerryc.me" title="JerryC"><i class="far fa-hand-point-right"></i><span>JerryC</span></a><h3 id="一行多个空心按钮"><a class="markdownIt-Anchor" href="#一行多个空心按钮"></a> 一行多个空心按钮</h3><div class="btn-center"><a class="btn-beautify button--animated outline larger" href="http://www.jerryc.me" title="JerryC"><i class="far fa-hand-point-right"></i><span>JerryC</span></a><a class="btn-beautify button--animated outline blue larger" href="http://www.jerryc.me" title="JerryC"><i class="far fa-hand-point-right"></i><span>JerryC</span></a><a class="btn-beautify button--animated outline pink larger" href="http://www.jerryc.me" title="JerryC"><i class="far fa-hand-point-right"></i><span>JerryC</span></a><a class="btn-beautify button--animated outline red larger" href="http://www.jerryc.me" title="JerryC"><i class="far fa-hand-point-right"></i><span>JerryC</span></a><a class="btn-beautify button--animated outline purple larger" href="http://www.jerryc.me" title="JerryC"><i class="far fa-hand-point-right"></i><span>JerryC</span></a><a class="btn-beautify button--animated outline orange larger" href="http://www.jerryc.me" title="JerryC"><i class="far fa-hand-point-right"></i><span>JerryC</span></a><a class="btn-beautify button--animated outline green larger" href="http://www.jerryc.me" title="JerryC"><i class="far fa-hand-point-right"></i><span>JerryC</span></a></div><h2 id="inlineimg"><a class="markdownIt-Anchor" href="#inlineimg"></a> inlineImg</h2><p>你看我長得漂亮不</p><p><img src="https://i.loli.net/2021/03/19/2P6ivUGsdaEXSFI.png" alt="" /></p><p>我覺得很漂亮 <img class="inline-img" src="https://i.loli.net/2021/03/19/5M4jUB3ynq7ePgw.png" style="height:150px"/></p><h2 id="label"><a class="markdownIt-Anchor" href="#label"></a> label</h2><p>臣亮言:<mark class="hl-label default">先帝</mark> 創業未半,而<mark class="hl-label blue">中道崩殂</mark> 。今天下三分,<mark class="hl-label pink">益州疲敝</mark> ,此誠<mark class="hl-label red">危急存亡之秋</mark> 也!然侍衞之臣,不懈於內;<mark class="hl-label purple">忠志之士</mark> ,忘身於外者,蓋追先帝之殊遇,欲報之於陛下也。誠宜開張聖聽,以光先帝遺德,恢弘志士之氣;不宜妄自菲薄,引喻失義,以塞忠諫之路也。<br />宮中、府中,俱為一體;陟罰臧否,不宜異同。若有<mark class="hl-label orange">作奸</mark> 、<mark class="hl-label green">犯科</mark> ,及為忠善者,宜付有司,論其刑賞,以昭陛下平明之治;不宜偏私,使內外異法也。</p><h2 id="动画图标"><a class="markdownIt-Anchor" href="#动画图标"></a> 动画图标</h2><p>起源于看到<strong>Sakura</strong>主题的<a href="https://github.com/l-lin/font-awesome-animation" target="_blank" rel="noopener" one-link-mark="yes">Font Awesome</a>动态图标很好看,例如<i class="fa-fw fa fa-home faa-bounce animated"></i>主页图标,研究了一下,原来是一个<a href="https://github.com/l-lin/font-awesome-animation" target="_blank" rel="noopener" one-link-mark="yes">开源的css代码</a>,只要引入即可!</p><p><i class="fas fa-wrench faa-wrench animated"></i>自动动画</p><p><i class="fas fa-wrench faa-wrench animated-hover"></i>hover动画</p><h1 id="mermaid"><a class="markdownIt-Anchor" href="#mermaid"></a> Mermaid</h1><p>画流程图、甘特图、饼状图等,代码绘图。 <a class="btn-beautify button--animated red larger" href="https://mermaid-js.github.io/mermaid/#/" title="Mermaid"><i class="far fa-hand-point-right"></i><span>Mermaid</span></a></p><p>Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.</p><h2 id="流程图"><a class="markdownIt-Anchor" href="#流程图"></a> 流程图</h2><h3 id="各类形状框"><a class="markdownIt-Anchor" href="#各类形状框"></a> 各类形状框</h3><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">graph LR</span><br><span class="line"> A(A)</span><br><span class="line"> B[B]</span><br><span class="line"> C{C}</span><br><span class="line"> D((D))</span><br><span class="line"> E>E]</span><br><span class="line"> F{{F}}</span><br><span class="line"> G[/G/]</span><br><span class="line"> H[\H\] </span><br><span class="line"> I[/I\]</span><br><span class="line"> J[\J/]</span><br></pre></td></tr></table></figure><div class="mermaid">graph TB A(A) B[B] C{C} D((D)) E>E] F G[/G/] H[\H\] I[/I\] J[\J/]</div><h3 id="流程图-2"><a class="markdownIt-Anchor" href="#流程图-2"></a> 流程图</h3><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">graph TB</span><br><span class="line"> A[把大象放进去] --> B{"冰箱大小?"}</span><br><span class="line"> B -- 大 --> C[关冰箱门]</span><br><span class="line"> B -->|小| D[换大冰箱]</span><br><span class="line"> E -. 虚线 .- F</span><br><span class="line"> G -. 虚线箭头 .-> H</span><br><span class="line"> style E fill:#f9f,stroke:#333,stroke-width:4px</span><br><span class="line"> style G fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5</span><br></pre></td></tr></table></figure><div class="mermaid">graph TB A[把大象放进去] --> B{"冰箱大小?"} B -- 大 --> C[关冰箱门] B -->|小| D[换大冰箱] E -. 虚线 .- F G -. 虚线箭头 .-> H style E fill:#f9f,stroke:#333,stroke-width:4px style G fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5</div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">graph LR</span><br><span class="line"> A[Hard edge] -->|Link text| B(Round edge)</span><br><span class="line"> B --> C{Decision}</span><br><span class="line"> C -->|One| D[Result one]</span><br><span class="line"> C -->|Two| E[Result two]</span><br></pre></td></tr></table></figure><div class="mermaid">graph LR A[Hard edge] -->|Link text| B(Round edge) B --> C{Decision} C -->|One| D[Result one] C -->|Two| E[Result two]</div><h2 id="饼图"><a class="markdownIt-Anchor" href="#饼图"></a> 饼图</h2><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">pie</span><br><span class="line"><span class="code"> title Key elements in Product X</span></span><br><span class="line"><span class="code"> "Calcium" : 42.96</span></span><br><span class="line"><span class="code"> "Potassium" : 50.05</span></span><br><span class="line"><span class="code"> "Magnesium" : 10.01</span></span><br><span class="line"><span class="code"> "Iron" : 5</span></span><br></pre></td></tr></table></figure><div class="mermaid">pie title Key elements in Product X "Calcium" : 42.96 "Potassium" : 50.05 "Magnesium" : 10.01 "Iron" : 5</div>]]></content>
<categories>
<category> hexo </category>
</categories>
<tags>
<tag> hexo </tag>
<tag> butterfly </tag>
</tags>
</entry>
<entry>
<title>hexo博客相关配置</title>
<link href="/posts/hexo-blog-config/"/>
<url>/posts/hexo-blog-config/</url>
<content type="html"><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="Oh, this is an invalid password. Check and try again, please." data-whm="OOPS, these decrypted content may changed, but you can still have a look."> <script id="hbeData" type="hbeData" data-hmacdigest="215073fa2dcfdcb4e6362f5e5b10ace334557921c049a158a5cd638cb0c7be8d">a380b38e448643b3f3b8775066a6e2b1e4a039ec73fa168783bdf4aa246cc29099979e24b12a0ee38aac8ca5331644b0aa253868e503305fb5f68e3380b7657d3ccad49df82404d341634477cb88454dcb789c7b3f2873504f03dd435da835e737d9e5785fdaa0b2b1af4cbe19b30cfdf293a941f9435994b74ba1d8a2c0c436f4369e13594ed57a0301ea011b1824f8ef31826cb2f26c597a991aebbd685971204579bb757f6219b91005ab03078cb22767c8a2ec3759772776155f68ad81bd9a9bf539cd9b100a26edf4c19b861f69685cfe063fc2765a1d117428732eb760a81e3739cac02d4ca1c67d8527ea485f4fc761b45fb3281f8015ddb2f14270f336cd83156213e3c237d85b0f6151799e834bae27dd6e323c5755d3242f70506fda464d8b7d1b38455c7b099e1f19afb764b274d5845e1d33c8753c119193bb6037d30d6e23be68678fb37f00e7a6a22ff808578e98c631489351fd188f44abab4751ccf4fca835e339ce7da872a9b7b9285cd47ae86cf8e50758bab750a9ced229d7e8b61005cf202a45dcf8d6ff07e6682ade45aad32885004e31697722f5d384b761ceb389f6c2b36bf56b562d2cc4c8c246841053477877a3d1a0450a7534347acbc065ee272f5be728e2ca3478a71fbade731fc1f7b21da93836e56aba9c23f09c1c23db13ec5ca64bd5e6e13c2fa8fc7595f2010cb220ea2e5bc515af78c18c47405293ad3a56383262a790a23bbf99ce6ca962c34a7468e15a7ebc4d3eefca82b3012f7022e196ca0fecc2f3b666d2f770252d459e190863b12e71cca77fede637a77d0a325ef0bb7b5b1fda7420b89deebac3fec66f90b21b18dbbda16b2754476aef51354d1b814eff2370f7f4bb086df87a5891e1fa2ca1aca98c97fd6911b90c033d78b430bea243b4049d46083cb1fdad58026240f0aa4961084b7ef35982496b07e8187c6565eb37f5bc97675460c660c7c7228ff0197e7d7b12b710c46545fd4d4629690c339135bf1cdd5ececf04516cda3c727ac9e8dd7b1014910b82a40853109f03188bfb5fd57c12c5a01ffe1bbf171381fe75d6897a02e45333cc9ed6b0a7757d0adf58ad9cb6adbd378c797ee710b558af8e39955191b7b90f60d3e5b1a5e0a6d31a0683ea53e42336d6126abf7e7b11af39a2812f0443fe030eb2b436340b0089dccb6b1dfe2bcd364f59bdab49147fd3fea0aadc0aa3b1296454e3a049e302fbabdb80a3a808d9ed571215150c53d554056430a2c69c47d31f4ef4e5e25ecfbc9fd07ebb1123f9f7d12cd1be760f318d91e17a77cd6e1fbad64fbfb4e240dbd362cc36f58246ff9f2d45abe99a1750de6152a004d7d9bb6db185566e01dd037c5408ef207b046474a20105b15eb9f9a4c23ec83e6c3155d2e68d2637bc6366d537f428bac9c850ea570a1d4e98b0a961c61463dbe199fdf646c84e6a6d493647a750837abc983f50d9b1fdbfa3d8861e05ffda6e9e3ee08cf12bd536a143c6bdc25f9fa1ffe4ae458819ca73047b707d136b3d6c057b1af766cc02e0dd9f21c7018365aa143fe4330353f311a12ec47d4337172d17dcf7ade801bbb12ce9c70c0f85f62c76dd4aa4e5fc213eb061d39f3b70daaa067b43cb120bd5d06bc353040bdec3b1560ec20bfc33cfd2fc774d916cecfc05ab5a91feb6765fa088f7bfe9fa3ba0f4c28a9c3a44aaae6d3047d0aee840bfdda0d9dd0a521fce28361253ce81689c41124d19256bda291394e1d2b34ef97ee6692daf5202dec14145ae77851a23a42de364ba55dcce78b5f806d764fe76e140299ac8ab3029f186355f977ddd54054d087c7d47ebd48272ee7298a3c4f18b2b17b013a8d200ca4694e573342f8591a8bb17ef60686431bdee53c16a7087262a60b3cf00ee8d89800012a8eee13f99c929727517e131bfe7dcf94e92602c4ff94d1babb84edc6819df8338fd15aa7f1de52415e9907cbc29a50a59d4a9709ab94ee9f9d3f95b894af07062e430ef35222f45547526d899844fc0931b096263479dfbdce3c4be42b7d659d4f24ba1d3b982460cf9f3ec005a758f5bbab47ae3a3e1c84019041dfdd34c9245c9fd6b4fae6daf3cef227df4be793f45b841153e90e1d90b7d02533bb513168d588b2f5f0462f7200456bd0b4704c1532257d1e624e98a0d3b866e78d38378c901ebaa7454274db2b29ff0bfaf038fa4ebf1e8c933578a0ce92435195b3f4ce6186bbee92c0b9c0da6a0c745cdd42b235675e2ca91eeaa4d1dce0495997730ec7cc39bc6b8a235984809b2c1e2e6928f83f1a989746d2775e0fa3ad5396a018d6cb16aad19fd68a8a9b50edc40864513d30680970ce02263b49cc7b62f1707afbdccd20006f04418bfbfc938770736f245c4bcfbcede95056ded7ebd245495429228ecd95076303a67e637b7a5f540139432c04c2f1983efebc23c39619544dbbe4a3a9e1caa41f92754d11b5aef9e8983bacca17a3a42ff60002a2c5cf87065027ce2e02d5f7b2382f0ab6812e676ff5561cceb25fbeb157f00921934c75b387573c3b1a219fb80c56d3a266aaca941a05bc0a31bd02ae47e0d9b649898e87a5da0db288296a1da9ef0654bea6dd63a4447a101c0e631fafd8f765d09b4b401a7f53bee0663a38bd297f7376550272f0cd65f9eeb7918dc14f0c9a411a13aef8b2fc20121b73890f58b385d5670bf68e97eeaadd5c56b92ec3514b155fd7b15f7fe6285c697ec271896894fb09ccac3ce8e053f47a0dfc5079f355ec7245a046e3bcd1c3c686cee4ec959f47d6fb8eaed8cabd214aadc7373c7db3d00c0fb2ea4ffee15170a709e4db16d85da7ba63058af6d1b84399fa9a8c707a71e7103fb0fcdef7620a11a1cf7131c64c825ff921029083b90ddd28b71e30e48238114313792daca4b5813781862629281c12db813586d1e8a4f012ff45d7f9e89be492e35a8295a43fb259de9b99d2969804e3abc7e295b246630eb7ce05ff7658b2a4c813ae37448cc240c91385e1bd1366b77ce9cf8eda2f43501505757e821dbebee5e1d121e438fc9c59d026fd5b39b4af40d75b127167fef1e7ce68cbc232faab92513d375f514501e8ccd201f96f349fc6e184e3bda0f44a65c2c93a2f56c0a33033eb71514f597e11b06c342012309fd88d752fc76e4ef8d30a4e977f1ce9d1c9676a868ec2bcb22c226eca827ac1e9b5c208b32e5dfea518d28fdde33386a09619a0374500ed7e54300140749a1edf3a009511ee5c13136002da7ffdecd3e2766d9d2e7b48c362c04c3ac9933a19bcda1b539415ae667a2f70f8490cba17d0b35fabc14a985fc7d46b2e9a3c3779327fbe2ca0543aa6644bb5446cbfd9a351d573f2aea2c9023ff027fac6559adcae574b213497a1bfdd6a525842066cb059ae2af288909902e38bc065bae208024d6dca35a3a86a482b9fcb9a49ddcbad91b5acee86078dc812723bb5b7d821c0916b207b381e0f54cb4fb0ac136e3a36dff29fbdddffef345171dc34aef0c5b6cd5f3c073eeaff6e99b5d30661a33dcf93f76e1eebcd1c9d5e31052d08dab20d5f9ac1ea987465a6ec79971e3a25eab71682328ddaa8afa68be88b1b787f0c4a8cf4f84ed374938320dd8e0b303135cd3a45c6047ade14f9f97baa3f958e94d5eca0cd0a20613f9b4cfea5e7960691605f821ef229063d43a7f6125d208f6c2f959fe5488421a37e59b35778c1f6d49c3423fa0f6a4cdd544ce8c6ad560bbaa9275bc30cefd7d0ee330166fece1cd82f6ee4494474a6616d5c79f8419c3ec38c449f55e9e5c1560a4cb2307a9c31090d4315318804aa0b2dff2bad09e1d3e90bd0bab4ba9741ddbb1bbe71514684f05d6a3cb6d5de75ac7f0a8a7a6fe6e02a00a42986a63abb628ac93da03e3f83944baac60b88c1e4fdbc9314ca1c819b899b966cc04f2fab4a03d23c3d0e17cffb86b375798b95f050e583139a81cc05373973988247eb743ef6784640a8c3ad2752c172911e64f9cf752c01e98f62119f429f4287776ecbf5d5f4025e42da8bc30fcb91cdcb6cac9b60c16caf26750120c9cb1f2a412c80ad38e932ccf26df9d524d0ad6d683cf52eed43a68c4132d90cc17ad18703f5802348b99bbe199c9f0b6a90e81dab9eb29f295cf1499cf9b82a66bf91a59f45c9f283bd2b9706002a54eebb2e52f855bd6ccee649dc33537d50e12f5a1cb0ae7a4b48e00ae5a21bb0a432efc35cf27ca79c34680155e0f97b0e079cc193c09a5e21d0b35177133d018d3c0c7093b0e9d437a844c0f710cff9485e82ec05f8874719015c72cbde64546a94a574b70b6e73342d72d88081244fb2b92813070551d5afb403130b91e57fa277e43a45ca364b99241bfb75c928605866584d75b0676a987bb00a28189a72c1ce6414fbf64f9a51a4626b5c73983d63746fdd873bc59ca5894cf66842e4bdf5fd0d903a47004b87a3b8a4b08dd784d9271af667192661e0d9fe426af911148d09300d3fa18c030c97d7af88a5e8e4b4c6874374a38c20eba86ae3736e3ce3e9421494c496bf15e543f5c913dfc37faf74839492734eb693d9be6889854cd8c6b92900a5207833e25f39f1a4ad77e5b6b94dddb270a9feb874d2a4a79153dd8e7c10bbd8f50471e2f7f1cd623a3af2e1c95964c884802af485bf645767d928ab76fdd6b96658de3ee84e7d8d345cc152fab5f15fa9b492163d8049f58bdbef31491cb106dc38ba524209042b5b46a2c11dbefc0f0b9bdad0e6de553f78eb7c7bf5c4b9cfd2ad628c0d4c73cd79e4b80c02b68d381ae924f29c95de42b1b2d551524cc30ae344f65242686a88d2d7c7dda26a00ab1f98fd618d9f1b22934c2be46a589a97ba74181605359f7bf7c9f9e749dc90fb551bfdddc0fc9fcc089a55f612673f51ef9e58beba557b02e9c8f12f4f822e483da8bc43fed2568130287fc1db96f632517d28130eb338e26473464319b3a06c090b85e7190aba1d2cc2872c25cec21625b4e446034de04ba3bc17b4147af8342804baef532e9aae682020b4fff68364a3872ff14871b855876184550f4a6cec31a4e591079d3ace5c7c6b66ec8de7be5d26c95dea8bdd286359085ada210f1adda5db4604ff67d8796c4148e3f85025e64323e6e8a6b66c5a9b87563ed817b7527ad24d34d42069105a3f0d2fa68887be6fba5f496a880bb0a497410ff88940b88170cb9ee796fd7ef9bf497e8c52ed65020cc02456b3fe8f4133cd784b4331839420dd1649641cfdd2397fc8667e749e3198eccdb2aace16205cbedf8b54215af3d29ab43a9460a8fa51ae4ba5f15b5311e56c87dbc6224b1229424608a428c4bef3be27fb16376235a43b69095cdeffc1ef97aae49f7f7ef027961656ee6cf767fea6aa88dad5317d43727a80dcff97174824c64ad9c3da74e1983e0db05a19a9597272ea72fe978a3431066c9e8e823525ce17409a9922dc21f8af2d3a430dc2b336e3402c97c9d10f66340f0c1e25351192af28367819d3e017fc367544db347b3a002763715beecb17a68b90a0a04a75b7e024d813b99497ef25dd7ff6d1e66091231707093c030f48bf4d2bad31424bb710e9ee1762bf93b2a77de2cebb33cdd8c8eddb6974a346340e29cc66dd91467ee9192c796376f566204792d35335c18bc2121075dcf0298e5bdca56f988826a60cf3f852a3115d97a4955f08b7c85de9493edb1c72bf0a74de4c2b5cf4f3dad4e64c00015936b95e22a2fbb4e5c68c02e73e2598b0301c733393542cb41a5c884b8ab388f2d33cc888ae35b48278c9356a2ddbe7d479bb99f15add71e84ef3d2f238634a3eeb642d57031042874072f0c26c9730f87865eb94d51bf6dd1e3b800b3360d4fa415f62e3c1cce6ff5ce80c924108d3f6164508e5b12321f18ae8879512c025e037fc6be8a7eb2e4a4cc744bbe1f0111ecd52bec1d5fdf044483593430095314ed81f0ebe8f0f14bdb9499013012b07b997251dfd1b7363e325d24b2aa7f4ece19c144140881228622fb13b3f1656a080079d7fa2362f2a4fd7cf77123717d4fa614e306442aa221d3db7847b82ad89a1f8786174e753f600e6e98ced1ef2d63bd053b8821d9ae438b209580ed40c92b91219d0939ada10c3ac28e5cf021b2f8b31abcad2ef2061f33444b91a0c49103a2a73d487b08711f375fa4b52e6f47fd13e240b1751de39ddf8a183ddf1319099c22de893d8d9a35828089dab8486f46a3b0db006ab5047c6b3a6ac219395b745d67a4b1b965ed6a4b30c7c16b8e26bd29f0ade39c999b6ce6371864628ae2b3620baf1e841df215a1d82a726a19887d3ed2086fb2da654c6365666d3ed1c5df18a874fbbf9c0fabca186175c469b97d5316a7d4089d08581ed8017c7637f4e203b1514dcb1b75cbbf6cea975ea1b1b447f60cb5efa91ea37eef5dda0173929697a7e04c9b196c5f4d6218f38e37cc512e94a3818d7adf65299726342ed17f2e3e31a8b241fd898a954eba7fcd2a2b01210ac61c0f08618ed2c948a4b90a38013866001fd792fce9519f9cdb2f4496ff13d9c6df97dd30e95cf0c7ef5d8d485449831873fd66b4bbc6b149321c25634ff4051b40437af586b406ef5186ffd3d7bf09afed58da5d8663d6ec5b8347df908e5aac5051f44e584f2eb8ee6311f71221ce73ddff6bea25239655633b864a0c5bb764829d5ca984f08232c8ac42179e63fd50a1185f0effece27b450d98267db75fa9925f873c30f8c3daa22cf981155e12674a6411c9cf189b125c19d902b29b41f81470a651d625c12aa1016f33671e9cde552fd27c9d1ff1b2326eda320c2caddd7a404beff4d70e1920496792161ac90204564f98d5512449d687426422948495b5132153b8c990d577df19538c74e16f1f4e5ecc20b4e32fa21340a030547d386f71c925191f2b612e2f948813a2193c70c5364778763f0f1b56ffb80c10184977f6553b5ee5cae3e71213062174fecac3c4563264057ea8fbbeb15507987045fedcd5b6d352e10f2baff3767ecf340b18ff7d0af6f259b055517d7b548db43808b29963d187e2ce8377d81889d821e06670681e038d1872fb22a2262bb0b58eda1ff8c1cd0df08d1d978cfda47948fe819ea4d13767c0fe1c3c3b0c78332b12e7ff208dcad5c09ba04be16fe22d2efb3b685b491424002c3fd626d705300a9843d6876c05f3834104e62c8a78ce1ed2f11e74098bee369325dce4f4e5b49eebe87fe71c06ae9769e9818edb7663b9c6994dbb494d7928121ad123a19c8ba9a6d3514e1bf7ceaa95a782bfeef27a00cecc4621d36b531a6225a368746b56c8c48f3582d0aedb671c3f2045b8a0229239ac0c9a7123d0db8326a37d626abb974e0b7d4acd9b8c3f3e69efa2bae5a5c75261204c6e68625c5df6e57bf18afd6f901f6c14636d0ca59c27cb3e6ff21f2868add05531d542fe53f69a94228ad5b69df3295405aaba52777050cfa8525cfa41def9d5e4c6e97f7ee49b22ead7a5ce20b42c8bab6322304d4406edab68847281fec1f1a3da525fefbdc2d05b787f99298cf22c5f310e1fefd1ce5ec65912cbb7bd7156136827679acf86e0a2fca27efea872de22cea9ab18db08f1f254a80db1bc36d8116ebc1cf7d298688ca0e1c6631b12a17f2a3a06baadcea17e4f68a0fcbc1f152acb232ef40d352affe10e827189cae953441ad87ed42ecaee88db94135cc0c6d441f46657bb23a0c554c96c7327ef9a9144f5d3bb036d0def8531aa8399a956b31c5d6dfe94a33234179d65c86c8ca6403c7caed657fdd1b23a24dbe54dcb1a916f0109b035dbf563559048ca6ebe8c9238358df26c54a448a6df67a9686763bceff98d009b4dc50e6039519723d43f97255b5188b954de734b77cf6927d8a83078932f64cf6e84c390f23ffc785530944eb4d6d231b9b711dc09426fa036919f44198010dc3a4f9014b1e215162b8ec4d8e2b7a0b37d686d8c88edfef1bb9f4cc8728438cf01c67de74bea0c8aa6889c9c8391886badf7131b7a5d2011c74f390e19caa4e9322c5349f3eb1d8ff95db6184ce09c67f0250a813a49eb4c57f80f49aae73f6ba27c4f52549c5cd0704152e7ef3358d390e698e0d691ee4268339b3ea6a91b62fd648a62b9fcc146a13ffa7b9755c16891979643e8ac6f72c29eb1baec87ae3ad8d0a7c485436663d0348ddff5897529e50a32709347f55a9cc1302dc7a4728337b05060d9df5eb50bcc7b79d1e50a92ff65e3e8b82f60b179496bcf65badb9039b63bf35151e466352a15427b5feb9665f1698cfb345d32d158a446d67ba8f9b10e5293190741fab9b8d979d027af688a3a3dfc6e2cc6c898c2ae37f11607a45f178de26dcb331cebc635719f79046420dcc7a44a0cfbc8a3060187ba2d036e8e86f69640cd9967a53b4578ba915b37a9cc4de60e4750800198638fd514fbf16bb75bea506e7e14c5b5e80c0dea2cb3436fd08fb31f76b9e9f72d4be67c3ce09fe33fb909a0243f11003aea482b7baf1a9baf836041cbc152f0e468738599f01f46c0a983ebbceb24e1345fef7452dfcc9bc6848afbd213317fff5780da6aa784776d2f71091fcd5e71a18ca1795fc42829034dcb64b20c97e9ed12e76df3f312b06620281254f6c912c7e86a9e9409980cfc49b9f7d28157709142df645e80216893e3c769dfd14b76da1a92e2813a6ee63bea3da85fd70c71f8483a7c7250eef674d6f08c0bab6739505f4c74b5c6ff9d4d50e310541c6107231a700ff8035fd30a0971fb3d37301959136dc0e2d646a49011eab332a84f01914043f19d5f34a78d517b154662fb2e43f5354d0c30667cbe44b80b23ad50d0a629de62eb2f7956904036d7933a52bfc0e52600054e3b47041ca75bb198240983871637f6ce6696432ec915644ac2d9539b7532ce406df227dbb3daa5dccc4dc067e5ab1d9c2fe16a97340f74a0d2bd878416da66af8eed9f88d38f1b024159ac8abc0ddce3b85a233096cc1e6c0516377a791db59ca5ed3637f62b16ac0450a14af7f3d030aa3844a48ca27445c613e196aafdd88a8b4cc16214e8e70d8595dc10678d6e789dccb0be264e13d1c855a617c12135d0899cdb86596d59ef3f79f039b965855d7f88c11272bde7471138e680a0a8674cd74fb8e117e567ff6af31eac63bba39807417dc6c32d205aec6cf304c562226503df450ec470994a250f3c69286c3d61366051c55664986ad4607fa49683273772aa0784c5d72ddf9819e336023f5e15427cb54f116ee94fca4997d10d797fb836324cc5336c9b18419720603fc198c0d05c807979675cbfea255c70c09f7553494672b953c09d0114cd043e4496731115b9ed3d86350e49d2c32fe2de0824a3de45845d149e85dfb28fadb18cecf8193f2e3208c4139ae2d9c95d6add982b3731b6d544a4d11fe81e15c0338dffb0251d2040bde1690c9dc99d2baf23b6ad00ac957b57cf9f1f62baf1bc77eff15b713788750575169fb7c52b0867d6f31f927ff38d4c333ab4c09f00e2694ca3fd6f1c43bcb097231ea278e7d42661cea0e3db109463b2ff6f5893685c1ee5e16f189728507c823ba037acf08ccd554e2ad4cc94de2fae9ee68a88341f33ab2de772827a797f07eb7759b2a776a754ff8d2b4e011440d26b307343fea753f88633c5e8595b52e29542348cfb2af84630595cbb04f94b1481c93a8a8b0900f18cd50ca0d4a0e522074f612f022243feeaedda629c88a5fe36f39328d4827d2ae3d5f412f504662bbfccb84dc30950c3c66534c631fa99ca61d16d3e73a3286296d534565c97bafe5032cc6e80c3b3a7eefd55d93e662c865bc9604c52be5cccbd31e59e52aa0ddcdd78773647398b74e9d37600232068de22945e4c85f0c412c2e1a280cdea1280f14b0364f9b41105bddaf996d96a92c7227a579a0e91f01f6ffacc25feecebc30290324e9cf1f083cee19e48dca7922762c9fa93c4493b01e618b436301aa8d6ab69524df916d7d088266a0713ed793c54f1463cc8c79228d5fd83ef4f560deee3e1abf85551fcb794332af8b6b5819ae39f7c6df7e096f3a1b69962f12ae738a160006ce81c9d8709e716b05bf730f4b86db0a76743efa6fb18673c4ae3b4f7a076b713571c699735bfdd2d4e74b0d13f0d901374cc01b5f14473e35bc3bf6aa5581e68ff9039e1a52246e10c20151597a2e871bc95e84f372ae45e607ce467bace17cae705024b69c83184d56333c99e4c00a1190f528ba0d1028b9cfeaec1275b7c17dea892d710ba3391f614685e9a62a4b49dadd7684f6d50481033f44d3ef9f8afa263e94d06836f7c7392e6c992400fd65b22cdb2854e3c4736009971e391ac825fa2b83a5b5e6caf3354beb387eebdec832d0c47a29ed53444537af836d270f50483528f69942d68507c315c7dac8015a1d21dc34ea48539bc1413c81c66a969c02f1cc7ece31762b6fb4e1474691c54141282a03059652d3e15e9dc6f1e5f8b2b2fb8853c371801b00353eb6b946860ded35758ee72c93a9c8168b14399d9ce6a26690261577a76d02e64fa0de07dcdb88c25edbaf141f7063ba37ced0b3fd11a757147131caf64f3601d9d5f84ac3a21c183d1579cd7df4c7784a8a6f85c7e4700baa52a216f8a9bde7518389b5bad5a7b22aeb315390b98f7774361f104784ecbb11676567e0b7fc1a1c64ae2e404a52a0bd00a199c4314fba18693258f64f4e4002637355762a016b60a0a533412e29a8b253b6941a43fe6aed519e5c7020981562e50057a187c0138147f9f4c5b9fb30e2733273d9a7ba1631eaa3688b05debf51c25091c62cc782d590eabee438a1b684dba56af4ba369f5c0202d402317dfc3e7fb4e5b1e308f74da7444c2e460d58746c0122389d8fe8fe32aef3aba8232ff4b56a9aa7ffda972d2c2021cf05d36a9727293dc8b7328507b2fe36b4c31b9cdbdb54ec512ceb0ebb444e0a7dc01dc884a1a5a033f1bee874e1058ae185bfc2fe3e400f15ad1208f4885e4ddbefe6e86bd03871b1f5cff8709694147c74ba31030b7a33576885492db2ba8bf0d49619466f9534c54f31171ee58d1d271f27174e80e0dc8adc29caa29a21df45c38cdb3deac2b59063a5a86e2fb2654fcbf635196875c6694909c25d65fbe2dab67d0db76fd279aac1400414cd68f6c17171f978e7dc9f9c9fdf0bef3e9906d7193a2944cccc44c3540b6b67e75ac96567d2300e6b9d07042c1bc65bb69da278c2f5dfa9875349a55ca424adfdc07cce2ad91744ef44cb6e5234c5a2f32001f5d8abc05608763d9dda2faaa646e0e583bec3d27c92f0df6ed955e6d2f6c2e23fd63321d55815bfcdfbf0f57dc6b24a42bfe8bfae0a52b98c43342273856c91232c6d4a1e1d0c3a7b2633a11b6822cd7461d9a5c9987b36e6c01769d1d671d9afec36a6b9de4cb19d7ab97874dfab27e45b8461fe78efca6b86dedf8c4445713181f84d89351b43b64d8f790381dd55a45fae079b5d69fc69dae693d6a267203ab4d8507f3b03c554124d4c3d621a80b086d9227471242d90b06ab55351ed9b9a6706ea90e246c7b7b0cc0e58a2bf66af1dbd8830af6afba775436b96f134ddf833b121bf8b00e67b98d19fe7e0bac62d66392d6eed0be70bac4a491e022786adf1386ddd4b9062c364b23daeab9ea20fe7f6077089db96913aef0b4e134c75881c15fe78d9c1d52d3daf7c3ea6d7f130c751c8deccf99e5f5b4224e384adad6ca0c1ae0ed69ca81c437f21202da41e9cd1f9555f8e5fb828c7278d2595fd15f2203044e480499fe178012890f57153bd35dfbd7d1cbd90b58ff7e841c184ba00da538376e62d9fb15ff47ef75ca703dff8cecfd6765023388de0848a7e8ac1111c29af26e9d08491f24e858f9901a74958217f66cfb903fdceb11c795d001dc4323532e9dc7bbb6d97878f6b7546612597fb25d9a9fc134a5c3a4bfadba87b72317f10abed067ad9bedae1e5813e71d899d01cfe8bde771c7919a569e74cf923751282f62d89539e763c34b5b14903e72efca23316e3e3b0735dce6ff7f6de880ee7d7b51c81fd79f205d506973a97d60b736c6519b84ed92975fa55da599ffe02c3d263b69b3589f142cc57b1d7f0d6f67ef03e4c8add943d3864c383d5be7cdedf25960321f15cf076a5ef5a90455d6d025d18fa100d11966e1bdec6207fbc5cae835f33b6d0b58d07b1165b4f6e5af8b18ad58fa11ffae8f799e007d7b294e6d467a01c427f6dd4ef1361e5580d24d13eb760b20cfc4cc802b73fa7542a491868cf72a0f006a9cc84430ca5b378448b15f94e60096d308dd8a2e99eff1e90820953dc50ae5641386d6fb77357cf288512e76249e2f762014c39ab99050892ce42befbd412ed69b762316e2165104674c00e1cc05b13a0c5bbb78cf3fc2480ec5158a34b2b52164f468c667c270cda86964008896cd8bdaa579e90eb00ebd376bae7390aeb7b05571ce865fc32de438200d1ce40b3f1c09ead8d001e5b55724cd266c7e0ff1b8de293499348fd8b5bdf7a971cb3e35dd6ba63464c7a291b2af0ae51081c342a23c54a76da5293143f5b315ddb5a91150cec17a3103a1ff515f6a4ed36b009a7ac8f00ea63466f26f3b14a425029e9d1373c44f278aca6966b18542f40bc0cb417f9d76c80c99031f3e4777d0743b7acaae89c3993be3a91bba854a9562caff847db22a10b7239038fa932d714ac02be120fad1dfadd0f03e1c0b83aeb6fbf6020487c18e4fa9089c2b85d9e905e688570cdd1ebd20e4213a0dc78f1ae945ff86fe0029c9cb83e5cd682947ab58b4ff3a25a7a4e255e13723d7f94faa91effd50d0abd3409f0b1d1a39ea8e575aef7bc4c9b30359e6a6273eb8dc25952b55092caa6ba974cd9ef35ae30e3343aa30ba9da2be9d9bbf3ec43cd07f7f7b9f091defbc4c5a9db7abf164a31621d71a883196cab3f3e009a9fee6bae07b97f8ced7ee834f67ab6d433cf5be519245af06b6bdceff3e1b2da1dd2f9a270ddaaf51b02b417e2706e0cd29eb57d9b3e31523d5e8d8e69f42fb76be0eda93b7b84fc9ca0a5d45ad3e960559bab61d32de3833099910945e951e0533d620691cfe0b7e3b49210f28c4640b5b0d3f8fb807cf8e1ecc6709d95f9efd9c79aec8da94a5c2cd0ea1bff991368a156b9914221a424956451f492bb3c987c7a61ae4f74fec5402be70adb9a429673bc42772e3f499a3d91d54191a9cec413e6e4f2d00d694ca802ccd6f3333d0c7c6aad72d77ad5a27eff273a016fba86a9a66ccdb5e02f5a43f3a759d7365f8350f14fa8348c00249bc3f95512c043a728e59f19c8a2480309eebcee2cded52bdf5c124e37baa528000f32666395c3e85bf67171604d108d51ef16abbab430eb73ae6079d23d99e7f8131dc4ffd4710c8de43df5069fafbc074917ab1eb925f0747c252c49307e5c84e48de489ec7ee16f2adfd346f419ffa315f8ecc10df0567312eeb4cfd77e3a8fc3fb8306f5d416ad07cafca6b87b0e81540faa7c23f1f1ea82985c7dc6068b551498d2a3d26eaad116264c286dac6ae4b68bfb8d1abaf67adb0225781bfe7456324da9211853c5368f7be26f23fbf3f1a4b04d5bc2f03c6e43945c04942c582931af28b5f7762a1147631e1cc0e31c435d73dc6c176bc9a8bf5a551665d5519c9682c75488231ff34175910eb7ed9be9a688a11009fa6e4487f69ed46be5b92977c15af40cfc047e607f64418ef3cad06260b752b8d093e59d965b541a3a6483e3b035479f57d52cbc97aed3c722a6e38968ec4114b0483bbd7dc11c9354c7d9f4e005aa8415d5c03f72e5096e82065d7299df7f65525406c97f307a49b2100b69f78925fcb729fdf9144f95eda4be652dfdfeaa8ec2696ab7c4698d5824d701f015a1ee5e34dc9f2b694b1b86f15f4d9c9ead0ed7225e2041f7237ec45b69a59cf93602a4ed67a075583fa2fed25137b102c8dd4ddb4d439f78356dea0fa1e950915f25357c333366e946cd8cda51ec397825d6cebdb159d2a194a9ee183a2dfcccc561ca55294248a8fe212dd1aaf86ae975d0c5ec7b0f7c3c82c27f6b3c6caa7d0f19d6a42337bc0cf8135a5b5147068d2257512241f6d51a47842a190906279e1d1eaaa52e9b71724353fab8d085a8c439cf9ac80df85babe56f60e610b024a85a730f29e26c1f4235603094f621367cb68eeec4cf208d609adef321964b5b2662f5f6d24987addbe67786e7989a740643ddc55e0347df165204e6af03f12b5532dc8573e3afa64cc5ab35f18489fb3da1d6206662f2cbb8ff0c94459fa4529609107ca35d6a9cbb2f02384fca5262edc3a6dd6195836ee3cddfc4ab4fbe9d2e3cf82d1238c4c73a1c92931be487e4ea1f318b80914520d2ded7f4604d6c808d0036c0fd83938a1a4d99395ced5cb9cff0ea3209489e79a8a5c62776b517a6ebb667b41808b2d097c82490a4ed2a191b7392bf45672a4614e2f8dab2735f3b50a47afeec716eb406e6c01ca593f15493fb5d9a996ad963c024d4300e6b0a6aae0cc46ed57c758ce3f98e297446c8a8fa075d75316e9ba718599b3ed4c8d7dfd548995f4650b5bc50d641b4dfc678520c280863442d6ea75b8ef397e9ff2da0626fd733b506b7f9f31af4ba16f7f3f9f404dd99238c648dc344d2b0cc462af81a7c255b7c3183f55f94715cc0f13da6fad515b0afa0fb92a816bc0256722f2ae1aa573da4e252cec3dd2016e9e4bd16200acc8a99198a95bff7866687c264f5d61757457456cd3c0162d6b9a6e72f1054bd9b99fd1960f663d07be6142e98e9a7bbdd000df6f741782444b42b1bd47fd6f5fd73f9ed10245163dd916fd5a50c236c50fba6ef0ec68d6c5ea2d164af117aebeef37c6c78102e9afaa041bcc50046a10981d550fb12df168ec35c5e5b577228f8a549cbff19af681b58a1241516cec30a89dbcb9d81e2abc04a3e8cd88614c4429be5b04cc40332a24807e3965ce19746f868dc3af45267ba1dda24b5a6b7da5a100f5adf32e7f1a2543646c4ac9db0ddc23694a0837538115cce934e576907a40744c618d48369429b8b87df78f564425af1c756b6a3f35aa4119bf06a6447755270a8ebf7cb83da4ef94c4249c35d989f120682b2b15004be62eb34dfcb9d041d32cf37cd9254bcf23aef7fb8d55925250ca325e20b27f799c323886c09d408295866ec602a42fefd55ee40dbc52f20dfbacb2a88d82d140e14ee72954f376377e64ab0a570c6c51702e7b9d561f51aecf300b4bff99db480ef52da9d359a1467c5a771a5d7e06ed25f7c4ae74bc4401e590c65b7e540defa864192e9481a401566fdd760deedb0a954bab588d4366d4536d89ba21c3a2e50cfae9572606af9a7a1d0db50611e4a4adb4aaa36fc1c0cf06dee9ff38593b820345998abfb61999b30196f3e2e9fc073a30566f4f730d057685b1c70915328c2db2bffa0136d742125743d433d65c13413962b194c526dc3463c81b624195431f2db0533afa57bced2bbd2f3cff72e1ce70699600a4926dc2b4ac4d86942fb4fca83c5cb3b6e576ae140bc127e9c22d4959530296e296460b10f33d6128ba7c5b9e19d3033a47fbef4da9ad2ad02c2d5c302924001651967034e3192f6a569c4d1d69189033cf3b3e025f5b1a79a2755519820e3eddfdc8c72e611b1736388025e8c6ab8f11e9142e076b6c24400ecd3253178ace3440ac7e886f71feefdc96640fb38165eb9c56a79ec07fb16b7c88a2bfa13171faaa74a193f41d04500f58398a80f76fa0bb6708aab43b8c436ea6c95c51c6f254f6b99d8929708cdeeebae684dc9f179e560c0d80d7e5176572cbb7b06938a2f93326cd6ca764f118ffab87ca91b8877c207a87fb402e3c8fc762ba7bd00ff28def9cb1a2b67053172185ac504c2c23275a76720934d3b4728965a4507f754b97e3d5550e5ce09d551d28ac269f1539820f2bf38c0bea32c07c226ab352414d1e38f2d09a575702fe305ab944ea47f2a920fdcd440a02b453688f59b27eb729ccde774a63b9a157d55461de7a8a80d1341ce21571b6b7e6783b4ff411601a70ee826ffb2750e55f147d8d808d653653a4259db28d672d56f70ccc30cf84620a4182832c63fedc69aa300e49cf75a4c059b856295abdfba7e42f58c6039613a70735124b6e04856eae56507f8605eaf12ce74c9ecaf2ff7c4c8d755cbdc787e04d258f800bcac9b7c9b962cf86b28d1a93982dd5779242becdf25edf5207a6b43770d6e5b988cccfdbc2b132271e023749bb0b03a11f1c6b0d50ea629b5fcdec8854fcb0a997f7e1654fb9939255ddcc9bcaea6de10c2a0fbae14d2454c73f17205c11e4e3069a241d0b1ea5c26373af368397099dd578cbd65403daa4b8a1bdffd63e8a45584ea924b25730ebc42ba407a4ecef592e0d1ea962c9e5e71412fb97d928eee1c8541d550145664698d31914d4740ff82c43b048a46d2792ef40459599a850bf9b88241b6f1da03fc8be8945a4fad842d0d55ab925b42b88f6e8ec326d50de6e7f34357629ea3dff6811f147206e7e8af018f19f1429cfb82695f7d29a8b99c63a4d513672039fa14d9314526b5be9fdf6c8a7ecc0c289433d75152de1cf1ca696116470b3f7bfda269953194d0e931ab4f978fdac96cb9049332c768750ceb6a479d24687c3733c2163c0c034e67ded14c06b33fd4621dd55c9b6c149498200dc90cc3a235192cef5f6aaada9480a60a6c82c25a7cd5ea71cc4fdd8ae700e6a0505324231689e393779a4e214965d157121f6e18a2436add9df75e5e27896a52288d0795a55b672a8bc3c5ca133b68da1a3bb7df045a5dbc69092cc640e6670ecfd3c831d7a19dec3785e57f6c32d6f0c58cfa9be6f9a650b3c0a6fffd948cd474d4899ed354373064faf7a04ce178e36d6063e07784a8d92599dcd13bd649be5e55ac5d83fed4e2727fba3373a98525c1f4af408427559ce7c774093c444d9cb19cfe803811edc4eeffc2c417582e8d8e244ed3b967725ad46d7e7165d631f21380e3b8e22b2a80babeed86763571541f949bea0c9da465ca7cea049acbc4f6e72ad9cf43bb8a45d0fc2ecbb0feef826dc09c4293a9d6b2fd124df9d90627c458aa8c512d8490d29b9a845ab3ec427f32bf28a99fefc4efa4982a505f4918d523b4a97c9f7777d522227e4626eff5117dc3b71842bb6c417d329b3463b987d46b71f2ee96dc5b8e891d2aca23ba7598ff48297c497ba47b024a99feb881d21f5bab9083c1d0edc711d38cb2b8bbd10dd584a0b88a1370cfde97fb362d369ef2cdbbd6f95ceec593afafe2b1e5f99f1dea40a411db8f56b3be1c58da551b9a10c68087b0da8c28174860490a408fcaf749f571419d6893cee67c0a4fb7fa3364717e02f10c7ae7c8369ddbf38cbb2422dc0f888159fcb7c644b1d253cd555d7fef4c4e843a0699943aa623312d1820eb70f06cacbf1d55f3e47fe87265fcfe05b199c4b05dacfa59fb0bea48545fecc037cba384e6462d1584d2ad402f2a50ed78219cf5acf28d1118c475a724e58eaaa3b4cb28358876c3ce081342d0f9d8ae252a5543dc3f45de2049ec4970f8657d8d7cf0b0400b75742a9b20205f684d92990098d2fe8365d4934fb4f3cd11c9e9adb807a22a6d375e0d3dd420349e0a3ba4b00839952f7d2dd1d70ddae77f2409ffd02109148676ac0f2ad6a6903e7a8ded278f4fe555708f9e78aca3b855a41fddd793499c930c808992f512f4262ca03c6576754eb6b3fdad44a41399021e5b529c26cdeb8040cb26d13969b3414237d37479c2f03c26cc09bf15220652da8c1f7ed90f16d7de9ebeafdec6d0fffe390505315a5ad1c7b48b80c27b55cf96863a2943130cbb6c2ef43c53fa0d00c57c3fe2d46a788e5efd86ee6b2691fb19484e5cb97901fffe9696f461b578d1aa792b63e0d989efa8173985fff34b3d6e5dd2626acfdd73435c371c9a7a65c76af9c1f3ab5fb3e7680d3d57745b58c6b0acd2c25f16e094150450158f8b15fc167e7199c4e1069385a0c3c8880e4a43daca143a0b10cfc822970b95980e58fd8081059b0f8b803f519da1459eb755169355d71c219e4501e5b8dc1e1933205367ffb89e0f28132550f045b6569a5eadb4fec08311557e14620116924b752a799dcbdac4fd1765d317649d722e520a9068d798d04fdc22cd83a7c23d3eaf40d80eb4822fff409e532729b56cc62bdb26a5c56c91971d24f504b8cea72c34847748b8e3e80ea70aa663516f4acdd893c97259dae2fd6b6982632d51f32ea5d2983e25f0fc2f390168aef3344f0a8b15484dd4f5486b43333d5f891e4ca3004a8beb7600ce9855666e9da2b5a246641d13e20c479fa5d9b1017f38d22883609e00d6a7e095302ef1397d021538ce49dbfc80db2794dd065d41e87031069c19d074ce158070eb52f3e3d6942a578bcc4629306685519e51af14fb4b04eae2d4476b81154063211a2a3ccb77b13c01e90cb16e480a8db2ba982e0a8cec70ea0f738d9ebe9596ad69537572ff3e93ba2f3cf2a6d37088a30168c0023d2cb376e2ca5dde7fcbfefc4848d5eaa83aa75c24342374d4032b4ec7b72dfcb7ee8bfa8f04c693e55ee0ce0ec10e50a4335996c39d7d5354423bbe7a011557df4eefea5fc600ff432c522653a8e3d44324bdb83a0ab9d4c6c408f6607baa6a26b6a134eeb6c80ce011593e2e3a6d968eae95e170a179895e9adc1519b89eb0f3e2d12f22fba376bea0a2e3a930dc8c0db7877eec1828b0641b90293d81d016ebc749b11299883086316688e4cb9b62053f142df8fa82aabd5b6a2ac5dc12cda6f6af25a9638d747c59d6540539d28141c106674ee525cdc6ab2761bb734a7143a2e604007a80358c67a99f9d0c90fbe16d2ef69683e1cf1d37293f59325d9886e01cc617b2021aa5d301c68413e7fe94d7407e487efa5d284af9a341292911fe4fc20c6d0d83148be2457a7114696674359ae119771faf95512b2465388c626d073126cea100d2660b6ba178e095f787a48c1af7805b93b7cb7b6fdfe6210a52ca0ef7953e9621678d491f352b39276266f4a949f09260fecae3073dd7ebb31f05b25ac99c125f2807d50d1db4afd0558745ab7a16d7e31ad455645234889ccbc21d0800488bfc0fbb5299dc1a654686e558929b4a122ebe39bef4b4f6f1f3c1efba80c652fa0f8ab194d4a4b5cf7cd18df657c79b10f50c5fb7bc7d05a93ef594f97ed1735cfa2c04b1c785f5718e0694648151f01c531750cf22deee438d607d4087c16cf453210e161970c7b98d3480d05c2544b47a5e289b383aaa9555f3b650d0b0a61fb2c7601fb2dedad703be0c4484b1ef6d31cf5ec853e2d9a540e58f0666a2708267ba36a9c34af0c6511e8c10507550de9afff0bb9884ca0ab13e164c2929bbb46a9ffa783500f4c90eca66d58c695c1fc9a49364b3ca78928338cd6f11efec81161e63766b3e1dd1bab3848dc06371eba252f8782b6df2635e993cd2fa53e989b6e5f5881a484380abfa127e2afe08c3d37e745a6a4274238025c663d8bc66bd019ab27e5683995e0bc42ac3cce154c304507f424c76b492c0d38971507a9025429c14d1dd7eb5fe6916df7effeb4e365a7127fc8ad5d128cfbb2c050dde06c23ae198786f1d9f525a8f619682eec6c53448b75cff08e89af25efd9f3063f57680a41924e69d0305fb1ce4fa066073e1cb374f275c7843a1a162bed7379af7b26e5f9f048764868378d1702d3f2c83547ce5517b99cd3f439059b4d34c37e2c5a447e484d4859961c2b8c60160bbf4cd64130c78084537ca7664bf8bc86ee8c0cace499058d88a4a9f3dc14d3a7429edab57ec3ab1b9bbdfd058b499a0332bcde9afeacc134610822472bc67cb6c16d1c594f1aeffd21a88b575e584eeb089b159ab17c3d16f567d5123124e175c3091793c28dc9731bcb358655d03401e21d9bfab2c8128aa72895bd2c4298c7727b38d1361adc462f95c46dc8455c58dafc19ed941f04670266b805d4a2657e3d9592ff9dfbdd85876280168bc117781206b7e1af346f41810b10afca6a7c325a995c75e8da5805b7c5332dc3d6f72ee0d92f4548f0d98256550a3712811763da1ed7bf54d05c32b4ef7bc2cd02e6bba42999a437c462d0d9f1c7f822d3dddae40c6d6e813aac399a249eb5d0cc9037260a7747a9f827d4ba4c2fd697d9f4a40dd585e22542e328dbd69b24a113fddf70f45275e174539e9bb25d5ae521ce82455841425fa5383a162be00b35e050dec35a23d771de969e9d268135cd7da509f7e5c6a22bdec89cd7ee84de1cae2ed2c1276882c66c8dcf373be42e245fd2d10c64d8e1537b3733d2f6d23de5b7b4d245e64f48f19561ed1115bf2fd06d7bb497f2819796da8f5ec1b694868b408d50dd865b9f323d19efd65d16da836411074d89c507c065bc47b5e17d53677436980fffdfc7fa28ef1704a6f85a568dbaebfff3a83d2ebfbc0c427ad35c8d71c67e9ac8894bbeb38eadecc44906f919ba4c014f7fde1293bd688d803be015c7f23877dcca0fa9ed40024c6c012526575e713ca5a0c476338d0482bdbcbfea0d70a78d8c57c00847b9d2e6707684a908f3d5df9907b4f6cb7e1900e35d5f35b8e2795304930f8405cbe51bd991970a6a686094d8469810d37b7ccef2a08e56a2835ada08c18e6be3cd0426b58d823928c8581267e68e5c23e38966f8cb223c4908fc03d7e6263d6ce580581fddf307e66be240a7a6b2fafe3ebb27af6c3c8421274938714edae14fec3f118a8cfe266a48aa3098f311287841401d5abacb23a7b41303fd325e226d0b7d07bd5c803c052b39b5f5b38988b7886e6c39996942a0c2ef61505464e26ce8976fb0ae08046afae13007a02fc31d95d6c75b6f04d7826f076d9574e7ef3094057b0ef7ebc9935ae93d7f8eeb71ab74611feb9925a6f078720d2d6cb6b9636747d5b8908c7d4d06361f8cce9dafdda10965f1f9ced4535713091a332d110643634cf8205df9cf21227dea35bc8dc934e43bac373c25a1087c4c82a0abba1eb5be36e324be49f3f6f6929568f05284786d1c6582ec0f98b1262074a06aaab7dda37e302ade247838149e805d63dcdbc367c1f4090ead3840f974b8021666ac068e41a05cac7977377af1c7cd1f9ddca4152deb999474e02c0a3694f1b1d8c6a2bb244c48de230236878a1a63f64947b0d21f1eac6be7964d52f75b912f537a8eae784d83d3fad6418a641f39fa7ff6e3bb2320115c570d44e71aec557d10b09fed3a4401eb1d9709a2150dbbe8948d041422cee28a4bb0efc613ab18c63749b95422c1f6a6b1bb551f59b487e308c95b5bccdac65fddd7f0a530cd47a0fa53178391b19d5bb1184a70f5c42918f96f8647f6e2d91af43403a46fa1e6681ecc09af60648fa48190a245d6f4bfb7c80fc2f475a9d081a2833b6a558af59d2409150d2eee1980256984602037e7c187c00b0332d8be111d690bf8350808b1585c2000896a58bc173a05c61578ac4afe04a00e1456a0b5d0b4fc336035955f8f5431a27c9db589b281e286d4403184f983b3adea6d042cfba24c623e19d0693abe28735274547b79ca56c0c275cd50d3777309f874e800f9a8a8bc0dddd806bda1a54420eab14001891a86b029fcf68ca3851efa039855237b5664115dd8bb9f37bc9f114ffb1cb5785b80eb5648131e7029d888b5a331cb15d56dea67c141055b382c4b5ac48ad1007c7930489a15f72d5ee49e40e5238e739748ee7c054e6a7c557bed5eac49f0c9a3b74e7e8f3a7f717db372fdfcf3c97e90c51474d64bff7fa2cfc4be7deb49f23436098d89e20b359a4c2b55a4dff992f2805c9f8c9d506de60865f6d981070eb4b9d806822f16a7066004ad740cac1afc4aefc7e1e65eb528c6d020a32150f1642721de414a8f7e15466f67a9b9972a07b27d6a1db7e3a0b2caaf7f6d0978ae2c3b43b702b9a33913e908d6ff5f950975a06e4ca8b0175ae7574ea1ef7760d7f3717c2c08b60a77d79b70ec24eeff174bd1bd0cef4764d684e52fa01d72f09257e763b281580320ac45003b0dafb37270642a058efe18c012fc52a3783da7e9ed536cdb118836c5f2a78a6a726cd85620ebdd124e8aecc9763e72fb175f3ad5b8c10f112b75095bd4c7fa9046852cc321da8d0001440dcae526ec96ba8d4ae5b15f2460a42a70fa6ab0b3da27e7f8f41ecb68cf635d2861317a9fd52d93c977ed28087ccf4ebdb1f762df09c1f51518998615d9b7bf60a4790a28673df6927a6a86ece784a2e4565c4c1d73407ae8612f13d6e31ccaae40ce42d755137f47ed5f9209f08cadf964f2cac5bbed98ce160dc375d61d6006d4f3bdf0cbab6815ddc8fe02492ff66ccef08e2f2abb29b3f548be96bd05d48d4495a54fbd76a32ad746eb079e512bd03cc81ce89a0a795f44bed5fc8ecb15155e60564fcd3bdf7fc8da86ac74e519906dd746dfd7806fb486970e68c8343f9846f325f2304a2d03614bdd6dd2db3c964f74081568b86895d670b363e702e61795c103984c54cd74d62889b3c1e0b6d2aae59ac647f1e5bb8a625d64bd282c384f0ae620841fab902753c638d3530cfcf98ce5a5150e9513bc833c71dc8d8d1373980a05d3cac2027b600ceedbe6b0bd56f94a548108870066f4bc0bfcdc369b3006787b39c5654287da2933a574f60d8baa836800920ee798b07128b10383ad555b6f72b345a2ae175b49fdcc1b026049100b4426d304c1b66efa01e1072dbc72d387c2f93232421cea57dfa627e98587dae0d7f0de9cdfd7d1389aa504ec92c7a76d37f63d466f6513d2990d9cc3e275afd26c100eb609dcf9e78af09f43d7a05a195e2221c3fb327d753ea37ff563ab66c70bd9f404d2a9e006b7c1fa90ccc1a66d4ea9d72e6fc90912037330c7a286670ddd7ec61ccfc05419b89a283c3e958f9b604abd5bb2c9239eb304b3b6c6911259c535c4ba7ddf02916090d85568ee0ca39f0288e58b7fb66996dd0102edc58f917b6012c1657b15eace6f0a222884c735d77654c21795e4310a0e77fee020bb0eab744a5caffdd73eb3c4be735ffc031c97f92d74d865498159c218e44e63dd2533a292b8fdcaa33f2fdeb8fbcc46f25a51df7b2abe39981fd8790d22c0cff2d2da4529b6f8598032cbddd8098bdc71ffc2a407de009853d528fd67819e4c137ce73b0fca489e0d30daf243029af87a7b47f1f8e65cd1a31aec84baf14e71e95580cafd85bbe1da</script> <div class="hbe hbe-content"> <div class="hbe hbe-input hbe-input-default"> <input class="hbe hbe-input-field hbe-input-field-default" type="password" id="hbePass"> <label class="hbe hbe-input-label hbe-input-label-default" for="hbePass"> <span class="hbe hbe-input-label-content hbe-input-label-content-default">Hey, password is required here.</span> </label> </div> </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content>
<categories>
<category> hexo </category>
</categories>
</entry>
</search>