Given an equation, i have to graph it in 3D and it should look like a water ripple

hi. i need help urgently. i was given an equation: z(x,y)=(amp*cos(sqrt((x^2+y^2)*const1))/exp((x^2+y^2)*const2)) amp is the amplitude which is 200 and x and y range from 0 to 100 const1 and const2 can be any number I am required to surf plot this equation so that it can look like a water ripple.
Please help me

 Accepted Answer

amp=200;
[x,y]=meshgrid(0:100,0:100);
const1=1;
const2=0.001;
z=(amp*cos(sqrt((x.^2+y.^2)*const1))./exp((x.^2+y.^2)*const2));
surf(x,y,z)

11 Comments

hi..thnx...i tried the code but the graph is no way near the solution which is a water ripple....please help
You can see the ripples by rotating the graph, tweak the values of const1 and const2 for better results.
the ripples have to be circular..i am sorry..i am very bad at this stuff and need the answer today.please could you help me
amp=200;
[x,y]=meshgrid(-100:100,-100:100);
const1=1;
const2=0.001;
z=(amp*cos(sqrt((x.^2+y.^2)*const1))./exp((x.^2+y.^2)*const2));
surf(x,y,z)
thank you very much....i appreciate it
i got one more question....how can you make the graph look more smoother ?
make more points inside the mesh, example
amp=2;
[x,y]=meshgrid(-50:0.6:50,-50:0.6:50); %notice the new limits and step 0.6
%smaller steps give smother waves but use more memory and takes more time
const1=1;
const2=0.001;
z=(amp*cos(sqrt((x.^2+y.^2)*const1))./exp((x.^2+y.^2)*const2));
surf(x,y,z)
colormap(winter) %looks more natural with this colormpa
here's a better version
amp=200;
[x,y]=meshgrid(-50:.1:50,-50:.1:50);
const1=1;
const2=0.001;
z=(amp*cos(sqrt((x.^2+y.^2)*const1))./exp((x.^2+y.^2)*const2));
s=surf(x,y,z);
colormap(winter)
set(s, 'edgecolor','none') %without the black lines, closer to real water ripples
for even better results use set(s, 'edgecolor','none','FaceColor','interp')
that removes the black lines and other colored lines, also the meshgrid can be created like this [x,y]=meshgrid(-50:.1:50); because both arguments were the same vector.
finally you might want some transparency on your water ripples, add this line to the end of the code: alpha(0.9) %the argument must be inside the interval [0 1]
Thanks....now it looks exactly as i wanted to be...much appreciated mate

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!