怎么用MATLAB APP Designer画渐开线齿轮齿廓

我在网上找的代码然后自己修改了一下,画出来的齿廓不太对

img


这是代码
m = app.moshu.Value;
z = app.chishu.Value;
a = app.yalijiao.Value;
ha1 = app.chidinggaoxishu.Value;
c1 = app.chidingxixishu.Value;

        hd = pi/180;
        N = 10;
        ra = (z/2 + ha1) * m;
        rb = 0.5 * z * m * cos(a * hd);
        rf = (z/2 - ha1 - c1) * m;
        rw = (z/2 - ha1) * m;
        theta_yalijiao = tan(a * hd) - a * hd;
        alpha_A = acos(rb/ra);
        theta_A = tan(alpha_A) - alpha_A;
        beta_A = pi/(2 * z) - (theta_A - theta_yalijiao);
        alpha_W = acos(rb/rw);
        theta_W = tan(alpha_W) - alpha_W;
        beta_W = pi/(2 * z) - (theta_W) - theta_yalijiao;
        
        %计算渐开线齿廓左侧各点的坐标
        r = rw : (ra - rw)/N : ra;%计算渐开线齿廓左侧各点的失径
        alpha = zeros(1, 1000000);
        theta = zeros(1, 1000000);
        beta = zeros(1, 1000000);
        x1 = zeros(1, 1000000);
        y1 = zeros(1, 1000000);
        for i = 1 : (N + 1)
            alpha(i) = acos(rb/r(i));%计算渐开线齿廓左侧各点的压力角
            theta(i) = tan(alpha(i)) - alpha(i);%计算渐开线齿廓左侧各点的展角
            beta(i) = pi/(2 * z) - (theta(i) - theta_yalijiao);%计算渐开线齿廓左侧各点的坐标角度
            x1(i) = - r(i) * sin(beta(i));%计算渐开线左侧各点的坐标
            y1(i) = r(i) * cos(beta(i));
        end
        
        %计算齿廓左侧其它各点的坐标
        xf = - rf * sin(beta_W);%计算左侧齿根曲线上F点的坐标
        yf = rf * cos(beta_W);
        xe = - rf * sin(pi/z);%计算左侧齿根曲线上E点的坐标 齿根圆角用
        ye = rf * cos(pi/z);
        xc = 0;%计算齿顶曲线C点的坐标
        yc = ra;
        x1 = [xe, xf, x1, xc];%合并左侧各段曲线的坐标
        y1 = [ye, yf, y1, yc];
        
        %计算齿廓右侧各点的坐标
        x2 = - x1;%镜像得到右侧各段曲线的坐标
        y2 = y1;
        x2 = rot90(x2);%将右侧各段曲线的坐标次序倒置,变成[xc,x1,xf,xe]
        x2 = rot90(x2);
        y2 = rot90(y2);
        y2 = rot90(y2);
        x = [x1, x2];%合并左右两侧的坐标
        y = [y1, y2];
        plot(x, y);%绘制一个完整齿廓
        hold on;
        
        %通过坐标变换将齿形曲线绕中心依次旋转得到其它的齿形
        delta = zeros(1, 1000000);
        for i = 1 : (z - 1)
            delta(i) = i * 2 * pi/z;%齿轮转角
            xy = [x', y'];%齿轮曲线坐标
            Al = [cos(delta(i)), sin(delta(i));
                -sin(delta(i)), cos(delta(i))];
            xy = xy * Al;%旋转后齿轮曲线坐标
            plot(xy(:,1), xy(:,2));
            hold on;%绘制齿轮
        end

        title('渐开线齿轮齿廓');
        hold on;
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7586822
  • 这篇博客也不错, 你可以看下基于MATLAB APP Designer设计图像处理小工具
  • 除此之外, 这篇博客: MATLAB App Designer入门实战(一)中的 1.如何在App启动时,让坐标区显示图像 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 如图所示,程序刚启动红框的位置内就已经有一个调色板,
    在这里插入图片描述
    如果在App Designer内编程,这个图片我们在这个坐标区域自动创建的时候没办法加一个这样的图像,因为:
    灰色区域无法手动修改
    在这里插入图片描述
    属性检查器没有添加图像的属性

    这时候就需要我们的startupFcn回调函数,这个函数是,在所有自动创建元件创建完后会自动调用一次,创建方法为:


    之后便可以使用imshow plot scatter等函数在startupFcn回调函数内为特定坐标区域绘制图像,这些函数对于UIAxes的使用方法详见Mathworks,这里列举一部分:

    plot:
    plot(app.UIAxes,X,Y)
    imshow:
    imshow(Pic,‘Parent’,app.UIAxes)

    Mathwork这部分内容链接:在 App 设计工具中显示图形

  • 您还可以看一下 苏金明老师的MATLAB高等数学计算与可视化课程中的 函数的等值线图小节, 巩固相关知识点