我在网上找的代码然后自己修改了一下,画出来的齿廓不太对
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;
如图所示,程序刚启动红框的位置内就已经有一个调色板,
如果在App Designer内编程,这个图片我们在这个坐标区域自动创建的时候没办法加一个这样的图像,因为:
灰色区域无法手动修改
属性检查器没有添加图像的属性
这时候就需要我们的startupFcn回调函数,这个函数是,在所有自动创建元件创建完后会自动调用一次,创建方法为:
‘
之后便可以使用imshow plot scatter等函数在startupFcn回调函数内为特定坐标区域绘制图像,这些函数对于UIAxes的使用方法详见Mathworks,这里列举一部分:
plot:
plot(app.UIAxes,X,Y)
imshow:
imshow(Pic,‘Parent’,app.UIAxes)
Mathwork这部分内容链接:在 App 设计工具中显示图形