Dokonywanie cylinder 3D z wielokąta

głosy
0

Mam wielokąta, które chciałbym skonwertować do cylindrycznego obiektu 3D na ilustracji:

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)

wprowadzić

Nie mogę uzyskać moja głowa wokół jak dodać oś Z wartości 2 i 5, na przykład:

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

wprowadzić

Chciałbym zrobić kolorowe twarze i podłączone. Coś jak cylindry na ilustracjach Wikipedii , ale naturalnie nie okrągłych końcach, ale ci zamiast wielokątów. tringles3dlub polygon3dfunkcje są prawdopodobnie co powinno się używać, jeśli użyłem pakiet RGL, ale nie rozumiem, jak mój data.frame restrukturyzacji. Nie muszę to zrobić w RGL. To było po prostu pakiet R, który wydawał najbardziej wykonalne dla tego zadania. W jaki sposób należy zreorganizować moich danych wykreślić cylinder 3D?

Utwórz 03/12/2019 o 00:00
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
1

Trzeba użyć extrude3d, aby stworzyć „wyciskanie” swojego wielokąta. Na przykład, xzgodnie z definicją w pytaniu

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

produkuje ten obraz (po pewnym ręcznego obracania):

zrzut ekranu

Wykorzystuje ona x[-1,], bo powtórzył pierwszy wierzchołek na końcu: chce unikalnych wierzchołków.

Zabarwienie to zabawne: wyciągnąć sześciokątów na każdym końcu, rglopiera 4 trójkąty, a każda z nich jest traktowany jako osobna twarzy w celu barwienia. Jeśli chcesz tam stałe kolory, należy pamiętać, że końce są rysowane najpierw: tak użyć czegoś podobnego

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

zamiast.

Drugi zabawny argument extrude3djest thickness: wielościan jest zasysane pomiędzy z=0i z=thickness. Ponieważ chciał zod 2 do 5, thicknesswynosi 3, a wynik musi zostać przetłumaczony się 2 jednostki w §.

Jest też cylinder3d, który jest stosowany do wytwarzania struktur rurowych, ale extrude3djest prostszy w użyciu, jeśli tylko chcesz, żeby Twój wielokąt, aby pokazać się w dwóch miejscach pod kątem prostym do boków.

Odpowiedział 03/12/2019 o 01:18
źródło użytkownik

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