Disegno di una superficie

di il
1 risposte

Disegno di una superficie

Salve a tutti, questo è il mio primo post, quindi perdonatemi qualche strafalcione.
Ho il seguente problema da risolvere con Matlab.

Considerare il quadrato Q=[0,1]x[0,1] del piano (x,y),
disegnare la funzione f(x,y) che vale

1 se sqrt( (x - 1/2)^2 + (y - 1/2)^2 ) <1/2
cioe' all'interno del cerchio di centro ( 1/2 , 1/2 ) e raggio 1/2

0 altrimenti (cioe' nei quattro spicchi di piano del piano z=0
tra Q e la circonferenza)



Posto il codice: ho disegnato la parte di superficie nella quale assume il valore 1,
ma non sono capace di andare avanti.




a=1/2;
b=200;

[u v]= meshgrid( 0 : 1/b : 1 );

x=a+a*cos(2*pi*u).*cos(2*pi*v);
y=a+a*cos(2*pi*u).*sin(2*pi*v);
z=ones(b+1,b+1);


map=((x-a).^2-(y-a).^2);

surf(x,y,z,map);

shading interp;
axis equal;
axis square;
axis([0 1 0 1 0 1]);

Grazie in anticipo per ogni suggerimento.

1 Risposte

  • Re: Disegno di una superficie

    Ti posto il metodo grezzo:
    
    function ret = disegno()
    b = 200;
    x = [0:(1/b):1];
    y = [0:(1/b):1];
    z = zeros(length(x),length(y));
    for i = 1:length(x)
        for j = 1:length(y)
            z(i,j) = cerchio(x(i),y(j));
        end
    end
    surf(x,y,z);
    function ret = cerchio(x,y)
    if sqrt((x-0.5)^2+(y-0.5)^2) < 0.5
        ret = 1;
    else
        ret = 0;
    end
    
    magari trovi un modo per semplificarlo, comunque definire una funzione che fa 1 dove vuoi e 0 dove vuoi mi sembra un buon punto di partenza; poi puoi anche applicare tale funzione a una matrice che ha come componenti le coppie coordinate
Devi accedere o registrarti per scrivere nel forum
1 risposte