Part 1: 1.1. Space Architecture of Patched Bounded Landscape
Space species in the patched playground aBPLandscape
- 1. Space Architecture of Patched Bounded Landscape
- 1.1. Gon on-Ball Drives Through the Bounded Landscape
- 1.2. Architecture of Space of BLandscape
- 1.3. Space Architecture for aFootball on PB-Landscape
#collapse_hide
from __future__ import print_function
# Base Computational Geometry of the Environment in Python
#Set of Fundamental packages
# scientific packages
import numpy as np
import scipy
import scipy.spatial
# data science packages
import pandas as pd
# visualization packages
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
# animation packages
import ipywidgets as widgets
import moviepy as mpy
from IPython.core.interactiveshell import InteractiveShell
from IPython.display import display
from IPython.display import display_html, display_jpeg, display_png, display_json, display_latex, display_pretty, display_svg
from IPython.display import Image
from matplotlib.patches import Polygon,Arc,Ellipse
from datetime import datetime
from ipywidgets import interact, interactive, fixed, interact_manual
from moviepy.editor import VideoClip
from moviepy.video.io.bindings import mplfig_to_npimage
#from matplotlib import colors
%matplotlib inline
%matplotlib ipympl
%load_ext autoreload
%autoreload 2
%config InlineBackend.figure_format = 'retina'
plt.style.use('fivethirtyeight')
Gon is on control of the ball in an arbitrary $\alpha$ point and is free to go through the bounded landscape creating a sequence of intentional skill actions on his body and on the ball conducting it around with a final destination to an $\omega$ point where he can end up the effective final action to score a goal. Gon will be the creator of a generative process of a Levy flight or effective trajectory. The state of the Gon-ULandscape system is:
- The set of things is a triple: {goals,ball}
- The set of agents is a singleton: {Gon}
- The set of events is: {stasis, transf0, transf1, ..., transfn} =
- {Ball's positional-stasis, Gon's positional-change,Ball-positional-change, ..., goal}
Gon has to develop his technics for a set of actions or intentional skills to execute on himself and on the ball in the landscape as shown in the animation of YouTube.
Each Gon’s positional change is a movement that can be qualified as {standing, walking, jogging, running} for the velocity and acceleration of Gon’s position from point p to gain point o in bounded space and keep control of the ball.
The cognitive lessons that Gon acquired while he explore and exploit his aFIC knowledge are:
- the main static reference of aFICS are the goals and,
- the main dynamic references of aFICS is the ball location and its direction of movement
- he supplies energy into the system, through his aFIC process, to give the movement direction to his body and to the ball by keeping or breaking symmetry, and
- the main objective is the effective contralateral action with which Gon scores the goal
In his perception of the events in the landscape he must have these lessons into account; but mainly, the recall of the AcEmFC trainer, that he must:
- finally conduct the ball in contralateral direction and
- to execute an end-up effective contralateral action to seeks to score a goal.
Gon needs a geolocational model of the bounded landscape that guides his decision-making at any point in the environment when he is out-off-ball or on-ball control. But, Gon now knows that he has to do an huge effort because all that space-time is created and happen on only himself.
He needs teammates to do it one and again and again in order to have simultaneity and sequentiality of events and that the action be distributed between all agents in the ULandscape.
Now on, Gon knows that:
- He is constrained to be in the on-ball-control state and that most of the time he will be in the out-off-ball-control state.
- That he must concentrate on how and where to move
- When he must be in focus to get control of the ball and,
- to open spaces where he can receive the ball and take its control or
- Decides how to play or which is the best action from 1-to-many to decide
- to keep the symmetry of the direction of movement of the ball on his control or
- when a clear affordance urges him to break the symmetry of the movement and create a new future changing ball direction
1.2.1. The Patched Bounded Landscape
In aFootball our perspective of the game is in spatial-temporal terms. This view yields us to state that there is an aFICS architecture of the football game in the bounded landscape. This is all about creating open spaces guided by affordances and someone coming into space in coherence with his actions or viceversa.
Therefore, a main idea of strategy to play football in the bounded playground is about organizing space. A spatial practice in geolocalization, adopted in aFICS for football, to be analysed would be in terms of management patchiness in global and local regions to handle the most 'relevant' information in this mesoscale:
- the static patched bounded landscape or the aPBLandscape and,
- the teams’ dynamics as Football Flow.
Gon needs a model of the patched bounded landscape that guides his decision-making at any point in the environment when he is off-ball or on-ball control. But, Gon now knows that playing football alone means that all that space-time is created sequentially but all happen on only himself.
This model must take into account all spatial references that Gon has acquiered from exploring the bounded landscape.
- Gon knows the difference in scale about the near by and the far away
- Gon knows the difference between the core area, the inner area and the outter area
- Gon knows which directions of movement of the ball and of his body are in sidewayness or counter-sydewayness.
Let us analyze the patched bounded landscape aBLandscape as the common reference for spatial practice of football.
#collapse_hide
IcHx = 105.0
IcHy = 105.0 # In AcEmFC is 68.0
IcR = np.sqrt(IcHx**2 + IcHy**2)
#IcR
GOAL = 7.32/IcHy*100
ls_col = 'darkseagreen' # landscape color
uls_col= 'darkseagreen' # unbounded landscape color
llm_col= 'white' # landscape line marks edge color
pl_col = 'seagreen' # patch boundary color
vfl_col = 'gold' # visual field limits color
sid_col = 'gold' # space id color
edge = 'blue'
bgcolor = 'yellow'
lw = 1.0
zorder = 1
alpha = 1
# and the cosmic string of rotational symmetry around origin point **o**
origin = [0,0] # choose origin
# Gon's coordinates
xs = 50.0
ys = 50.0
#collapse_hide
def draw_Blandscape(patchid):
"""sets up unbounded landscape, visually framed by horizon lines
returns matplotlib fig and axes bjects.
"""
fig = plt.figure(figsize=(IcHx/12,IcHy/12)) # use 15
fig.patch.set_facecolor(uls_col) # set unbounded landscape up
axes = fig.add_subplot(1, 1, 1)
axes.set_facecolor(ls_col) # set landscape up
axes.xaxis.set_visible(True) # basis vector e1 represents x=0
axes.yaxis.set_visible(True) # basis vector e2 represents y=0
axes.set_xlim(0,100) # normalize infinite points in e1 direction
axes.set_ylim(0,100) # normalize infinite points in e2 direction
axes.set_axis_off() # do not draw spindles - no measurements
axes = draw_Blpatches(axes,patchid)
return fig, axes
def draw_Blpatches(axes,patchid):
plt.xlim([-5,105]) # constrain further FUL e1 direction -5, 105
plt.ylim([-5,105]) # constrain further FUL e2 direction -5, 105
axes.scatter(origin[0]+50, origin[1]+50,c='w',s=30) # origin in the center of half-way line in FUL
# cosmic rotational symmetry line determines inner|wide spaces FUL
axes.add_patch(Ellipse((50, 50), 2*20/IcHx*100, 2*20/IcHy*100,ec=llm_col,fc='none'))
axes.add_patch(Ellipse((50, 50), 2*40/IcHx*100, 2*40/IcHy*100,ec=llm_col,fc='none'))
axes.add_patch(Ellipse((50, 50), 2*55/IcHx*100, 2*55/IcHy*100,ec=llm_col,fc='none'))
# Ideal Vanished Line or Omnidirectional Horizon in rotational symmetry
axes.add_patch(Ellipse((50, 50), IcR/IcHx*100, IcR/IcHy*100,ec=llm_col,fc='none'))
# half-way line in UL - visual field limit on shoulders
axes.add_line(plt.Line2D([50, 50], [0, 100],c=llm_col,lw=1.0)) #50,50. 0,100
# diagonal basis or visual field limit lines that intersects at origin
axes.add_line(plt.Line2D([0,100],[0,100],c=vfl_col,lw=1.0)) # 0,100. 0,100
axes.add_line(plt.Line2D([0,100],[100,0],c=vfl_col,lw=1.0)) # 0,100 100,0
# denominations of UL subspaces
plt.text(45,104,'lateral',fontsize=16, color=sid_col) # 45,105
plt.text(45, -4,'lateral',fontsize=16, color=sid_col) # 45, -7
plt.text(-4,40, 'contralateral',fontsize=16, color=sid_col,rotation='vertical') #-10,40
plt.text(104,40,'contralateral',fontsize=16, color=sid_col,rotation='vertical') #105,40
# patch goals in middle of half-e1 and half-e2 horizons
axes.add_patch(plt.Rectangle(((100), (100-GOAL)/2), 1, GOAL,ec=llm_col,fc='none')) #100, 100-GOAL
axes.add_patch(plt.Rectangle((0, (100-GOAL)/2), -1, GOAL,ec=llm_col,fc='none')) #0,100-GOAL
#
nb_patches = 18
if patchid:
#half-way line and inner space lane
axes.add_patch(Ellipse((50, 50), 2*20/IcHx*100, 2*20/IcHy*100,
ec=pl_col, fc='none',lw=1.0))
axes.add_line(plt.Line2D([50, 50], [100, 0],c=pl_col,lw=1.0))
#diagonal patch edges in middle space lane
axes.add_patch(Ellipse((50, 50), 2*40/IcHx*100, 2*40/IcHy*100,
ec=pl_col, fc='none',lw=1.0))
axes.add_line(plt.Line2D([62.5,76.5],[62.5,76.5],c=pl_col,lw=1.0))
axes.add_line(plt.Line2D([36.5,22.5],[36.5,22.5],c=pl_col,lw=1.0))
axes.add_line(plt.Line2D([22.5,36.5],[76.5,63.5],c=pl_col,lw=1.0))
axes.add_line(plt.Line2D([63.5,76.5],[36.5,22.5],c=pl_col,lw=1.0))
#wide-space lane
axes.add_patch(Ellipse((50, 50), 2*52.5/IcHx*100, 2*52.5/IcHy*100,
ec=pl_col, fc='none',lw=1.0))
axes.add_line(plt.Line2D([2.5,15],[66.7,62.5],c=pl_col,lw=1.0))
axes.add_line(plt.Line2D([86,97.5],[39.5,35],c=pl_col,lw=1.0))
axes.add_line(plt.Line2D([2.5,15],[33.6,37.8],c=pl_col,lw=1.0))
axes.add_line(plt.Line2D([86,97.5],[62.5,66.7],c=pl_col,lw=1.0))
axes.add_line(plt.Line2D([65,70],[85,96.5],c=pl_col,lw=1.0))
axes.add_line(plt.Line2D([30,36.5],[2.5,15],c=pl_col,lw=1.0))
axes.add_line(plt.Line2D([30,35],[96.5,85],c=pl_col,lw=1.0))
axes.add_line(plt.Line2D([65,70],[15,2.5],c=pl_col,lw=1.0))
#
# identify patches in our and opponent half-ULandscape fields
plt.text(92.5,48,'00',fontsize=14, color=sid_col)
plt.text(2.5,48, '09',fontsize=14, color=sid_col)
plt.text(80,80, '01',fontsize=14, color=sid_col)
plt.text(80,18, '02',fontsize=14, color=sid_col)
plt.text(18,80, '11',fontsize=14, color=sid_col)
plt.text(18,18, '10',fontsize=14, color=sid_col)
plt.text(60,92, '03',fontsize=14, color=sid_col)
plt.text(60,8, '04',fontsize=14, color=sid_col)
plt.text(40,92, '13',fontsize=14, color=sid_col)
plt.text(40,8, '12',fontsize=14, color=sid_col)
plt.text(76,48, '05',fontsize=14, color=sid_col)
plt.text(20,48, '14',fontsize=14, color=sid_col)
plt.text(60,75, '06',fontsize=14, color=sid_col)
plt.text(60,25, '07',fontsize=14, color=sid_col)
plt.text(40,75, '16',fontsize=14, color=sid_col)
plt.text(40,25, '15',fontsize=14, color=sid_col)
plt.text(60,48, '08',fontsize=14, color=sid_col)
plt.text(40,48, '17',fontsize=14, color=sid_col)
plt.text(-4,68, '19',fontsize=14, color=sid_col) #further goal line space
plt.text(104,30, '18',fontsize=14, color=sid_col) #further goal line space
plt.text(60,-4, '21',fontsize=14, color=sid_col) #further lateral line space
plt.text(38,104, '20',fontsize=14, color=sid_col) #further lateral line space
return axes
#collapse_hide
patchid = True
draw_Blandscape(patchid)
#plt.show()
#plt.savefig('../../APimages/Blandscape.png',dpi=100,bbox_inches="tight",padding=0)
1.2.2. Spatial Relations of Patches
Patches are circles, semicircular sectors and circunferences subspaces. They exhibit spatial relationships, like n-adjacencies between subspaces and their concatenation as set of subspaces constitute the spatial organization of the aPBLandscape in the aFootball Universe whose inside is bounded by a perimeter as shown in Figure 1.1.1 and 1.1.2.
The perimeter is conformed by a lateral and counter-lateral arcs and the inside by an outter, an inner and a core subspaces as shown in Figures 1.1.3. and 1.1.4.
From this model emerges a zoo of species of organized space. First, the aPBLandscape is organized in two halves, own half and opponent half, each one asociated to a goal object. Each half is sub-organized into nine patches as shown in Figure 1.1.5. In total. Second, the aBLandscape has a perimeter in the proto-aFootball field. There is an inside. When the ball goes through the perimeter we use two code words to identify in which perimeter sublane the game is re-assumed. Patch {18} for contralateral sublane clsl reposition and patch {19} for lateral sublane lsl reposition of game's subchains of in|out-of possession modes and its critical transitions where uncertainty is almost always present. There are eighteen patches with id_code in the range {00..08,09,..,17}. The inner subspace contains the patches subset {05,06,07,08,14,15,16,17} and the outter subspace contains the patches subset {00,01,02,03,04,9,10,11,12,13}.
Table 1.1.1. summarizes the set of spatial relations between patches in the organization of the patched bounded landscape shown in Figure 1.1.6.
#collapse_hide
#The Patch proposal of aNT's Pitch for Football has been adapted at AcEmFC
BL = nx.Graph(name='aFootball')#, patch='a', lane='central', zone='z1', half='us', poss=0,
# patch_org={0,0}, patch_max={100,100}, bip={'x':50,'y':50})
#it is a twenty_patch_zones_graph indeed
BL.add_node( 0, patch='00',pwU='inside',half='own',subsp='box')
#,zone='z1',poss=0, patch_org=(xmin,ymin),patch_max=(boxEdgeus,boxEdgeLeft),bip={'x':xcb,'y':ycb})
BL.add_node( 1, patch='01',pwU='inside',half='own',subsp='outter')
#,zone='z1',poss=0,patch_org=(xmin,boxEdgeRight),patch_max=(boxEdgeus,ymax), bip={'x':xcc,'y':ycc})
BL.add_node( 2, patch='02',pwU='inside',half='own',subsp='outter')
#,zone='z1',poss=0, patch_org=(boxEdgeus,boxEdgeLeft + gl3),patch_max=(halfwayline,boxEdgeRight - gl3),bip={'x':xcd,'y':ycd})
BL.add_node( 3, patch='03',pwU='inside',half='own',subsp='outter')
#,zone='z1',poss=0, patch_org=(boxEdgeus,boxEdgeLeft),patch_max=(halfwayline,boxEdgeLeft + gl3),bip={'x':xcf,'y':ycf})
BL.add_node( 4, patch='04',pwU='inside',half='own',subsp='outter')
#,zone='z1',poss=0, patch_org=(boxEdgeus,boxEdgeRight - gl3),patch_max=(halfwayline,boxEdgeRight),bip= {'x':xcg,'y':ycg})
BL.add_node( 5, patch='05',pwU='inside', half='own',subsp='inner')
#,zone='z1',poss=0, patch_org=(boxEdgeus,0),patch_max=(boxEdgeus + bl2us,boxEdgeLeft),bip={'x':xch,'y':ych})
BL.add_node( 6, patch='06',pwU='inside',half='own',subsp='inner')
#,zone='z1',poss=0, patch_org=(boxEdgeus,boxEdgeRight),patch_max=(boxEdgeus + bl2us,ymax), bip={'x':xcj,'y':ycj})
BL.add_node( 7, patch='07',pwU='inside',half='own',subsp='inner')
#,zone='z2',poss=0, patch_org=(boxEdgeus + bl2us,ymin),patch_max=(halfwayline,boxEdgeLeft), bip={'x':xck,'y':yck})
BL.add_node( 8, patch='08',pwU='inside',half='own',subsp='core')
#,zone='z2',poss=0, patch_org=(boxEdgeus + bl2us,boxEdgeRight),patch_max=(halfwayline,ymax), bip={'x':xcl,'y':ycl})
BL.add_node( 9, patch='09',pwU='inside',half='them',subsp='box')
#, zone='z2',poss=0, patch_org=(halfwayline,boxEdgeLeft),patch_max=(boxEdgeop,boxEdgeLeft + gl3),bip={'x':xcn,'y':ycn})
BL.add_node(10, patch='10',pwU='inside',half='them',subsp='outter')
#,zone='z2',poss=0, patch_org=(halfwayline,boxEdgeRight - gl3),patch_max=(boxEdgeop,boxEdgeRight),bip={'x':xcp,'y':ycp})
BL.add_node(11, patch='11',pwU='inside',half='them',subsp='outter')
#,zone='z2',poss=0, patch_org=(halfwayline,xmin),patch_max=(halfwayline + bl2op,boxEdgeLeft),bip={'x':xcq,'y':ycq})
BL.add_node(12, patch='12',pwU='inside',half='them',subsp='outter')
#,zone='z2',poss=0, patch_org=(halfwayline,boxEdgeRight),patch_max=(halfwayline + bl2op,ymax),bip={'x':xcr,'y':ycr})
BL.add_node(13, patch='13',pwU='inside',half='them',subsp='outter')
#,zone='z3',poss=0, patch_org=(halfwayline + bl2op,ymin),patch_max=(boxEdgeop,boxEdgeLeft),bip={'x':xcs, 'y':ycs})
BL.add_node(14, patch='14',pwU='inside',half='them',subsp='inner')
#,zone='z3',poss=0, patch_org=(halfwayline + bl2op,boxEdgeRight),patch_max=(boxEdgeop,ymax),bip={'x':xct,'y':yct})
BL.add_node(15, patch='15',pwU='inside',half='them',subsp='inner')
#,zone='z3',poss=0, patch_org=(boxEdgeop,ymin),patch_max=(xmax,boxEdgeLeft),bip={'x':xcv,'y':ycv})
BL.add_node(16, patch='16',pwU='inside',half='them',subsp='inner')
#,zone='z3',poss=0, patch_org=(boxEdgeop,boxEdgeRight),patch_max=(ymax,xmax),bip={'x':xcw,'y':ycw})
BL.add_node(17, patch='17',pwU='inside',half='them',subsp='core')
#, zone='z3',poss=0, patch_org=(boxEdgeop,boxEdgeLeft),patch_max=(xmax,boxEdgeLeft + gl3),bip={'x':xcx,'y':ycx})
BL.add_node( 18, patch='18',pwU ='perimeter',half='both',subsp='cntlateral')
#, zone='perimeter',poss=1,patch_org=(xmin,boxEdgeLeft),patch_max=(boxEdgeus,boxEdgeRight),bip={'x':xca,'y':yca})
BL.add_node(19, patch='19',pwU='perimeter',half='both',subsp='cntlateral')
#,zone='z2',poss=0, patch_org=(halfwayline,boxEdgeLeft + gl3),patch_max=(boxEdgeop,boxEdgeRight - gl3),bip={'x':xcm,'y':ycm})
BL.add_node(20, patch='20',pwU ='perimeter',half='both',subsp='lateral')
#, zone='perimeter',poss=1,patch_org=(xmin,boxEdgeLeft),patch_max=(boxEdgeus,boxEdgeRight),bip={'x':xca,'y':yca})
BL.add_node(21, patch='21',pwU ='perimeter',half='both',subsp='lateral')
#, zone='perimeter',poss=1,patch_org=(xmin,boxEdgeLeft),patch_max=(boxEdgeus,boxEdgeRight),bip={'x':xca,'y':yca})
print("aPB-Football Universe: an aPBLandscape with a Perimeter that Close the Interior")
p = CircosPlot(BL, node_labels=True,node_color='pwU')
p.draw()
#plt.savefig("../../APimages/aBlandscape_whole_aFootball")
plt.show()
#BL.node[8]['patch']
#collapse_hide
print("The aPB-Football: %d patched zones " % (BL.number_of_nodes()))
print("Nodes: ",list(BL.nodes(data='patch')))
#print("Edges: ",list(BL.nodes(data='lane')))
print("Spaces of aPB-Football", list(BL.nodes(data='pwU')))
print("Half aPB-Field Patches", list(BL.nodes(data='half')))
print("Subspaces of Patches", list(BL.nodes(data='subsp')))
#print("Coordinates limits of patched zones: ",list(BL.nodes(data='patch_org')))
#print(list(BL.nodes(data='patch_max')))
#print("Coordinates of central point of patched zones: ",list(BL.nodes(data='bip')))
#collapse_hide
BL.add_edge(0,0)
BL.add_edge(0,1)
BL.add_edge(0,2)
BL.add_edge(0,5)
BL.add_edge(1,1)
BL.add_edge(1,0)
BL.add_edge(1,3)
BL.add_edge(1,5)
BL.add_edge(1,6)
BL.add_edge(2,2)
BL.add_edge(2,0)
BL.add_edge(2,4)
BL.add_edge(2,5)
BL.add_edge(2,7)
BL.add_edge(3,2)
BL.add_edge(3,1)
BL.add_edge(3,6)
BL.add_edge(3,14)
BL.add_edge(3,16)
BL.add_edge(4,4)
BL.add_edge(4,2)
BL.add_edge(4,7)
BL.add_edge(4,12)
BL.add_edge(4,15)
BL.add_edge(5,5)
BL.add_edge(5,0)
BL.add_edge(5,1)
BL.add_edge(5,2)
BL.add_edge(5,6)
BL.add_edge(5,7)
BL.add_edge(5,8)
BL.add_edge(6,6)
BL.add_edge(6,1)
BL.add_edge(6,3)
BL.add_edge(6,5)
BL.add_edge(6,8)
BL.add_edge(6,16)
BL.add_edge(7,7)
BL.add_edge(7,2)
BL.add_edge(7,4)
BL.add_edge(7,5)
BL.add_edge(7,8)
BL.add_edge(7,15)
BL.add_edge(8,8)
BL.add_edge(8,5)
BL.add_edge(8,6)
BL.add_edge(8,7)
BL.add_edge(8,17)
BL.add_edge(9,9)
BL.add_edge(9,10)
BL.add_edge(9,11)
BL.add_edge(9,14)
BL.add_edge(10,10)
BL.add_edge(10,9)
BL.add_edge(10,12)
BL.add_edge(10,14)
BL.add_edge(10,15)
BL.add_edge(11,11)
BL.add_edge(11,9)
BL.add_edge(11,13)
BL.add_edge(11,14)
BL.add_edge(11,16)
BL.add_edge(12,12)
BL.add_edge(12,4)
BL.add_edge(12,7)
BL.add_edge(12,10)
BL.add_edge(12,15)
BL.add_edge(13,13)
BL.add_edge(13,3)
BL.add_edge(13,6)
BL.add_edge(13,11)
BL.add_edge(13,16)
BL.add_edge(14,14)
BL.add_edge(14,9)
BL.add_edge(14,10)
BL.add_edge(14,11)
BL.add_edge(14,15)
BL.add_edge(14,16)
BL.add_edge(14,17)
BL.add_edge(15,15)
BL.add_edge(15,7)
BL.add_edge(15,10)
BL.add_edge(15,12)
BL.add_edge(15,14)
BL.add_edge(15,17)
BL.add_edge(16,16)
BL.add_edge(16,6)
BL.add_edge(16,11)
BL.add_edge(16,13)
BL.add_edge(16,14)
BL.add_edge(16,17)
BL.add_edge(17,17)
BL.add_edge(17,8)
BL.add_edge(17,14)
BL.add_edge(17,15)
BL.add_edge(17,16)
BL.add_edge(18,18)
BL.add_edge(18,0)
BL.add_edge(18,1)
BL.add_edge(18,2)
BL.add_edge(19,19)
BL.add_edge(19,9)
BL.add_edge(19,10)
BL.add_edge(19,11)
BL.add_edge(20,20)
BL.add_edge(20,1)
BL.add_edge(20,3)
BL.add_edge(20,13)
BL.add_edge(20,11)
BL.add_edge(21,21)
BL.add_edge(21,2)
BL.add_edge(21,4)
BL.add_edge(21,12)
BL.add_edge(21,10)
#collapse_hide
print("aPB-Football with %d possible inter-patched zone interactions" % (BL.number_of_edges()))
print("an aPBLandscape: Perimeter {goal,sideway} 1D-subspaces that Close the Interior with {core,inner,outter} 2D-subspaces")
p = CircosPlot(BL, node_labels=True,node_color='subsp')
p.draw()
#plt.savefig("../../APimages/Circos_aBlandscape_neighborhood")
Table 1.1.1.Spatial Relations in Organized Patched Bounded Landscape
pid | wholeU | HF | subspace | 0-neighbor | 1-neighbors | 2-neighbors | 3-neighbors | 4-neighbor | 5-ne |
---|---|---|---|---|---|---|---|---|---|
00 | inside | own | outter | {00} | {01,02,05} | {03,04,06,07,08} | {12,13,15,16,17} | {10,11,14} | {09} |
01 | inside | own | outter | {01} | {00,03,05,06} | {02,07,08,13,16,17} | {04,11,14,15,17} | {09,10,12} | {09} |
02 | inside | own | outter | {02} | {00,04,05,07} | {01,06,08,12,15,17} | {03,10,14,16,18} | {09,11,13} | {09} |
03 | inside | own | outter | {03} | {01,06,13,16} | {00,05,08,11,14,17} | {02,07,09,14,15} | {04,10} | {12} |
04 | inside | own | outter | {04} | {02,07,12,15} | {00,05,08,10,14,17} | {01,06,09,14,16} | {03,11} | {13} |
05 | inside | own | inner | {05} | {00,01,02,06,07,08} | {03,04,15,16,17} | {10,11,12,13,14} | {09} | {} |
06 | inside | own | inner | {06} | {01,03,05,08,16} | {00,02,07,11,13,14,17} | {04,09,10,15} | {12} | {} |
07 | inside | own | inner | {07} | {02,04,05,08,15} | {00,01,06,10,12,14,17} | {03,09,11,16} | {13} | {} |
08 | inside | own | inner | {08} | {05,06,07,17} | {00,01,02,03,04,14,15,16} | {09,10,11,12,13} | {} | {} |
09 | inside | opp | outter | {09} | {10,11,14} | {12,13,15,16,17} | {03,04,06,07,08} | {01,02,05} | {00} |
10 | inside | opp | outter | {10} | {09,12,14,15} | {11,16,17,04,07,08} | {13,02,05,06,08} | {00,01,03} | {00} |
11 | inside | opp | outter | {11} | {09,13,14,16} | {10,15,17,03,06,08} | {10,00,04,06,07} | {00,02,04} | {00} |
12 | inside | opp | outter | {12} | {10,15,04,07} | {09,14,17,02,05,08} | {11,16,00,05,06} | {13,01} | {03} |
13 | inside | opp | outter | {13} | {11,16,03,06} | {09,14,17,01,05,08} | {10,15,00,05,07} | {12,02} | {04} |
14 | inside | opp | inner | {14} | {09,10,11,15,16,17} | {12,13,06,07,08} | {01,02,03,04,05} | {00} | {} |
15 | inside | opp | inner | {15} | {10,12,14,17,07} | {09,11,16,02,04,05,08} | {13,00,01,06} | {03} | {} |
16 | inside | opp | inner | {16} | {11,13,14,17,06} | {09,10,15,01,03,05,08} | {12,00,02,07} | {04} | {} |
17 | inside | opp | inner | {17} | {14,15,16,08} | {09,10,11,12,13,05,06} | {00,01,02,03,04} | {} | {} |
18 | perims | own | periss | {} | { } | { } | { } | { } | {} |
19 | perims | opp | periss | {} | { } | { } | { } | { } | {} |
20 | perims | opp | periss | {} | { } | { } | { } | { } | {} |
21 | perims | opp | periss | {} | { } | { } | { } | { } | {} |
Alternative views of the organization of the patched bounded landscape are shown in Figure 1.1.5. for 1-neighborhoods and in Figure 1.1.6. for team halves.
#collapse_hide
print("aPB-Football adjacency shells meso subspaces {Box, Perimeter, Inner, Outter}")
shells = [[5,6,8,16,14,15,17,7],[1,3,13,10,11,12,4,2],[0,9],[18,20,19,21]]
nx.draw_shell(BL, nlist=shells, with_labels=True, node_color='skyblue')
#plt.savefig("../../APimages/aFootball_1Neighborhood")
#collapse_hide
print("aPB-Football adjacency shells meso subspaces {Own, Them, Both}")
shells = [[1,2,3,6,8,5,7,4],[16,15,13,12,10,11,14,17],[0,9],[18,20,19,21]]
nx.draw_shell(BL, nlist=shells, with_labels=True, node_color='skyblue')
#plt.savefig("../../APimages/aFootball_team_half")
The organization of space reveals the existence of a terrain hierarchy in the patched bounded landscape that invites to responds with tasks propers of an organismic aFootball strategy.
One in which a core-modulus is a positional set up in order to play in the inner subspace and with a larger membrane-modulus positional set up. One in a kind of convex closure of a shape that contains all outter patches. It is the convex hull, a geometric computational concept that emerges from the convex space architecture as complexity of the landscape. An invitation to move and play the ball in this convex hull that currently separates inner and outter subspaces inside the perimeter.
All these relational organizations of space into subspaces and the Figure 1.1.6. that shows the shortest path patch relationships constitute the architecture of space of the patched, bounded landscape PB_Landscape.
#collapse_hide
print(sorted(z for n, z in BL.degree()))
r=dict(sorted(nx.degree(BL)))
#print(sorted(z for n, z in d.values()))
print('(',r.keys(),"\n",r.values(),')')
nx.draw(BL, nodelist=r.keys(), node_size=[v*50 for v in r.values()], with_labels=True, node_color='skyblue')
#plt.savefig("../../APimages/aFootball_Space_Architecture")
plt.show()