How to plot this feather using a mathematical equation
    2 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Ahmed Mohamed Mansoor
 el 26 de Sept. de 2022
  
    
    
    
    
    Comentada: Ahmed Mohamed Mansoor
 el 27 de Sept. de 2022
            I came across this image that intruiged me. It is a plot of a feather based on a mathematical equation. I attempted it, but couldn't get it right. Any idea how this could me done? I tried to use vectorisation method instead of a loop for now, but any method should be okay.
P.S: I'm still fairly new with MATLAB.

Here is the code I attempted
clear; close all; clc;
syms x y
f(x,y) = (-9/10) + ( 1 + (1/6) + ((1/(3*pi))*atan(30*( (3/50)-(y+(28/25)).^2 ))) )...
    .*(1-(((7*y)/10)+(2/10)).^10).*cos(x-(y/8)-(1/8)*(y+1).^2).^2000 ...
    +(1-sin((170*y)- 300*(x-(y/8)-(1/8)*(y+1).^2)^2 + (400/3)*(x-(y/8)-(1/8)*(y+1).^2)^3).^6)...
    .*((1/2)+((1/pi).*atan(400.*(1-(14.*(x-(1/20)-(y/8)-((1/8).*(y+1).^2).^2+(y.^2))).^2))));
figure()
fc = fcontour(f);
fc.LevelList = [0 0];
Would appreciate the help.
0 comentarios
Respuesta aceptada
  Davide Masiello
      
 el 26 de Sept. de 2022
        
      Editada: Davide Masiello
      
 el 26 de Sept. de 2022
  
      There:
clear,clc
[x,y]   = meshgrid(linspace(-0.4,0.9,1000),linspace(-1.5,1.1,1000));
xy = x-y/8-(1/8)*(y+1).^2;
A  = 1+1/6+atan(30*(3/50-(y+28/25).^2))/(3*pi);
B  = 1-(7*y/10+2/10).^10;
C  = 1-sin(170*y-300*xy.^2+(400/3)*xy.^3).^6;
D  = 1/2+atan(400*(1-(14*(xy-1/20).^2+y.^2).^2))/pi;
f = -9/10 + A.*B.*cos(xy).^2000 + C.*D;
f(f>0) = 1;
f(f<0) = 0;
contourf(x,y,f,[0 1])
axis equal
map = [1 1 1 ; 0 0 0];
colormap(map)
5 comentarios
  Davide Masiello
      
 el 27 de Sept. de 2022
				The code as it it now plots everything all at once.
How exactly do you want to animate it?
Más respuestas (0)
Ver también
Categorías
				Más información sobre Graphics Performance en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



