Fare un cilindro 3D di un poligono

voti
0

Ho un poligono che vorrei convertire in un oggetto cilindrico 3D per un'illustrazione:

x <- structure(list(x = c(7.99, 6.25, -1.77, -1.8, -0.48, 3.93, 7.99
), y = c(2.84, 2.31, 2.43, 2.98, 3.19, 3.26, 2.84)), row.names = c(NA, 
7L), class = data.frame)

plot(x$x, x$y, type = n)
polygon(x$x, x$y, col = blue)
points(x$x, x$y)

entrare

Non riesco a ottenere la mia testa intorno a come aggiungere asse z con i valori 2 e 5, ad esempio:

library(rgl)
lines3d(x = rep(x$x, 2), y = rep(x$y, 2), z = rep(c(2, 5), each = nrow(x)))

entrare

Vorrei fare i volti colorati e collegati. Qualcosa come i cilindri sulle illustrazioni di Wikipedia , ma finisce, naturalmente, non rotonde, ma quei poligoni invece. tringles3do polygon3dfunzioni sono probabilmente ciò che dovrei usare se ho usato il pacchetto RGL, ma non capisco come ristrutturare il mio data.frame. Non ho bisogno di fare questo in RGL. Questo è stato solo il pacchetto R che sembrava più fattibile per questo compito. Come devo fare per riorganizzare i miei dati per tracciare il cilindro 3D?

È pubblicato 03/12/2019 alle 00:00
fonte dall'utente
In altre lingue...                            


1 risposte

voti
1

È necessario utilizzare extrude3dper creare un "estrusione" del poligono. Ad esempio, con xquale definito nella questione,

x[-1,] %>% 
  extrude3d(thickness = 3, material = list(col = rainbow(14)),
            meshColor = "faces") %>%
  translate3d(x = 0, y = 0, z = 2) %>%
  shade3d()

produce questa immagine (dopo una certa rotazione manuale):

immagine dello schermo

Esso utilizza x[-1,], perché è ripetuto il primo vertice alla fine: vuole vertici unici.

La colorazione è una specie di divertente: per disegnare gli esagoni su ciascuna estremità, rglpesca 4 triangoli, e ciascuno è trattato come una faccia distinta ai fini della colorazione. Se si desidera che i colori solidi lì, si ricordi che le estremità sono disegnati prima: così l'uso qualcosa di simile

material = list(col = rainbow(8)[c(1,1,1,1,2,2,2,2:8)])

anziché.

L'altro argomento divertente extrude3dè thickness: il poliedro è tracciata tra z=0e z=thickness. Poiché si voleva zdal 2 al 5, il thicknessè 3, e il risultato deve essere tradotto fino a 2 unità z.

C'è anche cylinder3d, che viene utilizzato per la generazione di strutture tubolari, ma extrude3dè più semplice da utilizzare se solo si desidera che il poligono di presentarsi in due posti ad angolo retto ai lati.

Risposto il 03/12/2019 a 01:18
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more