Matlab 版 (精华区)

发信人: ramjet (史努比狗), 信区: Matlab
标  题: [合集]请教一个折线程序
发信站: 哈工大紫丁香 (2003年03月01日12:04:59 星期六), 站内信件


────────────────────────────────────────
 rpg (行者)                           于 2003年02月28日10:34:34 星期五 说道:

我是一个matlab的初学者,最近碰到了点问题,请教大家:
我想做一个镜面反射的图象,可执行后的图象总是不对,下面是原码:
function pl1=plain(a,h) %平面镜面反射情况(在原点发射)
syms x
y1=[-tan(a) -h]  %用点斜式表示方程
x1=roots(y1)
x2=2*x1
y1=-tan(a)*x
y2=tan(a)*x
n=0
 while n<10  
   ezplot(x,y1,[n*x2,(n+1)*x1])     (1)
        hold on
    ezplot(x,y2,[(n+1)*x1,(n+1)*x2])  (2)
        n=n+1;
       hold on
  end
从图象看好像是循环的不对,本意是执行(1)+(2)后再循环,可执行的好像是(1)循
环+(2)循环。
郁闷中。。。
请大家指点迷津。thx。

────────────────────────────────────────
 zjliu (秋天的萝卜)                   于 2003年02月28日10:54:52 星期五 说道:

你把问题说得清楚些,反射面如何?入射角如何?

────────────────────────────────────────
 rpg (行者)                           于 2003年02月28日11:09:38 星期五 说道:

oh,sorry,我把问题简化了,入射点在原点,反射面是平面即y=0和y=-h,入射角是a。
x1是与y=-h的交点,x2是与y=0的交点。

────────────────────────────────────────
 zjliu (秋天的萝卜)                   于 2003年02月28日13:58:26 星期五 说道:

我做了改动,你看行不行
function pl1=plain(a,h) %平面镜面反射情况(在原点发射)
syms x
x1=h*tan(a)
x2=2*x1
y1=-tan(a)*x
y2=tan(a)*x
n=0
 while n<10
   ezplot(x,y1+(2*n)*h,[2*n*x1,(2*n+1)*x1])     %(1)
        hold on
    ezplot(x,y2-(2*n+2)*h,[(2*n+1)*x1,(2*n+2)*x1]) % (2)
        n=n+1;
       hold on
  end
line([0,x1*2*n],[0,0],'color','r')
line([0,x1*2*n],[-h,-h],'color','r')

────────────────────────────────────────
 rpg (行者)                           于 2003年03月01日09:14:20 星期六 说道:

多谢指正,我试了一下,效果是这样的:
                             /
                            /
                           /
                          -----
                          -----
                          \
                           \
                            \
我的目的是想要这样:
              ----------------------
               \    /\    /
                \  /  \  /
                 \/    \/
              ----------------------
呵呵,大侠再看一下好么?thx!

────────────────────────────────────────
 zjliu (秋天的萝卜)                   于 2003年03月01日10:50:21 星期六 说道:

这回行了
function pl1=plain(a,h) 
%平面镜面反射情况(在原点发射)
syms x;
x1=h*cot(a);
x2=2*x1;
y1=-tan(a)*x;
y2=tan(a)*x;
n=0;
figure;
hold on
while n<10
   ezplot(x,y1+(2*n)*h,[2*n*x1,(2*n+1)*x1]);     %(1)
   ezplot(x,y2-(2*n+2)*h,[(2*n+1)*x1,(2*n+2)*x1]); % (2)
   n=n+1;
end
line([0,x1*2*n],[0,0],'color','r','linewidth',2.4)
line([0,x1*2*n],[-h,-h],'color','r','linewidth',2.4)

────────────────────────────────────────
 rpg (行者)                           于 2003年03月01日11:19:31 星期六 说道:

hohohoho,果然,呵呵,多谢。

────────────────────────────────────────
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.443毫秒