سه شنبه, ۱۴ تیر ۱۴۰۱، ۰۸:۴۱ ب.ظ
توزیع نودها در فضاهای باز دو بعدی
در این پست، روش توزیع نوده در درون یک فضای باز هندسی را تشریح کردیم.
یک تابع تحت عنوان divider فایل اجرایی قرار دارد که قبلا در پست قبلی شرح داده شده است، کافی است فایل را دانلود و با متلی باز کنین و اجرا بگیرین.
pow=2;% chang this parameter t1=-2*pi:.2:2*pi; x1= (t1); y1= (t1).^pow; [~,t2]=divider(t1,t1,5,1); x2= (t2); y2= (t2).^pow; r = (rand(1,length(t2))); plot(x1,y1,'^-');hold on; plot(x2.*r ,y2 ,'*');hold on; % plot(x2 ,y2 ,'*');hold on; %version 1.1 %isFair=1 adding points is based on distance isFair=2 adding of points based on edges function [X,Y]=divider(X,Y,n,isFair) try if isFair==1 else isFair=0 ; end catch isFair=0; end switch isFair case 0 T1=0; T2=0; for i=1:length(X)-1 temp1=0; temp1=linspace(X(i),X(i+1),n+2) ; T1=[T1,temp1(1:end-1)]; end T1=[T1,temp1(end)]; X=T1(2:end); for i=1:length(Y)-1 temp2=0; temp2=linspace(Y(i),Y(i+1),n+2) ; T2=[T2,temp2(1:end-1)]; end T2=[T2,temp2(end)]; Y=T2(2:end); case 1 dists= sqrt( (X(2:end)-X(1:end-1)).^2 + (Y(2:end)-Y(1:end-1)).^2) ; n1=round((dists./min(dists))*n); T1=0; T2=0; for i=1:length(X)-1 temp1=0; temp1=linspace(X(i),X(i+1),n1(i)+2) ; T1=[T1,temp1(1:end-1)]; end T1=[T1,temp1(end)]; X=T1(2:end); for i=1:length(Y)-1 temp2=0; temp2=linspace(Y(i),Y(i+1),n1(i)+2) ; T2=[T2,temp2(1:end-1)]; end T2=[T2,temp2(end)]; Y=T2(2:end); end end
نمونه خروجی:
دانلود سورس کد
سوالی داشتین پیام بدین.
۰۱/۰۴/۱۴