可以用一个定时器,和一个全局的x,y坐标
每个一秒(或别的时间),就改变
x,y坐标,并让窗口重画而OnPaint中只需要一句
dcEllipse(x,y,width,height);
就行了
clc,clear;
%一个三维随机运动的小球
r=05;%球的半径
%运动的范围
x1=0;x2=30;
y1=0;y2=30;
z1=0;z2=30;
%初始位置 随机生成
x0=rand(1)(x2-x1-2r)+x1;
y0=rand(1)(y2-y1-2r)+y1;
z0=rand(1)(z2-z1-2r)+z1;
pos=[x0;y0;z0];
figure(1)
[x,y,z] = ellipsoid(pos(1),pos(2),pos(3),r,r,r);
surf(x,y,z,ones(size(x))) %画出来球
n=200;%随机运动的次数
p=1; %p可以用来控制每次运动距离的大小
for i=1:n
%产生运动的方向与运动距离,用一个随机向量表示
s=0;
while(s==0)
direct=rand(3,1)-05;
dd=direct/norm(direct,2);
dd=ddp;
post=pos+dd;
if (post(1)>=x1+r&&post(1)<=x2-r)&&(post(2)>=y1+r&&post(2)<=y2-r)&&(post(3)>=z1+r&&post(3)<=z2-r)
s=1;
end
end
pos=pos+dd;
[x,y,z] = ellipsoid(pos(1),pos(2),pos(3),r,r,r);
surf(x,y,z,ones(size(x))) %画出来球
axis([x1 x2 y1 y2 z1 z2])
pause(01); %设置暂停时间
end
因为是随机运动 如果每次运动的距离设置的不大,小球基本上是在初始位置的范围内运动
import androidappActivity;
import androidosBundle;
import androidviewMotionEvent;
import androidviewView;
import androidviewViewOnTouchListener;
import androidwidgetLinearLayout;
public class MoveballActivity extends Activity {
/ Called when the activity is first created /
@Override
public void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
setContentView(Rlayoutmain);
LinearLayout root = (LinearLayout)findViewById(Ridroot);
final DrawView draw = new DrawView(this);
drawsetMinimumWidth(300);
drawsetMinimumHeight(500);
drawsetOnTouchListener(new OnTouchListener(){
public boolean onTouch(View arg0, MotionEvent event){
drawcurrentX = eventgetX();
drawcurrentY = eventgetY();
drawinvalidate();
return true ;
}
});
rootaddView(draw);
}
}
import androidcontentContext;
import androidgraphicsCanvas;
import androidgraphicsColor;
import androidgraphicsPaint;
import androidviewView;
public class DrawView extends View{
public float currentX = 40 ;
public float currentY = 50 ;
public DrawView (Context context){
super(context);
}
public void onDraw(Canvas canvas){
superonDraw(canvas);
//创建画笔
Paint p = new Paint();
//设置画笔的颜色
psetColor(ColorRED);
//绘制一个小圆(作为小球)
canvasdrawCircle(currentX, currentY, 15, p);
}
}
跟随手指移动的小球,参考一下吧。
楼上说的对,用棋盘格的贴图,它是maya自带的程序贴图,你需要修改参数实现横条的效果,默认的棋盘格是黑白相间的正方形,即UV是1:1的,你需要在选中棋盘格的属性中更改之,打开参数面板,你可以一一测试!
我发到你邮箱去吧!,发我好长时间哦~~~~~~
在vc++的win32 application 应用程序的工程打开运行,也就是说我用windows程序编写的。
里面没有完全照你的要求编写,原因有两个:
第一:你有要求:“一个五颜六色的小球能在屏幕上随机行走(按不同方向和轨迹运动)。”那么适合在编写二维平面程序。
第二:有又来了第二个要求:“小球的轮廓和色彩明晰,动画显示逼真”,这就要求在三维空间中编写,所以,两个在技术上有冲突(至少对我来说呵呵~~)。
我最后在编写了一个在三维空间中运动的物体,用键盘上下键可以运动人的视野和物体,用鼠标运动可以启发物体的走动
我发到你邮箱去吧,但是注意运行的时候一定要注意不要把我的程序拷贝到VC++中去,你就直接双击我发给你的其中的那个 dsw文件,就可以正确的打开。
有问题还可以问
看看符合要求不?
Option Explicit
Dim x, y As Integer '匀速旋转小球的位置
Dim A As Integer '角度
Private Sub Form_Load()
Show
MePicture1Width = 2000
MePicture1Height = 2000
MePicture1Scale (-1000, -1000)-(1000, 1000)
A = 0
MeTimer1Interval = 100
End Sub
Private Sub Timer1_Timer()
MePicture1Cls
MePicture1Circle (0, 0), 500
MePicture1PSet (0, 0)
A = A + 1
If A = 360 Then A = 0
x = 500 Sin(A)
y = 500 Cos(A)
MePicture1Circle (x, y), 20, vbRed
End Sub
以上就是关于C++小球移动全部的内容,包括:C++小球移动、Matlab编写程序实现一个随机运动的小球、求一android程序源码 让小球沿指定路径运动等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)