processing
Podstawowe kształty i funkcje za pomocą P3D
Szukaj…
Składnia
- tłumaczyć (float x, float y, float z)
- rotateX (kąt pływaka)
- rotateY (kąt pływaka)
- rotateZ (kąt pływaka)
- pudełko (rozmiar pływaka)
- box (float w, float h, float d)
Parametry
Parametry | Detale |
---|---|
kąt | kąt w radianach |
rozmiar | wymiar pudełka, który będzie używany dla wszystkich jego wymiarów |
w | wymiar pudełka na x-axis |
h | wymiar ramki w y-axis |
re | wymiar ramki w z-axis |
Tłumaczenie 3D
Oto jak tłumaczyć obiekty w P3D:
size(200, 200, P3D); //Starting P3D renderer
fill(255, 0, 0, 150); //transparent red
rect(10, 10, 100, 100); //first rectangle
fill(0, 0, 255, 150); //transparent blue
translate(50, 50, 50); //translate x, y and z by 50 pixels
rect(0, 0, 100, 100); //second rectangle (same dimensions as the first one)
Czerwony: pierwszy prostokąt Niebieski: drugi prostokąt
Jak widać z powyższego szkicu, drugi prostokąt wydaje się być większy niż pierwszy, gdy w rzeczywistości jest on „bliżej” ekranu w wyniku przesunięcia prostokąta o 50
pikseli wzdłuż z-axis
(i Oczywiście, prostokąt przeliczono po x
i y
osi).
Obrót 3D
Istnieją trzy funkcje obrotu 3D: obrót rotateX(angle)
, rotateY(angle)
i rotateZ(angle)
dla obrotu w odpowiednich osiach, gdzie angle
jest w radianach.
size(200, 200, P3D); //Starting P3D renderer
fill(255, 0, 0, 150); //transparent red
translate(width/2, height/2);//translate to centre, ie (100, 100)
rectMode(CENTER);//This makes the rectangle centre in (100, 100)
rect(0, 0, 100, 100); //first rectangle
fill(0, 0, 255, 150); //transparent blue
rotateX(PI/4); //rotate in the x-axis by PI/4 radians (45 degrees)
rect(0, 0, 100, 100); //second rectangle (same dimensions as the first one)
rotateY(radians(45)); //rotate in the y-axis by passing the radians conversion of 45 degrees
rotateZ(3*PI/4); //rotate in the z-axis by 3*PI/4 radians (270 degrees)
Uwaga: transformacje (takie jak tłumaczenia i rotacje) dodają się do poprzedniej transformacji.
Rysowanie prostopadłościanu
Aby narysować prostopadłościan, musisz użyć funkcji box()
, podając jej wymiary jako parametry.
size(200, 200, P3D); //Starting the P3D renderer
translate(width/2, height/2); //Translating to the centre of the sketch
rotateY(PI/4); //rotate so that...
rotateX(PI/6); //... it will be easy to see the box
noFill(); //disabling the box's fill, so that we will be able to see its edges
box(100, 50, 75); //the box function requires its dimensions as its parameters
Zauważ, że funkcja
box()
nie przyjmuje swojej pozycji jako parametrów
Istnieje również sposób na wywołanie funkcji box()
pomocą tylko jednego parametru. W tym przypadku będzie to sześcian.
stroke(0, 100, 255); //change the edges' colour
fill(0, 0, 255); //fill the `box` in a blue colour
box(100); //draw a cube