Lumerical练习2-建模练习2

依然是同上篇一样的题目,绘制一组六边形,这次需要换用其他方法完成。

变量设置与之前完全相同。

方法1:定义函数,通过调用函数绘制多个六边形

方法2:使用copy指令,复制平移基础六边形

程序:zhangjiali1201/Lumerical_demo (github.com)

本文程序为exercise2_model_hex_function和exercise2_model_hex_copy

目录

方法1:function()

方法2:copy()

附完整代码


方法1:function()

定义一个绘制六边形的功能函数hex

function hex(Nx,Ny,R,H,glass)
{
    vtx=zeros(6,2);
    for(j=1:6)
    {
        vtx(j,1)=R*cos(pi/6+(j-1)*pi/3)+Nx;
        vtx(j,2)=R*sin(pi/6+(j-1)*pi/3)+Ny;
    }
    addpoly;
    set('vertices',vtx);
    set('z span',H);
    set('material',glass);
}

后续调用hex函数就可以绘制六边形,比如想绘制一个中心在原点的六边形,通过hex(0,0,R,H,glass)便可绘制出。

通过一个循环,调用七次hex函数绘制出七个六边形,就可完成本题。

方法2:copy()

这种方法先绘制一个基础六边形,然后将其复制,平移到新的位置。

copy(x,y,z)指令的xyz指的就是沿xyz轴方向的平移距离。

因此在本题中,不难理解,复制中心的六边形后,要平移的距离就是之前的方法中求出的新六边形中心点Nx与Ny的值。

select('hexagon');
copy(Nx,Ny);

附完整代码

方法1:

########################################
#modeling exercise
#draw a couple of hexagons, method 2
#function()
#edited by jializhang,20210424

deleteall; 

function hex(Nx,Ny,R,H,glass)
{
    vtx=zeros(6,2);
    for(j=1:6)
    {
        vtx(j,1)=R*cos(pi/6+(j-1)*pi/3)+Nx;
        vtx(j,2)=R*sin(pi/6+(j-1)*pi/3)+Ny;
    }
    addpoly;
    set('vertices',vtx);
    set('z span',H);
    set('material',glass);
}

for(i=0:6)
{
    if (i==0)
    {   
        Nx=0;
        Ny=0;
    }
    else
    {
        Nx=(2*R*cos(pi/6)+gap)*cos((i-1)*pi/3);
        Ny=(2*R*cos(pi/6)+gap)*sin((i-1)*pi/3);
    }
    hex(Nx,Ny,R,H,glass);
    set('name','hexagon'+num2str(i));
}

方法2: 

########################################
#modeling exercise
#draw a couple of hexagons, method 3
#copy the hexagon in the center, then translate
#edited by jializhang,20210424

deleteall;

vtx=zeros(6,2);
for(j=1:6)
{
    vtx(j,1)=R*cos(pi/6+(j-1)*pi/3);
    vtx(j,2)=R*sin(pi/6+(j-1)*pi/3);
}

addpoly;
set('name','hexagon');
set('vertices',vtx);
set('z span',H);
set('material',glass);

for(i=1:6)
{
    Nx=(2*R*cos(pi/6)+gap)*cos((i-1)*pi/3);
    Ny=(2*R*cos(pi/6)+gap)*sin((i-1)*pi/3);
    select('hexagon');
    copy(Nx,Ny);
    set('name','hexagon'+num2str(i));
}

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Matlab数学建模练习是指使用Matlab软件来进行数学建模练习。数学建模是把实际问题抽象为数学模型,并用数学方法进行求解和分析的过程。Matlab作为一款功能强大的数学软件,可以提供丰富的数学函数和工具包,帮助我们进行数学建模练习。 在进行Matlab数学建模练习时,首先需要明确实际问题的数学模型。这个模型可以是数学方程、统计模型、优化模型等。然后,我们可以利用Matlab的数据处理、曲线拟合、优化算法等功能进行模型的求解和分析。 举个例子来说,假设我们需要解决一个工程问题,其中涉及到某个物理系统的运动方程。我们可以通过实验或者理论推导得到这个方程,并用Matlab编写相应的程序进行数值求解。 Matlab还提供了绘图功能,我们可以将模型的结果通过绘图展示出来,更直观地理解模型的特点和结果。此外,Matlab还支持导入和处理各种类型的数据,可以通过真实的数据进行数学建模练习,与实际问题更贴近。 总的来说,Matlab数学建模练习是通过Matlab软件进行数学建模时的实践活动,通过使用Matlab的数学函数、数据处理、曲线拟合、优化算法等功能,对实际问题进行求解和分析,并通过绘图等方式展示模型的结果。这样的练习可以帮助我们熟悉Matlab的使用,提高数学建模的技能,以及解决实际问题的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangjiali12011

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值