cilindri

La funzione

[X,Y,Z] = cylinder(r,n)

 

restituisce le coordinate x, y e z di un cilindro con la curva del profilo specificata nel vettore r e n punti equidistanti attorno alla sua circonferenza. La dimensione di ciascuna matrice di coordinate è mx(n+1), dove m è il numero di elementi di r. Se però r è uno scalare, allora m=2.
OSSERVAZIONI:
  • Per traslare una figura sul piano xy è sufficiente sommare un offset ai valori di X e Y.
  • La coordinata z generata va sempre da 0 a 1, per spostare la figura lungo l'asse z è sufficiente sommare a Z un offset. 
  • Poichè la curva di profilo è arbitraria, è possibile disegnare anche figure geometriche diverse.

Esempi:

>> r = 5;
>> n = 30;
>> [X,Y,Z] = cylinder(r,n);
>> surf(X,Y,Z)
>> r = 5;
>> n = 30;
>> [X,Y,Z] = cylinder(r,n);
>> offsetX = 2;
>> offsetY = 3;
>> offsetZ = 1;
>> X = X + offsetX;
>> Y = Y + offsetY;
>> Z = Z + offsetZ;
>> surf(X,Y,Z);
 
>> numeroRaggi = 20;
>> r = linspace(40,0,numeroRaggi);
>> n = 30;
>> [X,Y,Z] = cylinder(r,n);
>> surf(X,Y,Z);

>> t = 0:pi/10:2*pi;
>> r = 2 + cos(t);
>> n = 30;
>> [X,Y,Z] = cylinder(r,n);
>> surf(X,Y,Z);
 

>> r = 5;
>> n = 4; % disegna un parallelogramma!
>> [X,Y,Z] = cylinder(r,n);
>> surf(X,Y,Z);
>> axis equal;

Se si vuole ruotare la forma è possibile usare la funzione rotate sull'oggetto grafico generato da surf.

rotate(h, direzione, angolo)

ruota l'oggetto grafico h di un angolo spefificato; direzione è un vettore a due o tre elementi che descrive l'asse di rotazione insieme all'origine dell'asse di rotazione. L'origine predefinita dell'asse di rotazione è il centro del plot box (). Questo punto non è necessariamente l'origine degli assi.

L'alfa positivo è definito come l'angolo della regola della mano destra attorno al vettore di direzione mentre si estende dall'origine della rotazione.

>> r = 1;
>> n = 30;
>> [X,Y,Z] = cylinder(r,n);
>> h = surf(X,Y,Z);
>> direzione = [1 0 0]; % rotazione attorno all'asse x
>> angolo = 30; % angolo in gradi
>> rotate(h, direzione, angolo);
>> r = 1;
>> n = 4;
>> [X,Y,Z] = cylinder(r,n);
>> h = surf(X,Y,Z);
>> direzione = [0 0 1]; % rotazione attorno all'asse z
>> angolo = 45; % angolo in gradi
>> rotate(h, direzione, angolo);
Sfere

La funzione

[X,Y,Z] = sphere(n)

restituisce le coordinate x, y e z di una sfera di raggio unitario formata da nxn facce.

Esempi:

>> n = 30;
>> [X,Y,Z] = sphereNo;
>> surf(X,Y,Z);
>> axis equal;
>> n = 10;
>> [X,Y,Z] = sphereNo;
>> surf(X,Y,Z);
>> axis equal;

Per traslare la sfera si modificano le matrici X Y Z introducendo delle traslazioni, mentre per variare il raggio della sfera è sufficiente moltiplicare le matrici X Y Z per il raggio (attenzione: PRIMA dell'eventuale traslazione).

>> n = 30;
>> [X,Y,Z] = sphereNo;
>> offsetX = 2;
>> offsetY = 3;
>> offsetZ = 1;
>> X = X + offsetX;
>> Y = Y + offsetY;
>> Z = Z + offsetZ;
>> surf(X,Y,Z);
>> axis equal;
>> r = 5;
>> n = 30;
>> [X,Y,Z] = sphereNo;
>> X = X * r;
>> Y = Y * r;
>> Z = Z * r;
>> surf(X,Y,Z);
>> axis equal;
Ellisoidi

La funzione

[X,Y,Z] = ellipsoid(xc,yc,zc,xr,yr,zr,n)

restituisce le coordinate X, Y e Z di un ellissoide con centro in (xc,yc,zc), lunghezze dei semiassi (xr,yr,zr) e nxn facce.

Esempi:

>> [X,Y,Z] = ellipsoid(0, 0, 0, 1, 1, 2);
>> surf(X,Y,Z);
>> axis equal;
>> [X,Y,Z] = ellipsoid(1, 1, -1, 1, 1, 2);
>> surf(X,Y,Z);
>> axis equal;
 

>> [X,Y,Z] = ellipsoid(0, 0, 0, 1, 1, 2);
>> h = surf(X,Y,Z);
>> axis equal;
>> direzione = [1 0 0];
>> angolo = 45;
>> rotate(h, direzione, angolo);






Ultime modifiche: lunedì, 1 gennaio 2024, 16:24