Creating a solid/surface of revolution from discrete data?

조회 수: 11 (최근 30일)
Juhani
Juhani 2013년 3월 29일
답변: AliDomi 2016년 12월 16일
Hi, I have 3 sets of discrete data from an airjet experiment, which roughly form velocity profiles when plotted: http://oi47.tinypic.com/i1b0v5.jpg
I now want form a solid/surface of rotation about y=0 for that graph (rotated only 180deg), and a 3D plot of it. How do I do that?
I've tried the cylinder function, but how do I change the axis of rotation and how can I tell it to 'only rotate through 180 degrees, not 360'?

답변 (3개)

Doug Hull
Doug Hull 2013년 3월 29일
The profile you give represents the radius. Set it to whatever you want. Then you can translate the surface by adding a constant in each direction.
As for rotating only partial, you could filter the data that comes out of cylinder, throwing out the parts you do not want.

Kiran Sagar
Kiran Sagar 2013년 3월 29일
First of all your velocity profile is not symmetric about y=0, so if you rotate that graph by 180, you will not get a closed surface of rotation. Technically, it should not be called as a surface of rotation.
If you have velocity data in one plane only, then it is better not to represent the same profile over the whole angular domain (in 3D).
But if you have velocity profile in different planes, then you can use the "sftool" to get the best 3D fit of the points. More the no of planes, better will be the fit.
  댓글 수: 1
Juhani
Juhani 2013년 3월 30일
Yeah I realise the data is very limiting and asymmetric but that's kinda the point I want to make with the plots. And no I don't have profiles in other planes, which is why I want to do a rotation. Come to think of it, I want to rotate it +/-90 degrees either side of the plane as it's a profile in a vertical plane.
Is there a way to specify the axis of rotation and the angle of rotation in the cylinder function?

댓글을 달려면 로그인하십시오.


AliDomi
AliDomi 2016년 12월 16일
You might find this approach useful. Let b be a symmetric curve with odd number of samples.
[rx,ry]=meshgrid( -order/2:order/2 , -order/2:order/2 );
r = hypot( rx , ry );
halfb = b((length(b)-1)/2 + 1 : end );
vq = interp1( 0:(length(halfb)-1) , halfb , r(:) , 'linear' , 0 );
W=r; W(:)=vq;
Then W is the revolved surface of b, note r is the distance from the center of the grid.

카테고리

Help CenterFile Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by