{"id":30797,"date":"2026-07-27T01:46:03","date_gmt":"2026-07-26T16:46:03","guid":{"rendered":"https:\/\/123210.net\/wordpress\/tatenaoshi\/?p=30797"},"modified":"2026-07-27T03:23:48","modified_gmt":"2026-07-26T18:23:48","slug":"%e5%86%8d%e5%b8%b0%e3%81%ae%e5%9f%ba%e7%a4%8e%ef%bc%9a%e5%85%ab%e5%85%83%e6%95%b0%e6%8f%8f%e7%94%bb6","status":"publish","type":"post","link":"https:\/\/123210.net\/wordpress\/tatenaoshi\/%e5%86%8d%e5%b8%b0%e3%81%ae%e5%9f%ba%e7%a4%8e%ef%bc%9a%e5%85%ab%e5%85%83%e6%95%b0%e6%8f%8f%e7%94%bb6\/","title":{"rendered":"\u518d\u5e30\u306e\u57fa\u790e\uff1a\u516b\u5143\u6570\u3001\u4e8c\u5206\u6728\u3001Cohl Furey \u306e\u30e2\u30c7\u30eb\u7d44\u307f\u8fbc\u307f\u3000\u5b9f\u884c\u7d50\u679c\u3068\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3000\uff06\u3000\u63cf\u753b"},"content":{"rendered":"<p>\u30b9\u30bf\u30c3\u30af\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u306f\u89e3\u6d88\u3057\u307e\u3057\u305f<\/p>\n<p>\u5b9f\u884c\u76f4\u5f8c\u306e\u5b9f\u884c\u6642\u30a8\u30e9\u30fc\u3060\u3051\u304c\u307e\u3060\u6b8b\u3063\u3066\u3044\u307e\u3059<br \/>\n\u3057\u304b\u3057\u3001\u7121\u7406\u3084\u308a\u30dc\u30bf\u30f3\u30af\u30ea\u30c3\u30af\u3067\u3001\u5b9f\u884c\u3055\u305b\u308b\u3068<br \/>\n\u30c1\u30e3\u30fc\u30c8\uff12\u7a2e\u306f\u63cf\u753b\u3067\u304d\u307e\u3057\u305f<br \/>\nChart3D\u306f\u63cf\u753b\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f<\/p>\n<p><a href=\"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-content\/uploads\/sites\/3\/2026\/07\/\u30ea\u30f3\u30af\u30a8\u30e9\u30fc\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3068\u5b9f\u884c\u72b6\u6cc12.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-30810\" src=\"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-content\/uploads\/sites\/3\/2026\/07\/\u30ea\u30f3\u30af\u30a8\u30e9\u30fc\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3068\u5b9f\u884c\u72b6\u6cc12.jpg\" alt=\"\" width=\"1244\" height=\"1327\" srcset=\"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-content\/uploads\/sites\/3\/2026\/07\/\u30ea\u30f3\u30af\u30a8\u30e9\u30fc\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3068\u5b9f\u884c\u72b6\u6cc12.jpg 1244w, https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-content\/uploads\/sites\/3\/2026\/07\/\u30ea\u30f3\u30af\u30a8\u30e9\u30fc\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3068\u5b9f\u884c\u72b6\u6cc12-281x300.jpg 281w, https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-content\/uploads\/sites\/3\/2026\/07\/\u30ea\u30f3\u30af\u30a8\u30e9\u30fc\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3068\u5b9f\u884c\u72b6\u6cc12-960x1024.jpg 960w, https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-content\/uploads\/sites\/3\/2026\/07\/\u30ea\u30f3\u30af\u30a8\u30e9\u30fc\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3068\u5b9f\u884c\u72b6\u6cc12-768x819.jpg 768w\" sizes=\"auto, (max-width: 1244px) 100vw, 1244px\" \/><\/a><\/p>\n<hr \/>\n<p>C++Builder2007\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9<\/p>\n<p>&nbsp;<\/p>\n<p>\/\/*** Unit1.h<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>#ifndef Unit1H<br \/>\n#define Unit1H<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n#include &lt;Classes.hpp&gt;<br \/>\n#include &lt;Controls.hpp&gt;<br \/>\n#include &lt;StdCtrls.hpp&gt;<br \/>\n#include &lt;Forms.hpp&gt;<br \/>\n#include &#8220;Chart.hpp&#8221;<br \/>\n#include &#8220;TeEngine.hpp&#8221;<br \/>\n#include &#8220;TeeProcs.hpp&#8221;<br \/>\n#include &lt;ExtCtrls.hpp&gt;<\/p>\n<p>#include &lt;Series.hpp&gt; \/\/ \u2190 \u3053\u308c\u3092\u8ffd\u52a0\uff08\u6700\u91cd\u8981\uff09<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n\/\/ \u5c65\u6b74\u7528\u69cb\u9020\u4f53<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nstruct OctoState {<br \/>\nint step;<br \/>\nint depth;<br \/>\ndouble c[8];<br \/>\ndouble norm2;<br \/>\ndouble N;<br \/>\nint lastDeriv;<br \/>\n};<\/p>\n<p>\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n\/\/ \u516b\u5143\u6570<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nstruct Octonion {<br \/>\ndouble e[8];<\/p>\n<p>Octonion(double a0=0.0, double a1=0.0, double a2=0.0, double a3=0.0,<br \/>\ndouble a4=0.0, double a5=0.0, double a6=0.0, double a7=0.0);<\/p>\n<p>Octonion operator+(const Octonion&amp; o) const;<br \/>\nOctonion operator-(const Octonion&amp; o) const; \/\/ \u6e1b\u7b97<br \/>\nOctonion operator-() const; \/\/ \u5358\u9805\u30de\u30a4\u30ca\u30b9\uff08\u5ff5\u306e\u305f\u3081\uff09<br \/>\nOctonion operator*(const Octonion&amp; o) const; \/\/ \u2190 \u5909\u66f4\uff1a\u5b8c\u5168\u4e57\u7b97<br \/>\nOctonion operator*(double scalar) const; \/\/ \u30b9\u30ab\u30e9\u30fc\u4e57\u7b97\u306f\u6b8b\u3059<br \/>\ndouble Norm() const;<\/p>\n<p>Octonion Conjugate() const; \/\/ \u6a19\u6e96\u7684\u306a\u5171\u5f79<br \/>\nOctonion PhaseConjugate() const; \/\/ \u4f4d\u76f8\u5171\u5f79\u7528\uff08\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u62e1\u5f35\u53ef\u80fd\uff09<br \/>\nOctonion ApplyDerivation(const Octonion&amp; a, const Octonion&amp; b) const; \/\/ D_a,b (this)<br \/>\n};<\/p>\n<p>\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n\/\/ \u518d\u5e30\u516b\u5143\u6570<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nclass RecursiveOcto {<br \/>\npublic:<br \/>\nint depth;<br \/>\nOctonion value;<br \/>\nRecursiveOcto* child; \/\/ \u901a\u5e38\u306e\u5b50<br \/>\nRecursiveOcto* childConj; \/\/ \u5171\u5f79\u306e\u5b50\uff08\u8ffd\u52a0\uff09<br \/>\nOctonion interference; \/\/ \u5e72\u6e09\u7d50\u679c\u3092\u4fdd\u6301\u3059\u308b\u30e1\u30f3\u30d0\u30fc\u3092\u8ffd\u52a0<\/p>\n<p>\/\/ \u2605 \u8ffd\u52a0<br \/>\ndouble N; \/\/ \u6570\u6f14\u7b97\u5b50\uff08\u52b1\u8d77\u5ea6\uff09<br \/>\ndouble Q; \/\/ \u96fb\u8377\u7684\u306a\u91cf = N \/ 3<\/p>\n<p>RecursiveOcto(int d, Octonion init);<br \/>\n~RecursiveOcto();<br \/>\nvoid Generate(int maxDepth);<br \/>\nvoid Dump(TMemo* memo);<\/p>\n<p>void ComputeNumberOperator(); \/\/ \u2605 \u8ffd\u52a0<\/p>\n<p>\/\/ \u89b3\u5bdf\uff08Observe\uff09\u6a5f\u80fd\u3068\u306e\u9023\u643a<br \/>\nint preferredDir; \/\/ \u89b3\u5bdf\u3067\u56fa\u5b9a\u3055\u308c\u305f\u65b9\u5411\uff08-1 = \u672a\u89b3\u5bdf\uff09<br \/>\nvoid Observe(int dir); \/\/ dir = 0?6\uff08e1?e7\uff09<br \/>\n};<\/p>\n<p>\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n\/\/ \u30d5\u30a9\u30fc\u30e0<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nclass TForm1 : public TForm<br \/>\n{<br \/>\n__published: \/\/ IDE-managed Components<br \/>\nTButton *ButtonExit;<br \/>\nTMemo *Memo1;<br \/>\nTButton *Button2;<br \/>\nTChart *ChartTime;<br \/>\nTChart *ChartNorm;<br \/>\nTChart *Chart3D;<br \/>\nvoid __fastcall ButtonExitClick(TObject *Sender);<br \/>\nvoid __fastcall Button2Click(TObject *Sender);<br \/>\nvoid __fastcall FormCreate(TObject *Sender);<br \/>\nprivate: \/\/ User declarations<br \/>\nTList* History;<\/p>\n<p>void ClearHistory();<br \/>\nvoid CollectHistory(RecursiveOcto* node, int&amp; counter);<br \/>\nvoid __fastcall InitTimeCharts();<br \/>\nvoid Init3DChart();<br \/>\nvoid __fastcall UpdateTimeCharts();<br \/>\nvoid __fastcall Update3DChart();<br \/>\npublic: \/\/ User declarations<br \/>\n__fastcall TForm1(TComponent* Owner);<br \/>\n};<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nextern PACKAGE TForm1 *Form1;<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n#endif<\/p>\n<p>\/\/*** Unit1.cpp<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>#include &lt;vcl.h&gt;<br \/>\n#pragma hdrstop<\/p>\n<p>#include &lt;math.h&gt;<br \/>\n#include &#8220;Unit1.h&#8221;<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n#pragma package(smart_init)<br \/>\n#pragma link &#8220;Chart&#8221;<br \/>\n#pragma link &#8220;TeEngine&#8221;<br \/>\n#pragma link &#8220;TeeProcs&#8221;<br \/>\n#pragma resource &#8220;*.dfm&#8221;<br \/>\nTForm1 *Form1;<\/p>\n<p>\/\/\u30ea\u30f3\u30ab\uff5c\u51fa\u529b\u30aa\u30d7\u30b7\u30e7\u30f3\uff5c\u6700\u5927\u30b9\u30bf\u30c3\u30af\u30b5\u30a4\u30ba\u30000x64000000\uff08\u7d041.56GB\uff09\u5927\u304d\u3059\u304e\u3067\u3042\u3063\u305f\u306e\u3067\u30010x01000000\u306b\u8a2d\u5b9a<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n__fastcall TForm1::TForm1(TComponent* Owner)<br \/>\n: TForm(Owner)<br \/>\n{<br \/>\n}<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nvoid __fastcall TForm1::ButtonExitClick(TObject *Sender)<br \/>\n{<br \/>\nClose();<br \/>\n}<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>Octonion::Octonion(double a0, double a1, double a2, double a3,<br \/>\ndouble a4, double a5, double a6, double a7) {<br \/>\ne[0]=a0; e[1]=a1; e[2]=a2; e[3]=a3;<br \/>\ne[4]=a4; e[5]=a5; e[6]=a6; e[7]=a7;<br \/>\n}<\/p>\n<p>Octonion Octonion::Conjugate() const {<br \/>\nreturn Octonion(<br \/>\ne[0],<br \/>\n-e[1], -e[2], -e[3], -e[4], -e[5], -e[6], -e[7]<br \/>\n);<br \/>\n}<\/p>\n<p>Octonion Octonion::PhaseConjugate() const {<br \/>\nreturn Conjugate();<br \/>\n}<\/p>\n<p>Octonion Octonion::operator+(const Octonion&amp; o) const {<br \/>\nOctonion res;<br \/>\nfor(int i=0; i&lt;8; i++) res.e[i] = e[i] + o.e[i];<br \/>\nreturn res;<br \/>\n}<\/p>\n<p>\/\/ \u4e8c\u9805\u6e1b\u7b97<br \/>\nOctonion Octonion::operator-(const Octonion&amp; o) const {<br \/>\nOctonion res;<br \/>\nfor(int i = 0; i &lt; 8; i++) {<br \/>\nres.e[i] = e[i] &#8211; o.e[i];<br \/>\n}<br \/>\nreturn res;<br \/>\n}<\/p>\n<p>\/\/ \u5358\u9805\u30de\u30a4\u30ca\u30b9<br \/>\nOctonion Octonion::operator-() const {<br \/>\nOctonion res;<br \/>\nfor(int i = 0; i &lt; 8; i++) {<br \/>\nres.e[i] = -e[i];<br \/>\n}<br \/>\nreturn res;<br \/>\n}<\/p>\n<p>\/\/ \u30b9\u30ab\u30e9\u30fc\u4e57\u7b97\u306f\u6b8b\u3059<br \/>\nOctonion Octonion::operator*(double scalar) const {<br \/>\nOctonion res;<br \/>\nfor(int i=0; i&lt;8; i++) res.e[i] = e[i] * scalar;<br \/>\nreturn res;<br \/>\n}<\/p>\n<p>\/\/ \u5b8c\u5168\u306a\u516b\u5143\u6570\u4e57\u7b97<br \/>\nOctonion Octonion::operator*(const Octonion&amp; o) const {<br \/>\nOctonion res;<\/p>\n<p>\/\/ e0\uff08\u5b9f\u90e8\uff09<br \/>\nres.e[0] = e[0]*o.e[0] &#8211; e[1]*o.e[1] &#8211; e[2]*o.e[2] &#8211; e[3]*o.e[3]<br \/>\n&#8211; e[4]*o.e[4] &#8211; e[5]*o.e[5] &#8211; e[6]*o.e[6] &#8211; e[7]*o.e[7];<\/p>\n<p>\/\/ e1<br \/>\nres.e[1] = e[0]*o.e[1] + e[1]*o.e[0] + e[2]*o.e[3] &#8211; e[3]*o.e[2]<br \/>\n+ e[4]*o.e[5] &#8211; e[5]*o.e[4] &#8211; e[6]*o.e[7] + e[7]*o.e[6];<\/p>\n<p>\/\/ e2<br \/>\nres.e[2] = e[0]*o.e[2] &#8211; e[1]*o.e[3] + e[2]*o.e[0] + e[3]*o.e[1]<br \/>\n+ e[4]*o.e[6] + e[5]*o.e[7] &#8211; e[6]*o.e[4] &#8211; e[7]*o.e[5];<\/p>\n<p>\/\/ e3<br \/>\nres.e[3] = e[0]*o.e[3] + e[1]*o.e[2] &#8211; e[2]*o.e[1] + e[3]*o.e[0]<br \/>\n+ e[4]*o.e[7] &#8211; e[5]*o.e[6] + e[6]*o.e[5] &#8211; e[7]*o.e[4];<\/p>\n<p>\/\/ e4<br \/>\nres.e[4] = e[0]*o.e[4] &#8211; e[1]*o.e[5] &#8211; e[2]*o.e[6] &#8211; e[3]*o.e[7]<br \/>\n+ e[4]*o.e[0] + e[5]*o.e[1] + e[6]*o.e[2] + e[7]*o.e[3];<\/p>\n<p>\/\/ e5<br \/>\nres.e[5] = e[0]*o.e[5] + e[1]*o.e[4] &#8211; e[2]*o.e[7] + e[3]*o.e[6]<br \/>\n&#8211; e[4]*o.e[1] + e[5]*o.e[0] &#8211; e[6]*o.e[3] + e[7]*o.e[2];<\/p>\n<p>\/\/ e6<br \/>\nres.e[6] = e[0]*o.e[6] + e[1]*o.e[7] + e[2]*o.e[4] &#8211; e[3]*o.e[5]<br \/>\n&#8211; e[4]*o.e[2] + e[5]*o.e[3] + e[6]*o.e[0] &#8211; e[7]*o.e[1];<\/p>\n<p>\/\/ e7<br \/>\nres.e[7] = e[0]*o.e[7] &#8211; e[1]*o.e[6] + e[2]*o.e[5] + e[3]*o.e[4]<br \/>\n&#8211; e[4]*o.e[3] &#8211; e[5]*o.e[2] + e[6]*o.e[1] + e[7]*o.e[0];<\/p>\n<p>return res;<br \/>\n}<\/p>\n<p>double Octonion::Norm() const {<br \/>\ndouble sum = 0.0;<br \/>\nfor(int i=0; i&lt;8; i++) sum += e[i]*e[i];<br \/>\nreturn sqrt(sum);<br \/>\n}<\/p>\n<p>Octonion Octonion::ApplyDerivation(const Octonion&amp; a, const Octonion&amp; b) const<br \/>\n{<br \/>\n\/\/ 1. \u4ea4\u63db\u5b50 [a,b]<br \/>\nOctonion ab = a * b &#8211; b * a; \/\/ [a,b]<\/p>\n<p>\/\/ 2. \u4ea4\u63db\u5b50\u306e\u4f5c\u7528 [[a,b], this]<br \/>\nOctonion commutator_term = ab * (*this) &#8211; (*this) * ab;<\/p>\n<p>\/\/ 3. \u7d50\u5408\u5b50 [a,b,this] = (a*b)*this &#8211; a*(b*this)<br \/>\nOctonion assoc = (a * b) * (*this) &#8211; a * (b * (*this));<\/p>\n<p>\/\/ 4. \u6a19\u6e96\u7684\u306a\u5c0e\u5206\u516c\u5f0f\uff08\u4fc2\u6570\u306f\u8abf\u6574\u53ef\u80fd\uff09<br \/>\n\/\/ D = [[a,b],x] &#8211; 3[a,b,x]<br \/>\nOctonion result = commutator_term &#8211; assoc * 3.0;<\/p>\n<p>\/\/ \u30b9\u30b1\u30fc\u30eb\u8abf\u6574\uff08\u6442\u52d5\u304c\u5927\u304d\u3059\u304e\u306a\u3044\u3088\u3046\u306b\uff09<br \/>\n\/\/return result * 0.5;<br \/>\n\/\/return result * 0.20; \/\/ \u6442\u52d5\u304c\u5c11\u3057\u5f37\u3081\u306b\u51fa\u3066\u3044\u308b\u3088\u3046\u306a\u306e\u3067\u3001\u30b9\u30b1\u30fc\u30eb\u3092\u5c11\u3057\u5f31\u3081\u30660.5\u21920.20\uff0860%\u6e1b\uff09\u5b89\u5b9a\u6027\u3092\u78ba\u8a8d\u3059\u308b<br \/>\n\/\/return result * 0.25; \/\/ \u6442\u52d5\u304c\u5c11\u3057\u5f37\u3081\u306b\u51fa\u3066\u3044\u308b\u3088\u3046\u306a\u306e\u3067\u3001\u30b9\u30b1\u30fc\u30eb\u3092\u5c11\u3057\u5f31\u3081\u30660.5\u21920.25\uff0850%\u6e1b\uff09\u5b89\u5b9a\u6027\u3092\u78ba\u8a8d\u3059\u308b<br \/>\n\/\/return result * 0.30; \/\/ \u6442\u52d5\u304c\u5c11\u3057\u5f37\u3081\u306b\u51fa\u3066\u3044\u308b\u3088\u3046\u306a\u306e\u3067\u3001\u30b9\u30b1\u30fc\u30eb\u3092\u5c11\u3057\u5f31\u3081\u30660.5\u21920.30\uff0840%\u6e1b\uff09\u5b89\u5b9a\u6027\u3092\u78ba\u8a8d\u3059\u308b<br \/>\nreturn result * 0.35; \/\/ \u6442\u52d5\u304c\u5c11\u3057\u5f37\u3081\u306b\u51fa\u3066\u3044\u308b\u3088\u3046\u306a\u306e\u3067\u3001\u30b9\u30b1\u30fc\u30eb\u3092\u5c11\u3057\u5f31\u3081\u30660.5\u21920.35\uff0830%\u6e1b\uff09\u5b89\u5b9a\u6027\u3092\u78ba\u8a8d\u3059\u308b<br \/>\n\/\/return result * 0.40; \/\/ \u6442\u52d5\u304c\u5c11\u3057\u5f37\u3081\u306b\u51fa\u3066\u3044\u308b\u3088\u3046\u306a\u306e\u3067\u3001\u30b9\u30b1\u30fc\u30eb\u3092\u5c11\u3057\u5f31\u3081\u30660.5\u21920.40\uff0820%\u6e1b\uff09\u5b89\u5b9a\u6027\u3092\u78ba\u8a8d\u3059\u308b<br \/>\n\/\/return result * 0.45; \/\/ \u6442\u52d5\u304c\u5c11\u3057\u5f37\u3081\u306b\u51fa\u3066\u3044\u308b\u3088\u3046\u306a\u306e\u3067\u3001\u30b9\u30b1\u30fc\u30eb\u3092\u5c11\u3057\u5f31\u3081\u30660.5\u21920.45\uff0810%\u6e1b\uff09\u5b89\u5b9a\u6027\u3092\u78ba\u8a8d\u3059\u308b<br \/>\n\/\/*** \u8a55\u4fa1\u7d50\u679c\uff1a0.30\uff1a\u63a7\u3048\u3081\u3060\u304c\u52b9\u679c\u306f\u5341\u5206\u51fa\u308b ***<br \/>\n\/\/*** \u8a55\u4fa1\u7d50\u679c\uff1a0.35\uff1a\u5c0e\u5206\u306e\u5f71\u97ff\u304c\u3088\u308a\u660e\u78ba\u306b\u73fe\u308c\u3064\u3064\u3001\u5b89\u5b9a\u6027\u3082\u9ad8\u3044 ***<\/p>\n<p>}<\/p>\n<p>\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nRecursiveOcto::RecursiveOcto(int d, Octonion v)<br \/>\n: depth(d), value(v), child(NULL), childConj(NULL),<br \/>\nN(0.0), Q(0.0), preferredDir(-1)<br \/>\n{<br \/>\n}<\/p>\n<p>RecursiveOcto::~RecursiveOcto() {<br \/>\ndelete child;<br \/>\ndelete childConj;<br \/>\n}<\/p>\n<p>void RecursiveOcto::Generate(int maxDepth) {<br \/>\n\/\/if (depth &gt;= maxDepth) return;<br \/>\n\/\/if (depth &gt;= maxDepth || depth &gt; 20) return; \/\/ \u5b89\u5168\u4e0a\u9650\u3092\u8ffd\u52a0<\/p>\n<p>\/\/ \u7d76\u5bfe\u306b\u6df1\u304f\u306a\u3089\u306a\u3044\u3088\u3046\u306b\u3059\u308b<br \/>\nif (depth &gt;= maxDepth || depth &gt; 12) {<br \/>\nchild = NULL;<br \/>\nchildConj = NULL;<br \/>\nreturn;<br \/>\n}<\/p>\n<p>\/\/ === \u65e2\u5b58\u306e\u56de\u8ee2\u5b50 ===<br \/>\nOctonion rotator(cos(depth*0.15), sin(depth*0.15), 0.05, 0,0,0,0,0);<\/p>\n<p>\/\/ === Fano\u5e73\u9762\u306e\u65b9\u5411\u5b9a\u7fa9 ===<br \/>\nOctonion dirs[7][2] = {<br \/>\n{ Octonion(0,1,0,0,0,0,0,0), Octonion(0,0,1,0,0,0,0,0) }, \/\/ 0<br \/>\n{ Octonion(0,1,0,0,0,0,0,0), Octonion(0,0,0,0,1,0,0,0) }, \/\/ 1<br \/>\n{ Octonion(0,1,0,0,0,0,0,0), Octonion(0,0,0,0,0,0,1,0) }, \/\/ 2<br \/>\n{ Octonion(0,0,1,0,0,0,0,0), Octonion(0,0,0,0,1,0,0,0) }, \/\/ 3<br \/>\n{ Octonion(0,0,1,0,0,0,0,0), Octonion(0,0,0,0,0,1,0,0) }, \/\/ 4<br \/>\n{ Octonion(0,0,0,1,0,0,0,0), Octonion(0,0,0,0,1,0,0,0) }, \/\/ 5<br \/>\n{ Octonion(0,0,0,1,0,0,0,0), Octonion(0,0,0,0,0,1,0,0) } \/\/ 6<br \/>\n};<\/p>\n<p>int dir = depth % 7;<\/p>\n<p>\/\/ === \u7c21\u6613\u7684\u306a\u5c40\u6240N\u63a8\u5b9a\uff08Generate\u6642\u70b9\u3067\u4f7f\u3048\u308b\u3088\u3046\u306b\uff09 ===<br \/>\ndouble imagStrength = 0.0;<br \/>\nfor(int i=1; i&lt;=7; i++) imagStrength += fabs(value.e[i]);<\/p>\n<p>\/\/ \u7c21\u6613N\uff08\u91cf\u5b50\u5316\u524d\uff09<br \/>\ndouble localN = 1.0 + imagStrength * 0.8; \/\/ \u30d9\u30fc\u30b9 + \u865a\u90e8\u306e\u5f37\u3055<br \/>\nif (localN &gt; 3.0) localN = 3.0;<\/p>\n<p>\/\/ N\u306b\u5fdc\u3058\u305f\u30b9\u30b1\u30fc\u30eb\u4fc2\u6570\uff08N\u304c\u5927\u304d\u3044\u307b\u3069\u5f37\u304f\u3059\u308b\uff09<br \/>\n\/\/ N=0 \u2192 \u5f31\u3044, N=3 \u2192 \u5f37\u3044<br \/>\ndouble nFactor = 0.4 + (localN \/ 3.0) * 0.9; \/\/ 0.4 ? 1.3 \u7a0b\u5ea6\u306e\u7bc4\u56f2<\/p>\n<p>\/\/*******************************************************************<br \/>\n\/\/ Generate \u5185\u306e\u5c0e\u5206\u90e8\u5206\u3067\u3001\u89b3\u5bdf\u6e08\u307f\u306e\u5834\u5408\u306f\u56fa\u5b9a\u65b9\u5411\u3092\u907f\u3051\u308b\uff0f\u5f31\u3081\u308b<br \/>\nif (preferredDir &gt;= 0) {<br \/>\n\/\/ \u89b3\u5bdf\u6e08\u307f\u306a\u3089\u3001\u56fa\u5b9a\u65b9\u5411\u306b\u95a2\u4fc2\u3059\u308b\u5c0e\u5206\u3092\u5f31\u3081\u308b<br \/>\n\/\/ \uff08\u7c21\u6613\u7684\u306b nFactor \u3092\u3055\u3089\u306b\u4e0b\u3052\u308b\uff09<br \/>\nnFactor *= 0.5;<br \/>\n}<br \/>\n\/\/*******************************************************************<\/p>\n<p>\/\/ === \u8907\u6570\u5c0e\u5206\uff08N\u4f9d\u5b58\u30b9\u30b1\u30fc\u30eb\u3092\u639b\u3051\u308b\uff09 ===<br \/>\nOctonion g2_perturb = value.ApplyDerivation(dirs[dir][0], dirs[dir][1]) * (0.07 * nFactor);<\/p>\n<p>int dir2 = (dir + 1) % 7;<br \/>\ng2_perturb = g2_perturb + value.ApplyDerivation(dirs[dir2][0], dirs[dir2][1]) * (0.03 * nFactor);<\/p>\n<p>int dir3 = (dir + 3) % 7;<br \/>\ng2_perturb = g2_perturb + value.ApplyDerivation(dirs[dir3][0], dirs[dir3][1]) * (0.015 * nFactor);<\/p>\n<p>\/\/ \u6b21\u306e\u72b6\u614b<br \/>\nOctonion next = (value + g2_perturb) * rotator;<br \/>\nnext = next + Octonion(0.03, 0,0,0,0,0,0,0);<\/p>\n<p>\/\/ \u5171\u5f79\u7248<br \/>\nOctonion nextConj = next.PhaseConjugate();<\/p>\n<p>\/\/ \u5b50\u751f\u6210 (\uff12\u500b\uff1a\u5171\u5f79\u5bfe\u3092\u751f\u6210)<br \/>\nchild = new RecursiveOcto(depth+1, next);<br \/>\nchild-&gt;Generate(maxDepth);<\/p>\n<p>childConj = new RecursiveOcto(depth+1, nextConj);<br \/>\nchildConj-&gt;Generate(maxDepth);<\/p>\n<p>\/\/ \u5e72\u6e09 + \u30d5\u30a3\u30fc\u30c9\u30d0\u30c3\u30af<br \/>\ninterference = (child-&gt;value + childConj-&gt;value) * 0.5;<br \/>\ndouble feedbackStrength = 0.3;<br \/>\nvalue = value * (1.0 &#8211; feedbackStrength) + interference * feedbackStrength;<br \/>\n}<\/p>\n<p>\/\/ \u6570\u6f14\u7b97\u5b50\u3092\u8a08\u7b97\u3059\u308b\u30e1\u30bd\u30c3\u30c9\uff08\u65b0\u898f\u8ffd\u52a0\uff09<br \/>\nvoid RecursiveOcto::ComputeNumberOperator()<br \/>\n{<br \/>\nif (depth &gt; 12) return; \/\/ \u8ffd\u52a0<\/p>\n<p>\/\/ \u57fa\u672c\u52b1\u8d77\uff1a\u81ea\u5206\u81ea\u8eab\u306e\u865a\u6570\u6210\u5206\u306e\u300c\u5f37\u3055\u300d<br \/>\n\/\/ \uff08e1?e7 \u306e\u7d76\u5bfe\u5024\u306e\u5408\u8a08\u3092\u9069\u5ea6\u306b\u30b9\u30b1\u30fc\u30eb\uff09<br \/>\ndouble imagStrength = 0.0;<\/p>\n<p>\/\/ \u2605 \u3053\u3053\u3092 e[1] \uff5e e[7] \u306b\u4fee\u6b63<br \/>\nimagStrength += fabs(value.e[1]);<br \/>\nimagStrength += fabs(value.e[2]);<br \/>\nimagStrength += fabs(value.e[3]);<br \/>\nimagStrength += fabs(value.e[4]);<br \/>\nimagStrength += fabs(value.e[5]);<br \/>\nimagStrength += fabs(value.e[6]);<br \/>\nimagStrength += fabs(value.e[7]);<\/p>\n<p>\/\/ \u5b50\u4f9b\u306e\u6709\u7121\u306b\u3088\u308b\u52b1\u8d77<br \/>\nint childCount = 0;<br \/>\nif (child) childCount++;<br \/>\nif (childConj) childCount++;<\/p>\n<p>\/\/ \u518d\u5e30\u7684\u306b\u5b50\u4f9b\u306e N \u3092\u52a0\u7b97\uff08\u968e\u5c64\u5168\u4f53\u306e\u52b1\u8d77\u3092\u84c4\u7a4d\uff09 \/\/ \u5b50\u4f9b\u306e N \u3092\u518d\u5e30\u7684\u306b\u96c6\u3081\u308b<br \/>\ndouble childrenN = 0.0;<br \/>\nif (child) {<br \/>\nchild-&gt;ComputeNumberOperator();<br \/>\nchildrenN += child-&gt;N;<br \/>\n}<br \/>\nif (childConj) {<br \/>\nchildConj-&gt;ComputeNumberOperator();<br \/>\nchildrenN += childConj-&gt;N;<br \/>\n}<\/p>\n<p>\/\/ \u6700\u7d42\u7684\u306a N \u306e\u5b9a\u7fa9\uff08\u8abf\u6574\u3057\u3084\u3059\u3044\u5f62\uff09<br \/>\n\/\/ \u5b50\u4f9b\u306e\u6570 \u00d7 1.0 + \u865a\u6570\u5f37\u5ea6 \u00d7 \u4fc2\u6570 + \u5b50\u4f9b\u305f\u3061\u306e N \u306e\u4e00\u90e8<br \/>\n\/\/N = childCount * 1.0 + imagStrength * 0.8 + childrenN * 0.3;<\/p>\n<p>\/\/ \u2605 \u4fc2\u6570\u3092\u8abf\u6574\u3057\u305f\u30d0\u30fc\u30b8\u30e7\u30f3<br \/>\n\/\/ \u5b50\u4f9b\u306e\u5bc4\u4e0e\u3092\u5f37\u3081\u3001\u865a\u6570\u5f37\u5ea6\u306e\u5f71\u97ff\u3092\u6291\u3048\u3081\u306b\u3059\u308b<br \/>\n\/*N = childCount * 1.5<br \/>\n+ imagStrength * 0.4<br \/>\n+ childrenN * 0.25;*\/<br \/>\n\/\/ \u2605 \u3053\u3053\u3092\u5927\u304d\u304f\u5909\u66f4<br \/>\nN = childCount * 1.0 \/\/ \u5b50\u4f9b\u306e\u6570\u306e\u5f71\u97ff\u3092\u5f31\u3081\u308b<br \/>\n+ imagStrength * 0.6<br \/>\n+ childrenN * 0.05; \/\/ \u5b50\u5b6b\u304b\u3089\u306e\u84c4\u7a4d\u3092\u304b\u306a\u308a\u5f31\u304f\u3059\u308b<\/p>\n<p>\/\/ \u3055\u3089\u306b\u3001\u3042\u308b\u7a0b\u5ea6\u6574\u6570\u306b\u8fd1\u3065\u3051\u308b\u305f\u3081\u306e\u4e38\u3081\uff08\u4efb\u610f\uff09<br \/>\n\/\/ N = floor(N + 0.5); \/\/ \u6574\u6570\u306b\u3057\u305f\u3044\u5834\u5408\u306f\u3053\u306e\u884c\u3092\u6709\u52b9\u306b\u3059\u308b<br \/>\n\/\/ \u2605 \u3053\u3053\u304b\u3089\u91cf\u5b50\u5316\uff08\u96e2\u6563\u5316\uff09<br \/>\n\/*if (N &lt; 0.7) N = 0.0;<br \/>\nelse if (N &lt; 1.7) N = 1.0;<br \/>\nelse if (N &lt; 2.7) N = 2.0;<br \/>\nelse if (N &lt; 3.7) N = 3.0;<br \/>\nelse N = 3.0; \/\/ \u4e0a\u9650\u30923\u306b\u5236\u9650<br \/>\n*\/<br \/>\n\/\/ \u2605 \u95be\u5024\u3092\u7de9\u3081\u305f\u91cf\u5b50\u5316<br \/>\n\/*if (N &lt; 0.8) N = 0.0;<br \/>\nelse if (N &lt; 1.8) N = 1.0;<br \/>\nelse if (N &lt; 2.8) N = 2.0;<br \/>\nelse N = 3.0;*\/<br \/>\n\/\/ \u91cf\u5b50\u5316<br \/>\nif (N &lt; 0.7) N = 0.0;<br \/>\nelse if (N &lt; 1.5) N = 1.0;<br \/>\nelse if (N &lt; 2.3) N = 2.0;<br \/>\nelse N = 3.0;<\/p>\n<p>\/\/ \u96fb\u8377\u7684\u306a\u91cf<br \/>\nQ = N \/ 3.0;<br \/>\n}<\/p>\n<p>void RecursiveOcto::Observe(int dir)<br \/>\n{<br \/>\nif (depth &gt; 12) return; \/\/ \u8ffd\u52a0<\/p>\n<p>if (dir &lt; 0 || dir &gt; 6) return;<\/p>\n<p>preferredDir = dir;<\/p>\n<p>\/\/ \u6307\u5b9a\u3057\u305f\u865a\u5358\u4f4d\u306e\u6210\u5206\u3092\u5f37\u8abf\u3057\u3001\u4ed6\u3092\u76f8\u5bfe\u7684\u306b\u6291\u5236\u3059\u308b\u7c21\u6613\u6295\u5f71<br \/>\n\/\/ \uff08\u5b8c\u5168\u306a\u5c04\u5f71\u3067\u306f\u306a\u304f\u3001\u89b3\u5bdf\u306b\u3088\u308b\u300c\u56fa\u5b9a\u300d\u306e\u30a4\u30e1\u30fc\u30b8\uff09<br \/>\ndouble strength = value.e[dir + 1]; \/\/ e1?e7<\/p>\n<p>\/\/ \u6307\u5b9a\u65b9\u5411\u3092\u6b8b\u3057\u3064\u3064\u3001\u5168\u4f53\u3092\u5c11\u3057\u6b63\u898f\u5316<br \/>\nfor(int i = 1; i &lt;= 7; i++) {<br \/>\nif (i == dir + 1) {<br \/>\n\/\/ \u6307\u5b9a\u65b9\u5411\u306f\u305d\u306e\u307e\u307e\uff08\u307e\u305f\u306f\u5c11\u3057\u5f37\u8abf\uff09<br \/>\nvalue.e[i] = strength * 1.1;<br \/>\n} else {<br \/>\n\/\/ \u4ed6\u306e\u65b9\u5411\u3092\u5f31\u3081\u308b<br \/>\nvalue.e[i] *= 0.6;<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ \u5b50\u306b\u3082\u540c\u3058\u89b3\u5bdf\u3092\u4f1d\u64ad\uff08\u518d\u5e30\uff09<br \/>\nif (child) child-&gt;Observe(dir);<br \/>\nif (childConj) childConj-&gt;Observe(dir);<br \/>\n}<\/p>\n<p>void RecursiveOcto::Dump(TMemo* memo)<br \/>\n{<\/p>\n<p>if (!memo) return;<br \/>\nAnsiString s;<br \/>\ns.sprintf(&#8220;Depth=%d Norm=%.4f e0=%.4f e1=%.4f N=%.1f Q=%.3f&#8221;,<br \/>\ndepth, value.Norm(), value.e[0], value.e[1], N, Q);<br \/>\nmemo-&gt;Lines-&gt;Add(s);<\/p>\n<p>\/\/ \u30aa\u30d7\u30b7\u30e7\u30f3\uff1a\u865a\u90e8\u306e\u5927\u304d\u3055\u3092\u5c11\u3057\u8a73\u3057\u304f<br \/>\ndouble imag = 0;<br \/>\nfor(int i=1;i&lt;8;i++) imag += fabs(value.e[i]);<br \/>\ns.sprintf(&#8221; imagStrength=%.4f&#8221;, imag);<br \/>\nmemo-&gt;Lines-&gt;Add(s);<\/p>\n<p>if (child) { memo-&gt;Lines-&gt;Add(&#8221; [\u901a\u5e38\u306e\u5b50]&#8221;); child-&gt;Dump(memo); }<br \/>\nif (childConj) { memo-&gt;Lines-&gt;Add(&#8221; [\u5171\u5f79\u306e\u5b50]&#8221;); childConj-&gt;Dump(memo); }<br \/>\n}<\/p>\n<p>\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>void __fastcall TForm1::UpdateTimeCharts()<br \/>\n{<\/p>\n<p>if (!ChartTime || !ChartNorm) return;<br \/>\nif (ChartTime-&gt;SeriesCount() &lt; 8) return;<br \/>\nif (ChartNorm-&gt;SeriesCount() &lt; 2) return;<\/p>\n<p>\/\/ \u30af\u30ea\u30a2<br \/>\nfor (int i = 0; i &lt; ChartTime-&gt;SeriesCount(); i++)<br \/>\nChartTime-&gt;Series[i]-&gt;Clear();<br \/>\nChartNorm-&gt;Series[0]-&gt;Clear();<br \/>\nChartNorm-&gt;Series[1]-&gt;Clear();<\/p>\n<p>for (int i = 0; i &lt; History-&gt;Count; i++) {<br \/>\nOctoState* s = (OctoState*)History-&gt;Items[i];<br \/>\nfor (int k = 0; k &lt; 8; k++)<br \/>\nChartTime-&gt;Series[k]-&gt;AddXY(s-&gt;step, s-&gt;c[k]);<br \/>\nChartNorm-&gt;Series[0]-&gt;AddXY(s-&gt;step, s-&gt;norm2);<br \/>\nChartNorm-&gt;Series[1]-&gt;AddXY(s-&gt;step, s-&gt;N);<br \/>\n}<\/p>\n<p>ChartTime-&gt;Refresh();<br \/>\nChartNorm-&gt;Refresh();<br \/>\n}<\/p>\n<p>void TForm1::ClearHistory()<br \/>\n{<br \/>\nfor (int i = 0; i &lt; History-&gt;Count; i++)<br \/>\ndelete (OctoState*)History-&gt;Items[i];<br \/>\nHistory-&gt;Clear();<br \/>\n}<\/p>\n<p>void __fastcall TForm1::Update3DChart()<br \/>\n{<\/p>\n<p>if (!Chart3D) return;<br \/>\nif (Chart3D-&gt;SeriesCount() == 0) return;<\/p>\n<p>TPointSeries* ser = dynamic_cast&lt;TPointSeries*&gt;(Chart3D-&gt;Series[0]);<br \/>\nif (!ser) return;<\/p>\n<p>ser-&gt;Clear();<\/p>\n<p>for (int i = 0; i &lt; History-&gt;Count; i++) {<br \/>\nOctoState* s = (OctoState*)History-&gt;Items[i];<br \/>\ndouble x = s-&gt;c[1];<br \/>\ndouble y = s-&gt;c[2];<\/p>\n<p>TColor col = clBlack;<br \/>\nif (s-&gt;N &gt;= 2.5) col = clRed;<br \/>\nelse if (s-&gt;N &gt;= 1.5) col = clLime;<br \/>\nelse if (s-&gt;N &gt;= 0.5) col = clBlue;<\/p>\n<p>ser-&gt;AddXY(x, y, &#8220;&#8221;, col);<br \/>\n}<\/p>\n<p>Chart3D-&gt;Axes-&gt;Bottom-&gt;Automatic = true;<br \/>\nChart3D-&gt;Axes-&gt;Left-&gt;Automatic = true;<br \/>\nChart3D-&gt;Refresh();<br \/>\n}<\/p>\n<p>void TForm1::CollectHistory(RecursiveOcto* node, int&amp; counter)<br \/>\n{<br \/>\nif (!node) return;<\/p>\n<p>OctoState* s = new OctoState;<br \/>\ns-&gt;step = counter++;<br \/>\ns-&gt;depth = node-&gt;depth;<br \/>\nfor (int i = 0; i &lt; 8; i++) s-&gt;c[i] = node-&gt;value.e[i];<br \/>\ns-&gt;norm2 = node-&gt;value.Norm() * node-&gt;value.Norm();<br \/>\ns-&gt;N = node-&gt;N;<br \/>\ns-&gt;lastDeriv = node-&gt;depth % 7;<\/p>\n<p>History-&gt;Add(s);<\/p>\n<p>CollectHistory(node-&gt;child, counter);<br \/>\nCollectHistory(node-&gt;childConj, counter);<\/p>\n<p>&nbsp;<\/p>\n<p>}<\/p>\n<p>void __fastcall TForm1::Button2Click(TObject *Sender)<br \/>\n{<br \/>\nMemo1-&gt;Clear();<br \/>\nClearHistory();<\/p>\n<p>Octonion rootVal(1.0, 0, 0, 0, 0, 0, 0, 0);<br \/>\nRecursiveOcto* root = new RecursiveOcto(0, rootVal);<br \/>\nroot-&gt;Generate(5); \/\/ \u5f8c\u30677?8\u306b\u4e0a\u3052\u3066\u304f\u3060\u3055\u3044<br \/>\nroot-&gt;Observe(2);<br \/>\nroot-&gt;ComputeNumberOperator();<\/p>\n<p>int counter = 0;<br \/>\nCollectHistory(root, counter);<\/p>\n<p>root-&gt;Dump(Memo1);<\/p>\n<p>UpdateTimeCharts();<br \/>\nUpdate3DChart();<\/p>\n<p>delete root;<br \/>\n}<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>void __fastcall TForm1::FormCreate(TObject *Sender)<br \/>\n{<\/p>\n<p>History = new TList();<\/p>\n<p>\/\/ \u30c1\u30e3\u30fc\u30c8\u304c\u3061\u3083\u3093\u3068\u30d5\u30a9\u30fc\u30e0\u306b\u7d50\u3073\u3064\u3044\u3066\u3044\u308b\u304b\u78ba\u8a8d<br \/>\nif (!ChartTime || !ChartNorm || !Chart3D) {<br \/>\nShowMessage(&#8220;\u30c1\u30e3\u30fc\u30c8\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u304c\u30d5\u30a9\u30fc\u30e0\u306b\u6b63\u3057\u304f\u7d50\u3073\u3064\u3044\u3066\u3044\u307e\u305b\u3093\u3002\\n&#8221;<br \/>\n&#8220;IDE\u3067\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u540d\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002&#8221;);<br \/>\nreturn;<br \/>\n}<\/p>\n<p>InitTimeCharts();<br \/>\nInit3DChart();<br \/>\n}<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>void __fastcall TForm1::InitTimeCharts()<br \/>\n{<br \/>\nChartTime-&gt;View3D = false;<br \/>\nChartTime-&gt;Legend-&gt;Visible = true;<br \/>\nChartTime-&gt;Title-&gt;Text-&gt;Text = &#8220;Octonion Components&#8221;;<\/p>\n<p>\/\/ 8\u672c\u306e\u7dda\u30b7\u30ea\u30fc\u30ba\u3092\u4f5c\u6210<br \/>\nfor (int i = 0; i &lt; 8; i++) {<br \/>\nTLineSeries* ser = new TLineSeries(ChartTime);<br \/>\nChartTime-&gt;AddSeries(ser);<br \/>\n\/\/ser-&gt;Title = (i == 0) ? &#8220;Re&#8221; : &#8220;e&#8221; + IntToStr(i);<br \/>\nser-&gt;Title = (i == 0) ? AnsiString(&#8220;Re&#8221;) : AnsiString(&#8220;e&#8221;) + IntToStr(i);<br \/>\nser-&gt;LinePen-&gt;Width = 1;<br \/>\n\/\/ \u8272\u306f\u304a\u597d\u307f\u3067\uff08\u4f8b\uff09<br \/>\nstatic TColor cols[8] = {clBlack, clRed, clGreen, clBlue,<br \/>\nclFuchsia, clOlive, clNavy, clMaroon};<br \/>\nser-&gt;SeriesColor = cols[i];<br \/>\n}<\/p>\n<p>\/\/ \u30ce\u30eb\u30e0\u7528\u30c1\u30e3\u30fc\u30c8<br \/>\nChartNorm-&gt;View3D = false;<br \/>\nTLineSeries* sNorm = new TLineSeries(ChartNorm);<br \/>\nTLineSeries* sN = new TLineSeries(ChartNorm);<br \/>\nChartNorm-&gt;AddSeries(sNorm);<br \/>\nChartNorm-&gt;AddSeries(sN);<br \/>\nsNorm-&gt;Title = &#8220;|O|2&#8221;;<br \/>\nsN-&gt;Title = &#8220;N&#8221;;<br \/>\nsNorm-&gt;SeriesColor = clBlack;<br \/>\nsN-&gt;SeriesColor = clRed;<\/p>\n<p>&nbsp;<\/p>\n<p>}<\/p>\n<p>void TForm1::Init3DChart()<br \/>\n{<br \/>\nChart3D-&gt;View3D = true;<br \/>\nChart3D-&gt;View3DOptions-&gt;Orthogonal = false;<br \/>\nChart3D-&gt;Legend-&gt;Visible = false;<\/p>\n<p>TPointSeries* ser = new TPointSeries(Chart3D);<br \/>\nChart3D-&gt;AddSeries(ser);<br \/>\nser-&gt;Pointer-&gt;Style = psCircle;<br \/>\nser-&gt;Pointer-&gt;HorizSize = 3;<br \/>\nser-&gt;Pointer-&gt;VertSize = 3;<br \/>\n}<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u30b9\u30bf\u30c3\u30af\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc\u306f\u89e3\u6d88\u3057\u307e\u3057\u305f \u5b9f\u884c\u76f4\u5f8c\u306e\u5b9f\u884c\u6642\u30a8\u30e9\u30fc\u3060\u3051\u304c\u307e\u3060\u6b8b\u3063\u3066\u3044\u307e &hellip; <a href=\"https:\/\/123210.net\/wordpress\/tatenaoshi\/%e5%86%8d%e5%b8%b0%e3%81%ae%e5%9f%ba%e7%a4%8e%ef%bc%9a%e5%85%ab%e5%85%83%e6%95%b0%e6%8f%8f%e7%94%bb6\/\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-30797","post","type-post","status-publish","format-standard","hentry","category-1"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/posts\/30797","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/comments?post=30797"}],"version-history":[{"count":12,"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/posts\/30797\/revisions"}],"predecessor-version":[{"id":30811,"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/posts\/30797\/revisions\/30811"}],"wp:attachment":[{"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/media?parent=30797"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/categories?post=30797"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/tags?post=30797"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}