SOCR ≫ | TCIU Website ≫ | TCIU GitHub ≫ |
A schematic of the 5D spacekime manifold, two cones representing space (\(\mathbb{R}^3\)) - kime (\(\mathbb{R}^2\))
Complex-time (kime) can be defined using polar coordinates, \(\kappa = t\ e^{i \varphi}\).
Kime naturally extends time, \(\kappa = t\ e^{i \varphi}\), i.e., time is just the magnitude of kime, \(t=|\kappa|\). The time domain \((t\in\mathbb{R}^+)\) is a subgroup of the multiplicative group of the reals, whereas kime \((\kappa\in\mathbb{C})\) is the smallest algebraically closed prime field that naturally extends the time domain. The time domain of the positive reals is ordered, but its kime extension is not. The kime domain, \(\mathbb{C}\), represents the smallest natural extension of time, as a complete filed that covers time.
This Figure shows the spacekime representation of observable processes indexed by space, reduced to 1D, and kime (2D). At a given spatial location (\(x\)), the red balls scattered along the circle of fixed radius (time) represent the repeated process measurements from the experimentally controlled trials colocalized in spacetime.
# parameter space sweep for the spherical coordinates
phi <- seq(from = 0, to = 2*pi, by = ((2*pi - 0)/(200 - 1)))
psi <- seq(from = 0, to = pi, by = ((pi - 0)/(200 - 1)))
# shape=="cone1")
# rendering (u,v) parametric surfaces requires x,y,z arguments to be 2D arrays
# In out case, the three coordinates have to be 200*200 parameterized tensors/arrays
h1= 10 # cone height
r1 = seq(from = 0, to = h1, by = ((h1 - 0)/(200 - 1))) # r = radius
x1 = 20* ((h1 - r1)/h1 ) %o% rep(1, 200) # x = 3*r
y1 = 3* ((h1 - r1)/h1 ) %o% sin(phi) # y = r*sin(phi)
z1 = 3* ((h1 - r1)/h1 ) %o% cos(phi) # z = r*cos(phi)
# circle1 boundary
x11 = rep(20, 200) %o% rep(1, 200) # x = 20
y11 = 3* ((h1 - r1)/h1 ) %o% sin(phi) # y = r*sin(phi)
z11 = 3* ((h1 - r1)/h1 ) %o% cos(phi) # z = r*cos(phi)
# randomly kime-phase sample points on cone3
randX1 <- sample((dim(x1))[2], 10)
# shape=="cone2")
h2= 10 # cone height
r2 = seq(from = 0, to = h2, by = ((h2 - 0)/(200 - 1))) # r = radius
x2 = 20* ((h2 - r2)/h2 ) %o% rep(1, 200) # x = 3*r
y2 = 2* ((h2 - r2)/h2 ) %o% sin(phi) # y = r*sin(phi)
z2 = 2* ((h2 - r2)/h2 ) %o% cos(phi) # z = r*cos(phi)
# circle2 boundary
x21 = rep(20, 200) %o% rep(1, 200) # x = 20
y21 = 2* ((h2 - r2)/h2 ) %o% sin(phi) # y = r*sin(phi)
z21 = 2* ((h2 - r2)/h2 ) %o% cos(phi) # z = r*cos(phi)
# shape=="cone3")
h3= 10 # cone height
r3 = seq(from = 0, to = h3, by = ((h3 - 0)/(200 - 1))) # r = radius
x3 = 15* ((h3 - r3)/h3 ) %o% rep(1, 200) # x = 3*r
y3 = 3* ((h3 - r3)/h3 ) %o% sin(phi) # y = r*sin(phi)
z3 = 3* ((h3 - r3)/h3 ) %o% cos(phi) # z = r*cos(phi)
# circle3 boundary
x31 = rep(15, 200) %o% rep(1, 200) # x = 15
y31 = 3* ((h3 - r3)/h3) %o% sin(phi) # y = r*sin(phi)
z31 = 3* ((h3 - r3)/h3) %o% cos(phi) # z = r*cos(phi)
shape_names <- c("all", "cone1", "cone2", "cone3")
# https://plot.ly/r/custom-buttons/
# updatemenus component
updatemenus <- list(
list(
active = -1,
type = 'buttons',
buttons = list(
list(
label = shape_names[1],
method = "update",
args = list(list(visible = c(TRUE, TRUE, TRUE, TRUE)),
list(title = shape_names[1]))),
list(
label = shape_names[2],
method = "update",
args = list(list(visible = c(TRUE, FALSE, FALSE, FALSE)),
list(title = shape_names[2]))),
list(
label = shape_names[3],
method = "update",
args = list(list(visible = c(TRUE, TRUE, FALSE, FALSE)),
list(title = shape_names[3]))),
list(
label = shape_names[4],
method = "update",
args = list(list(visible = c(TRUE, FALSE, FALSE, TRUE)),
list(title = shape_names[4])))
)
)
)
p <-
plot_ly(showscale = FALSE) %>%
# add cone1
# Randomly sample points (kime-phase sampling) the boundary of cone1 surface
add_trace(x=~x1[1,randX1], y=~y11[1,randX1], z=~z11[1,randX1], type="scatter3d",
mode="markers", marker = list(size = 10, color="red"), name="Phase-Samples",
text = paste0("Kime-Phase:\n", " space=", 20, "\n time=|kime|=", h1,
"\n kime-phase=", round((phi[randX1])-pi,2))) %>%
add_trace(x = ~x1, y = ~y1, z = ~z1, type = 'surface', opacity=0.3, visible=T,
contour=list(show=F, color="#000", width=15, lwd=10,
opacity=0.5, hoverinfo="none", legendshow=F)) %>%
# add cone2
add_trace(x = ~x2, y = ~y2, z = ~z2, type='surface', opacity=0.4,visible=T,
contour=list(show=F, color="#000", width=15, lwd=10,
opacity=0.5, hoverinfo="none", legendshow=F)) %>%
# add cone3
add_trace(x = ~x3, y = ~y3, z = ~z3, type='surface', opacity=0.5,visible=T,
contour=list(show=F, color="#000", width=15, lwd=10,
opacity=0.5, hoverinfo="none", legendshow=F)) %>%
#
#
# trace the x-axis
add_trace(x=~1.1*x1[,1], y=0, z=0, type="scatter3d", mode="lines",
line = list(width = 10, color="light blue"), name="Z",
hoverinfo="none", legendshow=F) %>%
#
#
# trace the boundary of cone1 surface
add_trace(x=~x1[1,], y=~y11[1,], z=~z11[1,], type="scatter3d", mode="lines",
line = list(width = 10, color="red"), name="Surface Boundary",
hoverinfo="none", legendshow=F) %>%
# add center for kime circle1 at location x1
add_trace(x=~x1[1,1], y=0, z=0, type="scatter3d", mode="markers",
marker = list(size = 10, color="red"), name="Z",
hoverinfo="none", legendshow=F) %>%
# trace the boundary of cone2 surface
add_trace(x=~x2[1,], y=~y21[1,], z=~z21[1,], type="scatter3d", mode="lines",
line = list(width = 10, color="green"), name="Surface Boundary",
hoverinfo="none", legendshow=F) %>%
# trace the boundary of cone3 surface
add_trace(x=~x3[1,], y=~y31[1,], z=~z31[1,], type="scatter3d", mode="lines",
line = list(width = 10, color="blue"), name="Surface Boundary",
hoverinfo="none", legendshow=F) %>%
# add center for cime circle3 at location x3
add_trace(x=~x3[1,1], y=0, z=0, type="scatter3d", mode="markers",
line = list(width = 10, color="navy blue"), name="Z",
hoverinfo="none", legendshow=F) %>%
# layout
layout(title = "Schematic of Space (1D) and Kime (2D) Representaiton", showlegend = FALSE,
scene = list(xaxis=list(title="space"), yaxis=list(title="kappa1"),
zaxis=list(title="kappa2")),
updatemenus = updatemenus)
p