直线反弹问题

0
line(x1,y1,x2,y2)
x1+=dx;
x2+=dx;
y1+=dy;
y2+=dy;
if(x1>=640||x1<=480||x2>=640||x2<=480)
	dx=-dx;

y 的写法同 x。

用这种写法不能保证直线恰好在边界反弹,要怎么改直线才能恰好在边界反弹?

ava
墒以光年🌈

2019-11-11

0
  1. 这里的边界判断有问题:
if(x1>=640||x1<=480||x2>=640||x2<=480)
  dx=-dx;

如果你的绘图窗口尺寸是 640x480,那么 x 需要判断 >= 0 和 <= 639。y 同理。

  1. 如果你的直线两端分别反弹,那么两端需要有不同的 dx 和不同的 dy。
ava
xiongfj ◑◑

2019-11-12

技术讨论社区
相关提问