شبیه‌سازی شبکه‌های بی سیم و کامپیوتری
شبیه سازی تخصصی شبکه‌های بی سیم و کامپیوتری مقاطع کارشناسی تا دکترا
  • شبیه سازی تخصصی شبکه‌های بی سیم و کامپیوتری مقاطع کارشناسی تا دکترا

مشخصات بلاگ
شبیه‌سازی شبکه‌های بی سیم و کامپیوتری

امکان سفارش، شبیه سازی مقاله و پایان نامه وجود دارد،
مطالب، با ذکر منبع قابل انتشار در سایت ها و وبلاگ ها و.. می باشد.
جهت دریافت مشاوره رایگان تماس بگیرید:

شماره تماس: 09147082079-0098
آیدی تلگرامی:https://t.me/MuosSA_NbO
جی میل :mo30no@gmail.com

تمامی کدهای این وبلاگ در حال حاضر به زبان متلب می باشد

«آنچه می‌دانیم ناچیز و آنچه نمی‌دانیم عظیم و وسیع است»
$$پیر سیمون لاپلاس$$

چهارشنبه, ۱۵ تیر ۱۴۰۱، ۰۶:۲۸ ب.ظ

رشد چند ضلعی حول محور z , y

 در این پست یک مقدمه ای برای رشد اشکال هندسی بسته و باز حول یک مسیر معین تشریح شده

شما می توانین متغیر side چند ضلعی رشد و مسیر را تعیین کنین و تغییرات را مشاهده کنین

رشد چند ضلعی حول محور y،

%% clear commands
function xx
delete(allchild(0));close all;
clear;
clc;

%% path commands
file=matlab.desktop.editor.getActive;
try 
fileDetail=dir(file.Filename);
folderName=fileDetail.folder;
catch
   index=strfind( file.Filename,'\');
   folderName=file.Filename(1:index(end)-1);
end
paths=genpath(folderName);
addpath(paths);
cd(folderName);

 
side=100;
t=linspace(0,2*pi ,side+1);
% t(6)=NaN;
side1=50;
t1=linspace(0, 2*pi ,side1+1);

  
 

 
% ph=0;
% x=r' *cos(t+ph);
% z=(0:side)' * ones(1,side+1);
% y=r' *sin(t+ph) ;


ph=0;
x= cos(t+ph) /5 ;
y=  0*(0:side)';  
z= sin(t+ph) /5  ;



% plot3(x,y,z);hold on

 
% path=(t1+ph).^2;path=path/max(path)
% 
%  path.x=[0,1,1,1,2,2,2,1,1,0];
%  path.y=0:length(path.x)-1;
 
 path.x=  cos (t1+ph)*5 ;  
 path.z= sin(t1+ph) *5  ;
plot3([path.x*0;path.x ] ,[path.z*0 ;path.z]*0 ,[path.z*0 ;path.z] ,'r' );hold on
 
    [path.x,path.z]=divider(path.x,path.z,2);
    [t1,t1]=divider(t1,t1,2);

%       plot(path.x ,path.y  , 'r');hold on
% xlabel( 'X'); ylabel( 'Y'); zlabel( 'Z')
 
     matrixObj.x= cos(t )  ;
    matrixObj.z=  0*(0:side)';
    matrixObj.y= sin(t  )   ;
    
for in=1:length(path.x)-1
    
    
    
    [ x, y, z]=rotateParameter(matrixObj,[0,1,0],-rad2deg(t1(in)));
    
%      path.x=  cos (t + ph(in)) ;  
%      path.y=sin (t+ ph(in) )  ;
% 
     
       plot3(x+path.x(in),y,z+path.z(in),'b-');hold on
%        surf([x+path.x(in);x+path.x(in+1) ],[y+path.y(in);y+path.y(in+1) ],[z;z],'facecolor','k');hold on; alpha(0.2)
%       plot3(x ,y ,z,'b');hold on
xlabel('x');
ylabel('y');
zlabel('z');
      view(3);
   axis('equal') 
end
 
end

function [ newx, newy, newz]=rotateParameter(matrixObj,azel,alpha)

u = azel(:)/norm(azel);
alph = alpha*pi/180;
cosa = cos(alph);
sina = sin(alph);
vera = 1 - cosa;
x = u(1);
y = u(2);
z = u(3);
rot = [cosa+x^2*vera x*y*vera-z*sina x*z*vera+y*sina; ...
    x*y*vera+z*sina cosa+y^2*vera y*z*vera-x*sina; ...
    x*z*vera-y*sina y*z*vera+x*sina cosa+z^2*vera]';

x = matrixObj.x;
y = matrixObj.y;
z = matrixObj.z;

[m,n] = size(z);
if numel(x) < m*n
    [x,y] = meshgrid(x,y);
end

[m,n] = size(x);
newxyz = [x(:) , y(:) , z(:) ];
newxyz = newxyz*rot;
newx =   reshape(newxyz(:,1),m,n);
newy =  reshape(newxyz(:,2),m,n);
newz =  reshape(newxyz(:,3),m,n);

end




نمونه خروجی:

رشد چند ضلعی حول محور z:

%% clear commands
function xx
delete(allchild(0));close all;
clear;
clc;

%% path commands
file=matlab.desktop.editor.getActive;
try 
fileDetail=dir(file.Filename);
folderName=fileDetail.folder;
catch
   index=strfind( file.Filename,'\');
   folderName=file.Filename(1:index(end)-1);
end
paths=genpath(folderName);
addpath(paths);
cd(folderName);

 
side=20;
t=linspace(0,2*pi ,side+1);
% t(6)=NaN;
side1=50;
t1=linspace(0, 2*pi ,side1+1);

  
 

 
% ph=0;
% x=r' *cos(t+ph);
% z=(0:side)' * ones(1,side+1);
% y=r' *sin(t+ph) ;


ph=0;
x= cos(t+ph) /5 ;
y=  0*(0:side)';  
z= sin(t+ph) /5  ;



% plot3(x,y,z);hold on

 
% path=(t1+ph).^2;path=path/max(path)
% 
%  path.x=[0,1,1,1,2,2,2,1,1,0];
%  path.y=0:length(path.x)-1;
 
 path.x=  cos (t1+ph)*5 ;  
 path.y= sin(t1+ph) *5  ;
plot([path.x*0;path.x ] ,[path.y*0 ;path.y] ,'r' );hold on

 
    [path.x,path.y]=divider(path.x,path.y,2);
    [t1,t1]=divider(t1,t1,2);

%       plot(path.x ,path.y  , 'r');hold on
% xlabel( 'X'); ylabel( 'Y'); zlabel( 'Z')
 
     matrixObj.x= cos(t )  ;
    matrixObj.y=  0*(0:side)';
    matrixObj.z= sin(t  )   ;
    
for in=1:length(path.x)-1
    
    
    
    [ x, y, z]=rotateParameter(matrixObj,[0,0,1],rad2deg(t1(in)));
    
%      path.x=  cos (t + ph(in)) ;  
%      path.y=sin (t+ ph(in) )  ;
% 
     
       plot3(x+path.x(in),y+path.y(in),z,'b-');hold on
%        surf([x+path.x(in);x+path.x(in+1) ],[y+path.y(in);y+path.y(in+1) ],[z;z],'facecolor','k');hold on; alpha(0.2)
%       plot3(x ,y ,z,'b');hold on

    view(3);
   axis('equal') 
end
 end
  
function [ newx, newy, newz]=rotateParameter(matrixObj,azel,alpha)

u = azel(:)/norm(azel);
alph = alpha*pi/180;
cosa = cos(alph);
sina = sin(alph);
vera = 1 - cosa;
x = u(1);
y = u(2);
z = u(3);
rot = [cosa+x^2*vera x*y*vera-z*sina x*z*vera+y*sina; ...
    x*y*vera+z*sina cosa+y^2*vera y*z*vera-x*sina; ...
    x*z*vera-y*sina y*z*vera+x*sina cosa+z^2*vera]';

x = matrixObj.x;
y = matrixObj.y;
z = matrixObj.z;

[m,n] = size(z);
if numel(x) < m*n
    [x,y] = meshgrid(x,y);
end

[m,n] = size(x);
newxyz = [x(:) , y(:) , z(:) ];
newxyz = newxyz*rot;
newx =   reshape(newxyz(:,1),m,n);
newy =  reshape(newxyz(:,2),m,n);
newz =  reshape(newxyz(:,3),m,n);

end




نمونه خروجی:

 

دانلود هر دو کد:

موافقین ۰ مخالفین ۰ ۰۱/۰۴/۱۵
موسی حسن زاده

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی