دوشنبه, ۱ آذر ۱۴۰۰، ۱۱:۳۳ ب.ظ
توری با نقاط تعاملی
این کد چند سال پیش برای شبیه سازی رفتار اتم ها نسبت به هم انجام داده بودم که به دلایلی نیمه کاره موند، کد به شکل شی گرا نوشته شده و براحتی قابل توسعه است، هدف من این بود که رفتار سیالات و نحوه تعامل اتم ها را شبیه سازی کنم، اما محدودیت زمان و.. اجازه تکمیل آن را بهم نداد، اگر علاقمند هستین من سورس کد در اختیارتون می زارم، در مورد کد هم اگر توضیحی خواستین می تونین پیام بدین.
فقط کد تابع اصلی را قرار می دم که با فراخوانی اون برنامه اجرا می شه.
کد تابع فراخوان اصلی :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);
خروجی اجرای کد بالا: