首页/文章/ 详情

圆上一点伴随圆在正旋曲线上运动该点生成的运动轨迹Matlab程序实现

3年前浏览2383

image.png

 过冷水诚挚邀请你加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载,群号:927550334 

QQ图片20210424105303.png

    前段时间过冷水遇到了这么一个有趣的运动图像问题:小圆在正旋轨迹上上做运动,请问圆上的一点的运动轨迹图像该如何有Matlab求出来?

wayne.gif

    刚开始过冷水以外是一个很简单的问题,想着沿着正旋曲线上的点绘制绘制圆不就可以了?于是得到的是以下图像

clear
x=linspace(0,5*2*pi,200);
y=sin(x);
figure1 = figure;
axes1 = axes('Parent',figure1,'Position',[0.13 0.11 0.775 0.184633077765608]);
hold(axes1,'on');
for i=1:length(x)
    plot(x,y,'Parent',axes1,'LineWidth',3)
    hold(axes1,'on');
    axis off
    rectangle('Position', [x(i)-1, y(i)-1, 1, 1], 'Curvature', [1 1]);
    xlim(axes1,[0 30]);
    ylim(axes1,[-4 4]);
    box(axes1,'on');
    set(axes1,'LineWidth',3);
     hold(axes1,'off');
    getframe;%
end

    绘制出来后做比较才发现错的很离谱,究竟是错在什么地方了呢?小圆在正旋上始终是正切的,而我绘制出来的就是根据正旋上的点绘制一个园没有正交性可言,所以过冷水就在想该如何实现正切?假设正弦上任意一点为(x0,y0),正切圆满足两个条件1;圆心到正弦交点对应的函数和正弦函数正交;2 圆心到正旋交点的距离等于半径1;因此可以列方程:

image.png

    解方程求圆心然后画圆。

wayne2.gif

clear
x=linspace(0,5*2*pi,200);
y=sin(x);
y3=-1./cos(x);
figure1 = figure;
axes1 = axes('Parent',figure1,'Position',[0.13 0.11 0.775 0.184633077765608]);
hold(axes1,'on');
gg=1;
for i=1:length(x)
    plot(x,y,'Parent',axes1,'LineWidth',3)
    hold(axes1,'on');
    axis off
    syms n m
    s=solve((m-y(i))./(n-x(i))==(y3(i)), (n-x(i)).^2 (m-y(i)).^2==1^2,n,m);
    center=[double(s.n),double(s.m)]
    plot(center(2,1),center(2,2),'MarkerFaceColor',[0 1 0],'MarkerEdgeColor',[0 1 0],'MarkerSize',20,'Marker','.','LineStyle','none')
    plot(sin(-pi:0.1:pi) center(2,1),cos(-pi:0.1:pi) center(2,2));
    xlim(axes1,[0 30]);
    ylim(axes1,[-4 4]);
    box(axes1,'on');
    set(axes1,'LineWidth',3);
    hold(axes1,'off');
    getframe;
end

    我们得到了看上去比较正常的的圆在正旋曲线上的运动案例,可是关于某一点的运动轨迹并没有绘制出来,应该如何实现?首先原上的点应该是是有圆心加角度确定的:

image.png

    好了,根据该方程给出了点的轨迹图,然后在动态绘图上做一点小技巧就可以实现我们想要的效果。

wayne.gif

    由于之前过冷水一直有的大家绘制动态图像的技巧,关于图像化的具体实现只是一个灵活应用的问题,过冷水就不再反复讲,感兴趣的可以自行看程序代码本期过冷水要和大家分享的知识点就上述这么多,有感兴趣的问题欢迎留言讨论。

图片

        过冷水发表于 仿真秀 平台原创文章,未经授权禁止私自转载,如需转载请需要和作者沟通表明授权声明,未授权文章皆视为侵权行为,必将追责。如果您希望加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载均可加群:927550334。

精品回顾

 matlab绘制农夫过河动态图

分子动力学的原子空间运动轨迹演示编程

过冷水带你用matlab制作演示动画

python批量移动文件&重命名代码分享

过冷水和你分享 matlab读取存储各种文件的方法 文末有独家金曲分享

image.png

MATLAB
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2021-05-05
最近编辑:3年前
过冷水
博士 | 讲师 讨论号:927550334
获赞 361粉丝 184文章 107课程 11
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈