Å gjøre en 3D-sylinder ut av et polygon

stemmer
0

Jeg har en polygon som jeg ønsker å konvertere til en sylindrisk 3D-objekt for en illustrasjon:

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)

skriv

Jeg kan ikke få hodet mitt rundt hvordan du legger z-aksen med verdier 2 og 5 for eksempel:

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

skriv

Jeg ønsker å gjøre ansiktene farget og tilkoblet. Noe som sylindere på Wikipedia illustrasjoner , men selvsagt ikke avsluttes runden, men de polygoner i stedet. tringles3deller polygon3dfunksjoner er trolig hva jeg skal bruke hvis jeg brukte RGL pakken, men jeg forstår ikke hvordan de skal restrukturere min data.frame. Jeg trenger ikke å gjøre dette i RGL. Det var bare R-pakken som virket mest mulig for denne oppgaven. Hvordan skal jeg omorganisere mine data for å plotte 3D sylinder?

Publisert på 03/12/2019 klokken 00:00
kilden bruker
På andre språk...                            


1 svar

stemmer
1

Du må bruke extrude3dfor å lage en "ekstrudering" av polygon. For eksempel, med xsom definert i spørsmålet,

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

produserer dette bildet (etter noen manuell rotasjon):

skjermbilde

Den bruker x[-1,], fordi du gjentok første toppunktet på slutten: det ønsker unike toppunkter.

Fargingen er slags morsomt: å trekke sekskantene på hver ende, rgltrekker 4 trekanter, og hver blir behandlet som en separat flate i den hensikt å farge. Hvis du vil ha solide farger det, husk at endene er trukket først: så bruk noe sånt

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

i stedet.

Den andre morsomme argument til extrude3der thickness: polyhedron trekkes mellom z=0og z=thickness. Siden du ønsket z2-5, det thicknesser tre, og resultatet må oversettes inntil 2 enheter i z.

Det er også cylinder3d, som brukes for å generere rørformede strukturer, men extrude3der enklere å bruke hvis du bare vil at polygon å dukke opp på to steder i rette vinkler til sidene.

Svarte 03/12/2019 kl. 01:18
kilden bruker

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