دوشنبه, ۱ آذر ۱۴۰۰، ۱۱:۳۳ ب.ظ
توری با نقاط تعاملی
این کد چند سال پیش برای شبیه سازی رفتار اتم ها نسبت به هم انجام داده بودم که به دلایلی نیمه کاره موند، کد به شکل شی گرا نوشته شده و براحتی قابل توسعه است، هدف من این بود که رفتار سیالات و نحوه تعامل اتم ها را شبیه سازی کنم، اما محدودیت زمان و.. اجازه تکمیل آن را بهم نداد، اگر علاقمند هستین من سورس کد در اختیارتون می زارم، در مورد کد هم اگر توضیحی خواستین می تونین پیام بدین.
فقط کد تابع اصلی را قرار می دم که با فراخوانی اون برنامه اجرا می شه.
کد تابع فراخوان اصلی :main_nd_nbo
close all;
clear;
clc;
ndNum=25;
ndIndex=1:ndNum;
ndNumer=0;
baseFig=figure('name','netpoint_nbo','NumberTitle','off','tag','baseFig','ToolBar','none');
strongLim=sqrt(2);
ndNumer=0;
paramNd.name='';
paramNd.string='';
paramNd.pos.x=0;
paramNd.pos.y=0;
nodObj=nodeCL(paramNd);
delete(nodObj.handles);
nodObj=repmat(nodObj,1, ndNum );
for ndR=1:sqrt(ndNum)
for ndC=1:sqrt(ndNum)
ndNumer=ndNumer+1;
paramNd.name=['nd' num2str(ndNumer)];
paramNd.string=paramNd.name;
paramNd.pos.x=ndR;
paramNd.pos.y=ndC;
nodObj(ndNumer)=nodeCL(paramNd);
% text( paramNd.pos.x, paramNd.pos.y,num2str(ndNumer));
end
end
pos=[nodObj.pos];
netDist=pdist2( [[pos.x];[pos.y]]',[[pos.x];[pos.y]]');%distance between all nodes
for ndS=ndIndex
likleNodes=find(netDist(ndS,:)<=strongLim) ;
likleNodes(likleNodes==ndS)=[];
for ndList=likleNodes
lnObj= lineObj(nodObj(ndS),nodObj(ndList));
% nodObj(ndS) =nodeCL(lnObj , nodObj(ndS) );
% nodObj(ndList)=nodeCL(lnObj , nodObj(ndList) );
end
end
baseGca=findobj(get(baseFig,'Children'),'Type' ,'axes');
baseFig.WindowButtonDownFcn=@(Fig,eve)mousClick_Callback(Fig,eve);
set (baseFig, 'WindowButtonMotionFcn', @mouseMove);
% baseFig.CloseRequestFcn=@(Fig,eve)onDeleteBaseFig_Callback(Fig,eve);
خروجی اجرای کد بالا:

