精华内容
下载资源
问答
  • 一、设计多个六棱柱 1)Matlab代码 %%All hex are oriented such that the incident light %%is along the x axis and strikes the circular face of the hex R = [20, 20, 20]; %Hex center t...

           继续设计文献里面的模型

     

    一、设计多个六棱柱

           1)Matlab代码

    %%All hex are oriented such that the incident light
    %%is along the x axis and strikes the circular face of the hex
    R = [20, 20, 20]; %Hex center to side distance
    H = [10, 10, 10]; %Hex height
    hex = 3; %number of cylinders (including ring)
    offX = zeros(1,hex);
    offY = zeros(1,hex);
    offZ = zeros(1,hex);
    %   offX = [0,-40,40]; %User defined offsets
        offY = [18,-18,-18]; %user defined offsets
        offZ = [0,21,-21]; %user defined offsets
    %%Calculation variables for output file documantation
    X = H;
    Y = R*1.5;
    Z = R*1.5;
    Xd = X;
    Yd = Y*2;
    Zd = Z*2;
    Out = [0 0 0 0 0 0 0];
    d = 1; %dipole #
    di = 1; %inner dipole #
    for off = 1:hex;
        for i = (-Z(1,off)+offZ(1,off)):(Z(1,off)+offZ(1,off))
            for j = (-Y(1,off)+offY(1,off)):(Y(1,off)+offY(1,off))
                for k = (0+offX(1,off)):(X(1,off)+offX(1,off))
                    L1 = (abs(sqrt(3)/2*(j-offY(1,off))+1/2*(i-offZ(1,off))));
                    L2 = (abs(sqrt(3)/2*(j-offY(1,off))-1/2*(i-offZ(1,off))));
                    L3 = ((i-offZ(1,off))^2 + (j-offY(1,off))^2)^.5;
                    if L1 <= R(1,off) && L2 <= R(1,off) && abs(i-offZ(1,off))<= R(1,off);
                        Out = [Out; d k j i 1 1 1];
                        d = d + 1;
                    end
                end
            end
        end
    end
    Out(1,:) = [];
    d = d - 1;
    di = di - 1;
    fid = fopen('output.txt', 'w');
    fprintf(fid, ' >TARCEL: Hexagons; AX,AY,AZ= %7.4f %7.4f %7.4f', Xd, Yd, Zd);
    fprintf(fid, '\r\n %8.0f %8.0f = NAT, NIN,', d, di);
    fprintf(fid, '\r\n 1.000000 0.000000 0.000000 = A_1 vector\r\n 0.000000 1.000000 0.000000 = A_2 vector');
    fprintf(fid, '\r\n 1.000000 1.000000 1.000000 = lattice spacings (d_x,d_y,d_z)/d');
    fprintf(fid, '\r\n -0.50000 -0.50000 -0.50000 = lattice offset x0(1-3) = (x_TF,y_TF,z_TF)/d for dipole 0 0 0');
    fprintf(fid, '\r\n JA IX IY IZ ICOMP(x,y,z)\r\n');
    fprintf(fid,'%7d %3d %3d %3d %1d %1d %1d\r\n', Out');
    fclose(fid);
    foldername = sprintf('%dHex%dR%dH',hex,R(1,1),H(1,1));
    folderpath = strcat(foldername,'/');
    filename = sprintf('%dHex%dR%dH.txt',hex,R(1,1),H(1,1));
    mkdir(foldername);
    copyfile('output.txt',filename);
    copyfile('output.txt','shape.dat');
    movefile(filename, folderpath);
    movefile('shape.dat',folderpath);% 将shape.dat文件移动到 %dSpheres%dR%dr/ 文件夹中
    
    % 后面的也是一些文件复制移动的操作,大家可以注释掉,需要用的话得去掉注释自行修改代码,否则会报错
    % copyfile('Ag.txt',folderpath);
    % copyfile('Ti.txt',folderpath);
    % copyfile('ddscat.exe',folderpath);
    % copyfile('ddscat2.par','ddscat.par');
    % movefile('ddscat.par',folderpath);
    % disp(['Sucess, file saved to: ', foldername]);

           2)ddscat.par文件

           先放一个会报错的ddscat.par文件。

           

           下面是在命令行中运行的报错结果。

           

           报错的原因暂时还没有找到,但是可以确定的是,其中X=3.00000D-01中的X表示的是入射光的波长。因为我改变过波长的值,这个值也会跟着改变,继续报错。小范围的波长改动依然会继续报错,但是大范围的波长改动,会导致程序一直迭代下去,不会终止,且error误差值很大。

     

           3)近场图

           报这个错误最大的问题是,在ddpostprocess后处理之后,虽然产生了vtr文件,但是在vislt里面无法读取模型的强度值,即无法可视化。

           

     

            4)正确的ddscat.par文件

           在尝试了很多次的改动之后,终于改出了可以正常运行不报错、可以可视化的配置文件。结果其实很简单,就是把介电常数的种类配置为两个。虽然这个纯六棱柱模型是由一种物质构成的,但是我们设置有两种配置文件没有什么影响,只要shape文件里面只出现1,不出现2就行。结果,这样一改,反而结果正确了。

           

           

           5)成功的近场图

           

           6)模型的3D散点图

           之后尽量给大家加上模型的一个三维散点图,除了在电厂图可视化的情况下认识模型,也同时在偶极子构成概念上了解模型。

           

     

    二、设计多个圆柱核六棱柱壳模型

           1)Matlab代码

           

    %%All hex are oriented such that the incident light
    %%is along the x axis and strikes the circular face of the hex
    R = [20, 20, 20]; %Hex center to side distance
    H = [20, 20, 20]; %Hex height
    Ri = [10, 10, 10]; %Hex core radius
    hex = 3; %number of cylinders (including ring)
    offX = zeros(1,hex);
    offY = zeros(1,hex);
    offZ = zeros(1,hex);
    % offX = [0,-40,40];
    offY = [18,-18,-18];
    offZ = [0,21,-21];
    %% calculation parameters used for output documentation file
    X = H;
    Y = R*1.5;
    Z = R*1.5;
    Xd = X; %diameter
    Yd = Y*2;
    Zd = Z*2;
    Xs = Ri*2;
    Ys = Ri*2;
    Zs = Ri*2;
    Out = [0 0 0 0 0 0 0];
    d = 1; %dipole #
    di = 1; %inner dipole #
    for off = 1:hex;
        for i = (-Z(1,off)+offZ(1,off)):(Z(1,off)+offZ(1,off))
            for j = (-Y(1,off)+offY(1,off)):(Y(1,off)+offY(1,off))
                for k = (0+offX(1,off)):(X(1,off)+offX(1,off))
                    L1 = (abs(sqrt(3)/2*(j-offY(1,off))+1/2*(i-offZ(1,off))));
                    L2 = (abs(sqrt(3)/2*(j-offY(1,off))-1/2*(i-offZ(1,off))));
                    L3 = ((i-offZ(1,off))^2 + (j-offY(1,off))^2)^.5;
                    if L1 <= R(1,off) && L2 <= R(1,off) && abs(i-offZ(1,off))<= R(1,off);
                        if L3 <= Ri;
                            Out = [Out; d k j i 1 1 1];
                            d = d + 1;
                            di = di + 1;
                        else
                            Out = [Out; d k j i 2 2 2];
                            d = d + 1;
                        end
                    end
                end
            end
        end
    end
    Out(1,:) = [];
    d = d - 1;
    di = di - 1;
    fid = fopen('output.txt', 'w');
    fprintf(fid, ' >TARCEL: Hexegons with Cores; AX,AY,AZ= %7.4f %7.4f %7.4f BX,BY,BZ= %7.4f %7.4f %7.4f', Xd, Yd, Zd, Xs, Ys, Zs);
    fprintf(fid, '\r\n %8.0f %8.0f = NAT, NIN,', d, di);
    fprintf(fid, '\r\n 1.000000 0.000000 0.000000 = A_1 vector\r\n 0.000000 1.000000 0.000000 = A_2 vector');
    fprintf(fid, '\r\n 1.000000 1.000000 1.000000 = lattice spacings (d_x,d_y,d_z)/d');
    fprintf(fid, '\r\n -0.50000 -0.50000 -0.50000 = lattice offset x0(1-3) = (x_TF,y_TF,z_TF)/d for dipole 0 0 0');
    fprintf(fid, '\r\n JA IX IY IZ ICOMP(x,y,z)\r\n');
    fprintf(fid,'%7d %3d %3d %3d %1d %1d %1d\r\n', Out');
    fclose(fid);
    foldername = sprintf('%dHexCore%dR%dr%dH',hex,R(1,1),Ri(1,1),H(1,1));
    folderpath = strcat(foldername,'/');
    filename = sprintf('%dHexCore%dR%dr%dH.txt',hex,R(1,1),Ri(1,1),H(1,1));
    mkdir(foldername);
    copyfile('output.txt',filename);
    copyfile('output.txt','shape.dat');
    movefile(filename, folderpath);
    movefile('shape.dat',folderpath);% 将shape.dat文件移动到 %dSpheres%dR%dr/ 文件夹中
    
    % 后面的也是一些文件复制移动的操作,大家可以注释掉,需要用的话得去掉注释自行修改代码,否则会报错
    % copyfile('Ag.txt',folderpath);
    % copyfile('Ti.txt',folderpath);
    % copyfile('ddscat.exe',folderpath);
    % copyfile('ddscat2.par','ddscat.par');
    % movefile('ddscat.par',folderpath);
    % disp(['Sucess, file saved to: ', foldername]);

     

           2)ddscat.par文件

           

    ' ========== Parameter file for v7.3 ===================' 
    '**** Preliminaries ****'
    'NOTORQ' = CMTORQ*6 (DOTORQ, NOTORQ) -- either do or skip torque calculations
    'PBCGS2' = CMDSOL*6 (PBCGS2, PBCGST, GPBICG, QMRCCG, PETRKP) -- CCG method
    'GPFAFT' = CMETHD*6 (GPFAFT, FFTMKL) -- FFT method
    'GKDLDR' = CALPHA*6 (GKDLDR, LATTDR, FLTRCD) -- DDA method
    'NOTBIN' = CBINFLAG (NOTBIN, ORIBIN, ALLBIN)
    '**** Initial Memory Allocation ****'
    150 150 150 = dimensioning allowance for target generation
    '**** Target Geometry and Composition ****'
    'FROM_FILE' = CSHAPE*9 shape directive
    no SHPAR parameters needed
    2         = NCOMP = number of dielectric materials
    '../diel/SiO2' = file with refractive index 1
    '../diel/Au_evap' = file with refractive index 2
    '**** Additional Nearfield calculation? ****'
    1 = NRFLD (=0 to skip nearfield calc., =1 to calculate nearfield E)
    0.0 0.0 0.0 0.0 0.0 0.0 (fract. extens. of calc. vol. in -x,+x,-y,+y,-z,+z)
    '**** Error Tolerance ****'
    1.00e-5 = TOL = MAX ALLOWED (NORM OF |G>=AC|E>-ACA|X>)/(NORM OF AC|E>)
    '**** Maximum number of iterations ****'
    2000     = MXITER
    '**** Integration cutoff parameter for PBC calculations ****'
    1.00e-2 = GAMMA (1e-2 is normal, 3e-3 for greater accuracy)
    '**** Angular resolution for calculation of <cos>, etc. ****'
    0.5	= ETASCA (number of angles is proportional to [(3+x)/ETASCA]^2 )
    '**** Vacuum wavelengths (micron) ****'
    0.300 0.300 1 'LIN' = wavelengths (first,last,how many,how=LIN,INV,LOG)
    '**** Refractive index of ambient medium'
    1.0000 = NAMBIENT
    '**** Effective Radii (micron) **** '
    0.03 0.03 1 'LIN' = eff. radii (first, last, how many, how=LIN,INV,LOG)
    '**** Define Incident Polarizations ****'
    (0,0) (1.,0.) (0.,0.) = Polarization state e01 (k along x axis)
    2 = IORTH  (=1 to do only pol. state e01; =2 to also do orth. pol. state)
    '**** Specify which output files to write ****'
    1 = IWRKSC (=0 to suppress, =1 to write ".sca" file for each target orient.
    '**** Specify Target Rotations ****'
    0.    0.   1  = BETAMI, BETAMX, NBETA  (beta=rotation around a1)
    0.    0.   1  = THETMI, THETMX, NTHETA (theta=angle between a1 and k)
    0.    0.   1  = PHIMIN, PHIMAX, NPHI (phi=rotation angle of a1 around k)
    '**** Specify first IWAV, IRAD, IORI (normally 0 0 0) ****'
    0   0   0    = first IWAV, first IRAD, first IORI (0 0 0 to begin fresh)
    '**** Select Elements of S_ij Matrix to Print ****'
    6	= NSMELTS = number of elements of S_ij to print (not more than 9)
    11 12 21 22 31 41	= indices ij of elements to print
    '**** Specify Scattered Directions ****'
    'LFRAME' = CMDFRM (LFRAME, TFRAME for Lab Frame or Target Frame)
    1 = NPLANES = number of scattering planes
    0.  0. 180. 5 = phi, theta_min, theta_max (deg) for plane A
    90. 0. 180. 5 = phi, theta_min, theta_max (deg) for plane B
    

           这里的配置其实和上一个模型的正确配置文件的参数是一模一样的,不过这次是没有出现问题的。

     

           3)近场图

           

           4)模型的3D散点图

           

     

           继续加油

     

         【DDSCAT——离散偶极近似仿真程序01】概念和说明书介绍

         【DDSCAT——离散偶极近似仿真程序02】初步运行案例程序

         【DDSCAT——离散偶极近似仿真程序03】近场计算及其呈现

         【DDSCAT——离散偶极近似仿真程序04】参数理解和模型设计

         【DDSCAT——离散偶极近似仿真程序05】模型设计Matlab代码:多核壳球 、多核壳圆柱

         【DDSCAT——离散偶极近似仿真程序06】模型设计Matlab代码:多六棱柱 、多圆柱核六棱柱壳

         【DDSCAT——离散偶极近似仿真程序07】模型设计Matlab代码:圆环套多个圆柱

         【DDSCAT——离散偶极近似仿真程序08】如何在Linux系统上运行DDSCAT程序

         【DDSCAT——离散偶极近似仿真程序09】如何下载ifort安装文件

         【DDSCAT——离散偶极近似仿真程序10】DDSCAT内置示例运行结果

         【DDSCAT——离散偶极近似仿真程序11】DDSCAT目标方向的调整

         【DDSCAT——离散偶极近似仿真程序12】calltarget与vtrconvert程序的使用

         【DDSCAT——离散偶极近似仿真程序13】ParaView可视化工具的使用及其与Vislt的对比

         【DDSCAT——离散偶极近似 用户手册中文翻译稿 0201】

         【DDSCAT——离散偶极近似 用户手册中文翻译稿 0202】

         【DDSCAT——离散偶极近似 用户手册中文翻译稿 0203】

         【DDSCAT——离散偶极近似 用户手册中文翻译稿 0204】

         【DDSCAT——离散偶极近似 用户手册中文翻译稿 0205】

    展开全文
  • 自己写的可旋转3d图片墙。立方体选用正六棱柱的六个侧面。可360旋转,旋转速度,角度自己在xaml里自己设。照片反射效果用的画刷。
  • NaYF_4∶Eu~(3+)纳米粒子和六棱柱的水热控制合成与发光性质
  • 自动生成正六棱柱

    2019-12-19 00:20:44
    定义不同的边界函数就会生成不同的棱 public void CreateMap (int length) { len = length + 1; if (grids != null) { ResetMap (); } //开始递归 AutoCreateMap (Vector3.zero, ...

    思想

    • 递归生成
    • 判断是否超过边界
    • 超过就不再生成
    • 所以核心是边界函数
    • 定义不同的边界函数就会生成不同的棱柱
    	public void CreateMap (int length)
    	{
    		len = length + 1;
    		if (grids != null)
    		{
    			ResetMap ();
    		}
    		//开始递归
    		AutoCreateMap (Vector3.zero, new Point (0, 0));
    	}
    
    	Dictionary<Point, Vector3> offsetDic;
    	public void InitOffsetDic ()
    	{
    		if (offsetDic == null)
    		{
    			offsetDic = new Dictionary<Point, Vector3> ();
    			borderPoint = new List<Point> ();
    			grids = new Dictionary<Point, Grid> ();
    		}
    
    		offsetDic.Add (new Point (1, -1), new Vector3 (1.5f, 0, -0.87f));
    		offsetDic.Add (new Point (-1, -1), new Vector3 (-1.5f, 0, -0.87f));
    		offsetDic.Add (new Point (1, 1), new Vector3 (1.5f, 0, 0.87f));
    		offsetDic.Add (new Point (-1, 1), new Vector3 (-1.5f, 0, 0.87f));
    		offsetDic.Add (new Point (0, 2), new Vector3 (0, 0, 1.73f));
    		offsetDic.Add (new Point (0, -2), new Vector3 (0, 0, -1.73f));
    	}
    
    	
    
    
    
    
    
    
    	void AutoCreateMap (Vector3 originPos, Point gridPos)
    	{
    		if (IsInBorder (originPos) && !grids.ContainsKey (gridPos))
    		{
    
    			Grid floor = GridPool.Inst.GetFloor (originPos, gridPos);
    			grids.Add (gridPos, floor);
    
    			foreach (var pair in offsetDic)
    			{
    				if (!IsInBorder (originPos + pair.Value))
    				{
    					floor.IsBorder = true;
    					Renderer render = floor.floor.GetComponent<Renderer> ();
    					render.material.color = new Color (81, 128, 248) / 255;
    					borderPoint.Add (gridPos + pair.Key);
    
    					Rigidbody rigi = floor.floor.GetComponent<Rigidbody> ();
    					rigi.isKinematic = true;
    				}
    				else
    				{
    					AutoCreateMap (originPos + pair.Value, gridPos + pair.Key);
    				}
    			}
    
    		}
    
    	}
    
    
    	//3^0.5 *border  border*2
    	//3^0.5 *border  border*2
    	public bool IsInBorder (Vector3 pos)
    	{
    		float x = Mathf.Abs (pos.x);
    		float z = Mathf.Abs (pos.z);
    		float borderX = 0, borderY = 1.73f * len / 2 + 0.2f;
    		if (x == 0)
    		{
    			borderX = len;
    			//Debug.Log (borderX);
    		}
    		else
    		{
    			//y = (x)*-1.73f+1.73*len
    
    			borderX = (z - 1.73f * len) / -1.73f + 0.2f;
    		}
    
    
    		return x < borderX && z < borderY ? true : false;
    	}
    
    展开全文
  • 前几课我们绘制的是平面的图形,下面我们要绘制一个立体的图形——六棱柱,这里我们使用了顶点索引,这是一个新的概念,它是一个指明了顶点绘制顺序的ByteBuffer,还有就是这里我们使用的是二维的顶点数组,其中第二...

    前几课我们绘制的是平面的图形,下面我们要绘制一个立体的图形——六棱柱,这里我们使用了顶点索引,这是一个新的概念,它是一个指明了顶点绘制顺序的ByteBuffer,还有就是这里我们使用的是二维的顶点数组,其中第二维中所有的顶点是同一个平面上的点,所以我们是一个面一个面的绘制,Polygon 类改动的代码较多,其他类基本不变,下面一一描述:

    public class Polygon {
    
    	// 保存每一个平面的顶点索引的ByteBuffer数组
    	private ByteBuffer[] indexBuffer;
    
    	// 保存每一个平面的顶点坐标的FloatBuffer数组
    	private FloatBuffer[] faceVertexBuffer;
    
    	// 保存每一个平面的顶点坐标的二维数组
    
    	private float[][] faceVertices = { new float[] { -0.5f, -0.816f, 1.0f,// bottom
    																			// left
    																			// 0
    			0.5f, -0.816f, 1.0f,// bottom right 1
    			-1.0f, 0.0f, 1.0f,// middle left 2
    			1.0f, 0.0f, 1.0f,// middle right 3
    			-0.5f, 0.816f, 1.0f, // top left 4
    			0.5f, 0.816f, 1.0f // top right 5
    			},// front face
    			new float[] { -0.5f, -0.816f, -1.0f,// bottom left 6
    					0.5f, -0.816f, -1.0f,// bottom right 7
    					-1.0f, 0.0f, -1.0f,// middle left 8
    					1.0f, 0.0f, -1.0f,// middle right 9
    					-0.5f, 0.816f, -1.0f, // top left 10
    					0.5f, 0.816f, -1.0f // top right 11
    			},// back face
    			new float[] { -0.5f, -0.816f, -1.0f,// bottom left 6
    					0.5f, -0.816f, -1.0f,// bottom right 7
    					-0.5f, -0.816f, 1.0f,// bottom left 0
    					0.5f, -0.816f, 1.0f // bottom right 1
    			},// bottom face
    			new float[] { -1.0f, 0.0f, -1.0f,// middle left 8
    					-0.5f, -0.816f, -1.0f,// bottom left 6
    					-1.0f, 0.0f, 1.0f,// middle left 2
    					-0.5f, -0.816f, 1.0f // bottom left 0
    			},// bottom left face
    			new float[] { 0.5f, -0.816f, -1.0f,// bottom right 7
    					1.0f, 0.0f, -1.0f,// middle right 9
    					0.5f, -0.816f, 1.0f,// bottom right 1
    					1.0f, 0.0f, 1.0f // middle right 3
    			},// bottom right face
    			new float[] { 0.5f, 0.816f, -1.0f, // top right 11
    					1.0f, 0.0f, -1.0f,// middle right 9
    					0.5f, 0.816f, 1.0f,// top right 5
    					1.0f, 0.0f, 1.0f // middle right 3
    			},// top right face
    			new float[] { -0.5f, 0.816f, -1.0f, // top left 10
    					0.5f, 0.816f, -1.0f, // top right 11
    					-0.5f, 0.816f, 1.0f,// top left 4
    					0.5f, 0.816f, 1.0f // top right 5
    			},// top face
    			new float[] { -0.5f, 0.816f, -1.0f, // top left 10
    					-1.0f, 0.0f, -1.0f,// middle left 8
    					-0.5f, 0.816f, 1.0f, // top left 4
    					-1.0f, 0.0f, 1.0f // middle left 2
    			} // top left face
    	};
    
    	// 定义每一个平面颜色的数组
    
    	private float[] colors = { 1.0f, 0.0f, 0.0f, 1.0f, // 0
    			0.0f, 1.0f, 0.0f, 1.0f,// 1
    			0.0f, 0.0f, 1.0f, 1.0f, // 2
    			1.0f, 1.0f, 1.0f, 1.0f, // 3
    			1.0f, 1.0f, 0.0f, 1.0f,// 4
    			1.0f, 0.0f, 1.0f, 1.0f,// 5
    			0.0f, 1.0f, 1.0f, 1.0f,// 6
    			0.5f, 0.5f, 0.5f, 1.0f, // 7
    	};
    
    	// 保存每一个平面的顶点索引的二维数组
    
    	private byte[][] indies = {
    			new byte[] { 0, 1, 2, 1, 3, 2, 2, 3, 4, 3, 5, 4 },// front face
    			new byte[] { 0, 1, 2, 1, 3, 2, 2, 3, 4, 3, 5, 4 },// back face
    			new byte[] { 0, 1, 2, 1, 3, 2 },// bottom face
    			new byte[] { 0, 1, 2, 1, 3, 2 },// bottom left face
    			new byte[] { 0, 1, 2, 1, 3, 2 },// bottom right face
    			new byte[] { 0, 1, 2, 1, 3, 2 },// top right face
    			new byte[] { 0, 1, 2, 1, 3, 2 },// top face
    			new byte[] { 0, 1, 2, 1, 3, 2 } // top left face
    	};
    
    	public Polygon() {
    
    		// 利用循环初始化顶点坐标faceVertexBuffer数组和顶点索引indexBuffer数组
    		ByteBuffer bb;
    		faceVertexBuffer = new FloatBuffer[8];
    		for (int i = 0; i < faceVertices.length; i++) {
    			bb = ByteBuffer.allocateDirect(faceVertices[i].length * 4);
    			bb.order(ByteOrder.nativeOrder());
    			faceVertexBuffer[i] = bb.asFloatBuffer();
    			faceVertexBuffer[i].put(faceVertices[i]);
    			faceVertexBuffer[i].position(0);
    
    		}
    
    		indexBuffer = new ByteBuffer[8];
    		for (int i = 0; i < indies.length; i++) {
    			indexBuffer[i] = ByteBuffer.allocateDirect(indies[i].length);
    			indexBuffer[i].put(indies[i]);
    			indexBuffer[i].position(0);
    
    		}
    
    	}
    
    	public void draw(GL10 gl) {
    
    		// 利用循环绘制六棱柱的每一个面,并给不同的面设置不同的颜色
    		gl.glFrontFace(GL10.GL_CW);
    
    		for (int i = 0; i < 8; i++) {
    			gl.glVertexPointer(3, GL10.GL_FLOAT, 0, faceVertexBuffer[i]);
    			gl.glColor4f(colors[4 * i + 0], colors[4 * i + 1],
    					colors[4 * i + 2], colors[4 * i + 3]);
    			gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
    
    			gl.glDrawElements(GL10.GL_TRIANGLES, indies[i].length,
    					GL10.GL_UNSIGNED_BYTE, indexBuffer[i]);// 另一种绘制的方法glDrawElements
    			gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
    		}
    
    	}
    
    }

    展开全文
  • V2.0程序已经发布,加入FFT等算法,功能大幅提升,实用性更强,欢迎关注!文章链接:[V2.0]基于MATLAB的傅里叶级数可视化最近这份代码受到很多朋友关注,在此一并感谢!由于写这份代码时的时间有限,当时的知识储备...

    77cc7a3b34825e4197e92d697b065515.png

    V2.0程序已经发布,加入FFT等算法,功能大幅提升,实用性更强,欢迎关注!

    文章链接:[V2.0]基于MATLAB的傅里叶级数可视化


    最近这份代码受到很多朋友关注,在此一并感谢!由于写这份代码时的时间有限,当时的知识储备也不甚完善,所以只是做出了基本功能。

    近期正在对这份代码进行更新,意图优化代码结构,并加入FFT等算法让其更具通用性,实现对不同函数傅立叶级数的实时计算。

    完成代码后会第一时间发布2.0版本,十分感谢大家的支持!


    去年有幸选到学校MATLAB的选修课,课程作业是利用MATLAB写一个GUI程序,作为电类专业的小学生,当时正学习《信号与系统》,同时看到前辈们对于傅里叶变换的各种精妙文章,就做了这样一个傅里叶级数可视化的小程序。

    最近整理资料时候,写此文章将其开源,希望对其他人有帮助啦。

    程序是这样纸的:

    2f0991ec5fb2f621ba81d616a04c013b.png
    程序主界面

    注:部分算法参考了网上关于傅里叶级数展开的已有文章。

    CSDN代码链接:https://download.csdn.net/download/sinat_38896294/10647356

    ============程序介绍=================

    一、打开方式

    运行 main.m文件 即可打开程序

    二、选题背景

    傅里叶变换是电类专业研究“信号与系统“的核心内容,正确理解傅里叶变换,首先应充分理解傅里叶级数的物理意义,即:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。

    本程序通过对傅里叶级数展开过程的可视化分析,利用MATLAB在绘图、计算方面的优势,将傅里叶的展开过程清晰地呈现出来,从而更好地帮助用户理解傅里叶级数,为电类专业未来的学习打下良好基础。

    三、程序介绍

    1. 程序核心为周期函数傅里叶展开的三维可视化。从时域、频域、相位等角度清晰地表现了傅里叶展开的过程。
    2. 程序以方波信号为例,用户可自主选择展开级数,从而得到不同精度的拟合函数。
    3. 下方三个图像更加清晰的展示了傅里叶级数展开后的物理意义,帮助用户理解傅里叶展开的核心内容。
    4. 利用rotate3d,用户可旋转图像,以从不同角度观察傅里叶展开细节。(三维图中,为使幅频特性更加清晰,对幅频特性的强度作了等比放大,实际大小可从下方离散幅度谱查看)

    四、文件结构介绍

    • ex_gui.m 为程序主框架
    • ex_fly_f(绘制离散幅频图)、ex_fly_dt(绘制动态拟合图)、ex_fly_one(绘制三维图)、ex_fly_nh(绘制拟合图)、ex_fly_zz(绘制各次谐波叠加图) 绘图核心程序。
    • draw_all(执行绘图命令函数)、filesave(保存图像)、radio_one_Callback(radio_one的callback函数)、radio_two_Callback(radio_two的callback函数)、calledit(多数控件的callback函数) 为自定义辅助函数。
    • ex_words 为存放程序背景的容器。

    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    展开全文
  • 前言说是前言,其实就是和大家简单唠唠。我也是学MATLAB踩过不少的坑,所以一路走来感触很深,至今我还记得我大学的老师说过的一句话:一切以你亲自操作的为准。其实,我的体会就是多用、多练,熟能生巧来形容再合适...
  • %中反五角高 topH = HL(faceA, baseR, '-'); %顶五角锥高 globR = midH/2 + topH; baseHeight = midH/2*radius(1)/globR; baseRadius = baseR*radius(1)/globR; topVex = [0, 0, radius(1)]; upperVex = ...
  • matlab应用——求极限,求导,求积分,解方程,函数绘图,三维图像,拟合函数....更多内容尽在个人专栏:matlab学习昨天思考了一下,因为笔者的GUI只是刚刚入门,如果直接说的话也说不了多少东西,所以先挖个坑,...
  • 服务器 2.5 英寸硬盘托架安装

    千次阅读 2019-08-19 19:17:44
    服务器 2.5 英寸硬盘托架安装 1. 2.5 英寸硬盘和 2.5 英寸硬盘托架 2. 拆除 2.5 英寸硬盘托架六棱柱 3. 放置硬盘 4. 加固螺丝
  • 激光打印机是通过激光头发射出来的激光束经过一个透镜后由一定的角度入射到六棱柱上,由转动的六棱柱将反射出来的激光束通过两个不同的透镜后扫射到感光鼓上,当入射角度改变时,投射到感光鼓上的角度也随着改变,
  • 新型金属碳硼烷夹心纳米线电子性质及其调制的理论研究,杨青青,商波,金属碳硼烷茂烯类化合物稳定性更高,制备容易。在实验制备夹心金属碳硼烷团簇的基础上,我们设计出了一类由金属和反六棱柱碳硼烷
  • Si3N4纳米线的热力学稳定性,王华涛,谢志鹏,本文研究了Si3N4纳米线的热力学稳定性。在1400-1550℃的温度下处理Si3N4纳米线:纳米线首先发生晶面化形成六棱柱,随后扁平化,直致形�
  • 3dmax材质疑难?透明材质如何设置?如何调制?今天小编在这里介绍一种设置透明材质的方法。1. 创建 → 拓展基本体 → 球棱柱边数 6,... 点击六棱柱 → 复合对象 → 布尔 → 拾取操作对象B → 点击三棱柱6. 画一个略...
  • 基本几何体:平面立体、曲面立体平面立体:棱柱、棱锥、棱台等曲面立体: 圆柱、圆锥、球等棱柱:这里先讨论正棱柱的画法正棱柱分:按正多边形的边数有正三棱柱、正四棱柱、正五棱柱、正六棱柱等。下面以正五棱柱为例介绍...
  • 球的表面积是大圆面积的4倍 * 西伯利亚 正六棱柱的侧面展开图是什么?如何计算它的表面积? 棱柱的展开图 正棱柱的侧面展开图 h a 正五棱锥的侧面展开图是什么?如何计算它的表面积? 棱锥的展开图 侧面展开 正棱锥...
  • MCNP及使用* * * * * * * * 信息块的第一张卡片,必须在第 1~8 列写上“MESSAGE:”,从第一张卡片的第 9~80 列到后续... * Box正方体rpp长方体sph球体 rcc正圆柱 RHP或HEX 正六棱柱。 * * * * * * 辐射防护与环境...
  • 点上面蓝色字体直观学机械可长期订阅我们法律顾问:赵建英律师咱们先看几个机械动画热热场↓↓机用虎钳六棱柱投影分析内卡钳平面斜投影平面正投影千分尺测量圆柱的投影越程槽中心投影钻孔接下来咱们分享机械制图基础...
  • 通过扫描电镜(SEM)观察结果表明:无取向硅钢中主要夹杂物为六棱柱的AlN、不规则硅酸盐及球状的铁的硫化物和氧化物,其中AlN夹杂尺寸在1~5μm,数量较多,还有部分AlN的复合夹杂。进一步研究了AlN复合夹杂形成机理,采用了...
  • 物体模式,创建一个六棱柱(顶点6,深度1,封盖类型:三角扇片) 编辑模式,【Ctrl+r】加1条环切线。 编辑模式,复制物体,按【a】键对物体全选,【shift+d】复制,【z】键锁定移动轴为z轴,移动鼠标可以看到...
  • iObjects.Net模型纹理更新功能及注意事项 背景 很多项目需求是在使用过程中能对模型进行纹理替换。与此同时许多客户就会打电话来咨询纹理替换...骨架通俗来讲可以理解为模型的形状架构,比如长方体或者六棱柱这...
  • 而其它弦与一弦二弦不同,其他弦内部也是高碳钢,但是高碳钢样式不像一弦二弦是圆柱状,而是棱柱,一般都是六棱柱的样式,界面呈六边形,然后在棱柱上缠绕一层金属线。外层的金属线材料有很多种,一般我们在购买的琴...
  • 通过对四面体、六面体、六棱锥以及六棱柱的观察,可归纳出一个一般性的结论为:F+V−E=2 F+V-E=2 进一步我们需验证其合理性:设想多面体某一面外增加一点 A 和该面(比如说有 k 个顶点的面)的各顶点联结起来, 增加...
  • (搞笑)邪恶的教具

    2009-04-19 17:52:00
    老师:同学们,这是一个什么形状啊?学生:(齐声)四棱锥!老师:很好!那它的展开图是什么样子呢(同时展开教具)?...学生:(齐声)六棱柱!老师:很好!那它的展开图又是什么样子呢(同时展开教具)?
  • CATIA一些技巧----------转自水木清华

    千次阅读 2004-12-26 21:58:00
    1.螺母的几种画法 ⑴先画好六棱柱,然后用小三角形旋转切除。⑵先画圆柱,然后将圆柱上下底面边缘倒角,再用六边形拉伸向外切除。 2. 三维零件建模时的命名 零件建模时,系统会自动在其模型树的开头为零件命名,...
  • 形貌视觉测量中立体拼接靶标的设计及应用.pdf,设计了一种正六棱柱形状的立体拼接靶标,以靶标侧面6个棋盘格的角点作为全局控制点。基于近景摄影测量技术,建立立体靶标的6个单元模型,通过计算模型内摄站间的相对...

空空如也

空空如也

1 2
收藏数 28
精华内容 11
关键字:

六棱柱