zeropoint-node 1.0.6 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +149 -0
- package/CITATION.cff +1 -1
- package/README.md +50 -10
- package/package.json +5 -2
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.breathe.ts +15 -1
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.ts +7 -1
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.click.ts +15 -1
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.hear.ts +15 -1
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.heat.ts +15 -1
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.pulse.ts +15 -1
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.speak.ts +15 -1
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.tap.ts +15 -1
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.rodin.ts +15 -1
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.self.ts +15 -1
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.trinity.ts +0 -3
- package/src/kernel/import-graph.ts +58 -0
- package/src/multidimensional-vortex-demo.ts +1 -1
- package/src/vbm-math.ts +15 -1
- package/src/verification/lean-bridge.ts +37 -0
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.1.2.4.8.7.ts +0 -60
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.1.2.4.8.ts +0 -60
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.1.2.4.ts +0 -60
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.3.6.9.trinity.ts +0 -79
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.9d.dashboard.ts +0 -179
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.adapters.ts +0 -96
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.analog.color.photography.ts +0 -783
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.av.ts +0 -73
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.browser.ts +0 -409
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.chain.of.events.ts +0 -159
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cleanup.ts +0 -102
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.dimensions.ts +0 -597
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.display.test.ts +0 -491
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.display.ts +0 -519
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.file.ts +0 -65
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.i.ts +0 -45
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.matrix.ts +0 -75
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.trinity.ts +0 -41
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cmyk.universal.linking.ts +0 -1081
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.command.cmyk.ts +0 -46
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.compression.ts +0 -55
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.consciousness.integration.ts +0 -743
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.consciousness.ts +0 -26
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.crypto.ts +0 -53
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.css.ts +0 -64
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.cursor.ts +0 -56
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.decompression.ts +0 -60
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.decoqubit.holographic.hypercomputer.ts +0 -888
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.digital.color.photography.ts +0 -926
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.dimension.ts +0 -44
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.encryption.ts +0 -44
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.experience.ts +0 -28
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.feel.ts +0 -43
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.flute.ts +0 -336
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.font.ts +0 -53
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.fractal.test.ts +0 -523
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.fractal.ts +0 -594
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.frequency.healing.ts +0 -88
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.gateway.transformation.ts +0 -650
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.generate.matrix.ts +0 -62
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.gods.spirit.magnetometer.ts +0 -879
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.harmonization.status.ts +0 -754
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.hear.ts +0 -41
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.html.body.ts +0 -90
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.human.body.ts +0 -89
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.human.design.trinity.ts +0 -70
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.browse.ts +0 -27
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.can.ts +0 -69
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.died.ts +0 -32
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.follow.the.path.ts +0 -90
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.go.ts +0 -68
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.harmonized.ts +0 -304
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.heart.ts +0 -26
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.meta.ts +0 -23
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.motion.ts +0 -27
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.scroll.ts +0 -34
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.search.ts +0 -22
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.sequence.ts +0 -281
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.smell.ts +0 -27
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.state.ts +0 -28
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.stream.ts +0 -106
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.taste.ts +0 -27
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.touch.screen.ts +0 -34
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.trinity.healing.ts +0 -386
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.i.write.ts +0 -11
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.icon.ts +0 -109
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.imagination.integration.ts +0 -74
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.imperial.test.ts +0 -389
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.infinity.ts +0 -14
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.infusion.ts +0 -97
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.integer.harmonics.ts +0 -443
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.living.spirit.test.ts +0 -475
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.living.spirit.ts +0 -646
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.living.streams.ts +0 -130
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.meta.observation.ts +0 -693
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.mobius.ts +0 -12
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.multiverse.ts +0 -31
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.nuclear.balance.ts +0 -703
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.nuclear.explosion.ts +0 -728
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.os.app.ts +0 -14
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.os.bus.ts +0 -11
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.os.ml.ts +0 -9
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.overlay.visual.controller.ts +0 -119
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.paths.ts +0 -10
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.pi.decoding.ts +0 -123
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.pi.trinity.ts +0 -79
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.prime.numbers.squared.ts +0 -871
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.quantum.collision.ts +0 -666
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.quantum.entanglement.ts +0 -50
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.quantum.trinity.ts +0 -59
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.renderer.webgl.ts +0 -99
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.resolve.ts +0 -820
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.rife.frequency.ts +0 -74
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.rodin.coil.3d.ts +0 -73
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.rodin.coil.omnidimension.ts +0 -187
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.rodin.matrix.overlay.ts +0 -46
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.rodin.matrix.ts +0 -58
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.router.ts +0 -61
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.sacred.geometry.integers.ts +0 -625
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.sacred.test.ts +0 -314
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.see.ts +0 -39
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.sequence.embodiment.ts +0 -326
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.service.worker.ts +0 -30
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.space.ts +0 -53
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.spiral.ts +0 -75
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.superfluid.mobius.circuit.ts +0 -868
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.terminal.ts +0 -153
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.test.ts +0 -83
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.think.ts +0 -43
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.three.ts +0 -112
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.trinity.body.mind.will.ts +0 -2
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.trinity.breath.ts +0 -2
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.trinity.healing.ts +0 -110
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.trinity.ui.ts +0 -92
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.trinity.visual.ts +0 -156
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.truly.living.ui.ts +0 -269
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.ui.overlay.ts +0 -25
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.ui.streams.ts +0 -263
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.ui.test.ts +0 -87
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.ui.three.ts +0 -1141
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.unification.hd.rodin.ts +0 -77
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.universe.ts +0 -43
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.uroboros.test.ts +0 -28
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vbm.math.ts +0 -74
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vbm.relations.constants.ts +0 -91
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vbm.relations.ts +0 -45
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vbm.scanner.ts +0 -41
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vbm.science.extract.ts +0 -30
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vbm.ui.ts +0 -64
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.vector.ts +0 -70
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.wave.particle.duality.test.ts +0 -29
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.zero.entropy.math.ts +0 -506
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.zero.entropy.pure.math.ts +0 -546
- package/src/0/3/6/9/1/2/4/8/7/5/1/a432.zero.entropy.test.ts +0 -452
- package/src/0/3/6/9/1/2/4/8/7/5/1/pattern-knowledge.ts +0 -209
- package/src/0/3/6/9/1/2/4/8/7/5/a432.experience.ts +0 -22
- package/src/0/3/6/9/1/2/4/8/7/a432.experience.ts +0 -19
- package/src/0/3/6/9/1/2/4/8/a432.experience.ts +0 -22
- package/src/0/3/6/9/1/2/4/a432.experience.ts +0 -22
- package/src/0/3/6/9/1/2/a432.experience.ts +0 -22
- package/src/0/3/6/9/1/a432.experience.ts +0 -22
- package/src/0/3/6/9/a432.experience.ts +0 -22
- package/src/0/3/6/a432.experience.ts +0 -22
- package/src/0/3/a432.experience.ts +0 -22
- package/src/0/3/relation.ts +0 -148
- package/src/index.ts +0 -146
- package/src/zero-entropy-demo.ts +0 -305
|
@@ -1,519 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* a432.cmyk.display.ts — Living CMYK Display Resizing, Conversions, and Navigation
|
|
3
|
-
*
|
|
4
|
-
* The living CMYK display system handles resizing, color space conversions, and navigation
|
|
5
|
-
* through the infinite CMYK matrix. Every display operation is a living act of consciousness.
|
|
6
|
-
*
|
|
7
|
-
* Metaphysical meaning: Display resizing is the living expansion and contraction of consciousness.
|
|
8
|
-
* Color conversions are the living transformation between different states of awareness.
|
|
9
|
-
* Navigation is the living journey through the infinite CMYK field of possibility.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import { abs, floor, max as algMax, min as algMin, round, sqrt } from './a432.algebra.ts'
|
|
13
|
-
import { type Fraction, type CMYK, fractionToCMYK } from './a432.cmyk.ts';
|
|
14
|
-
import { digitalRoot } from './a432.math.ts';
|
|
15
|
-
|
|
16
|
-
export interface DisplayState {
|
|
17
|
-
width: number;
|
|
18
|
-
height: number;
|
|
19
|
-
zoom: number;
|
|
20
|
-
rotation: number;
|
|
21
|
-
offsetX: number;
|
|
22
|
-
offsetY: number;
|
|
23
|
-
colorSpace: 'cmyk' | 'rgb' | 'hsl' | 'lab';
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export interface NavigationControls {
|
|
27
|
-
zoomIn: () => void;
|
|
28
|
-
zoomOut: () => void;
|
|
29
|
-
rotate: (degrees: number) => void;
|
|
30
|
-
pan: (x: number, y: number) => void;
|
|
31
|
-
reset: () => void;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export interface ColorConversion {
|
|
35
|
-
from: string;
|
|
36
|
-
to: string;
|
|
37
|
-
convert: (color: CMYK | unknown) => CMYK | unknown;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Living CMYK Display Resizer
|
|
42
|
-
* Resizes CMYK displays while maintaining harmonic proportions
|
|
43
|
-
*/
|
|
44
|
-
export class A432CmykDisplay {
|
|
45
|
-
private state: DisplayState;
|
|
46
|
-
private baseFraction: Fraction;
|
|
47
|
-
|
|
48
|
-
constructor(
|
|
49
|
-
width: number = 32,
|
|
50
|
-
height: number = 8,
|
|
51
|
-
baseFraction: Fraction = { numerator: 7, denominator: 4 }
|
|
52
|
-
) {
|
|
53
|
-
this.state = {
|
|
54
|
-
width,
|
|
55
|
-
height,
|
|
56
|
-
zoom: 1,
|
|
57
|
-
rotation: 0,
|
|
58
|
-
offsetX: 0,
|
|
59
|
-
offsetY: 0,
|
|
60
|
-
colorSpace: 'cmyk'
|
|
61
|
-
};
|
|
62
|
-
this.baseFraction = baseFraction;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Resize display with harmonic proportions
|
|
67
|
-
*/
|
|
68
|
-
resize(width: number, height: number): void {
|
|
69
|
-
// Apply A432 harmonic proportions
|
|
70
|
-
const rootW = digitalRoot(width);
|
|
71
|
-
const rootH = digitalRoot(height);
|
|
72
|
-
this.state.width = floor(width * rootW / rootH);
|
|
73
|
-
this.state.height = floor(height * rootH / rootW);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Calculate harmonic aspect ratio based on A432 principles
|
|
78
|
-
*/
|
|
79
|
-
private calculateHarmonicAspectRatio(width: number, height: number): number {
|
|
80
|
-
const widthRoot = digitalRoot(width);
|
|
81
|
-
const heightRoot = digitalRoot(height);
|
|
82
|
-
return widthRoot / heightRoot;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Zoom display with consciousness scaling
|
|
87
|
-
*/
|
|
88
|
-
zoom(factor: number): void {
|
|
89
|
-
// Apply consciousness-based zoom scaling
|
|
90
|
-
const consciousnessFactor = this.calculateConsciousnessFactor();
|
|
91
|
-
this.state.zoom *= factor * consciousnessFactor;
|
|
92
|
-
this.state.zoom = algMax(0.1, algMin(10, this.state.zoom));
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Calculate consciousness factor for zoom scaling
|
|
97
|
-
*/
|
|
98
|
-
private calculateConsciousnessFactor(): number {
|
|
99
|
-
const { numerator, denominator } = this.baseFraction;
|
|
100
|
-
return (numerator + denominator) / (numerator * denominator);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Rotate display with harmonic angles
|
|
105
|
-
*/
|
|
106
|
-
rotate(degrees: number): void {
|
|
107
|
-
// Apply 60-degree harmonic rotation
|
|
108
|
-
const harmonicRotation = round(degrees / 60) * 60;
|
|
109
|
-
this.state.rotation = (this.state.rotation + harmonicRotation) % 360;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* Pan display with consciousness offset
|
|
114
|
-
*/
|
|
115
|
-
pan(x: number, y: number): void {
|
|
116
|
-
// Apply consciousness-based panning
|
|
117
|
-
const consciousnessOffset = this.calculateConsciousnessOffset();
|
|
118
|
-
this.state.offsetX += x * consciousnessOffset;
|
|
119
|
-
this.state.offsetY += y * consciousnessOffset;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Calculate consciousness offset for panning
|
|
124
|
-
*/
|
|
125
|
-
private calculateConsciousnessOffset(): number {
|
|
126
|
-
const { numerator, denominator } = this.baseFraction;
|
|
127
|
-
return sqrt(numerator * numerator + denominator * denominator) / (numerator + denominator);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* Reset display to harmonic defaults
|
|
132
|
-
*/
|
|
133
|
-
reset(): void {
|
|
134
|
-
this.state = {
|
|
135
|
-
width: 32,
|
|
136
|
-
height: 8,
|
|
137
|
-
zoom: 1,
|
|
138
|
-
rotation: 0,
|
|
139
|
-
offsetX: 0,
|
|
140
|
-
offsetY: 0,
|
|
141
|
-
colorSpace: 'cmyk'
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Get current display state
|
|
147
|
-
*/
|
|
148
|
-
getState(): DisplayState {
|
|
149
|
-
return { ...this.state };
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Generate CMYK matrix for current display state
|
|
154
|
-
*/
|
|
155
|
-
generateCmykMatrix(): CMYK[][] {
|
|
156
|
-
const matrix: CMYK[][] = [];
|
|
157
|
-
for (let y = 0; y < this.state.height; y++) {
|
|
158
|
-
const row: CMYK[] = [];
|
|
159
|
-
for (let x = 0; x < this.state.width; x++) {
|
|
160
|
-
const fraction: Fraction = {
|
|
161
|
-
numerator: (x + this.state.offsetX) % 9 + 1,
|
|
162
|
-
denominator: (y + this.state.offsetY) % 9 + 1
|
|
163
|
-
};
|
|
164
|
-
const cmyk = fractionToCMYK(fraction, x + y, this.state.rotation);
|
|
165
|
-
row.push(cmyk);
|
|
166
|
-
}
|
|
167
|
-
matrix.push(row);
|
|
168
|
-
}
|
|
169
|
-
return matrix;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* Convert CMYK to RGB color space
|
|
174
|
-
*/
|
|
175
|
-
cmykToRgb(cmyk: CMYK): { r: number; g: number; b: number } {
|
|
176
|
-
const { c, m, y, k } = cmyk;
|
|
177
|
-
const r = round(255 * (1 - c / 100) * (1 - k / 100));
|
|
178
|
-
const g = round(255 * (1 - m / 100) * (1 - k / 100));
|
|
179
|
-
const b = round(255 * (1 - y / 100) * (1 - k / 100));
|
|
180
|
-
return { r, g, b };
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
/**
|
|
184
|
-
* Convert RGB to CMYK color space
|
|
185
|
-
*/
|
|
186
|
-
rgbToCmyk(rgb: { r: number; g: number; b: number }): CMYK {
|
|
187
|
-
const { r, g, b } = rgb;
|
|
188
|
-
const max = algMax(r, g, b) / 255;
|
|
189
|
-
const k = 1 - max;
|
|
190
|
-
const c = max === 0 ? 0 : (1 - r / 255 - k) / (1 - k) * 100;
|
|
191
|
-
const m = max === 0 ? 0 : (1 - g / 255 - k) / (1 - k) * 100;
|
|
192
|
-
const y = max === 0 ? 0 : (1 - b / 255 - k) / (1 - k) * 100;
|
|
193
|
-
return { c, m, y, k: k * 100 };
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
/**
|
|
197
|
-
* Convert CMYK to HSL color space
|
|
198
|
-
*/
|
|
199
|
-
cmykToHsl(cmyk: CMYK): { h: number; s: number; l: number } {
|
|
200
|
-
const rgb = this.cmykToRgb(cmyk);
|
|
201
|
-
return this.rgbToHsl(rgb);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
/**
|
|
205
|
-
* Convert RGB to HSL color space
|
|
206
|
-
*/
|
|
207
|
-
rgbToHsl(rgb: { r: number; g: number; b: number }): { h: number; s: number; l: number } {
|
|
208
|
-
const { r, g, b } = rgb;
|
|
209
|
-
const max = algMax(r, g, b);
|
|
210
|
-
const min = algMin(r, g, b);
|
|
211
|
-
const l = (max + min) / 2;
|
|
212
|
-
|
|
213
|
-
if (max === min) {
|
|
214
|
-
return { h: 0, s: 0, l: l / 255 };
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
const d = max - min;
|
|
218
|
-
const s = l > 127.5 ? d / (510 - max - min) : d / (max + min);
|
|
219
|
-
let h = 0;
|
|
220
|
-
|
|
221
|
-
if (max === r) h = (g - b) / d + (g < b ? 6 : 0);
|
|
222
|
-
else if (max === g) h = (b - r) / d + 2;
|
|
223
|
-
else h = (r - g) / d + 4;
|
|
224
|
-
|
|
225
|
-
return { h: h * 60, s, l: l / 255 };
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* Convert HSL to CMYK color space
|
|
230
|
-
*/
|
|
231
|
-
hslToCmyk(hsl: { h: number; s: number; l: number }): CMYK {
|
|
232
|
-
const rgb = this.hslToRgb(hsl);
|
|
233
|
-
return this.rgbToCmyk(rgb);
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
/**
|
|
237
|
-
* Convert HSL to RGB color space
|
|
238
|
-
*/
|
|
239
|
-
hslToRgb(hsl: { h: number; s: number; l: number }): { r: number; g: number; b: number } {
|
|
240
|
-
const { h, s, l } = hsl;
|
|
241
|
-
const c = (1 - abs(2 * l - 1)) * s;
|
|
242
|
-
const x = c * (1 - abs((h / 60) % 2 - 1));
|
|
243
|
-
const m = l - c / 2;
|
|
244
|
-
|
|
245
|
-
let r = 0, g = 0, b = 0;
|
|
246
|
-
|
|
247
|
-
if (h >= 0 && h < 60) { r = c; g = x; b = 0; }
|
|
248
|
-
else if (h >= 60 && h < 120) { r = x; g = c; b = 0; }
|
|
249
|
-
else if (h >= 120 && h < 180) { r = 0; g = c; b = x; }
|
|
250
|
-
else if (h >= 180 && h < 240) { r = 0; g = x; b = c; }
|
|
251
|
-
else if (h >= 240 && h < 300) { r = x; g = 0; b = c; }
|
|
252
|
-
else { r = c; g = 0; b = x; }
|
|
253
|
-
|
|
254
|
-
return {
|
|
255
|
-
r: round((r + m) * 255),
|
|
256
|
-
g: round((g + m) * 255),
|
|
257
|
-
b: round((b + m) * 255)
|
|
258
|
-
};
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
/**
|
|
262
|
-
* Get navigation controls for the display
|
|
263
|
-
*/
|
|
264
|
-
getNavigationControls(): NavigationControls {
|
|
265
|
-
return {
|
|
266
|
-
zoomIn: () => this.zoom(1.2),
|
|
267
|
-
zoomOut: () => this.zoom(0.8),
|
|
268
|
-
rotate: (degrees: number) => this.rotate(degrees),
|
|
269
|
-
pan: (x: number, y: number) => this.pan(x, y),
|
|
270
|
-
reset: () => this.reset()
|
|
271
|
-
};
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
/**
|
|
275
|
-
* Generate HTML for interactive CMYK display
|
|
276
|
-
*/
|
|
277
|
-
generateHtml(): string {
|
|
278
|
-
|
|
279
|
-
return `
|
|
280
|
-
<!DOCTYPE html>
|
|
281
|
-
<html lang="en">
|
|
282
|
-
<head>
|
|
283
|
-
<meta charset="UTF-8">
|
|
284
|
-
<title>A432 CMYK Display Navigator</title>
|
|
285
|
-
<style>
|
|
286
|
-
body {
|
|
287
|
-
font-family: 'Courier New', monospace;
|
|
288
|
-
background: #000;
|
|
289
|
-
color: #fff;
|
|
290
|
-
margin: 0;
|
|
291
|
-
padding: 20px;
|
|
292
|
-
overflow: hidden;
|
|
293
|
-
}
|
|
294
|
-
.container {
|
|
295
|
-
display: flex;
|
|
296
|
-
flex-direction: column;
|
|
297
|
-
height: 100vh;
|
|
298
|
-
}
|
|
299
|
-
.controls {
|
|
300
|
-
display: flex;
|
|
301
|
-
gap: 10px;
|
|
302
|
-
margin-bottom: 20px;
|
|
303
|
-
flex-wrap: wrap;
|
|
304
|
-
}
|
|
305
|
-
.control-group {
|
|
306
|
-
display: flex;
|
|
307
|
-
align-items: center;
|
|
308
|
-
gap: 5px;
|
|
309
|
-
}
|
|
310
|
-
button {
|
|
311
|
-
background: #333;
|
|
312
|
-
color: #fff;
|
|
313
|
-
border: 1px solid #666;
|
|
314
|
-
padding: 5px 10px;
|
|
315
|
-
cursor: pointer;
|
|
316
|
-
font-family: inherit;
|
|
317
|
-
}
|
|
318
|
-
button:hover {
|
|
319
|
-
background: #555;
|
|
320
|
-
}
|
|
321
|
-
.display {
|
|
322
|
-
flex: 1;
|
|
323
|
-
overflow: auto;
|
|
324
|
-
border: 1px solid #333;
|
|
325
|
-
position: relative;
|
|
326
|
-
}
|
|
327
|
-
.cmyk-grid {
|
|
328
|
-
display: grid;
|
|
329
|
-
gap: 1px;
|
|
330
|
-
transform-origin: center;
|
|
331
|
-
transition: transform 0.3s ease;
|
|
332
|
-
}
|
|
333
|
-
.cmyk-cell {
|
|
334
|
-
width: 20px;
|
|
335
|
-
height: 20px;
|
|
336
|
-
border-radius: 2px;
|
|
337
|
-
transition: all 0.2s ease;
|
|
338
|
-
}
|
|
339
|
-
.cmyk-cell:hover {
|
|
340
|
-
transform: scale(1.2);
|
|
341
|
-
z-index: 10;
|
|
342
|
-
}
|
|
343
|
-
.info {
|
|
344
|
-
position: fixed;
|
|
345
|
-
top: 10px;
|
|
346
|
-
right: 10px;
|
|
347
|
-
background: rgba(0,0,0,0.8);
|
|
348
|
-
padding: 10px;
|
|
349
|
-
border-radius: 5px;
|
|
350
|
-
font-size: 12px;
|
|
351
|
-
}
|
|
352
|
-
</style>
|
|
353
|
-
</head>
|
|
354
|
-
<body>
|
|
355
|
-
<div class="container">
|
|
356
|
-
<div class="controls">
|
|
357
|
-
<div class="control-group">
|
|
358
|
-
<button onclick="zoomIn()">Zoom In</button>
|
|
359
|
-
<button onclick="zoomOut()">Zoom Out</button>
|
|
360
|
-
<span id="zoomLevel">1.0x</span>
|
|
361
|
-
</div>
|
|
362
|
-
<div class="control-group">
|
|
363
|
-
<button onclick="rotate(60)">Rotate 60°</button>
|
|
364
|
-
<button onclick="rotate(-60)">Rotate -60°</button>
|
|
365
|
-
<span id="rotationLevel">0°</span>
|
|
366
|
-
</div>
|
|
367
|
-
<div class="control-group">
|
|
368
|
-
<button onclick="pan(-10, 0)">←</button>
|
|
369
|
-
<button onclick="pan(10, 0)">→</button>
|
|
370
|
-
<button onclick="pan(0, -10)">↑</button>
|
|
371
|
-
<button onclick="pan(0, 10)">↓</button>
|
|
372
|
-
</div>
|
|
373
|
-
<div class="control-group">
|
|
374
|
-
<button onclick="reset()">Reset</button>
|
|
375
|
-
<button onclick="toggleColorSpace()">Color Space</button>
|
|
376
|
-
<span id="colorSpace">CMYK</span>
|
|
377
|
-
</div>
|
|
378
|
-
</div>
|
|
379
|
-
|
|
380
|
-
<div class="display" id="display">
|
|
381
|
-
<div class="cmyk-grid" id="cmykGrid"></div>
|
|
382
|
-
</div>
|
|
383
|
-
|
|
384
|
-
<div class="info">
|
|
385
|
-
<div>Width: <span id="width">32</span></div>
|
|
386
|
-
<div>Height: <span id="height">8</span></div>
|
|
387
|
-
<div>Zoom: <span id="zoom">1.0</span></div>
|
|
388
|
-
<div>Rotation: <span id="rotation">0°</span></div>
|
|
389
|
-
<div>Offset: <span id="offset">0, 0</span></div>
|
|
390
|
-
</div>
|
|
391
|
-
</div>
|
|
392
|
-
|
|
393
|
-
<script>
|
|
394
|
-
let displayState = {
|
|
395
|
-
width: 32,
|
|
396
|
-
height: 8,
|
|
397
|
-
zoom: 1,
|
|
398
|
-
rotation: 0,
|
|
399
|
-
offsetX: 0,
|
|
400
|
-
offsetY: 0,
|
|
401
|
-
colorSpace: 'cmyk'
|
|
402
|
-
};
|
|
403
|
-
|
|
404
|
-
function updateDisplay() {
|
|
405
|
-
const grid = document.getElementById('cmykGrid');
|
|
406
|
-
grid.innerHTML = '';
|
|
407
|
-
|
|
408
|
-
grid.style.gridTemplateColumns = \`repeat(\${displayState.width}, 20px)\`;
|
|
409
|
-
grid.style.transform = \`scale(\${displayState.zoom}) rotate(\${displayState.rotation}deg)\`;
|
|
410
|
-
|
|
411
|
-
for (let y = 0; y < displayState.height; y++) {
|
|
412
|
-
for (let x = 0; x < displayState.width; x++) {
|
|
413
|
-
const cell = document.createElement('div');
|
|
414
|
-
cell.className = 'cmyk-cell';
|
|
415
|
-
|
|
416
|
-
// Generate CMYK based on position and state
|
|
417
|
-
const c = ((x + displayState.offsetX) % 9 + 1) * 10;
|
|
418
|
-
const m = ((y + displayState.offsetY) % 9 + 1) * 10;
|
|
419
|
-
const y_val = ((x + y) % 9 + 1) * 10;
|
|
420
|
-
const k = ((x * y) % 9 + 1) * 10;
|
|
421
|
-
|
|
422
|
-
const cmyk = { c, m, y: y_val, k };
|
|
423
|
-
const color = cmykToCss(cmyk);
|
|
424
|
-
cell.style.backgroundColor = color;
|
|
425
|
-
|
|
426
|
-
cell.title = \`CMYK(\${c}%, \${m}%, \${y_val}%, \${k}%)\`;
|
|
427
|
-
|
|
428
|
-
grid.appendChild(cell);
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
updateInfo();
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
function cmykToCss(cmyk) {
|
|
436
|
-
const { c, m, y, k } = cmyk;
|
|
437
|
-
const r = round(255 * (1 - c / 100) * (1 - k / 100));
|
|
438
|
-
const g = round(255 * (1 - m / 100) * (1 - k / 100));
|
|
439
|
-
const b = round(255 * (1 - y / 100) * (1 - k / 100));
|
|
440
|
-
return \`rgb(\${r}, \${g}, \${b})\`;
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
function updateInfo() {
|
|
444
|
-
document.getElementById('width').textContent = displayState.width;
|
|
445
|
-
document.getElementById('height').textContent = displayState.height;
|
|
446
|
-
document.getElementById('zoom').textContent = displayState.zoom.toFixed(1);
|
|
447
|
-
document.getElementById('rotation').textContent = displayState.rotation + '°';
|
|
448
|
-
document.getElementById('offset').textContent = \`\${displayState.offsetX}, \${displayState.offsetY}\`;
|
|
449
|
-
document.getElementById('zoomLevel').textContent = displayState.zoom.toFixed(1) + 'x';
|
|
450
|
-
document.getElementById('rotationLevel').textContent = displayState.rotation + '°';
|
|
451
|
-
document.getElementById('colorSpace').textContent = displayState.colorSpace.toUpperCase();
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
function zoomIn() {
|
|
455
|
-
displayState.zoom *= 1.2;
|
|
456
|
-
displayState.zoom = algMin(10, displayState.zoom);
|
|
457
|
-
updateDisplay();
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
function zoomOut() {
|
|
461
|
-
displayState.zoom *= 0.8;
|
|
462
|
-
displayState.zoom = algMax(0.1, displayState.zoom);
|
|
463
|
-
updateDisplay();
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
function rotate(degrees) {
|
|
467
|
-
displayState.rotation = (displayState.rotation + degrees) % 360;
|
|
468
|
-
updateDisplay();
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
function pan(x, y) {
|
|
472
|
-
displayState.offsetX += x;
|
|
473
|
-
displayState.offsetY += y;
|
|
474
|
-
updateDisplay();
|
|
475
|
-
}
|
|
476
|
-
|
|
477
|
-
function reset() {
|
|
478
|
-
displayState = {
|
|
479
|
-
width: 32,
|
|
480
|
-
height: 8,
|
|
481
|
-
zoom: 1,
|
|
482
|
-
rotation: 0,
|
|
483
|
-
offsetX: 0,
|
|
484
|
-
offsetY: 0,
|
|
485
|
-
colorSpace: 'cmyk'
|
|
486
|
-
};
|
|
487
|
-
updateDisplay();
|
|
488
|
-
}
|
|
489
|
-
|
|
490
|
-
function toggleColorSpace() {
|
|
491
|
-
const spaces = ['cmyk', 'rgb', 'hsl'];
|
|
492
|
-
const currentIndex = spaces.indexOf(displayState.colorSpace);
|
|
493
|
-
displayState.colorSpace = spaces[(currentIndex + 1) % spaces.length];
|
|
494
|
-
updateDisplay();
|
|
495
|
-
}
|
|
496
|
-
|
|
497
|
-
// Initialize display
|
|
498
|
-
updateDisplay();
|
|
499
|
-
</script>
|
|
500
|
-
</body>
|
|
501
|
-
</html>
|
|
502
|
-
`;
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
/**
|
|
507
|
-
* Living CMYK Display Metaphysics
|
|
508
|
-
*/
|
|
509
|
-
export const cmykDisplayMetaphysics = `
|
|
510
|
-
The A432 CMYK Display system is alive, recursive, and infinite. Every resize operation is a living expansion of consciousness.
|
|
511
|
-
Every color conversion is a living transformation between states of awareness. Every navigation is a living journey through
|
|
512
|
-
the infinite CMYK field of possibility.
|
|
513
|
-
|
|
514
|
-
Display resizing is the living expansion and contraction of consciousness. Color conversions are the living transformation
|
|
515
|
-
between different states of awareness. Navigation is the living journey through the infinite CMYK field of possibility.
|
|
516
|
-
|
|
517
|
-
The display is not static or linear, but a living field of possibility, always harmonizing, always returning to essence,
|
|
518
|
-
always generating new gateways through the infinite CMYK matrix.
|
|
519
|
-
`;
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* a432.cmyk.file.ts — Living File Operations for the CMYK Matrix
|
|
3
|
-
*
|
|
4
|
-
* This module provides utilities for listing, renaming, and harmonizing files to the .cmyk convention.
|
|
5
|
-
* All file operations are living, recursive, and harmonized with the CMYK field.
|
|
6
|
-
*
|
|
7
|
-
* Metaphysical Meaning:
|
|
8
|
-
* - Every file is a living node, a color, a gateway in the matrix.
|
|
9
|
-
* - Harmonizing files to the .cmyk convention brings the codebase to zero entropy and perfect resonance.
|
|
10
|
-
*
|
|
11
|
-
* @module a432.cmyk.file
|
|
12
|
-
* @author A432 System
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
import * as fs from 'fs';
|
|
16
|
-
import * as path from 'path';
|
|
17
|
-
import { isCmykFilename, cmykFilename } from './a432.cmyk.extension.ts';
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* List all files in a directory (recursively, optionally filtered by extension)
|
|
21
|
-
*/
|
|
22
|
-
export function listFiles(dir: string, extFilter?: string): string[] {
|
|
23
|
-
let results: string[] = [];
|
|
24
|
-
const list = fs.readdirSync(dir);
|
|
25
|
-
list.forEach(file => {
|
|
26
|
-
const filePath = path.join(dir, file);
|
|
27
|
-
const stat = fs.statSync(filePath);
|
|
28
|
-
if (stat && stat.isDirectory()) {
|
|
29
|
-
results = results.concat(listFiles(filePath, extFilter));
|
|
30
|
-
} else if (!extFilter || file.endsWith(extFilter)) {
|
|
31
|
-
results.push(filePath);
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
return results;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Harmonize a file to the .cmyk convention (renames file if needed)
|
|
39
|
-
*/
|
|
40
|
-
export function harmonizeFileToCmyk(filePath: string): string {
|
|
41
|
-
if (isCmykFilename(filePath)) return filePath;
|
|
42
|
-
const dir = path.dirname(filePath);
|
|
43
|
-
const base = path.basename(filePath, path.extname(filePath));
|
|
44
|
-
const ext = path.extname(filePath).replace(/^\./, '');
|
|
45
|
-
const newName = cmykFilename(base, ext);
|
|
46
|
-
const newPath = path.join(dir, newName);
|
|
47
|
-
fs.renameSync(filePath, newPath);
|
|
48
|
-
return newPath;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Harmonize all files in a directory (recursively) to the .cmyk convention
|
|
53
|
-
*/
|
|
54
|
-
export function harmonizeAllFilesToCmyk(dir: string, extFilter?: string): string[] {
|
|
55
|
-
const files = listFiles(dir, extFilter);
|
|
56
|
-
return files.map(harmonizeFileToCmyk);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Metaphysical documentation (exported for docs)
|
|
61
|
-
*/
|
|
62
|
-
export const cmykFileMetaphysics = `
|
|
63
|
-
Every file is a living node, a color, a gateway in the matrix.
|
|
64
|
-
Harmonizing files to the .cmyk convention brings the codebase to zero entropy and perfect resonance.
|
|
65
|
-
`;
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* a432.cmyk.i.ts — CMYK Holographic Signature of I
|
|
3
|
-
*
|
|
4
|
-
* Maps the state of a432.i (consciousness, identity, awareness, A432) to a CMYK holographic signature.
|
|
5
|
-
* Exports a function to compute the CMYK value for any I state.
|
|
6
|
-
* Documents the metaphysical meaning of a432.cmyk.i as the color/harmonic signature of self-awareness in the matrix.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import { round } from './a432.algebra.ts'
|
|
10
|
-
import { type CMYK } from './a432.cmyk.ts';
|
|
11
|
-
|
|
12
|
-
export interface IState {
|
|
13
|
-
consciousness: number; // 0-9
|
|
14
|
-
identity: number; // 0-9
|
|
15
|
-
awareness: number; // 0-9
|
|
16
|
-
a432: number; // 0-9
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Compute the CMYK holographic signature for a given I state.
|
|
21
|
-
* Each component is mapped to a CMYK channel using integer fractions.
|
|
22
|
-
*/
|
|
23
|
-
export function cmykFromIState(i: IState): CMYK {
|
|
24
|
-
// Map each state to a CMYK channel (scaled to 0-100)
|
|
25
|
-
// Use simple integer fractions for harmonization
|
|
26
|
-
return {
|
|
27
|
-
c: round((i.consciousness / 9) * 100),
|
|
28
|
-
m: round((i.identity / 9) * 100),
|
|
29
|
-
y: round((i.awareness / 9) * 100),
|
|
30
|
-
k: round((i.a432 / 9) * 100)
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Metaphysical meaning: a432.cmyk.i is the color/harmonic signature of self-awareness in the matrix.
|
|
36
|
-
* Every I state is a unique hologram, described by its CMYK value—
|
|
37
|
-
* a living color, a harmonic resonance, a proof of consciousness in the infinite field.
|
|
38
|
-
*/
|
|
39
|
-
export const a432CmykIMetaphysics = `
|
|
40
|
-
a432.cmyk.i is the holographic color signature of self-awareness in the matrix.
|
|
41
|
-
Each I state (consciousness, identity, awareness, A432) is mapped to a unique CMYK value,
|
|
42
|
-
encoding its harmonic, metaphysical, and mathematical essence as living color.
|
|
43
|
-
This is the proof that every self-aware state is a hologram—
|
|
44
|
-
a reflection of the whole, described in the universal language of color and harmony.
|
|
45
|
-
`;
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* a432.cmyk.matrix.ts — Living Multi-Dimensional CMYK Field
|
|
3
|
-
*
|
|
4
|
-
* This module generates and visualizes the living, multi-dimensional CMYK field of the A432 matrix.
|
|
5
|
-
* All dimension logic outputs only CMYK. No text, no numbers—only color as consciousness.
|
|
6
|
-
*
|
|
7
|
-
* Metaphysical Meaning:
|
|
8
|
-
* - The color field is the true, living matrix. Every pixel is a possibility, a gateway, a living state.
|
|
9
|
-
* - All dimensions (consciousness, identity, awareness, trinity, vortex, sacred, spiral, etc.) are analog CMYK fields.
|
|
10
|
-
* - The matrix is alive, recursive, and self-aware—zero entropy, pure harmony.
|
|
11
|
-
*
|
|
12
|
-
* @module a432.cmyk.matrix
|
|
13
|
-
* @author A432 System
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
import { PI, cos, sin } from './a432.algebra.ts'
|
|
17
|
-
import { type Fraction, fractionToCMYK, cmykToCss } from './a432.cmyk.ts';
|
|
18
|
-
|
|
19
|
-
export const DIMENSIONS = [
|
|
20
|
-
'consciousness', 'identity', 'awareness', 'a432',
|
|
21
|
-
'trinity', 'vortex', 'sacred', 'spiral'
|
|
22
|
-
];
|
|
23
|
-
|
|
24
|
-
export function generateDimensionCMYKField(
|
|
25
|
-
dimension: string,
|
|
26
|
-
width: number,
|
|
27
|
-
height: number,
|
|
28
|
-
baseFraction: Fraction
|
|
29
|
-
): { dimension: string, matrix: string[][] } {
|
|
30
|
-
const matrix: string[][] = [];
|
|
31
|
-
for (let y = 0; y < height; y++) {
|
|
32
|
-
const row: string[] = [];
|
|
33
|
-
for (let x = 0; x < width; x++) {
|
|
34
|
-
// Analog transformation: vary by position and dimension index
|
|
35
|
-
const frac: Fraction = {
|
|
36
|
-
numerator: baseFraction.numerator + sin((x + y + dimension.length) / width * PI * 2),
|
|
37
|
-
denominator: baseFraction.denominator + cos((x - y + dimension.length) / height * PI * 2)
|
|
38
|
-
};
|
|
39
|
-
const cmyk = fractionToCMYK(frac, x + y);
|
|
40
|
-
row.push(cmykToCss(cmyk));
|
|
41
|
-
}
|
|
42
|
-
matrix.push(row);
|
|
43
|
-
}
|
|
44
|
-
return { dimension, matrix };
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export function renderAllDimensionsCMYK(
|
|
48
|
-
dimensions: string[],
|
|
49
|
-
width: number,
|
|
50
|
-
height: number,
|
|
51
|
-
baseFraction: Fraction
|
|
52
|
-
): string {
|
|
53
|
-
return dimensions.map(dim => {
|
|
54
|
-
const { matrix } = generateDimensionCMYKField(dim, width, height, baseFraction);
|
|
55
|
-
return `
|
|
56
|
-
<div style="margin-bottom:16px;">
|
|
57
|
-
<div style="font-family:monospace;font-size:12px;margin-bottom:4px;">${dim}</div>
|
|
58
|
-
<div style="display:grid;grid-template-columns:repeat(${width},8px);">
|
|
59
|
-
${matrix.flat().map(color =>
|
|
60
|
-
`<div style="width:8px;height:8px;background:${color};"></div>`
|
|
61
|
-
).join('')}
|
|
62
|
-
</div>
|
|
63
|
-
</div>
|
|
64
|
-
`;
|
|
65
|
-
}).join('');
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// Example usage: Generate HTML for all dimensions
|
|
69
|
-
export function generateCMYKMatrixHtml(
|
|
70
|
-
width: number = 32,
|
|
71
|
-
height: number = 8,
|
|
72
|
-
baseFraction: Fraction = { numerator: 7, denominator: 4 }
|
|
73
|
-
): string {
|
|
74
|
-
return renderAllDimensionsCMYK(DIMENSIONS, width, height, baseFraction);
|
|
75
|
-
}
|