# zmena adresare, nacteni knihoven, atd. setwd('/home/mojmir/projects/muni/antropologie') library(rgl) source('procrustes_algo.R') # nacteni dat data = 'TODO' # (1) # vycet landmarku ktere budeme pouzivat landmarks = c('G', 'TODO...') # pipravime pole, ktere nasledne naplnime pocet_jedincu = 'TODO' # pouzijte funkci nrow nebo dim pocet_landmarku = 'TODO' # pouzijte funkci length skull.lmks.array = array(dim=c(pocet_landmarku,3,pocet_jedincu)) # naplneni pole # TODO: Toto je pouze priklad pro jeden bod. Vytvorte for cyklus, ktery projde # vsemi landmarky a vlozi je do matice landmark = 'G' sloupce = c(paste0('x.', landmark), paste0('y.', landmark), paste0('z.', landmark)) skull.lmks.array[1,,] = t(data[,sloupce]) # (2) # procrustova registrace PSC = procrust(skull.lmks.array) PMS = apply(PSC, c(1,2), mean) # priradime jmena dimenzim dimnames(skull.lmks.array)[[1]] <- landmarks # co predstavuje druha dimenze? jake by mela mit nazvy? dimnames(skull.lmks.array)[[2]] <- 'TODO' # (3) # TODO # (4) # wireframe open3d() rgl.viewpoint(theta = -30,phi = 0,fov=30,zoom=0.7) bg3d("white") par3d(windowRect=c(100,100,1600,1600)) # lmks1 jsou indexy bodu z landmarks # v tomto pripade G, B, L, OP # TODO: pouzijte prikaz landmarks[lmks1] k vypsani bodu lmks1 <- c(1,7,8,9) spheres3d(PMS[lmks1 ,],radius = 0.01,col="green",add=TRUE) # 1,7 udava prvni spojnici, 7,8 druhou spojnici, 8,9 treti spojnici krivka1 <- c(1,7,7,8,8,9) segments3d(PMS[krivka1 ,],col="green",lwd=5,add=TRUE) lmks2L <- 'TODO' spheres3d(PMS[lmks2L ,],radius=0.01,col="red",add=TRUE) krivka2L <- 'TODO' segments3d(PMS[krivka2L ,],col="red",lwd=5,add=TRUE) lmks2R <- 'TODO' spheres3d(PMS[lmks2R ,],radius=0.01,col="red",add=TRUE) krivka2R <- 'TODO' segments3d(PMS[krivka2R ,],col="red",lwd=5,add=TRUE) # landmarky baze lebky cernou barvou baze <- 'TODO' spheres3d(PMS[baze,],radius=0.01,col="TODO",add=TRUE) # (5) # TODO # (6) PMS.muzi = 'TODO' PMS.zeny = 'TODO' # zvetseni rozdilu mezi muzi a zenami # TODO: zkuste pouzit jine cislo nez 10, napr. 1 nebo 30 PMS.muzi = PMS.muzi + 10*(PMS.muzi - PMS.zeny) open3d() rgl.viewpoint(theta = -30,phi = 0,fov=30,zoom=0.7) bg3d("white") par3d(windowRect=c(100,100,1600,1600)) spheres3d(PMS.muzi[lmks1 ,],radius = 0.01,col="blue",add=TRUE) # TODO: vykreslete vsechny ostatni krivky a landmarky stejne jako ve 4. casti # pokud si chcete usetrit praci, muzete si udelat funkci # vykresli_body = function(PMS, barva){ # spheres3d(PMS[lmks1 ,],radius = 0.01,col=barva,add=TRUE) # ... # } # a pak ji volat pomoci # vykresli_body(PMS.muzi, 'blue') # vykresli_body(PMS.zeny, 'red')