| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 996 人关注过本帖
标题:怎么在已经独立运动的整体加上一个具有向左运动的速度(自己运动+整体向左运 ...
只看楼主 加入收藏
V菜鸟V
Rank: 2
等 级:论坛游民
帖 子:97
专家分:10
注 册:2014-11-27
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:12 
怎么在已经独立运动的整体加上一个具有向左运动的速度(自己运动+整体向左运动),谢谢了,给点想法。
已经有了,自己运动的编程了,代码可能有点长,期望您能用点时间看看,现在的目的是再加上一个整体向左运动的速度或者说是逐渐向左运动吧,,,,谢谢了。
移栽机.zip (170.36 KB)
  

图片附件: 游客没有浏览图片的权限,请 登录注册
2015-03-11 19:27
V菜鸟V
Rank: 2
等 级:论坛游民
帖 子:97
专家分:10
注 册:2014-11-27
收藏
得分:0 
上面的的就是自己在哪里转动,现在想让整体向左走,并且自己也在转动,也就是想合成运动,谢谢了,给点想法也行,代码编写的有点长,期望您能看下去,麻烦您了。
2015-03-11 19:30
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:4 
我没看代码,如果问题是合成机构在自我运动的同时,整个机构作为整体还有一个运动的视觉效果。
简单解决方法:机构画在一个Picturebox中,根据要求在窗体中移动Picturebox控件。

大开眼界
2015-03-12 08:48
V菜鸟V
Rank: 2
等 级:论坛游民
帖 子:97
专家分:10
注 册:2014-11-27
收藏
得分:0 
回复 3楼 lianyicq
恩恩,我考虑过这个想法了,谢谢,我试试。
2015-03-12 18:24
V菜鸟V
Rank: 2
等 级:论坛游民
帖 子:97
专家分:10
注 册:2014-11-27
收藏
得分:0 
回复 3楼 lianyicq
不对啊,如果Picture 移动的画,那我的整体布置就不是摆设了?Picture在哪里跑来跑去的,不好看啊,还是我的想法简单了,,,,您解释一下啊,,,
2015-03-12 18:38
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
好吧,正在看代码,
为什么 变量都定义为 Double ,而不是定义为 Single 呢。

等会再继续。有思路,实践一下再说

授人于鱼,不如授人于渔
早已停用QQ了
2015-03-12 20:12
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:12 
好吧,代码没兴趣继续研究了。  绘图代码没有封装在一起,不想再看了。

增加三个变量的定义。我调试时,不愿去修改按钮动作,就临时改为了常量。
Dim xL As Double
Dim xL2 As Double

'Dim xladd As Double
Const xladd = 1

-------------------------------------
Static k2 As Double
Dim k3 As Double
If k2 = 360 Then
k2 = 0
End If

If k2 = 0 Then
k3 = 359
Else
k3 = k2 - 1
End If

'偏移量计算,xl2是上一次的,用于清除,xl是本次的,用于绘制
xL2 = xL
xL = xL - xladd

 '清理部分,X坐标,一律加上 xl2 这个偏移量
Picture1.DrawWidth = 2
Picture1.Line (0, 0)-(xa(k3), ya(k3)), Picture1.BackColor
Picture1.Line (xa(k3) + xL2, ya(k3))-(xb(k3) + xL2, yb(k3)), Picture1.BackColor
Picture1.Line (xb(k3) + xL2, yb(k3))-(xc(k3) + xL2, yc(k3)), Picture1.BackColor
Picture1.Line (xb(k3) + xL2, yb(k3))-(xe(k3) + xL2, ye(k3)), Picture1.BackColor


If k3 > 68 And k3 < 150 Then
 Picture1.Line (xe(k3) - 30 + xL2, ye(k3))-(xe(k3) - 20 + xL2, ye(k3) - 15 * Sqr(3)), Picture1.BackColor
 Picture1.Line (xe(k3) + xL2, ye(k3))-(xe(k3) - 10 + xL2, ye(k3) - 15 * Sqr(3)), Picture1.BackColor
Else
 Picture1.Line (xe(k3) + xL2 - 30, ye(k3))-(xe(k3) - 15 + xL2, ye(k3) - 15 * Sqr(3)), Picture1.BackColor
 Picture1.Line (xe(k3) + xL2, ye(k3))-(xe(k3) - 15 + xL2, ye(k3) - 15 * Sqr(3)), Picture1.BackColor
End If
Picture1.Line (xc(k3) + xL2, yc(k3))-(xd, yd), Picture1.BackColor

 Picture1.DrawWidth = 1
 Picture1.Line (-100, -(137 + 15 * Sqr(3)))-(200, -(137 + 15 * Sqr(3))), Picture1.BackColor

Picture1.DrawWidth = 2
Picture1.Circle (0, 0), 30, Picture1.BackColor
Picture1.Circle (xa(k3) + xL2, ya(k3)), 10, Picture1.BackColor
Picture1.Circle (2 * xa(k3) / 3 + xL2, 2 * ya(k3) / 3), 10, Picture1.BackColor
Picture1.Circle (xb(k3) + xL2, yb(k3)), 2, Picture1.BackColor
Picture1.Circle (xe(k3) + xL2, ye(k3)), 2, Picture1.BackColor
Picture1.Circle (xc(k3) + xL2, yc(k3)), 2, Picture1.BackColor
Picture1.Circle (xd + xL2, yd), 1, Picture1.BackColor

'绘制部分,一律添加 xl 这个偏移量
Picture1.DrawWidth = 2
Picture1.Line (0, 0)-(xa(k2), ya(k2)), RGB(0, 0, 0)
Picture1.Line (xa(k2) + xL, ya(k2))-(xb(k2) + xL, yb(k2)), RGB(0, 0, 0)
Picture1.Line (xb(k2) + xL, yb(k2))-(xc(k2) + xL, yc(k2)), RGB(0, 0, 0)
Picture1.Line (xb(k2) + xL, yb(k2))-(xe(k2) + xL, ye(k2)), RGB(0, 0, 0)
If k2 > 68 And k2 < 150 Then
 Picture1.Line (xe(k2) - 30 + xL, ye(k2))-(xe(k2) - 20 + xL, ye(k2) - 15 * Sqr(3)), RGB(255, 0, 0)
 Picture1.Line (xe(k2) + xL, ye(k2))-(xe(k2) - 10 + xL, ye(k2) - 15 * Sqr(3)), RGB(255, 0, 0)
Else
 Picture1.Line (xe(k2) - 30 + xL, ye(k2))-(xe(k2) - 15 + xL, ye(k2) - 15 * Sqr(3)), RGB(255, 0, 0)
 Picture1.Line (xe(k2) + xL, ye(k2))-(xe(k2) - 15 + xL, ye(k2) - 15 * Sqr(3)), RGB(255, 0, 0)
End If
Text7.Text = Format((xe(k2) - 15), "0.00")
Text8.Text = Format((ye(k2) - 15 * Sqr(3)), "0.00")
Picture1.Line (xc(k2) + xL, yc(k2))-(xd + xL, yd), RGB(0, 0, 0)

 Picture1.DrawWidth = 1
 Picture1.Line (-100, -(137 + 15 * Sqr(3)))-(200, -(137 + 15 * Sqr(3))), RGB(0, 0, 0)
 

Picture1.DrawWidth = 2
Picture1.Circle (0, 0), 30, RGB(0, 0, 0)
Picture1.Circle (xa(k2), ya(k2)), 10, RGB(0, 0, 0)
Picture1.Circle (2 * xa(k2) / 3 + xL, 2 * ya(k2) / 3), 10, RGB(0, 0, 0)
Picture1.Circle (xb(k2) + xL, yb(k2)), 2, RGB(0, 0, 0)
Picture1.Circle (xe(k2) + xL, ye(k2)), 2, RGB(0, 0, 0)
Picture1.Circle (xc(k2) + xL, yc(k2)), 2, RGB(0, 0, 0)
Picture1.Circle (xd + xL, yd), 1, RGB(0, 0, 0)
For k4 = 0 To 359
Picture1.Line (xe(k4) - 15 + xL, ye(k4) - 15 * Sqr(3))-(xe(k4 + 1) - 15 + xL, ye(k4 + 1) - 15 * Sqr(3)), RGB(0, 0, 0)
Next k4
Text11.Text = Format((360 - k2), "0.00")
Text12.Text = Format((180 + k2), "0.00")

k2 = k2 + 1

-------------------------------------
还有一大堆代码,没去看,
经过测试,你的绘图函数不是在一个,所以需要使用二个变量来修正左移。
在清理部分,使用 xl2 进行运行,而 绘制部分则使用 xl 进行修改。
-----------------------
我测试代码里把 xladd 定义为一个常量,其实这里应该定义为变量,然后根据那个按钮来对这个
变量的值进行修改。
当向左移动时,  xladd = 1
当不向左移动时,xladd = 0
这样来切换为左移和停止。
--------------------
1太快了的话,可以使用小数。

授人于鱼,不如授人于渔
早已停用QQ了
2015-03-12 20:42
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:4 
风吹过b版主说得很好。代码不规范,不易读,不易改,不易扩展。
风吹过b版主给出了标准思路,给计算得到的点加偏移,再画线,画圆。
我给出的办法可以这样试,以PICTUREBOX1为容器,新建PICTUREBOX2,图都画在PICTUREBOX2中,无边框,背景色和PICTUREBOX1一样。PICTUREBOX2的尺寸跟据设定的构件初始参数值来计算得到,以恰好画全构件为宜。
每一时间间隔对PICTUREBOX2的位置进行调整,不影响其他控件显示。

大开眼界
2015-03-13 08:49
V菜鸟V
Rank: 2
等 级:论坛游民
帖 子:97
专家分:10
注 册:2014-11-27
收藏
得分:0 
回复 7楼 风吹过b
谢谢,我在看看,嗯呢,谢谢版主啊,,,,
2015-03-14 12:58
V菜鸟V
Rank: 2
等 级:论坛游民
帖 子:97
专家分:10
注 册:2014-11-27
收藏
得分:0 
回复 8楼 lianyicq
谢谢啊,的确,我是半路出家的,没办法,,,谢谢了,,,,谢谢。
2015-03-14 12:59
快速回复:怎么在已经独立运动的整体加上一个具有向左运动的速度(自己运动+整体 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044260 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved