声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1093|回复: 5

[绘图技巧] 大虾帮忙看下我的半个圆怎么没有了?

[复制链接]
发表于 2009-6-3 02:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我写的一个程序,想质点绕半圆后再沿直线运动,但是不知道为什么右边的半圆怎么没有了?!应该怎么改进啊?请高手帮忙看下,谢谢!
clear;clc;
n=5;l=100;%变量声明
r=l/(2*(n-1));
y=-r:pi/500:50;%分段函数
x=0:pi/500:30;
len=length(y);
for i=1:len
    if (y(i)<0)
        y(i)=-(sqrt(r^2-(x(i)-r)^2));
    elseif (y(i)>=0)
        x(i)=2*r;
    end
end

comet(x,y);
plot(x,y);
axis equal;
grid
回复
分享到:

使用道具 举报

发表于 2009-6-3 07:24 | 显示全部楼层
for i=1:len
    if (y(i)<r)
        y(i)=-(sqrt(r^2-(x(i)-r)^2));
    elseif (y(i)>=r)
        x(i)=2*r;
    end
end

评分

1

查看全部评分

 楼主| 发表于 2009-6-3 10:21 | 显示全部楼层

回复 沙发 wwbeyond 的帖子

刚去睡了一会~~~~~
真是太感谢了~~~:@)

我又看了一下,但是不明白为什么改成r就可以了?我想的是y值<0的时候就是一个完整的半圆啊~~~还请高手指点一下哈:@)

[ 本帖最后由 ChaChing 于 2009-6-3 12:48 编辑 ]
发表于 2009-6-3 19:20 | 显示全部楼层
改成r後, y<0的确是一个完整的半圆!
发表于 2009-6-3 21:45 | 显示全部楼层
因为从你的程序和数据来看,圆的方程为
(x-r)^2+y^2=r^2
你一开始赋值y=-r:pi/500:50; x=0:pi/500:30; 此时的x与y不等长,你后面的程序要重新赋值,
而当x=0:pi/500:2*r时y对应的数据是y=-r:pi/500:r,所以应该用y(i)<r,不知说明白了没有。

实际上你的程序还可以改写为
n = 5;
l = 100;%变量声明
r = l/(2*(n-1));
t = linspace(-pi,0,2000);
y0=linspace(0,50,500);
x = [r+r*cos(t) 2*r*ones(1,500)];
y = [r*sin(t) y0];
comet(x,y);
plot(x,y);
grid
axis equal;

评分

1

查看全部评分

 楼主| 发表于 2009-6-3 23:51 | 显示全部楼层

回复 5楼 xiezhh 的帖子

是的哈~~~:@D
你的比我的简单多了,真是高手啊!领教了!非常感谢!
其实也可以只把步长改下,y=-r:pi/1000:50; x=0:pi/500:30;也能得到结果了。
也谢谢以上各位~:loveliness:
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-16 22:43 , Processed in 0.057439 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表