{"id":30188,"date":"2026-07-11T10:02:43","date_gmt":"2026-07-11T01:02:43","guid":{"rendered":"https:\/\/123210.net\/wordpress\/tatenaoshi\/?p=30188"},"modified":"2026-07-13T14:44:17","modified_gmt":"2026-07-13T05:44:17","slug":"%e5%86%8d%e5%b8%b0qrm%e3%82%b3%e3%83%bc%e3%83%89","status":"publish","type":"post","link":"https:\/\/123210.net\/wordpress\/tatenaoshi\/%e5%86%8d%e5%b8%b0qrm%e3%82%b3%e3%83%bc%e3%83%89\/","title":{"rendered":"\u518d\u5e30QRM\u30b3\u30fc\u30c9260711J+++++++++Qualia\uff06\u7948\u308a"},"content":{"rendered":"<p>\/\/***************************************************************************<br \/>\n\/\/ GraphSpatialStructure.h<br \/>\n\/\/***************************************************************************<br \/>\n#ifndef GraphSpatialStructureH<br \/>\n#define GraphSpatialStructureH<\/p>\n<p>#include<br \/>\n#include<\/p>\n<p>class RecursiveLoop;<\/p>\n<p>class GraphSpatialStructure {<br \/>\npublic:<br \/>\nGraphSpatialStructure(){}<br \/>\n~GraphSpatialStructure();<\/p>\n<p>int AddLoop(RecursiveLoop* loop);<br \/>\nvoid AddEdge(int fromIndex, int toIndex);<\/p>\n<p>std::vector&lt;RecursiveLoop*&gt; GetAllLoops() const;<br \/>\nstd::vector&lt;RecursiveLoop*&gt; GetNeighbors(int index) const;<\/p>\n<p>void UpdateAll(double dt);<br \/>\nvoid DumpToMemo(TMemo* memo, int step = -1);<\/p>\n<p>\/\/ \u5e73\u5747\u5024\u53d6\u5f97\uff08\u89aa\u304c\u5b50\u3092\u53c2\u7167\u3059\u308b\u3068\u304d\u306b\u4fbf\u5229\uff09<br \/>\ndouble GetAveragePhase() const;<\/p>\n<p>std::vector&lt;RecursiveLoop*&gt; loops;<br \/>\nstd::vector&lt;RecursiveLoop*&gt; neighbors;<\/p>\n<p>\/\/ GraphSpatialStructure.h \u306b\u5ba3\u8a00\u3092\u8ffd\u52a0<br \/>\nvoid DebugDump(TMemo* memo);<\/p>\n<p>\/\/void AddLoop(RecursiveLoop* loop);<br \/>\nvoid DebugDump(TMemo* memo, int indent = 0);<\/p>\n<p>private:<br \/>\nstd::vector&lt;RecursiveLoop*&gt; nodes_;<br \/>\nstd::vector&lt;std::vector &gt; adjList_; \/\/ \u2190 \u30b9\u30da\u30fc\u30b9\u5fc5\u9808\uff01<br \/>\n};<\/p>\n<p>#endif<\/p>\n<p>\/\/***************************************************************************<br \/>\n\/\/ GraphSpatialStructure.cpp<br \/>\n\/\/***************************************************************************<br \/>\n#include &#8220;GraphSpatialStructure.h&#8221;<br \/>\n#include<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;<\/p>\n<p>GraphSpatialStructure::~GraphSpatialStructure()<br \/>\n{<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = loops.begin();<br \/>\nit != loops.end(); ++it) {<br \/>\ndelete *it; \/\/ \u5404Loop\u3092\u89e3\u653e<br \/>\n}<br \/>\nloops.clear();<br \/>\n}<\/p>\n<p>int GraphSpatialStructure::AddLoop(RecursiveLoop* loop) {<br \/>\nif (loop != NULL) {<br \/>\nloops.push_back(loop);<br \/>\nreturn loops.size() &#8211; 1; \/\/ \u8ffd\u52a0\u3057\u305f\u4f4d\u7f6e\u3092\u8fd4\u3059<br \/>\n}<br \/>\nreturn -1;<br \/>\n}<\/p>\n<p>void GraphSpatialStructure::AddEdge(int fromIndex, int toIndex) {<br \/>\nif (fromIndex &gt;= 0 &amp;&amp; fromIndex &lt; (int)adjList_.size() &amp;&amp; toIndex &gt;= 0 &amp;&amp; toIndex &lt; (int)adjList_.size()) {<br \/>\nadjList_[fromIndex].push_back(toIndex);<br \/>\n}<br \/>\n}<\/p>\n<p>std::vector&lt;RecursiveLoop*&gt; GraphSpatialStructure::GetAllLoops() const {<br \/>\n\/\/return nodes_;<br \/>\nreturn loops; \/\/ nodes_ \u2192 loops \u306b\u5909\u66f4<br \/>\n}<\/p>\n<p>std::vector&lt;RecursiveLoop*&gt; GraphSpatialStructure::GetNeighbors(int index) const {<br \/>\nstd::vector&lt;RecursiveLoop*&gt; result;<br \/>\nif (index &gt;= 0 &amp;&amp; index &lt; (int)adjList_.size()) {<br \/>\nconst std::vector&amp; indices = adjList_[index];<br \/>\nfor (size_t i = 0; i &lt; indices.size(); i++) { int idx = indices[i]; if (idx &gt;= 0 &amp;&amp; idx &lt; (int)nodes_.size()) {<br \/>\nresult.push_back(nodes_[idx]);<br \/>\n}<br \/>\n}<br \/>\n}<br \/>\nreturn result;<br \/>\n}<\/p>\n<p>void GraphSpatialStructure::DumpToMemo(TMemo* memo, int indent) {<br \/>\nAnsiString pad = AnsiString::StringOfChar(&#8216; &#8216;, indent * 3);<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = loops.begin();<br \/>\nit != loops.end(); ++it) {<br \/>\nRecursiveLoop* loop = *it;<br \/>\nmemo-&gt;Lines-&gt;Add(pad + Format(&#8220;ID:%d Phase:%.4f Winding:%.2f&#8221;,<br \/>\nARRAYOFCONST((loop-&gt;id, loop-&gt;phase, loop-&gt;winding))));<\/p>\n<p>if (loop-&gt;subStructure) {<br \/>\nmemo-&gt;Lines-&gt;Add(pad + &#8221; \u2514\u2500\u2500 [SubStructure]&#8221;);<br \/>\nloop-&gt;subStructure-&gt;DumpToMemo(memo, indent + 1);<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>void GraphSpatialStructure::UpdateAll(double dt)<br \/>\n{<br \/>\n\/\/ \u5b50\u69cb\u9020\u66f4\u65b0<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = loops.begin(); it != loops.end(); ++it) {<br \/>\nRecursiveLoop* loop = *it;<br \/>\nif (loop &amp;&amp; loop-&gt;subStructure) {<br \/>\nloop-&gt;subStructure-&gt;UpdateAll(dt);<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ \u81ea\u30ec\u30d9\u30eb\u66f4\u65b0<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = loops.begin(); it != loops.end(); ++it) {<br \/>\nRecursiveLoop* loop = *it;<br \/>\nif (loop) loop-&gt;update(dt);<br \/>\n}<br \/>\n}<\/p>\n<p>double GraphSpatialStructure::GetAveragePhase() const {<br \/>\nif (loops.empty()) return 0.0;<br \/>\ndouble sum = 0.0;<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::const_iterator it = loops.begin();<br \/>\nit != loops.end(); ++it) {<br \/>\nsum += (*it)-&gt;phase;<br \/>\n}<br \/>\nreturn sum \/ loops.size();<br \/>\n}<\/p>\n<p>void GraphSpatialStructure::DebugDump(TMemo* memo, int indent)<br \/>\n{<br \/>\nif (memo == NULL) return;<\/p>\n<p>AnsiString pad = AnsiString::StringOfChar(&#8216; &#8216;, indent * 3);<\/p>\n<p>memo-&gt;Lines-&gt;Add(pad + &#8220;=== DebugDump Start ===&#8221;);<br \/>\nmemo-&gt;Lines-&gt;Add(pad + Format(&#8220;loops.size() = %d&#8221;, ARRAYOFCONST(((int)loops.size()))));<\/p>\n<p>if (loops.empty()) {<br \/>\nmemo-&gt;Lines-&gt;Add(pad + &#8220;\u2192 loops\u304c\u7a7a\u3067\u3059\uff01&#8221;);<br \/>\nreturn;<br \/>\n}<\/p>\n<p>int count = 0;<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = loops.begin(); it != loops.end(); ++it) {<br \/>\nRecursiveLoop* lp = *it;<br \/>\ncount++;<\/p>\n<p>if (lp == NULL) {<br \/>\nmemo-&gt;Lines-&gt;Add(pad + Format(&#8220;Loop[%d] = NULL&#8221;, ARRAYOFCONST((count))));<br \/>\ncontinue;<br \/>\n}<\/p>\n<p>\/\/ === \u3053\u3053\u3092 RecursiveLoop \u306e\u62e1\u5f35DebugDump\u306b\u59d4\u8b72 ===<br \/>\nlp-&gt;DebugDump(memo, indent);<\/p>\n<p>\/\/ \u5b50\u69cb\u9020\u306e\u518d\u5e30\u30c0\u30f3\u30d7<br \/>\nif (lp-&gt;subStructure) {<br \/>\nmemo-&gt;Lines-&gt;Add(pad + &#8221; \u2514\u2500 SubStructure:&#8221;);<br \/>\nlp-&gt;subStructure-&gt;DebugDump(memo, indent + 1);<br \/>\n}<br \/>\n}<\/p>\n<p>memo-&gt;Lines-&gt;Add(pad + Format(&#8220;=== DebugDump End (\u5408\u8a08 %d \u500b) ===&#8221;, ARRAYOFCONST((count))));<br \/>\n}<\/p>\n<p>\/\/***************************************************************************<br \/>\n\/\/ Unit1.h<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#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;<\/p>\n<p>#include<br \/>\n#include<br \/>\n#include<br \/>\n#include #include<br \/>\n#include<br \/>\n#include &#8220;Chart.hpp&#8221;<br \/>\n#include &#8220;Series.hpp&#8221;<br \/>\n#include &#8220;TeEngine.hpp&#8221;<br \/>\n#include &#8220;TeeProcs.hpp&#8221;<br \/>\n#include<\/p>\n<p>#include<br \/>\n#include<\/p>\n<map> #include \/\/ FormatFloat<br \/>\n#include<\/map>\n<p>#include &#8220;GraphSpatialStructure.h&#8221;<\/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\/\/ === Vector3\u69cb\u9020\u4f53\uff08\u30d5\u30a1\u30a4\u30eb\u4e0a\u90e8\u306b\u8ffd\u52a0\uff09===<br \/>\nstruct Vector3 {<br \/>\ndouble x, y, z;<br \/>\nVector3() : x(0.0), y(0.0), z(0.0) {}<br \/>\nVector3(double xx, double yy, double zz) : x(xx), y(yy), z(zz) {}<br \/>\nVector3 operator+(const Vector3&amp; o) const { return Vector3(x+o.x, y+o.y, z+o.z); }<br \/>\nVector3 operator-(const Vector3&amp; o) const { return Vector3(x-o.x, y-o.y, z-o.z); }<br \/>\nVector3 operator*(double s) const { return Vector3(x*s, y*s, z*s); }<br \/>\nVector3&amp; operator+=(const Vector3&amp; o) { x+=o.x; y+=o.y; z+=o.z; return *this; }<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\/\/ RecursiveLoop\u5b9a\u7fa9\uff08\u3053\u3053\u3060\u3051\u6b8b\u3059\uff09<br \/>\nclass RecursiveLoop {<br \/>\npublic:<br \/>\nint id;<br \/>\ndouble phase;<br \/>\ndouble winding;<br \/>\ndouble fixation;<br \/>\nint x, y, z;<br \/>\ndouble memory;<\/p>\n<p>std::vector&lt;RecursiveLoop*&gt; neighbors;<br \/>\nRecursiveLoop* parent; \/\/ \u89aa\u30eb\u30fc\u30d7<br \/>\nGraphSpatialStructure* subStructure; \/\/ \u5b50\u30b0\u30e9\u30d5\uff08\u3053\u308c\u304c\u518d\u5e30\u306e\u9375\uff09<\/p>\n<p>\/\/ ===== \u65b0\u898f\u7269\u7406\u30d5\u30a3\u30fc\u30eb\u30c9 =====<br \/>\nstd::complex chi; \/\/ \u03c7\u5834\uff08\u8907\u7d20\uff09<br \/>\nVector3 A, E, B, prev_A;<br \/>\ndouble negentropy;<\/p>\n<p>double topological_winding; \/\/ \u2190 \u3053\u308c\u3092\u8ffd\u52a0\uff08\u521d\u671f\u50240\uff09<\/p>\n<p>\/\/ \u30af\u30aa\u30ea\u30a2\u6307\u6a19\u306e\u5b9a\u7fa9\uff08\u63d0\u6848\uff09QualiaIntensity = |TopoW| \u00d7 negentropy \u00d7 coherence<br \/>\n\/\/ |TopoW|\uff1a\u30c8\u30dd\u30ed\u30b8\u30ab\u30eb\u79e9\u5e8f\u306e\u5f37\u3055<br \/>\n\/\/ negentropy\uff1a\u5168\u4f53\u306e\u79e9\u5e8f\u5ea6<br \/>\n\/\/ coherence\uff1a\u4f4d\u76f8\u540c\u671f\u5ea6\uff08\u7d61\u307f\u5408\u3044\u306e\u5f37\u3055\uff09<br \/>\ndouble qualiaIntensity; \/\/ \u30af\u30aa\u30ea\u30a2\u6307\u6a19<br \/>\ndouble beforeQualia; \/\/\u30ed\u30b0\u306e\u3055\u3089\u306a\u308b\u5145\u5b9f\uff08Memo\u306bstrength\u3068\u5909\u5316\u7387\u3092\u8868\u793a<\/p>\n<p>\/\/ \u63d0\u6848B: \u7948\u308a\u5c02\u7528\u30a2\u30ad\u30e5\u30e0\u30ec\u30fc\u30bf\u3092\u8ffd\u52a0\uff08\u6700\u3082\u304a\u3059\u3059\u3081\uff09<br \/>\ndouble prayer_accumulator; \/\/ \u521d\u671f\u53160.0<\/p>\n<p>\/\/ \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u62e1\u5f35<br \/>\nRecursiveLoop(int id_, double phase_ = 0.0, double winding_ = 0.0,<br \/>\ndouble fixation_ = 0.5, double x_ = 0, double y_ = 0, double z_ = 0);<\/p>\n<p>~RecursiveLoop(){}<\/p>\n<p>void update(double dt);<br \/>\ndouble compute_interaction() const;<br \/>\nvoid compute_E_B(double dt); \/\/ \u65b0\u898f<br \/>\nvoid update_winding_irreversible(double dt);\/\/ \u65b0\u898f<br \/>\nvoid update_chi_and_phase(); \/\/ \u65b0\u898f<\/p>\n<p>bool check_preservation() const; \/\/\u4e0d\u8981\u304b\uff1f<br \/>\nvoid add_neighbor(RecursiveLoop* neighbor); \/\/\u4e0d\u8981\u304b\uff1f<\/p>\n<p>AnsiString GetStateDescription() const;<br \/>\nvoid PrintNeighbors(TMemo* memo, int indent = 0) const;<\/p>\n<p>\/\/ \u30b5\u30d6\u69cb\u9020\u3092\u30a2\u30bf\u30c3\u30c1\u3059\u308b\u5c02\u7528\u30e1\u30bd\u30c3\u30c9<br \/>\nvoid AttachSubStructure(GraphSpatialStructure* sub);<\/p>\n<p>\/\/ \u89aa\u8a2d\u5b9a\uff08\u5185\u90e8\u7528\uff09<br \/>\nvoid SetParent(RecursiveLoop* p) { parent = p; }<\/p>\n<p>void DebugDump(TMemo* memo, int indent = 0) const; \/\/ \u62e1\u5f35<\/p>\n<p>\/\/\u968e\u5c64\u7684Gauss\/Stokes\u7c21\u6613\u30c1\u30a7\u30c3\u30af\u8ffd\u52a0\uff08\u4fdd\u5b58\u5247\u691c\u8a3c\uff09<br \/>\ndouble compute_local_divergence() const; \/\/ Gauss\u7528\u7c21\u6613<\/p>\n<p>\/\/Winding\u6570\uff08\u5dfb\u304d\u6570\uff09\u306e\u8a08\u7b97\u8a73\u7d30 : \u5b50\u69cb\u9020\u3092\u74b0\u72b6\u306b\u4e26\u3079\u305f\u4eee\u60f3\u30eb\u30fc\u30d7\u3068\u3057\u3066\u7dcf\u4f4d\u76f8\u5909\u5316\u3092\u6c42\u3081\u308b<br \/>\ndouble compute_winding_number() const;<br \/>\n\/\/\u8fd1\u508d\u5e73\u5747\u3068\u306e\u5dee\uff08\u7c21\u6613\u7248\uff09<br \/>\ndouble compute_winding_number_simple() const;<\/p>\n<p>\/\/CPT\u5909\u63db\u95a2\u6570\u3092\u8ffd\u52a0\uff1a<br \/>\nvoid ApplyCPT();<\/p>\n<p>\/\/\u300c\u89b3\u6e2c \u2192 \u73fe\u5b9f\u518d\u7de8\u300d \u3092\u660e\u78ba\u306b\u30e2\u30c7\u30eb\u5316\u3057\u307e\u3057\u3087\u3046\u3002\u63d0\u6848: Observe\u95a2\u6570\u3092\u65b0\u898f\u8ffd\u52a0<br \/>\nvoid Observe(double observation_strength);<\/p>\n<p>private:<br \/>\n\/\/\u65b0\u3057\u3044\u30d8\u30eb\u30d1\u30fc\u95a2\u6570\u3092\u8ffd\u52a0<br \/>\ndouble compute_winding_on_plane(int plane) const; \/\/ \u65b0\u898f\uff1a\u7279\u5b9a\u5e73\u9762\u3067\u306e\u5dfb\u304d\u6570<\/p>\n<p>\/\/\u5b50\u69cb\u9020\u306eTopoW\u3092neighbor\u30d9\u30fc\u30b9\u3067\u8a08\u7b97\u3059\u308b\u65b9\u5411<br \/>\ndouble compute_local_winding_from_neighbors() const; \/\/ \u65b0\u898f\uff1a\u8fd1\u508d\u30d9\u30fc\u30b9\u306e\u5dfb\u304d\u6570<\/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 \/>\nclass TForm1 : public TForm<br \/>\n{<br \/>\n__published: \/\/ IDE-managed Components<br \/>\nTMemo *Memo1;<br \/>\nTButton *Button3;<br \/>\nTStringGrid *GridPhase;<br \/>\nTButton *Button4;<br \/>\nTTimer *Timer1;<br \/>\nTButton *Button5;<br \/>\nTLabel *Label1;<br \/>\nTMemo *Memo2;<br \/>\nTChart *Chart1;<br \/>\nTLineSeries *Negentropy;<br \/>\nTLineSeries *Total_TopoW;<br \/>\nTLabel *Label2;<br \/>\nTButton *ButtonCPT;<br \/>\nTCheckBox *CheckBox1;<br \/>\nTLineSeries *Series1;<br \/>\nTButton *Button6;<br \/>\nTButton *ButtonObserve;<br \/>\nTTrackBar *TrackBar_Observation_strength;<br \/>\nTLabel *Label3;<br \/>\nTButton *Button1;<br \/>\nvoid __fastcall Button3Click(TObject *Sender);<br \/>\nvoid __fastcall GridPhaseDrawCell(TObject *Sender, int ACol, int ARow,<br \/>\nTRect &amp;Rect, TGridDrawState State);<br \/>\nvoid __fastcall Button4Click(TObject *Sender);<br \/>\nvoid __fastcall Timer1Timer(TObject *Sender);<br \/>\nvoid __fastcall FormClose(TObject *Sender, TCloseAction &amp;Action);<br \/>\nvoid __fastcall FormCreate(TObject *Sender);<br \/>\nvoid __fastcall FormDestroy(TObject *Sender);<br \/>\nvoid __fastcall Button5Click(TObject *Sender);<br \/>\nvoid __fastcall ButtonCPTClick(TObject *Sender);<br \/>\nvoid __fastcall CheckBox1Click(TObject *Sender);<br \/>\nvoid __fastcall Button6Click(TObject *Sender);<br \/>\nvoid __fastcall ButtonObserveClick(TObject *Sender);<br \/>\nvoid __fastcall TrackBar_Observation_strengthChange(TObject *Sender);<br \/>\nvoid __fastcall Button1Click(TObject *Sender);<br \/>\nprivate:<\/p>\n<p>GraphSpatialStructure* graph;<br \/>\nbool graphInitialized;<\/p>\n<p>void __fastcall UpdatePhaseGrid();<\/p>\n<p>public:<br \/>\n__fastcall TForm1(TComponent* Owner);<\/p>\n<p>int Counter; \/\/\u30bf\u30a4\u30de\u30fc\u51e6\u7406\u306e\u56de\u6570\u30ab\u30a6\u30f3\u30c8<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>\/\/***************************************************************************<br \/>\n\/\/ Unit1.cpp<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#pragma hdrstop<\/p>\n<p>#include<br \/>\n#include #include<br \/>\n#include \/\/ \u3067\u306f\u306a\u304f<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;Series&#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;<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 \/>\n\/\/ \u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\uff08\u65e2\u5b58\u306e\u3082\u306e\u3092\u62e1\u5f35\uff09<br \/>\nRecursiveLoop::RecursiveLoop(int id_, double phase_, double winding_,<br \/>\ndouble fixation_, double x_, double y_, double z_)<br \/>\n: id(id_), phase(phase_), winding(winding_), fixation(fixation_),<br \/>\nx((int)x_), y((int)y_), z((int)z_), memory(0.0),<br \/>\nparent(NULL), subStructure(NULL),<br \/>\nchi(0.0, 0.0), negentropy(0.0),<br \/>\ntopological_winding(0.0), \/\/ \u2190 \u8ffd\u52a0<br \/>\nqualiaIntensity(0.0), \/\/ \u2190 \u8ffd\u52a0<br \/>\nbeforeQualia(0.0)<br \/>\n{<br \/>\nA = Vector3(); E = Vector3(); B = Vector3(); prev_A = Vector3();<br \/>\n}<\/p>\n<p>\/\/ update\u95a2\u6570\uff08\u65e2\u5b58 + \u65b0\u7269\u7406\u547c\u3073\u51fa\u3057\uff09<br \/>\nvoid RecursiveLoop::update(double dt)<br \/>\n{<br \/>\nupdate_chi_and_phase(); \/\/ \u65b0\u898f<br \/>\nupdate_winding_irreversible(dt); \/\/ \u65b0\u898f<br \/>\ncompute_E_B(dt); \/\/ \u65b0\u898f<\/p>\n<p>\/\/ \u65e2\u5b58\u306e\u4f4d\u76f8\/Winding\u66f4\u65b0\uff08\u5e72\u6e09\u3092\u7dad\u6301\uff09<br \/>\ndouble interaction = compute_interaction();<br \/>\nphase += dt * (2.0 + interaction * 8.0 + sin(phase * 3.0 + x + y + z) * 0.3);<br \/>\nwinding = winding * 0.95 + interaction * 0.2;<br \/>\nmemory = memory * 0.9 + phase * 0.1;<\/p>\n<p>const double PI = 3.1415926535;<br \/>\nwhile (phase &gt; PI) phase -= 2*PI;<br \/>\nwhile (phase &lt; -PI) phase += 2*PI;<br \/>\n}<\/p>\n<p>\/\/ compute_interaction\u95a2\u6570<br \/>\ndouble RecursiveLoop::compute_interaction() const<br \/>\n{<br \/>\ndouble inter = 1.0;<\/p>\n<p>for (std::vector&lt;RecursiveLoop*&gt;::const_iterator it = neighbors.begin();<br \/>\nit != neighbors.end(); ++it) {<br \/>\nRecursiveLoop* neigh = *it;<br \/>\nif (neigh) {<br \/>\ndouble dphase = phase &#8211; neigh-&gt;phase;<\/p>\n<p>\/\/ \u8ddd\u96e2\u8a08\u7b97\uff08dx, dy, dz \u3092\u3059\u3079\u3066\u5b9a\u7fa9\uff09<br \/>\ndouble dx = (double)(x &#8211; neigh-&gt;x);<br \/>\ndouble dy = (double)(y &#8211; neigh-&gt;y);<br \/>\ndouble dz = (double)(z &#8211; neigh-&gt;z);<br \/>\ndouble r2 = dx*dx + dy*dy + dz*dz + 0.1;<\/p>\n<p>\/\/ E\u5834\u306b\u3088\u308bCoulomb\u9805\u8ffd\u52a0<br \/>\ndouble e_force = (E.z + neigh-&gt;E.z) * 2.0; \/\/ \u7c21\u6613\u7d50\u5408<\/p>\n<p>inter += sin(dphase) * 5.0 \/ r2 + e_force * 0.3;<br \/>\n}<br \/>\n}<\/p>\n<p>if (parent) {<br \/>\ninter += 0.8 * (parent-&gt;phase &#8211; phase);<br \/>\n}<\/p>\n<p>if (subStructure) {<br \/>\ndouble avg = subStructure-&gt;GetAveragePhase();<br \/>\ninter += 0.5 * (avg &#8211; phase);<br \/>\n}<\/p>\n<p>return inter;<br \/>\n}<\/p>\n<p>\/\/ check_preservation\u95a2\u6570<br \/>\nbool RecursiveLoop::check_preservation() const<br \/>\n{<br \/>\nreturn (phase &gt; -10000.0 &amp;&amp; phase &lt; 10000.0);<br \/>\n}<\/p>\n<p>\/\/ add_neighbor\u95a2\u6570<br \/>\nvoid RecursiveLoop::add_neighbor(RecursiveLoop* neighbor)<br \/>\n{<br \/>\nif (neighbor != NULL &amp;&amp; neighbor != this) {<br \/>\nneighbors.push_back(neighbor);<br \/>\n}<br \/>\n}<\/p>\n<p>void RecursiveLoop::AttachSubStructure(GraphSpatialStructure* sub)<br \/>\n{<br \/>\nif (subStructure) {<br \/>\ndelete subStructure; \/\/ \u3059\u3067\u306b\u3042\u3063\u305f\u3089\u89e3\u653e<br \/>\n}<br \/>\nsubStructure = sub;<br \/>\nif (subStructure) {<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = subStructure-&gt;loops.begin();<br \/>\nit != subStructure-&gt;loops.end(); ++it) {<br \/>\nRecursiveLoop* child = *it;<br \/>\nif (child) {<br \/>\nchild-&gt;SetParent(this);<br \/>\n}<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ \u65b0\u898f\u30e1\u30bd\u30c3\u30c9\u7fa4<br \/>\nvoid RecursiveLoop::update_chi_and_phase()<br \/>\n{<br \/>\n\/\/\u5b50\u69cb\u9020\u306e\u03c7\u4f4d\u76f8\u66f4\u65b0\u3092\u5f37\u5316\uff08update_chi_and_phase\uff09<br \/>\ndouble abs_chi = std::abs(chi);<br \/>\nif (abs_chi &lt; 1e-8) {<br \/>\nchi = std::complex(0.1, 0.0);<br \/>\nphase = 0.0;<br \/>\n} else {<br \/>\nphase = std::arg(chi);<br \/>\n}<\/p>\n<p>if (subStructure) {<br \/>\ndouble avg = subStructure-&gt;GetAveragePhase();<br \/>\n\/\/ \u4f4d\u76f8\u3092\u7a4d\u6975\u7684\u306b\u8907\u7d20\u5316<br \/>\nchi += std::complex(0.02 * cos(avg), 0.05 * sin(avg));<br \/>\n}<br \/>\n}<\/p>\n<p>void RecursiveLoop::compute_E_B(double dt)<br \/>\n{<br \/>\n\/\/ compute_E_B \u3082\u5b89\u5168\u5316\uff08dist=0\u5bfe\u7b56\uff09<br \/>\nVector3 grad_chi(0.0,0.0,0.0);<br \/>\nif (parent) {<br \/>\ndouble dx = x &#8211; parent-&gt;x;<br \/>\ndouble dy = y &#8211; parent-&gt;y;<br \/>\ndouble dz = z &#8211; parent-&gt;z;<br \/>\ndouble dist = sqrt(dx*dx + dy*dy + dz*dz) + 1e-8;<br \/>\ndouble dchi = chi.real() &#8211; parent-&gt;chi.real();<br \/>\ngrad_chi = Vector3(dx\/dist, dy\/dist, dz\/dist) * (dchi \/ dist);<br \/>\n}<\/p>\n<p>Vector3 dA_dt = (A &#8211; prev_A) * (1.0 \/ dt);<br \/>\nE = grad_chi * (-1.0) + dA_dt * (-1.0);<br \/>\nB = Vector3(0,0, 0.05 * winding);<\/p>\n<p>prev_A = A;<br \/>\n}<\/p>\n<p>void RecursiveLoop::update_winding_irreversible(double dt)<br \/>\n{<br \/>\n\/\/ \u63d0\u6848B: \u7948\u308a\u5c02\u7528\u30a2\u30ad\u30e5\u30e0\u30ec\u30fc\u30bf\u3092\u8ffd\u52a0\uff08\u6700\u3082\u304a\u3059\u3059\u3081\uff09<br \/>\n\/\/ update_winding_irreversible \u306e\u5148\u982d\u4ed8\u8fd1\u306b\u8ffd\u52a0<br \/>\n\/\/ update_winding_irreversible\uff08\u307e\u305f\u306fupdate\uff09\u5185\u3067\u5c11\u3057\u305a\u3064\u52b9\u679c\u3092\u767a\u63ee<br \/>\nnegentropy += prayer_accumulator * 0.02; \/\/ \u3086\u3063\u304f\u308a\u52b9\u679c<br \/>\nqualiaIntensity += prayer_accumulator * 0.05;<br \/>\nprayer_accumulator *= 0.92; \/\/ \u81ea\u7136\u6e1b\u8870\uff08\u6301\u7d9a\u611f\uff09<\/p>\n<p>\/\/ coherence\u8a08\u7b97\uff08\u5b50\u69cb\u9020\u306e\u4f4d\u76f8\u540c\u671f\u5ea6\uff09<br \/>\ndouble coherence = 1.0;<br \/>\nif (subStructure &amp;&amp; !subStructure-&gt;loops.empty()) {<br \/>\ndouble sum_cos = 0.0, sum_sin = 0.0;<br \/>\nint cnt = 0;<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = subStructure-&gt;loops.begin();<br \/>\nit != subStructure-&gt;loops.end(); ++it) {<br \/>\nif (*it) {<br \/>\nsum_cos += cos((*it)-&gt;phase);<br \/>\nsum_sin += sin((*it)-&gt;phase);<br \/>\ncnt++;<br \/>\n}<br \/>\n}<br \/>\nif (cnt &gt; 0) {<br \/>\ncoherence = sqrt((sum_cos*sum_cos + sum_sin*sum_sin) \/ cnt);<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ === \u3053\u3053\u304b\u3089\u30af\u30aa\u30ea\u30a2\u6307\u6a19\u306e\u8a08\u7b97\uff08\u65b0\u898f\u8ffd\u52a0\uff09===<br \/>\nqualiaIntensity = fabs(topological_winding) * negentropy * coherence * 0.1;<br \/>\n\/\/ \u203b 0.1\u306f\u30b9\u30b1\u30fc\u30eb\u8abf\u6574\u7528\uff08\u5927\u304d\u304f\u306a\u308a\u3059\u304e\u306a\u3044\u3088\u3046\uff09<\/p>\n<p>double topological_winding_temp = compute_winding_number();<\/p>\n<p>\/\/ drive\uff08\u5909\u5316\u91cf\uff09<br \/>\ndouble drive = topological_winding_temp &#8211; winding;<br \/>\ndouble smoothed_drive = 0.6 * drive + 0.4 * (topological_winding &#8211; winding);<\/p>\n<p>\/\/ \u5f37\u3044\u6574\u6570\u5f15\u304d\u3064\u3051\uff080.5\u523b\u307f\uff09<br \/>\ndouble integer_bias = 0.0;<br \/>\n{<br \/>\ndouble scaled = topological_winding_temp * 2.0;<br \/>\ndouble rounded = floor(scaled + 0.5 * (scaled &gt; 0 ? 1.0 : -1.0)) \/ 2.0;<br \/>\ninteger_bias = rounded &#8211; topological_winding_temp;<br \/>\n}<\/p>\n<p>double negentropy_drive = 0.08 * coherence * coherence;<br \/>\ndouble dissipation = -0.001 * fabs(winding); \/\/ \u5f31\u3081\u306b\u8a2d\u5b9a<br \/>\ndouble parent_drive = parent ? 0.015 * sin(parent-&gt;phase &#8211; phase) : 0.0;<\/p>\n<p>\/\/ \u66f4\u65b0<br \/>\nwinding += dt * (smoothed_drive * 0.7<br \/>\n+ integer_bias * 0.5<br \/>\n+ negentropy_drive * 0.6<br \/>\n+ dissipation<br \/>\n+ parent_drive);<\/p>\n<p>negentropy += negentropy_drive * 2.0 &#8211; dissipation * 0.4;<\/p>\n<p>topological_winding = topological_winding_temp;<br \/>\n}<\/p>\n<p>\/\/ DebugDump\u62e1\u5f35\uff08TMemo\u51fa\u529b\u306b\u7269\u7406\u91cf\u8ffd\u52a0\uff09<br \/>\nvoid RecursiveLoop::DebugDump(TMemo* memo, int indent) const<br \/>\n{<br \/>\nAnsiString ind = &#8220;&#8221;;<br \/>\nfor (int i = 0; i &lt; indent; i++) ind += &#8221; &#8220;; memo-&gt;Lines-&gt;Add(ind + Format(&#8220;ID:%d Phase:%.4f W:%.4f \u03c7:%.4f+%.4fi E.z:%.3f Neg:%.4f TopoW:%.4f&#8221;,<br \/>\nARRAYOFCONST((id, phase, winding, chi.real(), chi.imag(), E.z, negentropy, topological_winding))));<\/p>\n<p>}<\/p>\n<p>\/\/\u968e\u5c64\u7684Gauss\/Stokes\u7c21\u6613\u30c1\u30a7\u30c3\u30af\u8ffd\u52a0\uff08\u4fdd\u5b58\u5247\u691c\u8a3c\uff09<br \/>\ndouble RecursiveLoop::compute_local_divergence() const<br \/>\n{<br \/>\n\/* \/\/Local Div\u3092\u3088\u308a\u7269\u7406\u7684\u306b\uff08\u4fdd\u5b58\u5247\u691c\u8a3c\u5f37\u5316\uff09<br \/>\ndouble div = 0.0;<br \/>\n\/\/ \u89aa-\u5b50\u9593\u306e\u5bc4\u4e0e<br \/>\nif (parent) {<br \/>\ndouble dr = sqrt(pow((double)x &#8211; parent-&gt;x,2) +<br \/>\npow((double)y &#8211; parent-&gt;y,2) +<br \/>\npow((double)z &#8211; parent-&gt;z,2)) + 1e-8;<br \/>\ndiv += (E.z &#8211; parent-&gt;E.z) \/ dr;<br \/>\n}<br \/>\n\/\/ \u5b50\u69cb\u9020\u304b\u3089\u306e\u96c6\u7d04\uff08Gauss\u306e\u300c\u9589\u5305\u6027\u300d\u8fd1\u4f3c\uff09<br \/>\nif (subStructure) {<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::const_iterator it = subStructure-&gt;loops.begin();<br \/>\nit != subStructure-&gt;loops.end(); ++it) {<br \/>\nif (*it) div += (*it)-&gt;E.z * 0.05; \/\/ \u30d5\u30e9\u30c3\u30af\u30b9\u5bc4\u4e0e<br \/>\n}<br \/>\n}<br \/>\nreturn div;<br \/>\n*\/<\/p>\n<p>\/\/compute_local_divergence \u306e\u5f37\u5316<br \/>\n\/* double div = 0.0;<\/p>\n<p>\/\/ \u89aa-\u5b50\u9593\u306e\u5bc4\u4e0e\uff08\u91cd\u307f\u4ed8\u3051\u3092\u8abf\u6574\uff09<br \/>\nif (parent) {<br \/>\ndouble dr = sqrt(pow((double)x &#8211; parent-&gt;x,2) +<br \/>\npow((double)y &#8211; parent-&gt;y,2) +<br \/>\npow((double)z &#8211; parent-&gt;z,2)) + 1e-8;<br \/>\ndiv += (E.z &#8211; parent-&gt;E.z) \/ dr * 0.5; \/\/ \u91cd\u307f\u30920.5\u306b\u4f4e\u6e1b<br \/>\n}<\/p>\n<p>\/\/ \u5b50\u69cb\u9020\u304b\u3089\u306e\u5bc4\u4e0e\uff08\u91cd\u307f\u3092\u3055\u3089\u306b\u4f4e\u6e1b\uff09<br \/>\nif (subStructure) {<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::const_iterator it = subStructure-&gt;loops.begin();<br \/>\nit != subStructure-&gt;loops.end(); ++it) {<br \/>\nif (*it) div += (*it)-&gt;E.z * 0.02; \/\/ 0.05 \u2192 0.02\u306b\u4f4e\u6e1b<br \/>\n}<br \/>\n}<\/p>\n<p>return div;<br \/>\n*\/<\/p>\n<p>\/\/compute_local_divergence \u306e\u3055\u3089\u306a\u308b\u8abf\u6574<br \/>\ndouble div = 0.0;<\/p>\n<p>if (parent) {<br \/>\ndouble dr = sqrt(pow((double)x &#8211; parent-&gt;x,2) +<br \/>\npow((double)y &#8211; parent-&gt;y,2) +<br \/>\npow((double)z &#8211; parent-&gt;z,2)) + 1e-6;<br \/>\ndiv += (E.z &#8211; parent-&gt;E.z) \/ dr * 0.3; \/\/ \u91cd\u307f\u3092\u3055\u3089\u306b\u4f4e\u6e1b<br \/>\n}<\/p>\n<p>if (subStructure) {<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::const_iterator it = subStructure-&gt;loops.begin();<br \/>\nit != subStructure-&gt;loops.end(); ++it) {<br \/>\nif (*it) div += (*it)-&gt;E.z * 0.01; \/\/ 0.02 \u2192 0.01\u306b\u4f4e\u6e1b<br \/>\n}<br \/>\n}<\/p>\n<p>return div;<\/p>\n<p>}<\/p>\n<p>\/\/Winding\u6570\uff08\u5dfb\u304d\u6570\uff09\u306e\u8a08\u7b97\u8a73\u7d30 : \u5b50\u69cb\u9020\u3092\u74b0\u72b6\u306b\u4e26\u3079\u305f\u4eee\u60f3\u30eb\u30fc\u30d7\u3068\u3057\u3066\u7dcf\u4f4d\u76f8\u5909\u5316\u3092\u6c42\u3081\u308b<br \/>\ndouble RecursiveLoop::compute_winding_number() const<br \/>\n{<br \/>\n\/\/Winding\u6570\uff08\u5dfb\u304d\u6570\uff09\u306e\u8a08\u7b97\u8a73\u7d30 : 3\u9762\u5e73\u5747\u7248<\/p>\n<p>\/\/\u5b50\u69cb\u9020\u306eTopoW\u3092neighbor\u30d9\u30fc\u30b9\u3067\u8a08\u7b97\u3059\u308b\u65b9\u5411\u3067\u9032\u3081\u307e\u3059\u3002<br \/>\nif (subStructure &amp;&amp; subStructure-&gt;loops.size() &gt;= 3) {<br \/>\n\/\/ \u5b50\u69cb\u9020\u304c\u3042\u308b\u5834\u5408\u306f\u5f93\u6765\u306e\u74b0\u72b6\u8a08\u7b97<br \/>\ndouble total_delta = 0.0;<br \/>\nsize_t n = subStructure-&gt;loops.size();<br \/>\nfor (size_t i = 0; i &lt; n; ++i) { RecursiveLoop* curr = subStructure-&gt;loops[i];<br \/>\nRecursiveLoop* next = subStructure-&gt;loops[(i + 1) % n];<br \/>\nif (curr &amp;&amp; next) {<br \/>\ndouble dtheta = next-&gt;phase &#8211; curr-&gt;phase;<br \/>\nwhile (dtheta &gt; M_PI) dtheta -= 2 * M_PI;<br \/>\nwhile (dtheta &lt; -M_PI) dtheta += 2 * M_PI;<br \/>\ntotal_delta += dtheta;<br \/>\n}<br \/>\n}<br \/>\nreturn total_delta \/ (2 * M_PI * n); \/\/ \u6b63\u898f\u5316<br \/>\n} else {<br \/>\n\/\/ \u8fd1\u508d\u30d9\u30fc\u30b9\uff08\u5b50\u69cb\u9020\u304c\u306a\u3044 or \u5c0f\u3055\u3044\u5834\u5408\uff09<br \/>\nreturn compute_local_winding_from_neighbors();<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/\u8fd1\u508d\u5e73\u5747\u3068\u306e\u5dee\uff08\u7c21\u6613\u7248\uff09<br \/>\ndouble RecursiveLoop::compute_winding_number_simple() const<br \/>\n{<\/p>\n<p>if (neighbors.empty()) return 0.0;<\/p>\n<p>double avg_phase = 0.0;<br \/>\nint count = 0;<\/p>\n<p>for (std::vector&lt;RecursiveLoop*&gt;::const_iterator it = neighbors.begin();<br \/>\nit != neighbors.end(); ++it) {<br \/>\nRecursiveLoop* neigh = *it;<br \/>\nif (neigh) {<br \/>\navg_phase += neigh-&gt;phase;<br \/>\ncount++;<br \/>\n}<br \/>\n}<\/p>\n<p>if (count == 0) return 0.0;<\/p>\n<p>avg_phase \/= count;<\/p>\n<p>double dtheta = phase &#8211; avg_phase;<br \/>\nwhile (dtheta &gt; M_PI) dtheta -= 2 * M_PI;<br \/>\nwhile (dtheta &lt; -M_PI) dtheta += 2 * M_PI; return dtheta \/ (2 * M_PI); } \/\/ \u65b0\u898f\uff1a\u7279\u5b9a\u5e73\u9762\u3067\u306e\u5dfb\u304d\u6570\u8a08\u7b97 double RecursiveLoop::compute_winding_on_plane(int plane) const { \/\/ \u6539\u5584\u7248\uff08\u3088\u308a\u826f\u3044\u30ea\u30f3\u30b0\u62bd\u51fa\uff09 if (!subStructure || subStructure-&gt;loops.size() &lt; 8) return 0.0;<\/p>\n<p>std::vector&lt;RecursiveLoop*&gt; ring;<\/p>\n<p>\/\/ \u3088\u308a\u591a\u304f\u306e\u70b9\u3092\u7a7a\u9593\u9806\u306b\u4e26\u3079\u308b\uff08\u7c21\u6613\u87ba\u65cb\/\u5186\u74b0\u8fd1\u4f3c\uff09<br \/>\nfor (int i = 0; i &lt; 9; ++i) { \/\/ 3&#215;3\u306e\u5468\u8fba\u3092\u56de\u308b<br \/>\nint x = 0, y = 0, z = 0;<br \/>\nif (plane == 0) { \/\/ xy\u5e73\u9762\uff08z\u56fa\u5b9a\uff09<br \/>\nx = (i % 3);<br \/>\ny = (i \/ 3);<br \/>\nz = 1;<br \/>\n} else if (plane == 1) { \/\/ yz\u5e73\u9762\uff08x\u56fa\u5b9a\uff09<br \/>\ny = (i % 3);<br \/>\nz = (i \/ 3);<br \/>\nx = 1;<br \/>\n} else { \/\/ zx\u5e73\u9762\uff08y\u56fa\u5b9a\uff09<br \/>\nz = (i % 3);<br \/>\nx = (i \/ 3);<br \/>\ny = 1;<br \/>\n}<\/p>\n<p>\/\/ \u8a72\u5f53\u3059\u308bLoop\u3092\u63a2\u3059<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::const_iterator it = subStructure-&gt;loops.begin();<br \/>\nit != subStructure-&gt;loops.end(); ++it) {<br \/>\nRecursiveLoop* lp = *it;<br \/>\nif (lp &amp;&amp; lp-&gt;x == x &amp;&amp; lp-&gt;y == y &amp;&amp; lp-&gt;z == z) {<br \/>\nring.push_back(lp);<br \/>\nbreak;<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>if (ring.size() &lt; 6) return 0.0;<\/p>\n<p>double total_delta = 0.0;<br \/>\nsize_t n = ring.size();<br \/>\nfor (size_t i = 0; i &lt; n; ++i) { RecursiveLoop* curr = ring[i]; RecursiveLoop* next = ring[(i + 1) % n]; if (curr &amp;&amp; next) { double dtheta = next-&gt;phase &#8211; curr-&gt;phase;<br \/>\nwhile (dtheta &gt; M_PI) dtheta -= 2 * M_PI;<br \/>\nwhile (dtheta &lt; -M_PI) dtheta += 2 * M_PI;<br \/>\ntotal_delta += dtheta;<br \/>\n}<br \/>\n}<br \/>\nreturn total_delta \/ (2 * M_PI);<br \/>\n}<\/p>\n<p>\/\/\u5b50\u69cb\u9020\u306eTopoW\u3092neighbor\u30d9\u30fc\u30b9\u3067\u8a08\u7b97\u3059\u308b\u65b9\u5411<br \/>\n\/\/ \u65b0\u898f\uff1a\u8fd1\u508d\u30d9\u30fc\u30b9\u306e\u5c40\u6240\u5dfb\u304d\u6570<br \/>\ndouble RecursiveLoop::compute_local_winding_from_neighbors() const<br \/>\n{<br \/>\n\/\/\u6b21\u306e\u5f37\u5316\uff08\u63a8\u5968\uff09\u73fe\u5728\u306ecompute_local_winding_from_neighbors\u3092\u5c11\u3057\u8abf\u6574\u3057\u3066\u3001\u3088\u308a\u5f37\u3044\u4fe1\u53f7\u304c\u51fa\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<br \/>\nif (neighbors.empty()) return 0.0;<\/p>\n<p>double total_delta = 0.0;<br \/>\nint count = 0;<\/p>\n<p>for (std::vector&lt;RecursiveLoop*&gt;::const_iterator it = neighbors.begin();<br \/>\nit != neighbors.end(); ++it) {<br \/>\nRecursiveLoop* neigh = *it;<br \/>\nif (neigh) {<br \/>\ndouble dtheta = neigh-&gt;phase &#8211; phase;<br \/>\nwhile (dtheta &gt; M_PI) dtheta -= 2 * M_PI;<br \/>\nwhile (dtheta &lt; -M_PI) dtheta += 2 * M_PI; total_delta += dtheta; count++; } } if (count == 0) return 0.0; double avg = (total_delta \/ count) \/ (2 * M_PI); \/\/ round\u306e\u4ee3\u66ff\uff080.25\u523b\u307f\u3067\u5f37\u8abf\uff09 double scaled = avg * 4.0; double rounded = floor(scaled + 0.5 * (scaled &gt; 0 ? 1.0 : -1.0)) \/ 4.0;<\/p>\n<p>return rounded;<br \/>\n}<\/p>\n<p>\/\/CPT\u5909\u63db\u95a2\u6570\u3092\u8ffd\u52a0\uff1a<br \/>\nvoid RecursiveLoop::ApplyCPT()<br \/>\n{<br \/>\n\/* \/\/ C: \u8907\u7d20\u5171\u5f79\uff08\u8377\u96fb\u5171\u5f79\uff09<br \/>\nchi = std::conj(chi);<\/p>\n<p>\/\/ P: \u7a7a\u9593\u53cd\u8ee2\uff08\u5ea7\u6a19\u3068\u8fd1\u508d\u95a2\u4fc2\u306e\u53cd\u8ee2\uff09<br \/>\nx = -x; y = -y; z = -z;<\/p>\n<p>\/\/ \u8fd1\u508d\u30ea\u30b9\u30c8\u306f\u4e00\u65e6\u30af\u30ea\u30a2\u3057\u3066\u518d\u69cb\u7bc9\uff08\u7c21\u6613\u7248\uff09<br \/>\n\/\/ \u672c\u6765\u306f\u8fd1\u508d\u95a2\u4fc2\u306e\u5411\u304d\u3082\u53cd\u8ee2\u3055\u305b\u308b<\/p>\n<p>\/\/ T: \u6642\u9593\u53cd\u8ee2\u306e\u6a21\u64ec\uff08\u66f4\u65b0\u65b9\u5411\u3092\u9006\u306b\u3059\u308b\u30d5\u30e9\u30b0\uff09<br \/>\n\/\/ \u3053\u3053\u3067\u306fphase\u306e\u5fae\u5c0f\u6442\u52d5\u3067\u4ee3\u7528<br \/>\nphase = -phase; \/\/ \u7c21\u6613\u7684\u6642\u9593\u53cd\u8ee2<\/p>\n<p>\/\/ \u66f4\u65b0\u5c65\u6b74\u3092\u30af\u30ea\u30a2\uff08\u5fc5\u8981\u306b\u5fdc\u3058\u3066\uff09<br \/>\n*\/<\/p>\n<p>\/\/RecursiveLoop::ApplyCPT() \u3092\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30de\u30a4\u30eb\u30c9\u306b\u4fee\u6b63\u3057\u3066\u304f\u3060\u3055\u3044<br \/>\n\/\/ C: \u8907\u7d20\u5171\u5f79\uff08\u5f31\u3081\u306b\uff09<br \/>\nchi = std::complex(chi.real(), -chi.imag() * 0.8); \/\/ \u865a\u90e8\u309280%\u53cd\u8ee2<\/p>\n<p>\/\/ P: \u7a7a\u9593\u53cd\u8ee2\uff08\u5f31\u3081\u306b\uff09<br \/>\nx = -x * 0.7;<br \/>\ny = -y * 0.7;<br \/>\nz = -z * 0.7;<\/p>\n<p>\/\/ T: \u6642\u9593\u53cd\u8ee2\uff08\u5f31\u3081\u306b\uff09<br \/>\nphase = -phase * 0.6;<\/p>\n<p>\/\/ \u8efd\u3044\u30ce\u30a4\u30ba\u3067\u5b89\u5b9a\u5316<br \/>\nphase += (rand() % 100 &#8211; 50) \/ 1000.0;<br \/>\n}<\/p>\n<p>\/\/ C++Builder 2007\uff08Borland C++ Compiler\uff09\u306fC++98\u6e96\u62e0\u3067\u3001\u6a19\u6e96\u306eround()\u95a2\u6570\uff08C99\/C++11\uff09\u304c\u3042\u308a\u307e\u305b\u3093\u3002<br \/>\n\/\/ \u3084\u306b\u5165\u3063\u3066\u3044\u306a\u3044\u305f\u3081\u30a8\u30e9\u30fc\u306b\u306a\u308a\u307e\u3059\u3002<br \/>\n\/\/ \u89e3\u6c7a\u65b9\u6cd5\uff08\u304a\u3059\u3059\u3081\u9806\uff091. \u6700\u3082\u7c21\u5358\uff1a\u81ea\u4f5c\u306eround\u95a2\u6570\u3092\u8ffd\u52a0\uff08\u63a8\u5968\uff09<br \/>\n\/\/ round\u4ee3\u66ff\u95a2\u6570\uff08C++Builder2007\u5bfe\u5fdc\uff09<br \/>\ninline double myRound(double x) {<br \/>\nreturn (x &gt;= 0.0) ? floor(x + 0.5) : ceil(x &#8211; 0.5);<br \/>\n}<\/p>\n<p>\/\/\u300c\u89b3\u6e2c \u2192 \u73fe\u5b9f\u518d\u7de8\u300d \u3092\u660e\u78ba\u306b\u30e2\u30c7\u30eb\u5316\u3057\u307e\u3057\u3087\u3046\u3002\u63d0\u6848: Observe\u95a2\u6570\u3092\u65b0\u898f\u8ffd\u52a0<br \/>\nvoid RecursiveLoop::Observe(double observation_strength = 1.0)<br \/>\n{<br \/>\n\/* \/\/ \u89b3\u6e2c\u306b\u3088\u308b\u300c\u5d29\u58ca\u300d\u52b9\u679c\uff08\u4f4d\u76f8\u3092\u5b89\u5b9a\u70b9\u306b\u5f15\u304d\u5bc4\u305b\u308b\uff09<br \/>\n\/\/double target_phase = round(phase \/ (M_PI \/ 2.0)) * (M_PI \/ 2.0); \/\/ 90\u5ea6\u5358\u4f4d\u306b\u5f15\u304d\u5bc4\u305b\u4f8b<br \/>\ndouble target_phase = myRound(phase \/ (M_PI \/ 2.0)) * (M_PI \/ 2.0); \/\/ 90\u5ea6\u5358\u4f4d\u306b\u5f15\u304d\u5bc4\u305b\u4f8b<br \/>\nphase = phase * (1.0 &#8211; observation_strength * 0.3) + target_phase * (observation_strength * 0.3);<\/p>\n<p>\/\/ winding\u3092\u6574\u6570\u5bc4\u308a\u306b\uff08\u30c8\u30dd\u30ed\u30b8\u30ab\u30eb\u5b89\u5b9a\u5316\uff09<br \/>\n\/\/topological_winding = round(topological_winding * 0.7) + topological_winding * 0.3;<br \/>\ntopological_winding = myRound(topological_winding * 0.7) + topological_winding * 0.3;<\/p>\n<p>\/\/ Qualia\u30d6\u30fc\u30b9\u30c8\uff08\u89b3\u6e2c\u306b\u3088\u308b\u610f\u8b58\u306e\u660e\u78ba\u5316\uff09<br \/>\ndouble coherence = 1.0; \/\/ \u65e2\u5b58\u306ecoherence\u8a08\u7b97\u3092\u518d\u5229\u7528\u3059\u308b\u304b\u3001\u3053\u3053\u3067\u7c21\u6613\u8a08\u7b97<br \/>\nqualiaIntensity += 150.0 * observation_strength * coherence; \/\/ coherence\u306f\u65e2\u5b58<\/p>\n<p>\/\/ \u73fe\u5b9f\u518d\u7de8\u52b9\u679c\uff08\u8fd1\u508d\u3092\u5c11\u3057\u6574\u5217\uff09<br \/>\nif (parent) parent-&gt;phase += (phase &#8211; parent-&gt;phase) * 0.1 * observation_strength;<br \/>\n*\/<\/p>\n<p>if (observation_strength &lt;= 0.0) return; \/\/ myRound\u306f\u65e2\u306b\u5b9a\u7fa9\u6e08\u307f\u3068\u4eee\u5b9a double quantum = M_PI \/ 2.0; double target_phase = myRound(phase \/ quantum) * quantum; \/\/ \u6ed1\u3089\u304b\u306a\u5d29\u58ca\uff08\u6025\u6fc0\u306b\u306a\u308a\u3059\u304e\u306a\u3044\uff09 phase = phase * (1.0 &#8211; observation_strength * 0.35) + target_phase * (observation_strength * 0.35); \/\/ TopoW\u306e\u6574\u6570\u5316\uff08\u30c8\u30dd\u30ed\u30b8\u30ab\u30eb\u5b89\u5b9a\uff09 topological_winding = myRound(topological_winding) * 0.6 + topological_winding * 0.4; \/\/ Qualia\u30d6\u30fc\u30b9\u30c8\uff08coherence\u304c\u3042\u308c\u3070\u3088\u308a\u826f\u3044\uff09 \/\/ coherence\u8a08\u7b97\uff08\u3042\u306a\u305f\u304c\u8ffd\u52a0\u3057\u305f\u90e8\u5206\uff09 double coherence = 1.0; if (subStructure &amp;&amp; !subStructure-&gt;loops.empty()) {<br \/>\ndouble sum_cos = 0.0, sum_sin = 0.0;<br \/>\nint cnt = 0;<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = subStructure-&gt;loops.begin();<br \/>\nit != subStructure-&gt;loops.end(); ++it) {<br \/>\nif (*it) {<br \/>\nsum_cos += cos((*it)-&gt;phase);<br \/>\nsum_sin += sin((*it)-&gt;phase);<br \/>\ncnt++;<br \/>\n}<br \/>\n}<br \/>\nif (cnt &gt; 0) {<br \/>\ncoherence = sqrt((sum_cos*sum_cos + sum_sin*sum_sin) \/ cnt);<br \/>\n}<br \/>\n}<br \/>\n\/\/qualiaIntensity += 120.0 * observation_strength * coherence; \/\/ 150\u2192120\u306b\u8abf\u6574\uff08\u7a4f\u3084\u304b\u3081\u306b\uff09<br \/>\nqualiaIntensity += 60.0 * observation_strength * coherence; \/\/ \u5f37\u3059\u304e\u306a\u3044\u5024\u306b<\/p>\n<p>\/\/ \u89aa\u69cb\u9020\u3078\u306e\u6ce2\u53ca\uff08\u73fe\u5b9f\u518d\u7de8\u306e\u9023\u9396\uff09<br \/>\nif (parent) {<br \/>\nparent-&gt;phase += (phase &#8211; parent-&gt;phase) * 0.12 * observation_strength;<br \/>\n}<\/p>\n<p>\/\/ \u8efd\u3044negentropy\u8ffd\u52a0\uff08\u79e9\u5e8f\u306e\u56fa\u5b9a\u5316\uff09<br \/>\n\/\/negentropy += 20.0 * observation_strength; \/\/ \u79e9\u5e8f\u56fa\u5b9a\u52b9\u679c<br \/>\nnegentropy += 15.0 * observation_strength * coherence; \/\/ coherence\u9023\u52d5\u3067\u5b89\u5b9a<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;<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::UpdatePhaseGrid()<br \/>\n{<br \/>\n\/\/\u3055\u3089\u306b\u91cd\u8981\u306a\u4fee\u6b63\uff08\u7121\u9650\u30eb\u30fc\u30d7\u5b8c\u5168\u9632\u6b62\uff09<br \/>\nif (!GridPhase || !graph || !graphInitialized) return;<\/p>\n<p>\/\/ Cells\u3078\u306e\u66f8\u304d\u8fbc\u307f\u3092\u6700\u5c0f\u9650\u306b\uff08\u307e\u305f\u306f\u5b8c\u5168\u306b\u524a\u9664\uff09<br \/>\nstd::vector&lt;RecursiveLoop*&gt; all = graph-&gt;GetAllLoops();<br \/>\nfor (int row = 0; row &lt; 3; row++) {<br \/>\nfor (int col = 0; col &lt; 3; col++) {<br \/>\nint idx = 1 + row * 3 + col;<br \/>\nif (idx &lt; (int)all.size() &amp;&amp; all[idx]) { \/\/ GridPhase-&gt;Cells[col][row] = &#8230; \u2190 \u3053\u3053\u3082\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u63a8\u5968<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>GridPhase-&gt;Repaint(); \/\/ \u4e00\u56de\u3060\u3051\u518d\u63cf\u753b<br \/>\n}<\/p>\n<p>void __fastcall TForm1::Button3Click(TObject *Sender)<br \/>\n{<br \/>\nif (!graphInitialized) {<br \/>\ngraphInitialized = true;<\/p>\n<p>\/\/ graph\u304c\u307e\u3060\u306a\u3051\u308c\u3070\u4f5c\u6210<br \/>\nif (!graph) graph = new GraphSpatialStructure();<\/p>\n<p>\/\/ ==================== \u518d\u5e30\u30b3\u30f3\u30c6\u30ca\u4f5c\u6210 ====================<br \/>\nRecursiveLoop* container = new RecursiveLoop(100, 0.0, 0.0, 0.5, 0,0,0);<\/p>\n<p>GraphSpatialStructure* subGS = new GraphSpatialStructure();<br \/>\nfor (int z = 0; z &lt; 3; z++) {<br \/>\nfor (int y = 0; y &lt; 3; y++) {<br \/>\nfor (int x = 0; x &lt; 3; x++) { int id = 200 + x + y*3 + z*9; RecursiveLoop* child = new RecursiveLoop(id, -0.8 + (x+y+z)*0.2, 0.0, 0.0, x, y, z); subGS-&gt;AddLoop(child);<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ \u5b50\u69cb\u9020\u5168\u7d50\u5408<br \/>\nfor (size_t i = 0; i &lt; subGS-&gt;loops.size(); i++) {<br \/>\nfor (size_t j = 0; j &lt; subGS-&gt;loops.size(); j++) {<br \/>\nif (i != j) subGS-&gt;loops[i]-&gt;add_neighbor(subGS-&gt;loops[j]);<br \/>\n}<br \/>\nsubGS-&gt;loops[i]-&gt;fixation = 0.0;<br \/>\n}<\/p>\n<p>container-&gt;AttachSubStructure(subGS);<br \/>\ngraph-&gt;AddLoop(container); \/\/ container\u8ffd\u52a0<\/p>\n<p>\/\/ ==================== \u30e1\u30a4\u30f327\u500b\u4f5c\u6210 ====================<br \/>\n\/\/\u3059\u3050\u306b\u5b9f\u88c5\u3067\u304d\u308b\u300cMain 27\u500b\u3078\u306e\u5b50\u69cb\u9020\u8ffd\u52a0\u300d\u30b3\u30fc\u30c9<br \/>\n\/\/ ==================== \u30e1\u30a4\u30f327\u500b\u4f5c\u6210\uff08\u5b50\u69cb\u9020\u4ed8\u304d\u306b\u5f37\u5316\uff09 ====================<br \/>\nfor (int x = 0; x &lt; 3; x++) {<br \/>\nfor (int y = 0; y &lt; 3; y++) {<br \/>\nfor (int z = 0; z &lt; 3; z++) { int pos = x*9 + y*3 + z; int id = 300 + pos; \/\/ 300\u756a\u53f0\u306b RecursiveLoop* loop = new RecursiveLoop(id, (rand()%100)\/200.0 &#8211; 0.25, 0.0, 0.5); loop-&gt;x = x; loop-&gt;y = y; loop-&gt;z = z;<\/p>\n<p>\/\/ === \u7c21\u6613\u5b50\u69cb\u9020\u3092\u4ed8\u3051\u308b ===<br \/>\nGraphSpatialStructure* miniSub = new GraphSpatialStructure();<br \/>\nfor (int i = 0; i &lt; 4; i++) { \/\/ \u5404Main\u30bb\u30eb\u306b4\u500b\u306e\u30df\u30cb\u5b50\u69cb\u9020 RecursiveLoop* mini = new RecursiveLoop(900 + pos*10 + i, loop-&gt;phase + (rand()%100)\/100.0*0.3 &#8211; 0.15, 0.0);<br \/>\nminiSub-&gt;AddLoop(mini);<br \/>\n}<br \/>\n\/\/ \u30df\u30cb\u5b50\u69cb\u9020\u5185\u3092\u8efd\u304f\u7d50\u5408<br \/>\nfor (size_t i = 0; i &lt; miniSub-&gt;loops.size(); i++) {<br \/>\nfor (size_t j = 0; j &lt; miniSub-&gt;loops.size(); j++) {<br \/>\nif (i != j) miniSub-&gt;loops[i]-&gt;add_neighbor(miniSub-&gt;loops[j]);<br \/>\n}<br \/>\n}<br \/>\nloop-&gt;AttachSubStructure(miniSub);<\/p>\n<p>graph-&gt;AddLoop(loop);<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ 26\u8fd1\u508d\u30a8\u30c3\u30b8\u8ffd\u52a0\uff08\u305d\u306e\u307e\u307e\uff09<br \/>\nint deltas[26][3] = {<br \/>\n{-1,-1,-1}, {-1,-1,0}, {-1,-1,1},<br \/>\n{-1, 0,-1}, {-1, 0,0}, {-1, 0,1},<br \/>\n{-1, 1,-1}, {-1, 1,0}, {-1, 1,1},<br \/>\n{ 0,-1,-1}, { 0,-1,0}, { 0,-1,1},<br \/>\n{ 0, 0,-1}, { 0, 0,1},<br \/>\n{ 0, 1,-1}, { 0, 1,0}, { 0, 1,1},<br \/>\n{ 1,-1,-1}, { 1,-1,0}, { 1,-1,1},<br \/>\n{ 1, 0,-1}, { 1, 0,0}, { 1, 0,1},<br \/>\n{ 1, 1,-1}, { 1, 1,0}, { 1, 1,1}<br \/>\n};<\/p>\n<p>\/\/Main 27\u500b\u306e\u8fd1\u508d\u7d50\u5408\u3092\u6709\u52b9\u5316<br \/>\n\/\/ === Main 27\u500b\u306e\u8fd1\u508d\u7d50\u5408\uff0826\u8fd1\u508d\uff09===<br \/>\nfor (int i = 0; i &lt; 27; i++) {<br \/>\nint x1 = (i % 27) % 3; \/\/ \u7c21\u6613\u5ea7\u6a19<br \/>\nint y1 = ((i % 27) \/ 3) % 3;<br \/>\nint z1 = (i % 27) \/ 9;<\/p>\n<p>for (int d = 0; d &lt; 26; d++) { int x2 = x1 + deltas[d][0]; int y2 = y1 + deltas[d][1]; int z2 = z1 + deltas[d][2]; if (x2 &gt;= 0 &amp;&amp; x2 &lt; 3 &amp;&amp; y2 &gt;= 0 &amp;&amp; y2 &lt; 3 &amp;&amp; z2 &gt;= 0 &amp;&amp; z2 &lt; 3) { int j = x2 + y2*3 + z2*9; \/\/ graph-&gt;loops[1 + i] \u3068 graph-&gt;loops[1 + j] \u3092\u7d50\u5408\uff08Container\u3092\u30b9\u30ad\u30c3\u30d7\uff09<br \/>\nif (1+i &lt; (int)graph-&gt;loops.size() &amp;&amp; 1+j &lt; (int)graph-&gt;loops.size()) {<br \/>\ngraph-&gt;loops[1 + i]-&gt;add_neighbor(graph-&gt;loops[1 + j]);<br \/>\n}<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>}<\/p>\n<p>\/\/ \u30bf\u30a4\u30de\u30fc\u5207\u308a\u66ff\u3048<br \/>\nTimer1-&gt;Enabled = !Timer1-&gt;Enabled;<br \/>\nButton3-&gt;Caption = Timer1-&gt;Enabled ? &#8220;\u505c\u6b62&#8221; : &#8220;\u958b\u59cb&#8221;;<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::GridPhaseDrawCell(TObject *Sender, int ACol, int ARow,<br \/>\nTRect &amp;Rect, TGridDrawState State)<br \/>\n{<br \/>\n\/* \/\/ \u3010A\u3011GridPhase\u306e\u898b\u3084\u3059\u3055\u5f37\u5316\uff086&#215;6\u7248\u30fb\u6700\u7d42\u8abf\u6574\uff09<br \/>\nif (!graph || !graphInitialized) {<br \/>\nGridPhase-&gt;DefaultDrawing = true;<br \/>\nreturn;<br \/>\n}<\/p>\n<p>std::vector&lt;RecursiveLoop*&gt; all = graph-&gt;GetAllLoops();<br \/>\nRecursiveLoop* target = NULL;<br \/>\nint idx = ARow * GridPhase-&gt;ColCount + ACol;<\/p>\n<p>\/\/ Container Sub or Main<br \/>\nif (idx &lt; 27) {<br \/>\nRecursiveLoop* container = NULL;<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = all.begin(); it != all.end(); ++it) {<br \/>\nif (*it &amp;&amp; (*it)-&gt;id == 100) { container = *it; break; }<br \/>\n}<br \/>\nif (container &amp;&amp; container-&gt;subStructure &amp;&amp; idx &lt; (int)container-&gt;subStructure-&gt;loops.size())<br \/>\ntarget = container-&gt;subStructure-&gt;loops[idx];<br \/>\n} else {<br \/>\nint mainIdx = idx &#8211; 27;<br \/>\nif (mainIdx + 1 &lt; (int)all.size()) target = all[mainIdx + 1]; } if (!target) { GridPhase-&gt;DefaultDrawing = true;<br \/>\nreturn;<br \/>\n}<\/p>\n<p>double topoW = target-&gt;topological_winding;<br \/>\ndouble intensity = fabs(topoW) \/ 0.6; \/\/ \u5c11\u3057\u611f\u5ea6\u3092\u4e0a\u3052\u308b<br \/>\nif (intensity &gt; 1.0) intensity = 1.0;<\/p>\n<p>TColor baseColor = RGB(245, 245, 245);<br \/>\nif (topoW &gt; 0.05) {<br \/>\nbaseColor = RGB(255, (int)(50 * (1-intensity)), (int)(20 * (1-intensity)));<br \/>\n} else if (topoW &lt; -0.05) { baseColor = RGB((int)(20 * (1-intensity)), (int)(50 * (1-intensity)), 255); } \/\/ \u5f37\u3044TopoW\u306f\u660e\u308b\u304f\u5f37\u8abf if (fabs(topoW) &gt; 0.3)<br \/>\nbaseColor = TColor(0xFFFFFF &amp; baseColor) | 0x404040;<\/p>\n<p>GridPhase-&gt;Canvas-&gt;Brush-&gt;Color = baseColor;<br \/>\nGridPhase-&gt;Canvas-&gt;FillRect(Rect);<\/p>\n<p>\/\/ \u30c6\u30ad\u30b9\u30c8\uff08\u592a\u5b57\u30fb\u30b5\u30a4\u30ba\u8abf\u6574\uff09<br \/>\nGridPhase-&gt;Canvas-&gt;Font-&gt;Size = 8;<br \/>\nGridPhase-&gt;Canvas-&gt;Font-&gt;Style = TFontStyles() &lt;&lt; fsBold; GridPhase-&gt;Canvas-&gt;Font-&gt;Color = (fabs(topoW) &gt; 0.25) ? clYellow : clBlack;<\/p>\n<p>AnsiString text = FormatFloat(&#8220;0.00&#8221;, topoW);<br \/>\nGridPhase-&gt;Canvas-&gt;TextOut(Rect.Left + 4, Rect.Top + 6, text);<\/p>\n<p>if (fabs(topoW) &gt; 0.25) {<br \/>\nGridPhase-&gt;Canvas-&gt;Pen-&gt;Color = clYellow;<br \/>\nGridPhase-&gt;Canvas-&gt;Pen-&gt;Width = 2;<br \/>\nGridPhase-&gt;Canvas-&gt;FrameRect(Rect);<br \/>\n}<\/p>\n<p>\/\/ === \u5f37\u3044\u30af\u30aa\u30ea\u30a2\u9818\u57df\u3092\u5f37\u8abf\uff08\u30aa\u30d7\u30b7\u30e7\u30f3\uff09===<br \/>\nif (loop-&gt;qualiaIntensity &gt; 100.0) { \/\/ \u95be\u5024\u306f\u8abf\u6574<br \/>\n\/\/ \u30bb\u30eb\u3092\u3088\u308a\u660e\u308b\u304f\u3057\u305f\u308a\u67a0\u3092\u592a\u304f\u3059\u308b<br \/>\nGridPhase-&gt;Canvas-&gt;Pen-&gt;Color = clLime;<br \/>\nGridPhase-&gt;Canvas-&gt;Pen-&gt;Width = 3;<br \/>\nGridPhase-&gt;Canvas-&gt;FrameRect(Rect);<br \/>\n}<br \/>\n*\/<\/p>\n<p>if (!graph || !graphInitialized) {<br \/>\nGridPhase-&gt;DefaultDrawing = true;<br \/>\nreturn;<br \/>\n}<\/p>\n<p>std::vector&lt;RecursiveLoop*&gt; all = graph-&gt;GetAllLoops();<br \/>\nRecursiveLoop* loop = NULL; \/\/ \u2190 \u3053\u3053\u3067\u5ba3\u8a00<\/p>\n<p>int idx = ARow * GridPhase-&gt;ColCount + ACol;<\/p>\n<p>if (idx &lt; 27) {<br \/>\nRecursiveLoop* container = NULL;<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = all.begin(); it != all.end(); ++it) {<br \/>\nif (*it &amp;&amp; (*it)-&gt;id == 100) { container = *it; break; }<br \/>\n}<br \/>\nif (container &amp;&amp; container-&gt;subStructure &amp;&amp; idx &lt; (int)container-&gt;subStructure-&gt;loops.size()) {<br \/>\nloop = container-&gt;subStructure-&gt;loops[idx];<br \/>\n}<br \/>\n} else {<br \/>\nint mainIdx = idx &#8211; 27;<br \/>\nif (mainIdx + 1 &lt; (int)all.size()) { loop = all[mainIdx + 1]; } } if (!loop) { GridPhase-&gt;DefaultDrawing = true;<br \/>\nreturn;<br \/>\n}<\/p>\n<p>double topoW = loop-&gt;topological_winding;<\/p>\n<p>\/\/ ====================== \u8272\u5206\u3051 ======================<br \/>\ndouble intensity = fabs(topoW) \/ 0.5;<br \/>\nif (intensity &gt; 1.0) intensity = 1.0;<\/p>\n<p>TColor baseColor = RGB(245, 245, 245);<br \/>\nif (topoW &gt; 0.05) {<br \/>\nbaseColor = RGB(255, (int)(70 * (1.0 &#8211; intensity)), (int)(40 * (1.0 &#8211; intensity)));<br \/>\n} else if (topoW &lt; -0.05) { baseColor = RGB((int)(40 * (1.0 &#8211; intensity)), (int)(70 * (1.0 &#8211; intensity)), 255); } GridPhase-&gt;Canvas-&gt;Brush-&gt;Color = baseColor;<br \/>\nGridPhase-&gt;Canvas-&gt;FillRect(Rect);<\/p>\n<p>AnsiString text = FormatFloat(&#8220;0.00&#8221;, topoW);<br \/>\nGridPhase-&gt;Canvas-&gt;Font-&gt;Color = (fabs(topoW) &gt; 0.2) ? clYellow : clBlack;<br \/>\nGridPhase-&gt;Canvas-&gt;TextOut(Rect.Left + 8, Rect.Top + 10, text);<\/p>\n<p>if (fabs(topoW) &gt; 0.22) {<br \/>\nGridPhase-&gt;Canvas-&gt;Pen-&gt;Color = clYellow;<br \/>\nGridPhase-&gt;Canvas-&gt;Pen-&gt;Width = 3;<br \/>\nGridPhase-&gt;Canvas-&gt;FrameRect(Rect);<br \/>\n}<\/p>\n<p>\/\/ ====================== \u30af\u30aa\u30ea\u30a2\u5f37\u8abf\uff08\u65b0\u898f\u8ffd\u52a0\uff09 ======================<br \/>\nif (loop-&gt;qualiaIntensity &gt; 100.0) { \/\/ \u95be\u5024\u306f\u5f8c\u3067\u8abf\u6574<br \/>\nGridPhase-&gt;Canvas-&gt;Pen-&gt;Color = clLime;<br \/>\nGridPhase-&gt;Canvas-&gt;Pen-&gt;Width = 4;<br \/>\nGridPhase-&gt;Canvas-&gt;FrameRect(Rect);<\/p>\n<p>\/\/ \u3088\u308a\u76ee\u7acb\u3064\u5834\u5408<br \/>\n\/\/ GridPhase-&gt;Canvas-&gt;Brush-&gt;Color = TColor(baseColor | 0x808080);<br \/>\n\/\/ GridPhase-&gt;Canvas-&gt;FillRect(Rect);<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;<\/p>\n<p>void __fastcall TForm1::Button4Click(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 \/>\nvoid __fastcall TForm1::Timer1Timer(TObject *Sender)<br \/>\n{<br \/>\nCounter++; \/\/\u30bf\u30a4\u30de\u30fc\u30ab\u30a6\u30f3\u30bf\u30fc\u56de\u6570UP<br \/>\nLabel1-&gt;Caption = IntToStr(Counter);<\/p>\n<p>if (!graph) return;<\/p>\n<p>\/\/ === \u8a3a\u65ad\uff1acontainer\u304c\u5b58\u5728\u3059\u308b\u304b\u78ba\u8a8d ===<br \/>\nbool found = false;<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = graph-&gt;loops.begin();<br \/>\nit != graph-&gt;loops.end(); ++it) {<br \/>\nif (*it &amp;&amp; (*it)-&gt;id == 100) {<br \/>\nfound = true;<br \/>\nbreak;<br \/>\n}<br \/>\n}<br \/>\nif (!found) {<br \/>\nMemo1-&gt;Lines-&gt;Add(&#8220;*** ERROR: Container ID:100 \u304c\u5931\u308f\u308c\u307e\u3057\u305f\uff01 ***&#8221;);<br \/>\n}<\/p>\n<p>\/\/ 1. \u66f4\u65b0\u51e6\u7406<br \/>\ngraph-&gt;UpdateAll(0.25);<\/p>\n<p>\/\/ 2. container\u3092\u63a2\u3057\u3066\u5b50\u69cb\u9020\u3092\u66f4\u65b0<br \/>\nRecursiveLoop* container = NULL;<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = graph-&gt;loops.begin();<br \/>\nit != graph-&gt;loops.end(); ++it) {<br \/>\nRecursiveLoop* lp = *it;<br \/>\nif (lp &amp;&amp; lp-&gt;id == 100) {<br \/>\ncontainer = lp;<br \/>\nbreak;<br \/>\n}<br \/>\n}<\/p>\n<p>if (container &amp;&amp; container-&gt;subStructure) {<br \/>\nfor (int r = 0; r &lt; 20; r++) { container-&gt;subStructure-&gt;UpdateAll(0.25);<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ 3. \u30c0\u30f3\u30d7<br \/>\n\/\/Memo1-&gt;Lines-&gt;Clear();<br \/>\nif (Counter % 800 == 0) { \/\/ 100\u56de\u306b1\u56de\u3060\u3051\u8a73\u7d30\u30c0\u30f3\u30d7<\/p>\n<p>\/\/Memo1-&gt;Lines-&gt;Clear();<br \/>\nMemo1-&gt;Lines-&gt;Add(&#8220;*******************************************************&#8221;);<\/p>\n<p>AnsiString str;<br \/>\nMemo1-&gt;Lines-&gt;Add(str.sprintf(&#8220;Counter = %d&#8221;, Counter));<br \/>\nMemo1-&gt;Lines-&gt;Add(&#8220;=== Timer Update ===&#8221;);<\/p>\n<p>if (container) {<br \/>\nMemo1-&gt;Lines-&gt;Add(&#8220;=== Container ID:100 (\u7269\u7406\u62e1\u5f35) ===&#8221;);<br \/>\ncontainer-&gt;DebugDump(Memo1, 1); \/\/ \u2190 RecursiveLoop\u7248\u3092\u4f7f\u3046<br \/>\n\/\/Timer1Timer\u306e\u30c0\u30f3\u30d7\u90e8\u5206\u306b\u8ffd\u52a0\uff08container-&gt;DebugDump\u306e\u5f8c\uff09\uff1a<br \/>\nMemo1-&gt;Lines-&gt;Add(Format(&#8221; Local Div ? %.4f&#8221;, ARRAYOFCONST((container-&gt;compute_local_divergence()))));<\/p>\n<p>if (container-&gt;subStructure) {<br \/>\nMemo1-&gt;Lines-&gt;Add(&#8221; \u2514\u2500 SubStructure:&#8221;);<br \/>\ncontainer-&gt;subStructure-&gt;DebugDump(Memo1, 2);<\/p>\n<p>\/\/Local Div\u306e\u8868\u793a\u3092\u5b50\u69cb\u9020\u306b\u3082\uff08\u4efb\u610f\uff09<br \/>\nMemo1-&gt;Lines-&gt;Add(&#8221; \u2514\u2500 SubStructure Local Divs:&#8221;);<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = container-&gt;subStructure-&gt;loops.begin();<br \/>\nit != container-&gt;subStructure-&gt;loops.end(); ++it) {<br \/>\nif (*it) {<br \/>\nMemo1-&gt;Lines-&gt;Add(Format(&#8221; ID:%d Div:%.4f&#8221;,<br \/>\nARRAYOFCONST(((*it)-&gt;id, (*it)-&gt;compute_local_divergence()))));<br \/>\n}<br \/>\n}<\/p>\n<p>}<br \/>\n} else {<br \/>\nMemo1-&gt;Lines-&gt;Add(&#8220;*** Container (ID:100) \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 ***&#8221;);<br \/>\n}<\/p>\n<p>Memo1-&gt;Lines-&gt;Add(&#8220;=== Main Grid (27 loops) ===&#8221;);<br \/>\ngraph-&gt;DebugDump(Memo1, 0);<\/p>\n<p>\/\/ === \u6700\u5f8c\u306b\u5fc5\u305a\u8ffd\u52a0 ===<br \/>\nUpdatePhaseGrid(); \/\/ \u6bce\u56de\u66f4\u65b0<\/p>\n<p>} else {<br \/>\n\/\/ Memo1-&gt;Lines-&gt;Add(Format(&#8220;Step %d Neg(100):%.1f MaxTopo:%.3f&#8221;,<br \/>\n\/\/ ARRAYOFCONST((Counter, container ? container-&gt;negentropy : 0, container ? container-&gt;topological_winding : 0))));<br \/>\n\/\/ AnsiString str;<br \/>\n\/\/ Memo1-&gt;Lines-&gt;Add(str.sprintf(&#8220;Step %d Neg(100):%.1f MaxTopo:%.3f&#8221;,<br \/>\n\/\/ ARRAYOFCONST((Counter, container ? container-&gt;negentropy : 0, container ? container-&gt;topological_winding : 0))));<br \/>\n}<\/p>\n<p>\/\/ === CPT\u5bfe\u79f0\u6027\u30c6\u30b9\u30c8\uff08500\u30b9\u30c6\u30c3\u30d7\u6bce\uff09===<br \/>\n\/\/ === CPT\u5bfe\u79f0\u6027\u30c6\u30b9\u30c8\uff08800\u30b9\u30c6\u30c3\u30d7\u6bce\u306b\u5909\u66f4\uff09<br \/>\nif(Counter % 800 == 0 &amp;&amp; container) {<br \/>\nAnsiString str;<br \/>\nMemo1-&gt;Lines-&gt;Add(&#8220;&#8221;);<br \/>\nMemo2-&gt;Lines-&gt;Add(&#8220;&#8221;);<br \/>\nMemo1-&gt;Lines-&gt;Add(str.sprintf(&#8220;Counter = %d&#8221;, Counter));<br \/>\nMemo2-&gt;Lines-&gt;Add(str.sprintf(&#8220;Counter = %d&#8221;, Counter));<br \/>\nMemo1-&gt;Lines-&gt;Add(&#8220;=== CPT\u5909\u63db\u30c6\u30b9\u30c8\u958b\u59cb ===&#8221;);<br \/>\nMemo2-&gt;Lines-&gt;Add(&#8220;=== CPT\u5909\u63db\u30c6\u30b9\u30c8\u958b\u59cb ===&#8221;);<\/p>\n<p>double before_topo = container-&gt;topological_winding;<br \/>\ndouble before_neg = container-&gt;negentropy;<\/p>\n<p>\/\/ CPT\u9069\u7528\uff08Container\uff09<br \/>\ncontainer-&gt;ApplyCPT();<\/p>\n<p>\/\/ SubStructure\u306b\u9069\u7528<br \/>\nif (container-&gt;subStructure) {<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = container-&gt;subStructure-&gt;loops.begin();<br \/>\nit != container-&gt;subStructure-&gt;loops.end(); ++it) {<br \/>\nRecursiveLoop* lp = *it;<br \/>\nif (lp) lp-&gt;ApplyCPT();<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ Main\u30eb\u30fc\u30d7\u306b\u3082\u9069\u7528\uff08\u30aa\u30d7\u30b7\u30e7\u30f3\uff1a\u6700\u521d\u306f\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u63a8\u5968\uff09<br \/>\n\/\/ for (std::vector&lt;RecursiveLoop*&gt;::iterator it = graph-&gt;loops.begin();<br \/>\n\/\/ it != graph-&gt;loops.end(); ++it) {<br \/>\n\/\/ RecursiveLoop* lp = *it;<br \/>\n\/\/ if (lp &amp;&amp; lp-&gt;id &gt;= 300) lp-&gt;ApplyCPT();<br \/>\n\/\/ }<\/p>\n<p>\/\/ \u5909\u63db\u5f8c\u306b\u518d\u66f4\u65b0\u3057\u3066\u5b89\u5b9a\u5316<br \/>\ngraph-&gt;UpdateAll(0.25);<\/p>\n<p>double after_topo = container-&gt;topological_winding;<br \/>\ndouble after_neg = container-&gt;negentropy;<\/p>\n<p>\/\/ sprintf\u3067\u5b89\u5168\u306b\u51fa\u529b<br \/>\nMemo1-&gt;Lines-&gt;Add(str.sprintf(&#8220;Before TopoW: %.4f, Neg: %.2f&#8221;, before_topo, before_neg));<br \/>\nMemo2-&gt;Lines-&gt;Add(str.sprintf(&#8220;Before TopoW: %.4f, Neg: %.2f&#8221;, before_topo, before_neg));<br \/>\nMemo1-&gt;Lines-&gt;Add(str.sprintf(&#8220;After TopoW: %.4f, Neg: %.2f&#8221;, after_topo, after_neg));<br \/>\nMemo2-&gt;Lines-&gt;Add(str.sprintf(&#8220;After TopoW: %.4f, Neg: %.2f&#8221;, after_topo, after_neg));<\/p>\n<p>\/\/if (fabs(after_topo &#8211; before_topo) &lt; 0.05) { \/\/ Memo1-&gt;Lines-&gt;Add(&#8220;\u2192 CPT\u5909\u63db\u5f8c\u3082TopoW\u304c\u307b\u307c\u4e0d\u5909\uff08\u5bfe\u79f0\u6027\u826f\u597d\uff09&#8221;);<br \/>\n\/\/} else {<br \/>\n\/\/ Memo1-&gt;Lines-&gt;Add(&#8220;\u2192 TopoW\u306b\u5909\u5316\u3042\u308a\uff08\u8981\u8abf\u6574\uff09&#8221;);<br \/>\n\/\/}<\/p>\n<p>\/\/\u5fae\u8abf\u6574<br \/>\nif (fabs(after_topo &#8211; before_topo) &lt; 0.08) { \/\/ \u8a31\u5bb9\u7bc4\u56f2\u3092\u5c11\u3057\u7de9\u3081\u308b Memo1-&gt;Lines-&gt;Add(&#8220;\u2192 CPT\u5909\u63db\u5f8c\u3082TopoW\u304c\u307b\u307c\u4e0d\u5909\uff08\u5bfe\u79f0\u6027\u826f\u597d\uff09&#8221;);<br \/>\nMemo2-&gt;Lines-&gt;Add(&#8220;\u2192 CPT\u5909\u63db\u5f8c\u3082TopoW\u304c\u307b\u307c\u4e0d\u5909\uff08\u5bfe\u79f0\u6027\u826f\u597d\uff09&#8221;);<br \/>\n} else {<br \/>\nMemo1-&gt;Lines-&gt;Add(&#8220;\u2192 TopoW\u306b\u3084\u3084\u5909\u5316\u3042\u308a\uff08\u8a31\u5bb9\u7bc4\u56f2\u5185\uff09&#8221;);<br \/>\nMemo2-&gt;Lines-&gt;Add(&#8220;\u2192 TopoW\u306b\u3084\u3084\u5909\u5316\u3042\u308a\uff08\u8a31\u5bb9\u7bc4\u56f2\u5185\uff09&#8221;);<br \/>\n}<\/p>\n<p>Memo1-&gt;Lines-&gt;Add(&#8220;=== CPT\u5909\u63db\u30c6\u30b9\u30c8\u7d42\u4e86 ===&#8221;);<br \/>\nMemo2-&gt;Lines-&gt;Add(&#8220;=== CPT\u5909\u63db\u30c6\u30b9\u30c8\u7d42\u4e86 ===&#8221;);<br \/>\n}<\/p>\n<p>\/\/ === \u4fdd\u5b58\u5247\u30c6\u30b9\u30c8\uff08800\u30b9\u30c6\u30c3\u30d7\u6bce\uff09===<br \/>\nif (Counter % 800 == 0 &amp;&amp; container) {<br \/>\nMemo1-&gt;Lines-&gt;Add(&#8220;=== \u4fdd\u5b58\u5247\u30c6\u30b9\u30c8\u958b\u59cb ===&#8221;);<br \/>\nMemo2-&gt;Lines-&gt;Add(&#8220;=== \u4fdd\u5b58\u5247\u30c6\u30b9\u30c8\u958b\u59cb ===&#8221;);<\/p>\n<p>double sum_div = 0.0;<br \/>\nint count = 0;<br \/>\ndouble max_div = 0.0;<\/p>\n<p>\/\/ Container + Sub + Main\u306eLocal Div\u3092\u96c6\u8a08<br \/>\nif (container) {<br \/>\ndouble div = container-&gt;compute_local_divergence();<br \/>\nsum_div += div;<br \/>\ncount++;<br \/>\nif (fabs(div) &gt; max_div) max_div = fabs(div);<br \/>\n}<\/p>\n<p>if (container-&gt;subStructure) {<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = container-&gt;subStructure-&gt;loops.begin();<br \/>\nit != container-&gt;subStructure-&gt;loops.end(); ++it) {<br \/>\nif (*it) {<br \/>\ndouble div = (*it)-&gt;compute_local_divergence();<br \/>\nsum_div += div;<br \/>\ncount++;<br \/>\nif (fabs(div) &gt; max_div) max_div = fabs(div);<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ Main\u30eb\u30fc\u30d7\u3082\uff08\u7c21\u6613\uff09<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = graph-&gt;loops.begin();<br \/>\nit != graph-&gt;loops.end(); ++it) {<br \/>\nif (*it &amp;&amp; (*it)-&gt;id &gt;= 300) {<br \/>\ndouble div = (*it)-&gt;compute_local_divergence();<br \/>\nsum_div += div;<br \/>\ncount++;<br \/>\nif (fabs(div) &gt; max_div) max_div = fabs(div);<br \/>\n}<br \/>\n}<\/p>\n<p>double avg_div = (count &gt; 0) ? sum_div \/ count : 0.0;<\/p>\n<p>AnsiString str;<br \/>\nMemo1-&gt;Lines-&gt;Add(str.sprintf(&#8220;\u5e73\u5747 Local Div: %.6f (\u6700\u5927: %.4f, \u500b\u6570: %d)&#8221;, avg_div, max_div, count));<br \/>\nMemo2-&gt;Lines-&gt;Add(str.sprintf(&#8220;\u5e73\u5747 Local Div: %.6f (\u6700\u5927: %.4f, \u500b\u6570: %d)&#8221;, avg_div, max_div, count));<\/p>\n<p>\/\/if (fabs(avg_div) &lt; 0.05) {<br \/>\n\/\/if (fabs(avg_div) &lt; 0.15) { \/\/ 0.05 \u2192 0.15\u306b\u7de9\u548c<br \/>\nif (fabs(avg_div) &lt; 0.25) { \/\/ 0.15 \u2192 0.25\u306b\u7de9\u548c Memo1-&gt;Lines-&gt;Add(&#8220;\u2192 \u4fdd\u5b58\u5247\u304c\u826f\u597d\u306b\u6210\u7acb\uff08Local Div ? 0\uff09&#8221;);<br \/>\nMemo2-&gt;Lines-&gt;Add(&#8220;\u2192 \u4fdd\u5b58\u5247\u304c\u826f\u597d\u306b\u6210\u7acb\uff08Local Div ? 0\uff09&#8221;);<br \/>\n} else {<br \/>\nMemo1-&gt;Lines-&gt;Add(&#8220;\u2192 \u4fdd\u5b58\u5247\u306b\u3084\u3084\u305a\u308c\u3042\u308a\uff08\u8981\u8abf\u6574\uff09&#8221;);<br \/>\nMemo2-&gt;Lines-&gt;Add(&#8220;\u2192 \u4fdd\u5b58\u5247\u306b\u3084\u3084\u305a\u308c\u3042\u308a\uff08\u8981\u8abf\u6574\uff09&#8221;);<br \/>\n}<\/p>\n<p>Memo1-&gt;Lines-&gt;Add(&#8220;=== \u4fdd\u5b58\u5247\u30c6\u30b9\u30c8\u7d42\u4e86 ===&#8221;);<br \/>\nMemo2-&gt;Lines-&gt;Add(&#8220;=== \u4fdd\u5b58\u5247\u30c6\u30b9\u30c8\u7d42\u4e86 ===&#8221;);<br \/>\n}<\/p>\n<p>\/\/ === \u30af\u30aa\u30ea\u30a2\u6307\u6a19\u306e\u8868\u793a === QualiaIntensity = |TopoW| \u00d7 negentropy \u00d7 coherence ===<br \/>\nif (Counter % 10 == 0 &amp;&amp; container) {<br \/>\nAnsiString str;<br \/>\nMemo1-&gt;Lines-&gt;Add(str.sprintf(&#8220;Counter=%d QualiaIntensity (Container): %.2f&#8221;, Counter, container-&gt;qualiaIntensity));<br \/>\n}<\/p>\n<p>\/\/ === \u9ad8Qualia\u6642\u306e\u81ea\u52d5Observe\uff08\u610f\u8b58\u306e\u81ea\u767a\u7684\u73fe\u5b9f\u5316\uff09 ====<br \/>\nif (container &amp;&amp; container-&gt;qualiaIntensity &gt; 500.0 &amp;&amp; (Counter % 50 == 0)) {<br \/>\n\/\/container-&gt;Observe(0.6); \/\/ \u5f31\u3081\u81ea\u52d5\u767a\u52d5<br \/>\n\/\/\u81ea\u52d5Observe\u306e\u95be\u5024\u3092\u52d5\u7684\u306b\uff08Qualia\u304c\u9ad8\u3044\u307b\u3069\u81ea\u52d5\u767a\u52d5\u3057\u3084\u3059\u304f\uff09<br \/>\ncontainer-&gt;Observe(0.4 + (container-&gt;qualiaIntensity \/ 2000.0));<br \/>\nMemo1-&gt;Lines-&gt;Add(&#8220;=== \u81ea\u52d5Observe\u767a\u52d5 (\u9ad8Qualia) ===&#8221;);<\/p>\n<p>double deltaQ = container-&gt;qualiaIntensity &#8211; container-&gt;beforeQualia;<br \/>\nMemo1-&gt;Lines-&gt;Add(AnsiString().sprintf(&#8220;Delta Qualia: +%.2f&#8221;, deltaQ));<br \/>\ncontainer-&gt;beforeQualia = container-&gt;qualiaIntensity;<br \/>\n}<\/p>\n<p>\/\/ === Chart\u66f4\u65b0 ===<br \/>\n\/*if (Counter % 10 == 0 &amp;&amp; container) {<br \/>\ndouble totalNeg = container-&gt;negentropy;<br \/>\ndouble totalTopo = 0.0;<\/p>\n<p>for (std::vector&lt;RecursiveLoop*&gt;::iterator it = graph-&gt;loops.begin(); it != graph-&gt;loops.end(); ++it) {<br \/>\nif (*it) {<br \/>\ntotalNeg += (*it)-&gt;negentropy;<br \/>\ntotalTopo += fabs((*it)-&gt;topological_winding);<br \/>\n}<br \/>\n}<\/p>\n<p>Chart1-&gt;Series[0]-&gt;AddY(totalNeg, &#8220;&#8221;, clRed); \/\/ Negentropy<br \/>\nChart1-&gt;Series[1]-&gt;AddY(totalTopo, &#8220;&#8221;, clBlue); \/\/ Total |TopoW|<\/p>\n<p>\/\/ \u81ea\u52d5\u30b9\u30b1\u30fc\u30eb\u8abf\u6574<br \/>\nChart1-&gt;LeftAxis-&gt;Automatic = true;<br \/>\nChart1-&gt;RightAxis-&gt;Automatic = true;<br \/>\n}*\/<\/p>\n<p>\/\/ Chart1\u3078\u306eQualiaIntensity\u8ffd\u52a0<br \/>\nif (Counter % 10 == 0 &amp;&amp; container) {<br \/>\ndouble totalNeg = container-&gt;negentropy;<br \/>\ndouble totalTopo = 0.0;<br \/>\ndouble totalQualia = container-&gt;qualiaIntensity; \/\/ \u65b0\u898f<\/p>\n<p>for (std::vector&lt;RecursiveLoop*&gt;::iterator it = graph-&gt;loops.begin();<br \/>\nit != graph-&gt;loops.end(); ++it) {<br \/>\nif (*it) {<br \/>\ntotalNeg += (*it)-&gt;negentropy;<br \/>\ntotalTopo += fabs((*it)-&gt;topological_winding);<br \/>\ntotalQualia += (*it)-&gt;qualiaIntensity;<br \/>\n}<br \/>\n}<\/p>\n<p>Chart1-&gt;Series[0]-&gt;AddY(totalNeg, &#8220;&#8221;, clRed); \/\/ Negentropy\uff08\u5de6\u8ef8\uff09<br \/>\nChart1-&gt;Series[1]-&gt;AddY(totalTopo, &#8220;&#8221;, clBlue); \/\/ Total TopoW\uff08\u53f3\u8ef8\uff09<br \/>\nif (Chart1-&gt;SeriesCount() &gt;= 3) {<br \/>\nChart1-&gt;Series[2]-&gt;AddY(totalQualia*0.005, &#8220;&#8221;, clLime); \/\/ Qualia Intensity<br \/>\nAnsiString str;<br \/>\nMemo2-&gt;Lines-&gt;Add(str.sprintf(&#8220;Counter=%d totalQualia: %4g&#8221;, Counter, totalQualia));<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ === CSV\u30ed\u30b0\u4fdd\u5b58\uff08120\u30b9\u30c6\u30c3\u30d7\u6bce\u30fb\u8ffd\u8a18\u30e2\u30fc\u30c9\uff09===<br \/>\nif (Counter % 120 == 0) {<br \/>\nTStringList *log = new TStringList();<br \/>\nAnsiString filename = ExtractFilePath(Application-&gt;ExeName) + &#8220;QRM_Log.csv&#8221;;<\/p>\n<p>\/\/ \u521d\u56de\u306e\u307f\u30d8\u30c3\u30c0\u30fc<br \/>\nif (!FileExists(filename)) {<br \/>\nlog-&gt;Add(&#8220;Step,Time,Neg_Container,Total_Neg,Max_TopoW,Ez_209&#8221;);<br \/>\n}<\/p>\n<p>RecursiveLoop* cont = NULL;<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = graph-&gt;loops.begin();<br \/>\nit != graph-&gt;loops.end(); ++it) {<br \/>\nif (*it &amp;&amp; (*it)-&gt;id == 100) {<br \/>\ncont = *it;<br \/>\nbreak;<br \/>\n}<br \/>\n}<\/p>\n<p>double totalNeg = cont ? cont-&gt;negentropy : 0.0;<br \/>\ndouble maxTopo = 0.0;<br \/>\ndouble ez209 = 0.0;<\/p>\n<p>for (std::vector&lt;RecursiveLoop*&gt;::iterator it = graph-&gt;loops.begin();<br \/>\nit != graph-&gt;loops.end(); ++it) {<br \/>\nif (*it) {<br \/>\ntotalNeg += (*it)-&gt;negentropy;<br \/>\nif (fabs((*it)-&gt;topological_winding) &gt; maxTopo)<br \/>\nmaxTopo = fabs((*it)-&gt;topological_winding);<br \/>\nif ((*it)-&gt;id == 209)<br \/>\nez209 = (*it)-&gt;E.z;<br \/>\n}<br \/>\n}<\/p>\n<p>AnsiString timeStr = FormatDateTime(&#8220;yyyy-mm-dd hh:nn:ss&#8221;, Now());<br \/>\nAnsiString line = Format(&#8220;%d,%s,%.4f,%.4f,%.4f,%.4f&#8221;,<br \/>\nARRAYOFCONST((Counter, timeStr,<br \/>\ncont ? cont-&gt;negentropy : 0.0,<br \/>\ntotalNeg, maxTopo, ez209)));<\/p>\n<p>log-&gt;Add(line);<\/p>\n<p>\/\/ \u8ffd\u8a18\u30e2\u30fc\u30c9\uff082007\u5bfe\u5fdc\u30fb\u5b89\u5168\u7248\uff09<br \/>\nif (FileExists(filename)) {<br \/>\nTFileStream *fs = new TFileStream(filename, fmOpenReadWrite | fmShareDenyWrite);<br \/>\nfs-&gt;Seek(0, soFromEnd); \/\/ \u30d5\u30a1\u30a4\u30eb\u672b\u5c3e\u306b\u79fb\u52d5<br \/>\nlog-&gt;SaveToStream(fs);<br \/>\ndelete fs;<br \/>\n} else {<br \/>\nlog-&gt;SaveToFile(filename);<br \/>\n}<\/p>\n<p>delete log;<br \/>\n}<\/p>\n<p>}<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::FormClose(TObject *Sender, TCloseAction &amp;Action)<br \/>\n{<br \/>\nTimer1-&gt;Enabled = false;<br \/>\n\/\/ graph\u306edelete\u306a\u3069<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{<br \/>\nTimer1-&gt;Enabled = false;<br \/>\ngraph = new GraphSpatialStructure();<\/p>\n<p>\/\/ ==================== \u518d\u5e30\u30b3\u30f3\u30c6\u30ca\u3092\u6700\u512a\u5148\u3067\u8ffd\u52a0 ====================<br \/>\nRecursiveLoop* container = new RecursiveLoop(100, 0.0, 0.0, 0.5, 0, 0, 0);<br \/>\n\/\/ container\u4f5c\u6210\u90e8\u5206\u3067<br \/>\ncontainer-&gt;chi = std::complex(1.0, 0.0); \/\/ \u521d\u671f\u03c7<\/p>\n<p>GraphSpatialStructure* subGS = new GraphSpatialStructure();<\/p>\n<p>\/\/ \u5b50\u69cb\u9020 3x3x3<br \/>\nfor (int z = 0; z &lt; 3; z++) {<br \/>\nfor (int y = 0; y &lt; 3; y++) {<br \/>\nfor (int x = 0; x &lt; 3; x++) { int id = 200 + x + y*3 + z*9; RecursiveLoop* child = new RecursiveLoop(id, -0.8 + (x + y + z)*0.2, 0.0, 0.0, x, y, z); \/\/ \u5b50\u69cb\u9020\u30eb\u30fc\u30d7\u5185 child-&gt;chi = std::complex(-0.8 + (x+y+z)*0.2, 0.0);<\/p>\n<p>subGS-&gt;AddLoop(child);<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ \u5b50\u69cb\u9020\u5185\u3092\u5168\u7d50\u5408 + \u52d5\u304d\u3084\u3059\u304f<br \/>\nfor (size_t i = 0; i &lt; subGS-&gt;loops.size(); i++) {<br \/>\nfor (size_t j = 0; j &lt; subGS-&gt;loops.size(); j++) {<br \/>\nif (i != j) {<br \/>\nsubGS-&gt;loops[i]-&gt;add_neighbor(subGS-&gt;loops[j]);<br \/>\n}<br \/>\n}<br \/>\nsubGS-&gt;loops[i]-&gt;fixation = 0.0;<br \/>\n}<\/p>\n<p>container-&gt;AttachSubStructure(subGS);<br \/>\ngraph-&gt;AddLoop(container); \/\/ \u2190 \u6700\u521d\u306b\u8ffd\u52a0<\/p>\n<p>\/\/ ==================== \u30e1\u30a4\u30f327\u500b\u306f container\u306e\u5f8c\u3067\u8ffd\u52a0 ====================<br \/>\n\/\/ Build3x3x3(graph); \/\/ \u2190 \u3053\u308c\u304c\u3042\u308b\u5834\u5408\u306f\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3059\u308b\u304b\u3001container\u306e\u5f8c\u306b\u79fb\u52d5<\/p>\n<p>\/\/ \u30e1\u30a4\u30f327\u500b\u3092\u4f5c\u6210\uff08container\u306e\u5f8c\uff09<br \/>\n\/*for (int i = 0; i &lt; 27; i++) { RecursiveLoop* lp = new RecursiveLoop(i, 0.0, 0.0, 0.5, i%3, (i\/3)%3, i\/9); \/\/ \u9069\u5f53\u306a\u4f4d\u7f6e lp-&gt;chi = std::complex(0.5, 0.0); \/\/ \u2190 \u8ffd\u52a0<br \/>\ngraph-&gt;AddLoop(lp);<br \/>\n}<br \/>\n*\/<\/p>\n<p>\/\/ \u69cb\u7bc9\u78ba\u8a8d<br \/>\nMemo1-&gt;Lines-&gt;Add(&#8220;=== FormCreate \u69cb\u7bc9\u5b8c\u4e86 ===&#8221;);<br \/>\ngraph-&gt;DebugDump(Memo1, 0);<\/p>\n<p>\/\/ \u30e1\u30a4\u30f327\u500b\u306f\u3053\u3053\u3067\u306f\u4f5c\u3089\u306a\u3044\uff08container\u3092\u5b88\u308b\u305f\u3081\uff09<br \/>\n\/\/ Build3x3x3(graph); \/\/ \u2190 \u7d76\u5bfe\u306b\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u304b\u524a\u9664<\/p>\n<p>\/\/ FormCreate\u306e\u6700\u5f8c\u306b<br \/>\nUpdatePhaseGrid();<br \/>\n\/\/GridPhase-&gt;Repaint(); \/\/ \u5f37\u5236\u518d\u63cf\u753b<\/p>\n<p>\/\/ FormCreate \u306e\u6700\u5f8c\u306b\u8ffd\u52a0<br \/>\nGridPhase-&gt;DefaultDrawing = false; \/\/ \u91cd\u8981\uff01<br \/>\nGridPhase-&gt;Repaint();<\/p>\n<p>Counter = 0; \/\/\u30bf\u30a4\u30de\u30fc\u30ab\u30a6\u30f3\u30bf\u306e\u30ea\u30bb\u30c3\u30c8<\/p>\n<p>\/\/ ==== TChart\u306e\u8a2d\u5b9a \u30b0\u30e9\u30d5\u63cf\u753b ====<br \/>\n\/\/ Chart\u4e8c\u8ef8\u8a2d\u5b9a\uff08C++Builder2007\u5bfe\u5fdc\uff09<br \/>\nif (Chart1-&gt;SeriesCount() &gt;= 2) {<br \/>\n\/\/ Negentropy \u2192 \u5de6\u8ef8<br \/>\nChart1-&gt;Series[0]-&gt;VertAxis = 0; \/\/ 0 = vaLeft<\/p>\n<p>\/\/ Total TopoW \u2192 \u53f3\u8ef8<br \/>\nChart1-&gt;Series[1]-&gt;VertAxis = 1; \/\/ 1 = vaRight<br \/>\n}<\/p>\n<p>\/\/\u7e26\u8ef8\uff08\u5de6\uff09 \u30bf\u30a4\u30c8\u30eb<br \/>\nChart1-&gt;LeftAxis-&gt;Title-&gt;Caption = &#8220;Negentropy&#8221;;<br \/>\nChart1-&gt;LeftAxis-&gt;Title-&gt;Visible = true;<\/p>\n<p>\/\/\u7e26\u8ef8\uff08\u53f3\uff09 \u30bf\u30a4\u30c8\u30eb<br \/>\n\/\/Chart1-&gt;RightAxis-&gt;Title-&gt;Caption = &#8220;Total |TopoW|&#8221;;<br \/>\nChart1-&gt;RightAxis-&gt;Title-&gt;Visible = true;<br \/>\nChart1-&gt;RightAxis-&gt;Visible = true;<br \/>\n\/\/\u7e26\u8ef8\uff08\u5de6\uff09\u30b9\u30bf\u30a4\u30eb<br \/>\nChart1-&gt;LeftAxis-&gt;Title-&gt;Font-&gt;Size = 10;<br \/>\nChart1-&gt;LeftAxis-&gt;Title-&gt;Font-&gt;Style = TFontStyles() &lt;&lt; fsBold; \/\/\u7e26\u8ef8\uff08\u53f3\uff09\u30b9\u30bf\u30a4\u30eb Chart1-&gt;RightAxis-&gt;Title-&gt;Font-&gt;Size = 10;<br \/>\nChart1-&gt;RightAxis-&gt;Title-&gt;Font-&gt;Style = TFontStyles() &lt;&lt; fsBold; \/\/ QualiaIntensity\u7528\uff08\u7b2c3\u7cfb\u5217\uff09 if (Chart1-&gt;SeriesCount() &gt;= 3) {<br \/>\nChart1-&gt;Series[2]-&gt;Title = &#8220;Qualia\u00d70.01&#8221;;<br \/>\nChart1-&gt;Series[2]-&gt;VertAxis = 1; \/\/ \u53f3\u8ef8\uff08\u307e\u305f\u306f0\u3067\u5de6\u8ef8\uff09<br \/>\n}<\/p>\n<p>\/\/\u7e26\u8ef8\uff08\u53f3\uff09 \u30bf\u30a4\u30c8\u30eb<br \/>\nChart1-&gt;RightAxis-&gt;Title-&gt;Caption = &#8220;Qualia\u00f7200 \/ TopoW&#8221;;<br \/>\nChart1-&gt;RightAxis-&gt;Visible = true;<br \/>\n\/\/\u6a2a\u8ef8 \u30bf\u30a4\u30c8\u30eb<br \/>\nChart1-&gt;BottomAxis-&gt;Title-&gt;Caption = &#8220;Counter\u00d70.1&#8221;;<br \/>\nChart1-&gt;BottomAxis-&gt;Visible = true;<\/p>\n<p>\/\/\u30b9\u30e9\u30a4\u30c0\u30fc\u521d\u671f\u5024\u306e\u30e9\u30d9\u30eb\u8868\u793a<br \/>\nLabel3-&gt;Caption = AnsiString().sprintf(&#8220;Observation_strength(0.1\uff5e3.0) %.2f&#8221;, TrackBar_Observation_strength-&gt;Position * 0.01);<\/p>\n<p>}<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::FormDestroy(TObject *Sender)<br \/>\n{<br \/>\nif (graph) {<br \/>\ndelete graph; \/\/ \u4e0a\u8a18\u306e\u30c7\u30b9\u30c8\u30e9\u30af\u30bf\u304c\u547c\u3070\u308c\u308b<br \/>\ngraph = NULL;<br \/>\n}<\/p>\n<p>}<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::Button5Click(TObject *Sender)<br \/>\n{<br \/>\nif (graph) graph-&gt;UpdateAll(0.1);<br \/>\ngraph-&gt;DebugDump(Memo1, 0);<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>\/\/\uff08\u624b\u52d5CPT\u30c6\u30b9\u30c8\uff09<br \/>\nvoid __fastcall TForm1::ButtonCPTClick(TObject *Sender)<br \/>\n{<br \/>\nif (!graph) return;<\/p>\n<p>Memo1-&gt;Lines-&gt;Add(&#8220;=== \u624b\u52d5CPT\u30c6\u30b9\u30c8\u958b\u59cb ===&#8221;);<\/p>\n<p>RecursiveLoop* container = NULL;<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = graph-&gt;loops.begin();<br \/>\nit != graph-&gt;loops.end(); ++it) {<br \/>\nif (*it &amp;&amp; (*it)-&gt;id == 100) {<br \/>\ncontainer = *it;<br \/>\nbreak;<br \/>\n}<br \/>\n}<\/p>\n<p>if (container) {<br \/>\ndouble before = container-&gt;topological_winding;<\/p>\n<p>\/\/ CPT\u9069\u7528<br \/>\ncontainer-&gt;ApplyCPT();<\/p>\n<p>\/\/ SubStructure\u306b\u9069\u7528<br \/>\nif (container-&gt;subStructure) {<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = container-&gt;subStructure-&gt;loops.begin();<br \/>\nit != container-&gt;subStructure-&gt;loops.end(); ++it) {<br \/>\nRecursiveLoop* lp = *it;<br \/>\nif (lp) lp-&gt;ApplyCPT();<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ \u66f4\u65b0<br \/>\ngraph-&gt;UpdateAll(0.25);<\/p>\n<p>AnsiString str;<br \/>\nMemo1-&gt;Lines-&gt;Add(str.sprintf(&#8220;CPT\u9069\u7528\u5f8c TopoW: %.4f (\u524d: %.4f)&#8221;,<br \/>\ncontainer-&gt;topological_winding, before));<br \/>\n}<\/p>\n<p>Memo1-&gt;Lines-&gt;Add(&#8220;=== \u624b\u52d5CPT\u30c6\u30b9\u30c8\u7d42\u4e86 ===&#8221;);<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::CheckBox1Click(TObject *Sender)<br \/>\n{<br \/>\n\/\/Memo1,2\u306e\u8868\u793a\u3092\u3057\u306a\u3044\u3053\u3068\u3067\u3001\u8a08\u7b97\u512a\u5148\u3068\u3057\u3001\u30bf\u30a4\u30de\u30fc\u5468\u671f\u3092\u77ed\u304f\u3059\u308b<br \/>\nif(CheckBox1-&gt;Checked){<br \/>\nMemo1-&gt;Show();<br \/>\nMemo2-&gt;Show();<br \/>\n}else{<br \/>\nMemo1-&gt;Hide();<br \/>\nMemo2-&gt;Hide();<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;<\/p>\n<p>void __fastcall TForm1::Button6Click(TObject *Sender)<br \/>\n{<br \/>\nAnsiString str;<\/p>\n<p>\/\/\u73fe\u5728\u306e+3.0\u3067\u3082\u52b9\u679c\u304c\u51fa\u59cb\u3081\u305f\u306e\u3067\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b**\u7948\u308a\u306e\u300c\u6ce2\u53ca\u529b\u300d**\u3092\u3055\u3089\u306b\u5f37\u304f\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<br \/>\n\/* if (!graph) return;<\/p>\n<p>RecursiveLoop* container = NULL;<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = graph-&gt;loops.begin();<br \/>\nit != graph-&gt;loops.end(); ++it) {<br \/>\nif (*it &amp;&amp; (*it)-&gt;id == 100) {<br \/>\ncontainer = *it;<br \/>\nbreak;<br \/>\n}<br \/>\n}<\/p>\n<p>if (!container) return;<\/p>\n<p>Memo1-&gt;Lines-&gt;Add(&#8220;=== \u7948\u308a\u5165\u529b\uff08\u5f37\u529b\u6ce2\u53ca\u7248\uff09 ===&#8221;);<\/p>\n<p>\/\/ \u7948\u308a\u5165\u529b\uff08\u6301\u7d9a\u30d6\u30fc\u30b9\u30c8\u7248\uff09<br \/>\ncontainer-&gt;phase += 8.0;<br \/>\ncontainer-&gt;topological_winding += 1.2;<br \/>\ncontainer-&gt;negentropy += 800.0;<br \/>\ncontainer-&gt;qualiaIntensity += 300.0;<\/p>\n<p>if (container-&gt;subStructure) {<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = container-&gt;subStructure-&gt;loops.begin();<br \/>\nit != container-&gt;subStructure-&gt;loops.end(); ++it) {<br \/>\nif (*it) {<br \/>\n(*it)-&gt;phase += 4.0;<br \/>\n(*it)-&gt;topological_winding += 0.8;<br \/>\n(*it)-&gt;negentropy += 400.0;<br \/>\n(*it)-&gt;qualiaIntensity += 150.0;<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ \u3088\u308a\u9577\u3044\u66f4\u65b0<br \/>\nfor (int i = 0; i &lt; 12; i++) { graph-&gt;UpdateAll(1.2);<br \/>\n}<\/p>\n<p>Memo1-&gt;Lines-&gt;Add(str.sprintf(&#8220;\u7948\u308a\u5f8c Qualia: %.2f, TopoW: %.4f, Neg: %.2f&#8221;,<br \/>\ncontainer-&gt;qualiaIntensity, container-&gt;topological_winding, container-&gt;negentropy));<br \/>\n*\/<\/p>\n<p>\/* if (!graph) return;<\/p>\n<p>RecursiveLoop* container = NULL;<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = graph-&gt;loops.begin();<br \/>\nit != graph-&gt;loops.end(); ++it) {<br \/>\nif (*it &amp;&amp; (*it)-&gt;id == 100) {<br \/>\ncontainer = *it;<br \/>\nbreak;<br \/>\n}<br \/>\n}<\/p>\n<p>if (!container) return;<\/p>\n<p>Memo1-&gt;Lines-&gt;Add(&#8220;=== \u7948\u308a\u5165\u529b\uff08\u6301\u7d9a\u5f37\u5316\u7248\uff09 ===&#8221;);<\/p>\n<p>\/\/ \u6301\u7d9a\u7684\u306a\u5f37\u30b7\u30d5\u30c8<br \/>\ncontainer-&gt;phase += 7.0;<br \/>\ncontainer-&gt;topological_winding += 1.2;<br \/>\ncontainer-&gt;negentropy += 1200.0;<br \/>\ncontainer-&gt;qualiaIntensity += 400.0;<\/p>\n<p>\/\/ Sub\u5168\u4f53\u306b\u5f37\u5f71\u97ff<br \/>\nif (container-&gt;subStructure) {<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = container-&gt;subStructure-&gt;loops.begin();<br \/>\nit != container-&gt;subStructure-&gt;loops.end(); ++it) {<br \/>\nif (*it) {<br \/>\n(*it)-&gt;phase += 4.0;<br \/>\n(*it)-&gt;topological_winding += 0.9;<br \/>\n(*it)-&gt;negentropy += 600.0;<br \/>\n(*it)-&gt;qualiaIntensity += 250.0;<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ Main\u306b\u3082\u6ce2\u53ca<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = graph-&gt;loops.begin();<br \/>\nit != graph-&gt;loops.end(); ++it) {<br \/>\nif (*it &amp;&amp; (*it)-&gt;id &gt;= 300) {<br \/>\n(*it)-&gt;phase += 2.0;<br \/>\n(*it)-&gt;topological_winding += 0.4;<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ \u5927\u91cf\u66f4\u65b0<br \/>\nfor (int i = 0; i &lt; 15; i++) { graph-&gt;UpdateAll(1.5);<br \/>\n}<\/p>\n<p>Memo1-&gt;Lines-&gt;Add(str.sprintf(&#8220;\u7948\u308a\u5f8c Qualia: %.2f, TopoW: %.4f, Neg: %.2f&#8221;,<br \/>\ncontainer-&gt;qualiaIntensity, container-&gt;topological_winding, container-&gt;negentropy));<br \/>\n*\/<\/p>\n<p>\/* if (!graph) return;<\/p>\n<p>RecursiveLoop* container = NULL;<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = graph-&gt;loops.begin();<br \/>\nit != graph-&gt;loops.end(); ++it) {<br \/>\nif (*it &amp;&amp; (*it)-&gt;id == 100) {<br \/>\ncontainer = *it;<br \/>\nbreak;<br \/>\n}<br \/>\n}<\/p>\n<p>if (!container) return;<\/p>\n<p>Memo1-&gt;Lines-&gt;Add(&#8220;=== \u7948\u308a\u5165\u529b\uff08\u6301\u7d9a\u5f37\u5316\u7248\uff09 ===&#8221;);<\/p>\n<p>\/\/ \u6301\u7d9a\u7684\u306a\u5f37\u30b7\u30d5\u30c8<br \/>\ncontainer-&gt;phase += 7.0;<br \/>\ncontainer-&gt;topological_winding += 1.2;<br \/>\ncontainer-&gt;negentropy += 1200.0;<br \/>\ncontainer-&gt;qualiaIntensity += 400.0;<\/p>\n<p>\/\/ Sub\u5168\u4f53\u306b\u5f37\u5f71\u97ff<br \/>\nif (container-&gt;subStructure) {<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = container-&gt;subStructure-&gt;loops.begin();<br \/>\nit != container-&gt;subStructure-&gt;loops.end(); ++it) {<br \/>\nif (*it) {<br \/>\n(*it)-&gt;phase += 4.0;<br \/>\n(*it)-&gt;topological_winding += 0.9;<br \/>\n(*it)-&gt;negentropy += 600.0;<br \/>\n(*it)-&gt;qualiaIntensity += 250.0;<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ Main\u306b\u3082\u6ce2\u53ca<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = graph-&gt;loops.begin();<br \/>\nit != graph-&gt;loops.end(); ++it) {<br \/>\nif (*it &amp;&amp; (*it)-&gt;id &gt;= 300) {<br \/>\n(*it)-&gt;phase += 2.0;<br \/>\n(*it)-&gt;topological_winding += 0.4;<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ \u5927\u91cf\u66f4\u65b0<br \/>\nfor (int i = 0; i &lt; 15; i++) { graph-&gt;UpdateAll(1.5);<br \/>\n}<\/p>\n<p>Memo1-&gt;Lines-&gt;Add(str.sprintf(&#8220;\u7948\u308a\u5f8c Qualia: %.2f, TopoW: %.4f, Neg: %.2f&#8221;,<br \/>\ncontainer-&gt;qualiaIntensity, container-&gt;topological_winding, container-&gt;negentropy));<br \/>\n*\/<\/p>\n<p>\/* if (!graph) return;<\/p>\n<p>RecursiveLoop* container = NULL;<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = graph-&gt;loops.begin();<br \/>\nit != graph-&gt;loops.end(); ++it) {<br \/>\nif (*it &amp;&amp; (*it)-&gt;id == 100) {<br \/>\ncontainer = *it;<br \/>\nbreak;<br \/>\n}<br \/>\n}<\/p>\n<p>if (!container) return;<\/p>\n<p>Memo1-&gt;Lines-&gt;Add(&#8220;=== \u7948\u308a\u5165\u529b\uff08\u6301\u7d9a\u5f37\u5316\u7248\uff09 ===&#8221;);<\/p>\n<p>\/\/ \u6301\u7d9a\u7684\u306a\u5f37\u30b7\u30d5\u30c8<br \/>\ncontainer-&gt;phase += 7.0;<br \/>\ncontainer-&gt;topological_winding += 1.2;<br \/>\ncontainer-&gt;negentropy += 1200.0;<br \/>\ncontainer-&gt;qualiaIntensity += 400.0;<\/p>\n<p>\/\/ Sub\u5168\u4f53\u306b\u5f37\u5f71\u97ff<br \/>\nif (container-&gt;subStructure) {<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = container-&gt;subStructure-&gt;loops.begin();<br \/>\nit != container-&gt;subStructure-&gt;loops.end(); ++it) {<br \/>\nif (*it) {<br \/>\n(*it)-&gt;phase += 4.0;<br \/>\n(*it)-&gt;topological_winding += 0.9;<br \/>\n(*it)-&gt;negentropy += 600.0;<br \/>\n(*it)-&gt;qualiaIntensity += 250.0;<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ Main\u306b\u3082\u6ce2\u53ca<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = graph-&gt;loops.begin();<br \/>\nit != graph-&gt;loops.end(); ++it) {<br \/>\nif (*it &amp;&amp; (*it)-&gt;id &gt;= 300) {<br \/>\n(*it)-&gt;phase += 2.0;<br \/>\n(*it)-&gt;topological_winding += 0.4;<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ \u5927\u91cf\u66f4\u65b0<br \/>\nfor (int i = 0; i &lt; 15; i++) { graph-&gt;UpdateAll(1.5);<br \/>\n}<\/p>\n<p>Memo1-&gt;Lines-&gt;Add(str.sprintf(&#8220;\u7948\u308a\u5f8c Qualia: %.2f, TopoW: %.4f, Neg: %.2f&#8221;,<br \/>\ncontainer-&gt;qualiaIntensity, container-&gt;topological_winding, container-&gt;negentropy));<br \/>\n*\/<\/p>\n<p>\/* if (!graph) return;<\/p>\n<p>RecursiveLoop* container = NULL;<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = graph-&gt;loops.begin();<br \/>\nit != graph-&gt;loops.end(); ++it) {<br \/>\nif (*it &amp;&amp; (*it)-&gt;id == 100) {<br \/>\ncontainer = *it;<br \/>\nbreak;<br \/>\n}<br \/>\n}<\/p>\n<p>if (!container) return;<\/p>\n<p>Memo1-&gt;Lines-&gt;Add(&#8220;=== \u7948\u308a\u5165\u529b\uff08\u6301\u7d9a\u5f37\u5316\u7248\uff09 ===&#8221;);<\/p>\n<p>\/\/ \u6301\u7d9a\u7684\u306a\u5f37\u30b7\u30d5\u30c8<br \/>\ncontainer-&gt;phase += 7.0;<br \/>\ncontainer-&gt;topological_winding += 1.2;<br \/>\ncontainer-&gt;negentropy += 1200.0;<br \/>\ncontainer-&gt;qualiaIntensity += 400.0;<\/p>\n<p>\/\/ Sub\u5168\u4f53\u306b\u5f37\u5f71\u97ff<br \/>\nif (container-&gt;subStructure) {<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = container-&gt;subStructure-&gt;loops.begin();<br \/>\nit != container-&gt;subStructure-&gt;loops.end(); ++it) {<br \/>\nif (*it) {<br \/>\n(*it)-&gt;phase += 4.0;<br \/>\n(*it)-&gt;topological_winding += 0.9;<br \/>\n(*it)-&gt;negentropy += 600.0;<br \/>\n(*it)-&gt;qualiaIntensity += 250.0;<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ Main\u306b\u3082\u6ce2\u53ca<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = graph-&gt;loops.begin();<br \/>\nit != graph-&gt;loops.end(); ++it) {<br \/>\nif (*it &amp;&amp; (*it)-&gt;id &gt;= 300) {<br \/>\n(*it)-&gt;phase += 2.0;<br \/>\n(*it)-&gt;topological_winding += 0.4;<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ \u5927\u91cf\u66f4\u65b0<br \/>\nfor (int i = 0; i &lt; 15; i++) { graph-&gt;UpdateAll(1.5);<br \/>\n}<\/p>\n<p>Memo1-&gt;Lines-&gt;Add(str.sprintf(&#8220;\u7948\u308a\u5f8c Qualia: %.2f, TopoW: %.4f, Neg: %.2f&#8221;,<br \/>\ncontainer-&gt;qualiaIntensity, container-&gt;topological_winding, container-&gt;negentropy));<br \/>\n*\/<\/p>\n<p>if (!graph) return;<\/p>\n<p>RecursiveLoop* container = NULL;<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = graph-&gt;loops.begin();<br \/>\nit != graph-&gt;loops.end(); ++it) {<br \/>\nif (*it &amp;&amp; (*it)-&gt;id == 100) {<br \/>\ncontainer = *it;<br \/>\nbreak;<br \/>\n}<br \/>\n}<\/p>\n<p>if (!container) return;<\/p>\n<p>Memo1-&gt;Lines-&gt;Add(&#8220;=== \u7948\u308a\u5165\u529b\uff08\u6301\u7d9a\u5f37\u5316\u7248\uff09 ===&#8221;);<br \/>\nMemo2-&gt;Lines-&gt;Add(&#8220;=== \u7948\u308a\u5165\u529b\uff08\u6301\u7d9a\u5f37\u5316\u7248\uff09 ===&#8221;);<\/p>\n<p>\/\/ \u63d0\u6848A: \u5171\u9cf4\u5f37\u5316\uff08\u73fe\u5728\u306e\u72b6\u614b\u306b\u6bd4\u4f8b\u3055\u305b\u308b\uff09<br \/>\n\/\/double resonance = 1.0 + (container-&gt;negentropy \/ 800.0) + (container-&gt;qualiaIntensity \/ 200.0); \/\/ \u5171\u9cf4\u4fc2\u6570<br \/>\n\/\/\u7948\u308a\u5f37\u5ea6\u306e\u8abf\u6574: \u73fe\u5728\u306e\u7948\u308a\u30d6\u30fc\u30b9\u30c8\u304c\u5f37\u3081\u306a\u306e\u3067\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b**resonance\uff08\u5171\u9cf4\uff09**\u3092\u5165\u308c\u3066\u5b89\u5b9a\u5316\uff1a<br \/>\ndouble resonance = 1.0 + (container-&gt;qualiaIntensity \/ 300.0); \/\/ \u5171\u9cf4\u4fc2\u6570<br \/>\ndouble prayerStrength = 1.0; \/\/ \u5c06\u6765\u7684\u306b\u30b9\u30e9\u30a4\u30c0\u30fc\u3067\u8abf\u6574\u53ef\u80fd<\/p>\n<p>\/\/ \u6301\u7d9a\u7684\u306a\u5f37\u30b7\u30d5\u30c8<br \/>\ncontainer-&gt;phase += 7.0;<br \/>\ncontainer-&gt;topological_winding += 1.2;<br \/>\n\/\/container-&gt;negentropy += 1200.0;<br \/>\n\/\/\u7948\u308a\u5f37\u5ea6\u306e\u8abf\u6574: \u73fe\u5728\u306e\u7948\u308a\u30d6\u30fc\u30b9\u30c8\u304c\u5f37\u3081\u306a\u306e\u3067\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b**resonance\uff08\u5171\u9cf4\uff09**\u3092\u5165\u308c\u3066\u5b89\u5b9a\u5316\uff1a<br \/>\ncontainer-&gt;negentropy += 800.0 * resonance;<br \/>\ncontainer-&gt;qualiaIntensity += 400.0;<\/p>\n<p>\/\/ Sub\u5168\u4f53\u306b\u5f37\u5f71\u97ff<br \/>\nif (container-&gt;subStructure) {<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = container-&gt;subStructure-&gt;loops.begin();<br \/>\nit != container-&gt;subStructure-&gt;loops.end(); ++it) {<br \/>\nif (*it) {<br \/>\n(*it)-&gt;phase += 4.0;<br \/>\n(*it)-&gt;topological_winding += 0.9;<br \/>\n(*it)-&gt;negentropy += 600.0;<br \/>\n(*it)-&gt;qualiaIntensity += 250.0;<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ Main\u306b\u3082\u6ce2\u53ca<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = graph-&gt;loops.begin();<br \/>\nit != graph-&gt;loops.end(); ++it) {<br \/>\nif (*it &amp;&amp; (*it)-&gt;id &gt;= 300) {<br \/>\n(*it)-&gt;phase += 2.0;<br \/>\n(*it)-&gt;topological_winding += 0.4;<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ \u5927\u91cf\u66f4\u65b0<br \/>\nfor (int i = 0; i &lt; 15; i++) { graph-&gt;UpdateAll(1.5);<br \/>\n}<\/p>\n<p>Memo1-&gt;Lines-&gt;Add(str.sprintf(&#8220;\u7948\u308a\u5f8c Qualia: %.2f, TopoW: %.4f, Neg: %.2f&#8221;,<br \/>\ncontainer-&gt;qualiaIntensity, container-&gt;topological_winding, container-&gt;negentropy));<br \/>\nMemo2-&gt;Lines-&gt;Add(str.sprintf(&#8220;\u7948\u308a\u5f8c Qualia: %.2f, TopoW: %.4f, Neg: %.2f&#8221;,<br \/>\ncontainer-&gt;qualiaIntensity, container-&gt;topological_winding, container-&gt;negentropy));<\/p>\n<p>\/\/ \u4eca\u5f8c\u306e\u5f37\u5316\u6848\uff08\u3059\u3050\u306b\u8a66\u305b\u308b\u3082\u306e\uff09Observe\u306e\u52b9\u679c\u3092\u7948\u308a\u3068\u9023\u52d5<br \/>\n\/\/ \u7948\u308a\u30dc\u30bf\u30f3\uff08Button6Click\uff09\u306e\u6700\u5f8c\u306bcontainer-&gt;Observe(0.8); \u3092\u8ffd\u52a0\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n\/\/ \u2192 \u7948\u308a\u3067\u300c\u610f\u56f3\u3092\u6ce8\u5165\u300d\u2192 Observe\u3067\u300c\u89b3\u6e2c\u30fb\u56fa\u5b9a\u300d\u3059\u308b\u6d41\u308c\u304c\u81ea\u7136\u306b\u306a\u308a\u307e\u3059\u3002<br \/>\ncontainer-&gt;Observe(0.8);<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::ButtonObserveClick(TObject *Sender)<br \/>\n{<br \/>\nif (!graph) return;<\/p>\n<p>\/\/ === container\uff08ID:100\uff09\u3092\u6bce\u56de\u691c\u7d22 ===<br \/>\nRecursiveLoop* container = NULL;<br \/>\nfor (std::vector&lt;RecursiveLoop*&gt;::iterator it = graph-&gt;loops.begin();<br \/>\nit != graph-&gt;loops.end(); ++it) {<br \/>\nif (*it &amp;&amp; (*it)-&gt;id == 100) {<br \/>\ncontainer = *it;<br \/>\nbreak;<br \/>\n}<br \/>\n}<\/p>\n<p>if (!container) {<br \/>\nMemo1-&gt;Lines-&gt;Add(&#8220;*** ERROR: Container ID:100 \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 ***&#8221;);<br \/>\nreturn;<br \/>\n}<\/p>\n<p>\/\/ Observe\u5b9f\u884c<br \/>\ndouble beforeQualia = container-&gt;qualiaIntensity;<br \/>\ndouble beforeTopo = container-&gt;topological_winding;<br \/>\ndouble Observation_strength = TrackBar_Observation_strength-&gt;Position * 0.01;<\/p>\n<p>Label3-&gt;Caption = AnsiString().sprintf(&#8220;Observation_strength(0.1\uff5e3.0) %.2f&#8221;, Observation_strength);<br \/>\ncontainer-&gt;Observe(1.0); \/\/ \u5f37\u3055\u306f1.0\u56fa\u5b9a\u3001\u307e\u305f\u306f\u30b9\u30e9\u30a4\u30c0\u30fc\u5909\u6570\u3067\u8abf\u6574 \/\/ \u307e\u305f\u306f0.7?1.2\u3067\u8abf\u6574<br \/>\nMemo1-&gt;Lines-&gt;Add(AnsiString().sprintf(&#8220;Observe\u5b9f\u884c (strength=%.1f)&#8221;, Observation_strength));<br \/>\nMemo2-&gt;Lines-&gt;Add(AnsiString().sprintf(&#8220;Observe\u5b9f\u884c (strength=%.1f)&#8221;, Observation_strength));<\/p>\n<p>Memo1-&gt;Lines-&gt;Add(&#8220;=== Observe\u5b9f\u884c (\u73fe\u5b9f\u5316) ===&#8221;);<br \/>\nMemo2-&gt;Lines-&gt;Add(&#8220;=== Observe\u5b9f\u884c (\u73fe\u5b9f\u5316) ===&#8221;);<br \/>\nMemo1-&gt;Lines-&gt;Add(AnsiString().sprintf(&#8220;Qualia\u5f8c: %.2f, Phase: %.4f&#8221;,<br \/>\ncontainer-&gt;qualiaIntensity, container-&gt;phase));<br \/>\nMemo2-&gt;Lines-&gt;Add(AnsiString().sprintf(&#8220;Qualia\u5f8c: %.2f, Phase: %.4f&#8221;,<br \/>\ncontainer-&gt;qualiaIntensity, container-&gt;phase));<br \/>\nMemo1-&gt;Lines-&gt;Add(AnsiString().sprintf(<br \/>\n&#8220;=== Observe\u5b9f\u884c === Before Qualia: %.2f \u2192 After: %.2f | TopoW: %.4f \u2192 %.4f&#8221;,<br \/>\nbeforeQualia, container-&gt;qualiaIntensity, beforeTopo, container-&gt;topological_winding));<br \/>\nMemo2-&gt;Lines-&gt;Add(AnsiString().sprintf(<br \/>\n&#8220;=== Observe\u5b9f\u884c === Before Qualia: %.2f \u2192 After: %.2f | TopoW: %.4f \u2192 %.4f&#8221;,<br \/>\nbeforeQualia, container-&gt;qualiaIntensity, beforeTopo, container-&gt;topological_winding));<\/p>\n<p>\/\/ \u5373\u6642\u53cd\u6620<br \/>\ngraph-&gt;UpdateAll(0.5);<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::TrackBar_Observation_strengthChange(TObject *Sender)<br \/>\n{<br \/>\nLabel3-&gt;Caption = AnsiString().sprintf(&#8220;Observation_strength(0.1\uff5e3.0) %.2f&#8221;, TrackBar_Observation_strength-&gt;Position * 0.01);<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::ButtonPrayObserveClick(TObject *Sender)<br \/>\n{<br \/>\n\t\/\/\u300c\u7948\u308a\uff0bObserve\u30ef\u30f3\u30dc\u30bf\u30f3\u300d**\u3092\u4f5c\u6210\uff081\u30af\u30ea\u30c3\u30af\u3067\u7948\u308a\u2192\u77ed\u3044\u5f85\u6a5f\u2192Observe\uff09\u3002<br \/>\n\t\/\/Button6Click(Sender);<br \/>\n\t\/\/ButtonObserveClick(Sender);<\/p>\n<p>\t\/\/ === container\uff08ID:100\uff09\u3092\u6bce\u56de\u691c\u7d22 ===<br \/>\n\tRecursiveLoop* container = NULL;<br \/>\n\tfor (std::vector<RecursiveLoop*>::iterator it = graph->loops.begin();<br \/>\n\t\t it != graph->loops.end(); ++it) {<br \/>\n\t\tif (*it &#038;&#038; (*it)->id == 100) {<br \/>\n\t\t\tcontainer = *it;<br \/>\n\t\t\tbreak;<br \/>\n\t\t}<br \/>\n\t}<\/p>\n<p>\tif (!container) {<br \/>\n\t\tMemo1->Lines->Add(&#8220;*** ERROR: Container ID:100 \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 ***&#8221;);<br \/>\n        return;<br \/>\n    }<\/p>\n<p>\t\/\/ container\u691c\u7d22<br \/>\n\tif (container) {<br \/>\n\t\tcontainer->phase += 4.0;  \/\/ \u8efd\u3081\u306e\u7948\u308a<br \/>\n\t\t\/\/ resonance\u4ed8\u304d\u7948\u308a\u52b9\u679c\uff08\u4e00\u90e8\uff09<br \/>\n\t\tdouble resonance = 1.0 + (container->qualiaIntensity \/ 300.0);<br \/>\n\t\tcontainer->negentropy += 400.0 * resonance;<br \/>\n\t\tcontainer->Observe(1.8);  \/\/ \u7948\u308a\u5f8c\u306bObserve\uff082.02\u8fd1\u8fba\uff09<br \/>\n\t}<br \/>\n\tgraph->UpdateAll(1.0);<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","protected":false},"excerpt":{"rendered":"<p>\/\/************************************** &hellip; <a href=\"https:\/\/123210.net\/wordpress\/tatenaoshi\/%e5%86%8d%e5%b8%b0qrm%e3%82%b3%e3%83%bc%e3%83%89\/\">\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-30188","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\/30188","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=30188"}],"version-history":[{"count":55,"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/posts\/30188\/revisions"}],"predecessor-version":[{"id":30359,"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/posts\/30188\/revisions\/30359"}],"wp:attachment":[{"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/media?parent=30188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/categories?post=30188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/tags?post=30188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}