SOCR ≫ TCIU Website ≫ TCIU GitHub ≫

1 Non-Euclidean Kime Manifold

So far, we considered spacekime as 5D Euclidean space where the 2D kime is a flat space. Does it make sense to generalize kime to a non-Euclidean manifold and what is the rationale and meaning of a curved kime manifold?

We saw earlier the geometric representation of the flat spacekime using conical shapes. Let’s start with some visualization of the non-Euclidean 2D kime manifold representing the axial (transverse) planes, and the spatial dimensions are compressed into the 1D vertical axis.

library(plotly)
library(ggplot2)

# Define a vase-generating function (2D), which will be rotated to form curved kime manifold
kime.manifold <- data.frame( s=seq(0, 1.3, length.out = 200) )
kime.manifold$theta <- seq(0, 2*pi, length.out = 200)
g <- function (t) { sqrt(t^3-2.09*t^2+1.097*t) }
h <- function (t) { t }

# rendering (u==s, v==theta) 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
x2 <- g(kime.manifold$s) %o% cos(kime.manifold$theta)
y2 <- g(kime.manifold$s) %o% sin(kime.manifold$theta)
z2 <- h(kime.manifold$s) %o% rep(1, 200)
#2D plot data
xx2 <- g(kime.manifold$s) %o% cos(kime.manifold$theta)
yy2 <- rep(0,200*200)
zz2 <- h(kime.manifold$s) %o% rep(1, 200)

# calculate the diameter of every circle
xxx2<-as.vector(xx2)
zzz2<-as.vector(zz2)
newdata<-data.frame(zzz2,xxx2)
zzzz2<-as.matrix(zzz2)

#calculate every diameter
a=vector()
for(i in 1:200){
  t=max(newdata[which(zzz2==zzzz2[i,]),2])
  a=c(a,t)
}
#text the diameter and height of every circle

# phases
phi <- matrix(NA, nrow=200, ncol=200)
for (i in 1:200) {
  for (j in 1:200) phi[i,j] <- kime.manifold$theta[j]
}

mytext <- cbind(radius=a, height=zzz2[1:200], phi=phi[ ,1:200]); # tail(mytext)
custom_txt <- matrix(NA, nrow=200, ncol=200)
for (i in 1:200) {
   for (j in 1:200) {
     custom_txt[i,j] <- paste(' x: ', round(mytext[i, 2], 3),
                    '\n r: ', round(mytext[i, 1], 3),
                    '\n phi: ', round(kime.manifold$theta[j], 3)) 
   }
}

# Define kime-curve parameter
xCurve <- g(kime.manifold$s) * cos(kime.manifold$theta) 
yCurve <- g(kime.manifold$s) * sin(kime.manifold$theta)
zCurve <- h(kime.manifold$s) 

kimeCurve <- data.frame(xCurve, yCurve, zCurve)

#plot 2D into 3D and make the text of the diameter (time), height (r), and phase (phi)
f <- list(family = "Courier New, monospace", size = 18, color = "black")
x <- list(title = "k1", titlefont = f)
y <- list(title = "k2", titlefont = f)
z <- list(title = "space (x)", titlefont = f)

plot_ly(kimeCurve, x = ~xCurve, y = ~yCurve, z = ~zCurve, type = 'scatter3d', 
             mode = 'lines', showlegend = F, # name="Kime-space curve projection on Kime-surface",
             line = list(width = 22), name="SK curve") %>%
  add_trace(x = ~xx2, y = ~yy2, z = ~zz2, type = "surface", name="Spacekime leaf",
        text = custom_txt, hoverinfo = "text", showlegend = FALSE) %>% 
  add_trace(x=~x2, y=~y2, z=~z2, name="SK manifold",
                  colors = c("blue", "yellow"),type="surface", 
                  opacity=0.5, showscale = FALSE, showlegend = FALSE) %>%
        # trace the main Z-axis
  add_trace(x=0, y=0, z=~zz2[, 1], type="scatter3d", mode="lines", 
                  line = list(width = 10, color="navy blue"), name="Space(x)", 
                  hoverinfo="none", showlegend = FALSE) %>%
  layout(dragmode = "turntable", title = "Non-Euclidean Kime Manifold (1D space, 2D kime)",
               scene = list(xaxis = x, yaxis = y, zaxis = z), showlegend = FALSE)
SOCR Resource Visitor number Web Analytics SOCR Email