setwd('~/projects/muni/antropologie') # install.packages('rgl') library(rgl) # nacteme funkce ze souboru procrustes_algo.R source('procrustes_algo.R') # nacteme data "data-3d-base-xyz.txt" data = read.table("data-3d-base-xyz.txt", header=T) # nacteme body do matic 60 x 3 (mame 60 lidi) B = as.matrix(data[,c('x.B', 'y.B', 'z.B')]) BA = as.matrix(data[,c('x.BA', 'y.BA', 'z.BA')]) POsin = as.matrix(data[,c('x.POsin', 'y.POsin', 'z.POsin')]) POdx = as.matrix(data[,c('x.POdx', 'y.POdx', 'z.POdx')]) # (1) # transformace z matic do pole M = array(0, c(4, 3, nrow(data))) M[1,,] = t(B) M[2,,] = t(BA) M[3,,] = t(POsin) M[4,,] = t(POdx) # pocet jedincu a landmarku cat('Pocet jedincu je', 'TODO', '\n') cat('Pocet landmarku je', 'TODO', '\n') # (2) # procrustova registrace PSC = procrust(M) # vypocet prumerneho tvaru PMS = apply(PSC, c(1,2), mean) # (3) # priprava na 3D vykresleni open3d() # otvorenie 3D okna rgl.viewpoint(theta = 0,phi = 0,fov=30,zoom=0.7) # nastavenie uhla pohladu azvacsenia bg3d("white") # nastavenie farby pozadia par3d(windowRect=c(100,100,1600,1600)) # nastavenie velkosti 3D okna # vykreslime 3D procrustovske souradnice vsech 60 jedincu n = 'TODO' 'TODO - vykreslete pro vsech 60 jedincu misto jednoho' spheres3d(PSC[,,1],radius=0.01,col="black",add=TRUE) # PMS souradnice spheres3d(PMS ,radius=0.02,col="red",add=TRUE) # ulozeni do obrazku rgl.snapshot("3d.png","png") # (4) # PMS pro muze a zeny sex = data$sex PSC.F = PSC[,,data$sex == 'F'] PMS.F = 'TODO' PSC.M = 'TODO' PMS.M = 'TODO' 'TODO' # (5) # jmena misto bodu open3d() rgl.viewpoint(theta = 0,phi = 0,fov=30,zoom=0.7) bg3d("white") par3d(windowRect=c(100,100,600,600)) lmks.mena = c("TODO","TODO","TODO","TODO") text3d(PMS ,texts=lmks.mena) rgl.snapshot("TODO","png")