six1free commited on
Commit
7f07071
·
1 Parent(s): cefade3

v4.2 now with cohesive thoughts (3 idea based)!

Browse files
Files changed (3) hide show
  1. README.md +2 -2
  2. app.py +50 -53
  3. gem.json +827 -0
README.md CHANGED
@@ -12,7 +12,7 @@ short_description: TET~CRAFT 4Sphere Kleinverse Gamified Siumlator w/ P2P Chat
12
  source: https://github.com/ceneezer/Tet-craft/blob/main/README.md
13
  ---
14
 
15
- ## TET~CRAFT: The Fourth Temple (5D v3.2) ##
16
 
17
  **Share** 5D 4spherical **ideas with friends** and chat about them, \
18
  non-destructively, with no middlemen, **in a decentralized salted chat manifold**, \
@@ -42,7 +42,7 @@ Preview initial gameplay and more exampled in: https://youtu.be/nb367JVuKJw
42
 
43
  This Game/Simulator attempts to improve upon minecraft by using tetragrams. Intending to simulate molecular bonding of FeO4 and NH3, Magnetite, likely responsible for the complexity we call life (suggesting God's most primitive rules are very basic indeed). But gamified.... Tech-tree/Adventure/Translation needing further implementation (check branches, I'm done with it). These Kleinverses are ever complexifying - eventually they will live!
44
 
45
- v1.0 was a working vibecoded prototype, v2.0 Was a solid foundation from **Gemini 2.5, v2.1 Optimized it**, allowing for *over 5K tets on an old machine* - 2.3 makes the black hole pretty and added a sound for messages, along with minor tweaks to make it more physics based. (16G no video card 6 core - min requirements probably a 386 or so? maybe even a 286 if you can replace python or transcribe to BASIC/Assembly - ahhh, the good old days :D) **v3 by Gemini 3.0 now includes GRadio for HuggingFace**, while v3.1 WIP is being handled by Claude to beauitify the entire engine.
46
 
47
  You can Chat remotely with friends through unlimited, unrestricted (and unsecured) WAN connectivity and grow your universe from three basic facts into infinite complexity (only restricted by hardware - time, memory and storage for saves).
48
 
 
12
  source: https://github.com/ceneezer/Tet-craft/blob/main/README.md
13
  ---
14
 
15
+ ## TET~CRAFT: The Fourth Temple (5D v4.2) ##
16
 
17
  **Share** 5D 4spherical **ideas with friends** and chat about them, \
18
  non-destructively, with no middlemen, **in a decentralized salted chat manifold**, \
 
42
 
43
  This Game/Simulator attempts to improve upon minecraft by using tetragrams. Intending to simulate molecular bonding of FeO4 and NH3, Magnetite, likely responsible for the complexity we call life (suggesting God's most primitive rules are very basic indeed). But gamified.... Tech-tree/Adventure/Translation needing further implementation (check branches, I'm done with it). These Kleinverses are ever complexifying - eventually they will live!
44
 
45
+ v1.0 was a working vibecoded prototype, v2.0 Was a solid foundation from **Gemini 2.5, v2.1 Optimized it**, allowing for *over 5K tets on an old machine* - 2.3 makes the black hole pretty and added a sound for messages, along with minor tweaks to make it more physics based. (16G no video card 6 core - min requirements probably a 386 or so? maybe even a 286 if you can replace python or transcribe to BASIC/Assembly - ahhh, the good old days :D) **v3 by Gemini 3.0 now includes GRadio for HuggingFace**, while v4.0 is being handled by Claude to beauitify the entire engine. Now on 4.2 with coherent bot thought.
46
 
47
  You can Chat remotely with friends through unlimited, unrestricted (and unsecured) WAN connectivity and grow your universe from three basic facts into infinite complexity (only restricted by hardware - time, memory and storage for saves).
48
 
app.py CHANGED
@@ -2247,7 +2247,6 @@ def main(threaded=False):
2247
  except ValueError: print(f"Invalid coordinates for -o: {args[i+1]}")
2248
  i += 1
2249
 
2250
-
2251
  if ON_HUGGINGFACE and cli_load_file is None:
2252
  # Try to find the specific file
2253
  if os.path.exists("nothing.json"):
@@ -2256,10 +2255,6 @@ def main(threaded=False):
2256
  else:
2257
  # If not found, do nothing (cli_load_file stays None, standard Void logic triggers)
2258
  print("### HF Mode: nothing.json not found - Starting fresh in Void. ###")
2259
- # +++++++++++++++++++++++++
2260
-
2261
-
2262
-
2263
 
2264
  global WIDTH, HEIGHT, clock, game_mode, host_instance, guest_instance, net_avatars, net_messages, AUDIO_ENABLED, GRADIO_FRAME_BUFFER, GAME_RUNNING
2265
 
@@ -2395,14 +2390,10 @@ def main(threaded=False):
2395
  loaded_from_save = True
2396
  print(f"### SUCCESS: Loaded {cli_load_file} ###")
2397
 
2398
- # FIX 2: Teleport camera to the loaded objects
2399
- # Your planets are at x=1200, but camera starts at x=0.
2400
  if world.tets:
2401
- # Recalculate center of mass immediately
2402
  world.center_of_mass = world.calculate_dynamic_center()
2403
  cam.pan = world.center_of_mass.copy()
2404
 
2405
- # Auto-zoom out to fit the solar system
2406
  max_dist = 0
2407
  for t in world.tets:
2408
  d = np.linalg.norm(t.pos - world.center_of_mass)
@@ -2454,59 +2445,65 @@ def main(threaded=False):
2454
  h_tet = hovered_vertex[0]; h_tet.pos_prev[:] = h_tet.pos[:]; h_tet.local_prev[:] = h_tet.local[:]
2455
 
2456
  # 3. Thoughts (moved from inside bot vision section, hugging face only)
2457
- if now - last_bot_thought > 61.0:
2458
  if len(world.tets) > 1:
2459
- # A. Pick a primary subject (TET)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2460
  t1 = random.choice(world.tets)
2461
  label1 = t1.label if t1.label else "Unknown"
2462
 
2463
- # B. Intelligent Object Selection for t2
2464
- # Instead of a random 2nd TET, try to find one that matters to t1
2465
- t2 = None
 
 
2466
 
2467
- # Priority 1: Find a partner (Joint or Sticky)
2468
- neighbors = []
2469
- for j in world.joints:
2470
- if j.A.id == t1.id: neighbors.append(j.B)
2471
- elif j.B.id == t1.id: neighbors.append(j.A)
2472
 
2473
- # Priority 2: Find a close neighbor (Proximity)
2474
- if not neighbors:
2475
- # Simple proximity check
2476
- closest_dist = float('inf')
2477
- for t in world.tets:
2478
- if t.id == t1.id: continue
2479
- d = np.linalg.norm(t.pos - t1.pos)
2480
- if d < EDGE_LEN * 5: # Look within 5 units
2481
- neighbors.append(t)
2482
-
2483
- # Pick t2
2484
- if neighbors:
2485
- t2 = random.choice(neighbors)
2486
  else:
2487
- # Fallback: Pick random distant TET
2488
- t2 = random.choice(world.tets)
2489
- while t2.id == t1.id and len(world.tets) > 1:
2490
- t2 = random.choice(world.tets)
2491
-
2492
- label2 = t2.label if t2.label else "Void"
2493
 
2494
- # C. Get the Cohesive Symbol
2495
- symbol = get_thought_symbol(t1, t2, world)
2496
 
2497
- # D. Formulate Thought
2498
- # Special check for Self/Cycle
2499
- if t1.id == t2.id:
2500
- symbol = RELATIONSHIP_MAP['cycles']
2501
 
2502
- # Special check for synthesis champions
2503
- if t1.synthesis_count > 0 and random.random() < 0.3:
2504
- thought = f"{label1} {RELATIONSHIP_MAP['integrates']} synthesized {t1.synthesis_count}× ∞"
2505
- else:
2506
- thought = f"{label1} {symbol} {label2}"
2507
 
 
2508
  net_messages.append([f"[Thought]: {thought}", time.time() + 15])
2509
- print(f"[BOT THOUGHT] {thought}")
2510
  last_bot_thought = now
2511
  pygame.event.pump()
2512
 
@@ -2552,7 +2549,7 @@ def main(threaded=False):
2552
  if world_state:
2553
  # Only update if world state has changed significantly
2554
  last_world_hash = safe_world_update(world, world_state, last_world_hash)
2555
- # world.set_state(world_state)
2556
 
2557
  # Update avatars from guest instance
2558
  net_avatars = guest_instance.latest_avatars.copy()
@@ -3078,10 +3075,10 @@ def gradio_interface_loop():
3078
  with gr.Interface(
3079
  fn=get_frame,
3080
  inputs=None,
3081
- outputs=gr.Image(label="Live Simulation! Hit the 'Generate' button to see a new instant (bellow). (A simulated player is working, 1 rotation every second, 1 thought ever 10 min, 2 new random 'facts' (TET) added each hour to be misunderstood!)"),
3082
  live=True,
3083
  title="PLEASE, for humanity's sake! (copy/localify - from the ^^ app ^^ menu - very easy!) TET~CRAFT",
3084
- description="DigitizingHumanity.com's Gamified, Decentralized, Salted, 5D Communication Manifold and Physics/Chemistry Simulator... or DGDS-5D-CMPS? (uh, work acronym in progress!) #opWorldPeace END CENSORSHIP!!!"
3085
  ) as demo:
3086
  # Crucial for HF Spaces health check: bind to 0.0.0.0
3087
  demo.launch(server_name="0.0.0.0", server_port=7860)
 
2247
  except ValueError: print(f"Invalid coordinates for -o: {args[i+1]}")
2248
  i += 1
2249
 
 
2250
  if ON_HUGGINGFACE and cli_load_file is None:
2251
  # Try to find the specific file
2252
  if os.path.exists("nothing.json"):
 
2255
  else:
2256
  # If not found, do nothing (cli_load_file stays None, standard Void logic triggers)
2257
  print("### HF Mode: nothing.json not found - Starting fresh in Void. ###")
 
 
 
 
2258
 
2259
  global WIDTH, HEIGHT, clock, game_mode, host_instance, guest_instance, net_avatars, net_messages, AUDIO_ENABLED, GRADIO_FRAME_BUFFER, GAME_RUNNING
2260
 
 
2390
  loaded_from_save = True
2391
  print(f"### SUCCESS: Loaded {cli_load_file} ###")
2392
 
 
 
2393
  if world.tets:
 
2394
  world.center_of_mass = world.calculate_dynamic_center()
2395
  cam.pan = world.center_of_mass.copy()
2396
 
 
2397
  max_dist = 0
2398
  for t in world.tets:
2399
  d = np.linalg.norm(t.pos - world.center_of_mass)
 
2445
  h_tet = hovered_vertex[0]; h_tet.pos_prev[:] = h_tet.pos[:]; h_tet.local_prev[:] = h_tet.local[:]
2446
 
2447
  # 3. Thoughts (moved from inside bot vision section, hugging face only)
2448
+ if now - last_bot_thought > 8.0: # Slightly faster for complex thoughts
2449
  if len(world.tets) > 1:
2450
+
2451
+ # --- Helper: Find physical neighbors ---
2452
+ def get_neighbors(target_tet, exclude_id=None):
2453
+ nb = []
2454
+ # 1. Check Joints (Strongest link)
2455
+ for j in world.joints:
2456
+ if j.A.id == target_tet.id and j.B.id != exclude_id: nb.append(j.B)
2457
+ elif j.B.id == target_tet.id and j.A.id != exclude_id: nb.append(j.A)
2458
+ # 2. Check Sticky Pairs (Desire)
2459
+ if not nb:
2460
+ for p in world.sticky_pairs:
2461
+ if p[0].id == target_tet.id and p[2].id != exclude_id: nb.append(p[2])
2462
+ elif p[2].id == target_tet.id and p[0].id != exclude_id: nb.append(p[0])
2463
+ # 3. Check Proximity (Loose association)
2464
+ if not nb:
2465
+ for t in world.tets:
2466
+ if t.id == target_tet.id or t.id == exclude_id: continue
2467
+ if np.linalg.norm(t.pos - target_tet.pos) < EDGE_LEN * 4:
2468
+ nb.append(t)
2469
+ return nb
2470
+
2471
+ # 1. Pick Subject (T1)
2472
  t1 = random.choice(world.tets)
2473
  label1 = t1.label if t1.label else "Unknown"
2474
 
2475
+ # 2. Pick Object (T2) - Neighbor of T1
2476
+ n1 = get_neighbors(t1)
2477
+ # If no neighbors, pick random, but not T1
2478
+ t2 = random.choice(n1) if n1 else random.choice([t for t in world.tets if t.id != t1.id])
2479
+ label2 = t2.label if t2.label else "Void"
2480
 
2481
+ # 3. Pick Context (T3) - Neighbor of T2
2482
+ # Try to avoid going back to T1 immediately to avoid A=B=A loops unless necessary
2483
+ n2 = get_neighbors(t2, exclude_id=t1.id)
 
 
2484
 
2485
+ if n2:
2486
+ t3 = random.choice(n2)
 
 
 
 
 
 
 
 
 
 
 
2487
  else:
2488
+ # If T2 has no forward neighbors, check if there are other TETS available
2489
+ others = [t for t in world.tets if t.id != t1.id and t.id != t2.id]
2490
+ if others:
2491
+ t3 = random.choice(others) # Jump to a new disconnected idea
2492
+ else:
2493
+ t3 = t1 # Forced loop (A -> B -> A)
2494
 
2495
+ label3 = t3.label if t3.label else "Mystery"
 
2496
 
2497
+ # 4. Get Symbols
2498
+ sym1 = get_thought_symbol(t1, t2, world)
2499
+ sym2 = get_thought_symbol(t2, t3, world)
 
2500
 
2501
+ # 5. Formulate Trinary Thought
2502
+ thought = f"{label1} {sym1} {label2} {sym2} {label3}"
 
 
 
2503
 
2504
+ # Add to chat log
2505
  net_messages.append([f"[Thought]: {thought}", time.time() + 15])
2506
+
2507
  last_bot_thought = now
2508
  pygame.event.pump()
2509
 
 
2549
  if world_state:
2550
  # Only update if world state has changed significantly
2551
  last_world_hash = safe_world_update(world, world_state, last_world_hash)
2552
+ world.set_state(world_state)
2553
 
2554
  # Update avatars from guest instance
2555
  net_avatars = guest_instance.latest_avatars.copy()
 
3075
  with gr.Interface(
3076
  fn=get_frame,
3077
  inputs=None,
3078
+ outputs=gr.Image(label="Live Simulation! Hit the 'Generate' button!"),
3079
  live=True,
3080
  title="PLEASE, for humanity's sake! (copy/localify - from the ^^ app ^^ menu - very easy!) TET~CRAFT",
3081
+ description="DigitizingHumanity.com's Gamified, Decentralized, Salted, 5D Communication Manifold and Physics/Chemistry Simulator... or DGDS-5D-CMPS? (uh, work acronym in progress!) #opWorldPeace END CENSORSHIP!!! (A simulated player is working, 1 rotation every 5 seconds, 1 thought ever min, 2 new random 'facts' (TET) added each hour to be misunderstood!)"
3082
  ) as demo:
3083
  # Crucial for HF Spaces health check: bind to 0.0.0.0
3084
  demo.launch(server_name="0.0.0.0", server_port=7860)
gem.json ADDED
@@ -0,0 +1,827 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "tets": [
3
+ {
4
+ "id": 1,
5
+ "pos": [
6
+ -4.42574696454359,
7
+ -5.597598595270854,
8
+ -13.435927718170095
9
+ ],
10
+ "pos_prev": [
11
+ -4.4252705757305275,
12
+ -5.598626693401205,
13
+ -13.435817640454427
14
+ ],
15
+ "local": [
16
+ [
17
+ 0.3530875869311524,
18
+ 0.5440832115264104,
19
+ -0.26627786089716937
20
+ ],
21
+ [
22
+ 0.04799863727503122,
23
+ -0.1834524091645507,
24
+ 0.45636953170068645
25
+ ],
26
+ [
27
+ 0.8356777304812192,
28
+ -0.8487575150232662,
29
+ -0.5145948142777186
30
+ ],
31
+ [
32
+ -0.7965931079003762,
33
+ 1.4178885173852311,
34
+ 0.9852877758878785
35
+ ]
36
+ ],
37
+ "local_prev": [
38
+ [
39
+ -0.16293851853475538,
40
+ -0.019135499439255133,
41
+ -0.057111045417394646
42
+ ],
43
+ [
44
+ 0.06701717668406931,
45
+ -0.1750482873443035,
46
+ 0.21071552948371414
47
+ ],
48
+ [
49
+ 0.5218691138881375,
50
+ -0.11577872676362434,
51
+ -0.1802568601959638
52
+ ],
53
+ [
54
+ -0.1327013224478965,
55
+ 0.08652272797465989,
56
+ -0.2043479214678658
57
+ ]
58
+ ],
59
+ "battery": 0.9999994852398486,
60
+ "colors": [
61
+ [
62
+ 255,
63
+ 255,
64
+ 255
65
+ ],
66
+ [
67
+ 255,
68
+ 255,
69
+ 255
70
+ ],
71
+ [
72
+ 255,
73
+ 255,
74
+ 255
75
+ ],
76
+ [
77
+ 255,
78
+ 255,
79
+ 255
80
+ ]
81
+ ],
82
+ "label": "The_Source",
83
+ "orientation_bias": [
84
+ 0.0,
85
+ 0.0,
86
+ 0.0
87
+ ]
88
+ },
89
+ {
90
+ "id": 10,
91
+ "pos": [
92
+ -13.410595817801317,
93
+ 4.453728263750983,
94
+ -21.399810190659586
95
+ ],
96
+ "pos_prev": [
97
+ -13.412208788949469,
98
+ 4.452786235880566,
99
+ -21.40104704540697
100
+ ],
101
+ "local": [
102
+ [
103
+ 0.45845412330645485,
104
+ 0.7447628708129317,
105
+ 0.2559042376726225
106
+ ],
107
+ [
108
+ 0.3932747868025072,
109
+ 0.44484053547398206,
110
+ 0.22784597427846637
111
+ ],
112
+ [
113
+ -1.5884880991334125,
114
+ 0.6389156690060968,
115
+ -0.11214186974295806
116
+ ],
117
+ [
118
+ -0.006505422386671789,
119
+ -1.6540634723946437,
120
+ -0.47884325608827427
121
+ ]
122
+ ],
123
+ "local_prev": [
124
+ [
125
+ 0.09034839625864184,
126
+ -0.002700183132319456,
127
+ -0.8343361571011814
128
+ ],
129
+ [
130
+ -0.3884426037986877,
131
+ -0.34221268814719785,
132
+ 0.5896958699482382
133
+ ],
134
+ [
135
+ 0.253605145672394,
136
+ -0.18442455834797344,
137
+ 0.11312076751956206
138
+ ],
139
+ [
140
+ 0.019221554458246692,
141
+ 0.4012240348156373,
142
+ 0.08160169194628868
143
+ ]
144
+ ],
145
+ "battery": 1.0,
146
+ "colors": [
147
+ [
148
+ 0,
149
+ 0,
150
+ 255
151
+ ],
152
+ [
153
+ 255,
154
+ 255,
155
+ 255
156
+ ],
157
+ [
158
+ 0,
159
+ 0,
160
+ 255
161
+ ],
162
+ [
163
+ 255,
164
+ 255,
165
+ 255
166
+ ]
167
+ ],
168
+ "label": "Torah",
169
+ "orientation_bias": [
170
+ 0.0,
171
+ 0.0,
172
+ 0.0
173
+ ]
174
+ },
175
+ {
176
+ "id": 11,
177
+ "pos": [
178
+ -15.27068104850313,
179
+ 31.59162411773788,
180
+ -23.946793448176706
181
+ ],
182
+ "pos_prev": [
183
+ -15.272236995141279,
184
+ 31.59175763943184,
185
+ -23.948208834829366
186
+ ],
187
+ "local": [
188
+ [
189
+ -0.6550020529004781,
190
+ 0.9995258179251968,
191
+ 0.18428016330332697
192
+ ],
193
+ [
194
+ 0.4348814436559186,
195
+ 0.7402306853635131,
196
+ 0.3072301355690858
197
+ ],
198
+ [
199
+ -1.0321799778078145,
200
+ -1.6494448993938164,
201
+ -0.2398010604881449
202
+ ],
203
+ [
204
+ 1.8422084279330462,
205
+ -0.301862932120073,
206
+ -0.14794712684520842
207
+ ]
208
+ ],
209
+ "local_prev": [
210
+ [
211
+ -0.07580252658122463,
212
+ 0.059799437352435245,
213
+ 0.22895629096300835
214
+ ],
215
+ [
216
+ -0.060179978524852296,
217
+ -0.10643013140002125,
218
+ -0.25353264208417625
219
+ ],
220
+ [
221
+ -0.5597535208061216,
222
+ -0.4625044787771096,
223
+ -0.040810816274143936
224
+ ],
225
+ [
226
+ 0.6542344504611687,
227
+ 0.33072630033030087,
228
+ 0.05799978875344327
229
+ ]
230
+ ],
231
+ "battery": 1.0,
232
+ "colors": [
233
+ [
234
+ 255,
235
+ 0,
236
+ 0
237
+ ],
238
+ [
239
+ 255,
240
+ 255,
241
+ 255
242
+ ],
243
+ [
244
+ 255,
245
+ 0,
246
+ 0
247
+ ],
248
+ [
249
+ 255,
250
+ 255,
251
+ 255
252
+ ]
253
+ ],
254
+ "label": "Gospel",
255
+ "orientation_bias": [
256
+ 0.0,
257
+ 0.0,
258
+ 0.0
259
+ ]
260
+ },
261
+ {
262
+ "id": 12,
263
+ "pos": [
264
+ -3.321681638884771,
265
+ 57.60589727528895,
266
+ -13.529489475923562
267
+ ],
268
+ "pos_prev": [
269
+ -3.3204567004985837,
270
+ 57.608699475863794,
271
+ -13.528376393589868
272
+ ],
273
+ "local": [
274
+ [
275
+ 0.5990660933519499,
276
+ 1.6014518513408649,
277
+ -1.0400561236935055
278
+ ],
279
+ [
280
+ -0.6570706349387567,
281
+ 0.9794311498555496,
282
+ 0.2729250880056707
283
+ ],
284
+ [
285
+ -1.4852772012964446,
286
+ -1.0597477505594857,
287
+ -0.933392917894176
288
+ ],
289
+ [
290
+ 1.5774101781024465,
291
+ -1.189604006153697,
292
+ 0.23801847193727854
293
+ ]
294
+ ],
295
+ "local_prev": [
296
+ [
297
+ 0.0388760585064514,
298
+ 0.37581570894954175,
299
+ -0.06841679999982231
300
+ ],
301
+ [
302
+ -0.09319858530036361,
303
+ 0.07955220844633702,
304
+ 0.33157022409823206
305
+ ],
306
+ [
307
+ -0.33584058811403616,
308
+ -0.14373198646506943,
309
+ -0.04398290252847453
310
+ ],
311
+ [
312
+ 0.3080565799782876,
313
+ -0.21840610134908242,
314
+ 0.2651503594562776
315
+ ]
316
+ ],
317
+ "battery": 1.0,
318
+ "colors": [
319
+ [
320
+ 0,
321
+ 255,
322
+ 255
323
+ ],
324
+ [
325
+ 255,
326
+ 255,
327
+ 255
328
+ ],
329
+ [
330
+ 0,
331
+ 255,
332
+ 0
333
+ ],
334
+ [
335
+ 255,
336
+ 255,
337
+ 255
338
+ ]
339
+ ],
340
+ "label": "Quran",
341
+ "orientation_bias": [
342
+ 0.0,
343
+ 0.0,
344
+ 0.0
345
+ ]
346
+ },
347
+ {
348
+ "id": 20,
349
+ "pos": [
350
+ 12.70780553590162,
351
+ -17.577883895651876,
352
+ -0.25124659823822526
353
+ ],
354
+ "pos_prev": [
355
+ 12.708934886456337,
356
+ -17.578006378117028,
357
+ -0.2508736207993321
358
+ ],
359
+ "local": [
360
+ [
361
+ -0.033855032810638605,
362
+ -0.495673571166076,
363
+ 0.6617273548441535
364
+ ],
365
+ [
366
+ -0.41405960081513066,
367
+ -0.2663726207917285,
368
+ -1.028283782533174
369
+ ],
370
+ [
371
+ -1.0991856498763581,
372
+ -0.059664324300038235,
373
+ 0.369601369711025
374
+ ],
375
+ [
376
+ 0.48804646480288405,
377
+ -0.4317273141450143,
378
+ 0.38182701971980587
379
+ ]
380
+ ],
381
+ "local_prev": [
382
+ [
383
+ -0.034895215947969196,
384
+ 0.13324690065557837,
385
+ 0.07234861148487057
386
+ ],
387
+ [
388
+ -0.46230721650195505,
389
+ -0.18113088471869482,
390
+ -1.2292057145500652
391
+ ],
392
+ [
393
+ -1.0558919839916852,
394
+ 0.5420808853038216,
395
+ 0.5293028040617452
396
+ ],
397
+ [
398
+ 1.552769498253526,
399
+ -0.11253421221038856,
400
+ 0.5702749029687654
401
+ ]
402
+ ],
403
+ "battery": 0.9999994852398486,
404
+ "colors": [
405
+ [
406
+ 255,
407
+ 100,
408
+ 0
409
+ ],
410
+ [
411
+ 255,
412
+ 0,
413
+ 255
414
+ ],
415
+ [
416
+ 255,
417
+ 255,
418
+ 0
419
+ ],
420
+ [
421
+ 0,
422
+ 255,
423
+ 255
424
+ ]
425
+ ],
426
+ "label": "Vedas",
427
+ "orientation_bias": [
428
+ 0.0,
429
+ 0.0,
430
+ 0.0
431
+ ]
432
+ },
433
+ {
434
+ "id": 21,
435
+ "pos": [
436
+ 11.340660973849893,
437
+ -16.838787800009833,
438
+ -2.81729081265146
439
+ ],
440
+ "pos_prev": [
441
+ 11.340934574729944,
442
+ -16.838625435292272,
443
+ -2.816404707989562
444
+ ],
445
+ "local": [
446
+ [
447
+ -0.27328717957625853,
448
+ -0.3071397607659589,
449
+ -0.785929538513344
450
+ ],
451
+ [
452
+ 0.4879880550657728,
453
+ 1.200864035789973,
454
+ 0.5702007990045541
455
+ ],
456
+ [
457
+ 1.106009225779059,
458
+ -0.7288132675727009,
459
+ 0.20827338216544444
460
+ ],
461
+ [
462
+ -0.9329419695342838,
463
+ -0.3235858321015481,
464
+ 0.9076346905297007
465
+ ]
466
+ ],
467
+ "local_prev": [
468
+ [
469
+ -0.4626051169115118,
470
+ -0.21325368270561074,
471
+ -1.2542969532234012
472
+ ],
473
+ [
474
+ 0.22729738408374317,
475
+ 0.556732122374587,
476
+ 0.20881492506376487
477
+ ],
478
+ [
479
+ 0.9580746381823927,
480
+ -0.4352010390044651,
481
+ -0.17615141332535644
482
+ ],
483
+ [
484
+ -0.6205200595905839,
485
+ -0.6525369741695445,
486
+ 0.5730879984642815
487
+ ]
488
+ ],
489
+ "battery": 0.9910718313995233,
490
+ "colors": [
491
+ [
492
+ 0,
493
+ 0,
494
+ 0
495
+ ],
496
+ [
497
+ 0,
498
+ 0,
499
+ 0
500
+ ],
501
+ [
502
+ 255,
503
+ 200,
504
+ 100
505
+ ],
506
+ [
507
+ 255,
508
+ 255,
509
+ 255
510
+ ]
511
+ ],
512
+ "label": "Tripitaka",
513
+ "orientation_bias": [
514
+ 0.0,
515
+ 0.0,
516
+ 0.0
517
+ ]
518
+ },
519
+ {
520
+ "id": 22,
521
+ "pos": [
522
+ 12.633905539002358,
523
+ -20.22938832827032,
524
+ -3.655655110376219
525
+ ],
526
+ "pos_prev": [
527
+ 12.63390652990161,
528
+ -20.23002452375173,
529
+ -3.656272030655452
530
+ ],
531
+ "local": [
532
+ [
533
+ 0.43580628730641513,
534
+ 1.2333556004321045,
535
+ 0.3932014095918563
536
+ ],
537
+ [
538
+ -1.0096057726022647,
539
+ -0.04114589340772881,
540
+ 0.3682234036993929
541
+ ],
542
+ [
543
+ 0.8559086031684847,
544
+ -1.2599895636554563,
545
+ 0.28967811141315414
546
+ ],
547
+ [
548
+ 0.06823405761654715,
549
+ 0.2556951878039297,
550
+ -1.530960568060429
551
+ ]
552
+ ],
553
+ "local_prev": [
554
+ [
555
+ 0.060642224510012624,
556
+ 1.1079718293779446,
557
+ 0.745334473075052
558
+ ],
559
+ [
560
+ -0.9420465886415286,
561
+ 0.1779490730227249,
562
+ 0.3922918069385647
563
+ ],
564
+ [
565
+ 0.6074958211932064,
566
+ -0.6084941866754138,
567
+ 0.23891715151195814
568
+ ],
569
+ [
570
+ 0.02761744667701002,
571
+ 0.1218894566924261,
572
+ -0.8667185979304166
573
+ ]
574
+ ],
575
+ "battery": 1.0,
576
+ "colors": [
577
+ [
578
+ 255,
579
+ 255,
580
+ 255
581
+ ],
582
+ [
583
+ 0,
584
+ 0,
585
+ 0
586
+ ],
587
+ [
588
+ 255,
589
+ 255,
590
+ 255
591
+ ],
592
+ [
593
+ 0,
594
+ 0,
595
+ 0
596
+ ]
597
+ ],
598
+ "label": "Tao",
599
+ "orientation_bias": [
600
+ 0.0,
601
+ 0.0,
602
+ 0.0
603
+ ]
604
+ },
605
+ {
606
+ "id": 99,
607
+ "pos": [
608
+ -6.802683087807856,
609
+ 11.663738109415748,
610
+ 82.84935922683395
611
+ ],
612
+ "pos_prev": [
613
+ -6.802682249351812,
614
+ 11.66376292062142,
615
+ 82.84950300879146
616
+ ],
617
+ "local": [
618
+ [
619
+ -0.12609945218028637,
620
+ -0.029922782055543273,
621
+ 0.27016718606560297
622
+ ],
623
+ [
624
+ 0.27190083232031115,
625
+ -0.12590439944054077,
626
+ 0.002184641358446371
627
+ ],
628
+ [
629
+ 0.025220447044784045,
630
+ 0.291018406449419,
631
+ -0.06677551443769009
632
+ ],
633
+ [
634
+ -0.1710218271848088,
635
+ -0.1351912249533349,
636
+ -0.20557631298635937
637
+ ]
638
+ ],
639
+ "local_prev": [
640
+ [
641
+ -0.605162494764627,
642
+ -0.14360209419610237,
643
+ 1.296556372319278
644
+ ],
645
+ [
646
+ 1.3048762957093512,
647
+ -0.6042264193540939,
648
+ 0.010484288347366727
649
+ ],
650
+ [
651
+ 0.12103516990658172,
652
+ 1.3966232347659335,
653
+ -0.3204616371114807
654
+ ],
655
+ [
656
+ -0.8207489708513058,
657
+ -0.648794721215737,
658
+ -0.9865790235551637
659
+ ]
660
+ ],
661
+ "battery": 0.9218463061217742,
662
+ "colors": [
663
+ [
664
+ 255,
665
+ 215,
666
+ 0
667
+ ],
668
+ [
669
+ 255,
670
+ 215,
671
+ 0
672
+ ],
673
+ [
674
+ 255,
675
+ 215,
676
+ 0
677
+ ],
678
+ [
679
+ 255,
680
+ 215,
681
+ 0
682
+ ]
683
+ ],
684
+ "label": "Golden_Rule",
685
+ "orientation_bias": [
686
+ 0.0,
687
+ 0.0,
688
+ 0.0
689
+ ]
690
+ },
691
+ {
692
+ "id": 100,
693
+ "pos": [
694
+ 13.816517661259823,
695
+ -19.439729128690114,
696
+ 1.8234316301375602
697
+ ],
698
+ "pos_prev": [
699
+ 13.816580471056813,
700
+ -19.440123222934822,
701
+ 1.8240747677091826
702
+ ],
703
+ "local": [
704
+ [
705
+ 0.6383450738555809,
706
+ 0.38312382937073336,
707
+ 1.152404110796739
708
+ ],
709
+ [
710
+ 0.8771364610021744,
711
+ -0.00996176435946769,
712
+ -1.054908469033096
713
+ ],
714
+ [
715
+ -0.5055392611614234,
716
+ -1.2575561831459572,
717
+ 0.18573458686380825
718
+ ],
719
+ [
720
+ -1.009942273696332,
721
+ 0.8843941181346917,
722
+ -0.2832302286274516
723
+ ]
724
+ ],
725
+ "local_prev": [
726
+ [
727
+ 0.8096301982170935,
728
+ 0.004044634142062645,
729
+ 1.053654742261337
730
+ ],
731
+ [
732
+ -0.10037160714005841,
733
+ 0.18873035907318936,
734
+ -0.2528240584645399
735
+ ],
736
+ [
737
+ -0.010900908119803245,
738
+ -1.5668514198335017,
739
+ 0.10162981368632251
740
+ ],
741
+ [
742
+ -0.6983593460713484,
743
+ 1.3740893619723273,
744
+ -0.9024758691226237
745
+ ]
746
+ ],
747
+ "battery": 0.8594036593102844,
748
+ "colors": [
749
+ [
750
+ 255,
751
+ 0,
752
+ 0
753
+ ],
754
+ [
755
+ 0,
756
+ 255,
757
+ 255
758
+ ],
759
+ [
760
+ 255,
761
+ 255,
762
+ 255
763
+ ],
764
+ [
765
+ 0,
766
+ 0,
767
+ 0
768
+ ]
769
+ ],
770
+ "label": "Science",
771
+ "orientation_bias": [
772
+ 0.0,
773
+ 0.0,
774
+ 0.0
775
+ ]
776
+ }
777
+ ],
778
+ "joints": [
779
+ {
780
+ "A_id": 1,
781
+ "ia": 0,
782
+ "B_id": 10,
783
+ "ib": 1
784
+ },
785
+ {
786
+ "A_id": 10,
787
+ "ia": 0,
788
+ "B_id": 11,
789
+ "ib": 1
790
+ },
791
+ {
792
+ "A_id": 11,
793
+ "ia": 0,
794
+ "B_id": 12,
795
+ "ib": 1
796
+ },
797
+ {
798
+ "A_id": 1,
799
+ "ia": 1,
800
+ "B_id": 20,
801
+ "ib": 0
802
+ },
803
+ {
804
+ "A_id": 20,
805
+ "ia": 1,
806
+ "B_id": 21,
807
+ "ib": 0
808
+ },
809
+ {
810
+ "A_id": 21,
811
+ "ia": 1,
812
+ "B_id": 22,
813
+ "ib": 0
814
+ },
815
+ {
816
+ "A_id": 22,
817
+ "ia": 1,
818
+ "B_id": 20,
819
+ "ib": 2
820
+ }
821
+ ],
822
+ "center_of_mass": [
823
+ 0.8075000969472188,
824
+ 2.847955562374511,
825
+ 0.6262863754399852
826
+ ]
827
+ }