两点之间运动

ldsjlzy 2005-12-05 04:15:27
逻辑坐标中己知两个点CPoint1 和CPoint2,现要求一个运动点从点1到点2移动,
问在定时器中每次的点的变化如何算啊?

就是说如何得出一系列的移动轨迹的点,假设定时器频率为1秒,
每秒该运动点的值是如何算的?
...全文
101 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldsjlzy 2005-12-06
  • 打赏
  • 举报
回复
ffffffffffff
ldsjlzy 2005-12-06
  • 打赏
  • 举报
回复
谢谢大家
fisker0303 2005-12-06
  • 打赏
  • 举报
回复
同意xiao_fang(frank),几何题而已。
ggw 2005-12-06
  • 打赏
  • 举报
回复
可不可以用LineDDA及LineDDAProc计算?
laogong165 2005-12-06
  • 打赏
  • 举报
回复
根据比例算出的新位置的点的x和y不一定是整数,而每个点却必段是整型
---------------------------------------------------------------
这是没有办法的事情罗,只能看这样的偏差肉眼是否能察觉得到了
不过目前很多带运动轨迹的移动点看起来都很顺畅的说...
ldsjlzy 2005-12-05
  • 打赏
  • 举报
回复
现在就是要算出每段时间的点的值,因为有时候根据比例算出的新位置的点的x和y不一定是整数,而每个点却必段是整型,这样就会偏差很远,

举个例子:
CPoint1(100,100) CPoint2(200,200)

从点1开始,一秒后根据1和2的角度算出新位置点偏移x=0.923423,y=0.234424(假设值,没算)
这样新位置到底偏移了多少是(1,0)?还是(0,1)?
laofang 2005-12-05
  • 打赏
  • 举报
回复
几何题:
有直线y=kx+b,已知两点(x1,y1),(x2,y2)在直线上

解:
y1=k*x1+b
y2=k*x2+b

斜率
double k=(y1-y2)*1.0/(x1-x2);
double b=y1-k*x1;
int y;
for(int x=x1; x<=x2; x++)
{
y = int( k*x + b );
pDC->SetPixel( x, y, RGB(128, 128, 0) );
}
feiniaoliang 2005-12-05
  • 打赏
  • 举报
回复
换个方式想,就是每隔一段时间画一个点,直到把这个点从点1画到点2,

而运动的速度就取决于这个间歇的长短了,50毫秒,100毫秒,500毫秒或是1秒
laogong165 2005-12-05
  • 打赏
  • 举报
回复
看你打算在这两点中延迟多长时间罗,以及点密度
然后总有个比例关系的

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧