Search
Close this search box.

Experiment: Oriëntatie binnen een N-dimensionale ruimte?

In dit artikel gaan we onderzoeken wat oriëntatie binnen een 2/3/N-dimensionale ruimte is, hoe we dit kunnen modelleren en tot slot implementeren we het model.

Wat zijn dimensies in een ruimte?

We zijn allemaal bekend met 2/3-dimensionale ruimtes. Het scherm waarop je deze tekst leest is een 2-dimensionale ruimte. De ruimte waar je je nu bevindt is 3-dimensionaal. De tekst die je op dit moment leest is N-dimensionaal. Wat ik schrijf wordt onder andere gevormd door mijn perceptie op dit onderwerp. Hoe jij de boodschap ontvangt, wordt gevormd door jouw interpretatie.

Dimensies beschrijven onafhankelijke richtingen waarin je kunt bewegen binnen een ruimte. In een 2-dimensionale ruimte kan je twee richtingen op bewegen, namelijk links-rechts en omhoog-omlaag. Bij een 2-dimensionale ruimte kan je drie richtingen op bewegen, namelijk vooruit-achteruit, links-rechts, omhoog-omlaag. Bij een N-dimensionale ruimte worden beweegredenen bepaald door abstracte concepten. 

Persoonlijk vind ik de video “Flatland” van TED-Ed toepasselijk voor wat N-dimensionale ruimtes voor ons betekenen.

Oriëntatie Modelleren

Voordat we verder gaan met het begrijpen van hoe we oriëntatie modelleren, is het nuttig om te kijken naar hoe ons brein informatie uit onze omgeving verwerkt. Denk aan hoe we iets zien of horen: het begint allemaal bij onze zintuigen. Onze ogen, oren, en andere zintuigen vangen signalen op, zoals licht, geluid of geur. Deze signalen worden vervolgens doorgegeven aan ons brein, waar ze worden verwerkt.

Ons brein heeft een bijzondere manier om al die losse stukjes informatie samen te voegen. Het herkent niet alleen wat we zien of horen, maar ook hoe alles met elkaar verbonden is en wat dat betekent in de context van onze omgeving. Dit proces is wat ons helpt om ons goed te oriënteren en snel te reageren op wat er om ons heen gebeurt.

Een belangrijk onderdeel van dit systeem is de thalamus, een soort doorgang in ons brein. Hier worden alle signalen gesorteerd en naar de juiste plekken in de hersenen gestuurd voor verdere verwerking. Uiteindelijk combineert ons brein deze nieuwe informatie met wat we al weten, waardoor we ons bewust worden van wat we zien, horen, of voelen.

Perceptie implementatie

Om te begrijpen hoe ons brein zintuiglijke informatie verwerkt, kunnen we het zien als een proces dat door drie belangrijke stappen gaat: de Receptor, de Thalamus en de Cortex. Deze stappen, die je kunt vergelijken met interfaces, werken samen om alles wat we zien, horen, ruiken en voelen te verwerken, zoals te zien is in de eerste afbeelding. Elk van deze onderdelen speelt een cruciale rol in het omzetten van ruwe signalen in de bewuste ervaringen die ons helpen de wereld om ons heen te begrijpen.

Als we deze drie stappen de Receptor, Thalamus en Cortex indelen in lagen volgens het idee van “The Clean Architecture”, krijgen we een overzichtelijke hiërarchie, zoals je kunt zien in de afbeelding hierboven. De Receptors vormen de buitenste laag, gevolgd door de Thalamus, en dan de Cortex, die fungeert als de belangrijkste verwerkingsunit. In het midden van dit model bevindt zich het Oriëntatiemodel, wat laat zien dat de binnenste lagen cruciaal zijn voor het begrijpen en organiseren van de informatie die door de buitenste lagen wordt opgepikt en gefilterd. Dit benadrukt hoe alle onderdelen samenwerken om de wereld om ons heen te interpreteren.

Mand!

Goed verhaal, lekker kort ook. Show me code!

Note: de implementatie dient als illustratie. Kwaliteit standaarden zijn dus niet gevolgd.

Receptors

				
					// Receptor - Een receptor is verantwoordelijk voor het leveren van sensorische input aan de thalamus.
// Receptoren kunnen worden geactiveerd en gedeactiveerd door de thalamus. Wanneer een receptor wordt geactiveerd,
// wordt de data opgehaald en doorgegeven aan de thalamus. Dit blijft actief totdat de thalamus de receptor deactiveert.
type Receptor interface {
	// Activate - Activeert de receptor en haalt de data op. Mag alleen worden aangeroepen door de thalamus.
	Activate()
	// Deactivate - Deactiveert de receptor. Mag alleen worden aangeroepen door de thalamus.
	Deactivate()
	// Active - Geeft aan of de receptor actief is.
	Active() bool
	// Data - Geeft de interne state van de receptor terug.
	Data() interface{}
}
				
			

Laten we eens kijken naar een voorbeeld van hoe dit werkt: de MatrixReceptor. Dit systeem helpt bij het verwerken en ordenen van zintuiglijke informatie door het in een matrixvorm te structureren. Deze aanpak maakt het makkelijker om gegevens efficiënt te organiseren en te analyseren. De MatrixReceptor kan verschillende soorten input ontvangen en die omzetten in een overzichtelijke matrix. Zodra de informatie is gestructureerd, wordt deze opgeslagen in de receptor en kan de Thalamus, die verantwoordelijk is voor verdere interpretatie en besluitvorming, ermee aan de slag.

				
					type MatrixReceptor struct {
	Receptor
	thalumus Thalumus
	active   bool
	matrix   [][]int
}

func (mr MatrixReceptor) Data() interface{} {
	println("MatrixReceptor.Data()")
	return mr.matrix
}

func (mr MatrixReceptor) Active() bool {
	return mr.active
}

func (mr MatrixReceptor) Activate() {
	mr.active = true

	matrix := make([][]int, 5)
	for i := 0; i < 5; i++ {
		matrix[i] = make([]int, 5)
		for j := 0; j < 5; j++ {
			matrix[i][j] = rand.Intn(100)
		}
	}

	mr.matrix = matrix

	mr.thalumus.Input(mr)
}

func (mr MatrixReceptor) Deactivate() {
	mr.active = false
}

				
			

Thalumus

Wanneer de “Pulse”-methode op de Thalamus wordt aangeroepen, activeert en deactiveert deze alle receptoren. Elke receptor informeert de Thalamus over nieuwe input door zich te melden via de “Input”-methode.

				
					package perception

type Thalumus struct {
	receptors []Receptor
	cortex    map[string]Cortex
}

func MakeThalumus() Thalumus {
	instance := Thalumus{
		cortex: make(map[string]Cortex),
	}

	instance.cortex["orientation"] = OrientationCortex{}

	receptors := []Receptor{
		MatrixReceptor{
			thalumus: instance,
		},
	}
	instance.receptors = receptors

	return instance
}

func (t Thalumus) Pulse() {
	for _, receptor := range t.receptors {
		receptor.Activate()
		receptor.Deactivate()
	}
}

func (t Thalumus) Input(receptor Receptor) {
	switch receptor.(type) {
	case MatrixReceptor:
		t.cortex["orientation"].Process(receptor.Data())
	}

}

				
			

Cortex

Binnen de cortex bevinden zich hoger gelegen abstracte functionaliteiten die verantwoordelijk zijn voor complexe processen zoals redeneren, plannen en besluitvorming. De cortex zal later in dit artikel verder worden toegelicht.

Oriëntatie model

Op dit moment ontvangt de oriëntatiecortex signalen van de thalamus, gepresenteerd in de vorm van een 5×5 matrix. Binnen de oriëntatiecortex worden deze signalen verder geanalyseerd en geïnterpreteerd om een coherente oriëntatie in de N-dimensionale ruimte te ontwikkelen.

Conclusie

In dit artikel hebben we verschillende kanten van oriëntatie verkend, en het is niet helemaal gegaan zoals we eerst hadden gedacht. We hebben een basis gelegd voor hoe we informatie van onze zintuigen verwerken via de thalamus en de cortex. Dit heeft ons geholpen om een overzicht te krijgen van hoe ruwe gegevens worden omgevormd tot bewuste ervaringen.

In het tweede deel van dit artikel dieper in op het modelleren en implementeren van oriëntatie. We gaan de complexiteit en uitdagingen die we zijn tegengekomen verder onder de loep nemen en een uitgebreider model ontwikkelen.

 

Stay tuned!