2017-03-16 2 views
1

J'ai fait un tétraèdre en utilisant les coordonnées de vertex et les segments de ligne en utilisant la fonction plot3d() du package {rgl}. Le code ci-dessous rend le mentioned plotRemplir la zone entre deux segments dans un tracé 3D {rgl}

library("rgl") 
CCl4=c(5,5,5,10) 
Luminol=c(0.01,0.001,0.005,0.005) 
Na2CO3=c(0.01,0.01,0.1,0.05) 

plot3d(Luminol, Na2CO3, CCl4, type = "s") 

for(i in 1:4){ 
    for(k in 1:4){ 
       segments3d(x=Luminol[c(i,k)],y=Na2CO3[c(i,k)],z=CCl4[c(i,k)]) 
       } 
     } 

Maintenant, je veux remplir la zone entre les points (de préférence en utilisant une couleur RVB, je peux définir la transparence en utilisant une valeur alpha), mais je n'ai pas trouvé un polygone() comme fonction dans rgl. Y a-t-il un moyen de remplir cette zone?

Merci d'avance.

+0

Vous pouvez également utiliser 'polygon3d()' si vous avez vraiment besoin d'un polygone général plutôt que des triangles comme décrit Mike. Je ne sais pas pourquoi vous ne pouviez pas le trouver ... – user2554330

Répondre

3

Est-ce ce que vous cherchez? N'était pas complètement clair sur la demande. J'ai ajouté de la couleur à tout pour l'aider à comprendre.

library("rgl") 
CCl4=c(5,5,5,10) 
Luminol=c(0.01,0.001,0.005,0.005) 
Na2CO3=c(0.01,0.01,0.1,0.05) 

clrs <- c("red","blue","green","darkgrey") 

plot3d(Luminol, Na2CO3, CCl4, type = "s",col=clrs) 

for(i in 1:4){ 
    clr <- clrs[i] 
    for(k in (i+1):4){ 
     v <- c(i,k) 
     segments3d(Luminol[v],Na2CO3[v],CCl4[v],color=clr) 
    } 
} 

for (i in 1:4){ 
    clr <- clrs[i] 
    v <- setdiff(1:4,i) 
    triangles3d(Luminol[v],Na2CO3[v],CCl4[v],alpha=0.5,col=clr) 
} 

rendement:

enter image description here

+0

C'est exactement ce dont nous avions besoin. Les couleurs que vous avez ajoutées étaient agréables et aident vraiment. Désolé pour le manque de clarté. Merci pour la réponse. – CristhianParedes