文章目录:
滚动的小球 java源代码
;
要制造那种效果只需要大约 30 行 Java 代码:
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
class RollingBall extends JPanel {
Ellipse2D.Float ball = new Ellipse2D.Float( -100, 100, 50, 50 );
public void paintComponent( Graphics g ) {
super.paintComponent( g );
Graphics2D g2 = ( Graphics2D ) g;
// Draw the ball
g2.fill( ball );
// Draw the rotating ellipse by skewing the Device Space
double angdeg = // One rotation per ball's travelling over its perimeter
ball.x++ % ( Math.PI * ball.width ) / ( Math.PI * ball.width ) * 360;
g2.rotate( Math.toRadians( angdeg ), ball.getCenterX( ), ball.getCenterY( ) );
g2.scale( .5, 1 );
g2.translate( ball.getCenterX( ), 0 );
g2.setColor( Color.gray );
g2.fill( ball );
}
public void roll( ) throws Exception {
while( true ) {
repaint( );
Thread.sleep( 8 );
}
}
public static void main( String[ ] args ) throws Exception {
JFrame f = new JFrame( );
RollingBall rb = new RollingBall( );
f.setSize( 999, 185 );
f.getContentPane( ).add( rb );
f.setVisible( true );
rb.roll( );
}
}
c++设计两个小球碰撞演示的源代码
看题义应该是只考虑在一维空间这种简单的情形,也就是只有正反两个同线方向,并且还不用考虑的球的大小(如果一个小球与一个大球相撞,还要考虑撞击方向不在两球心连线上,会怎么样?!当然画图演示时如果球有大小,就要把握好撞击的时刻),同向撞击和反向撞击其实是归类到同一个物理公式中的,撞击后的球速并不难求(根据动量守恒求方向,根据能量守恒求大小,当然要把公式简化变形到适合程序计算的形式)。如果只是想以文字方式打印输出那实在是太简单了,没什么好说的;如果是想以动画方式形象地演示出来,这里有一个粗糙的方案:设定一个很小的时间间隔,每隔个时间片断后,计算一下两球的位移(根据当时的速度计算相对上一次位移的偏移量),每次都要比较这两个位移的相对距离,如果发现这个距离小于事先设定好的误差值就认为它们相撞了,在这一刻利用物理公式计算出新的球速,以后就按新球带更新位移……
求一android程序源码 让小球沿指定路径运动
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.LinearLayout;
public class MoveballActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout root = (LinearLayout)findViewById(R.id.root);
final DrawView draw = new DrawView(this);
draw.setMinimumWidth(300);
draw.setMinimumHeight(500);
draw.setOnTouchListener(new OnTouchListener(){
public boolean onTouch(View arg0, MotionEvent event){
draw.currentX = event.getX();
draw.currentY = event.getY();
draw.invalidate();
return true ;
}
});
root.addView(draw);
}
}
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
public class DrawView extends View{
public float currentX = 40 ;
public float currentY = 50 ;
public DrawView (Context context){
super(context);
}
public void onDraw(Canvas canvas){
super.onDraw(canvas);
//创建画笔
Paint p = new Paint();
//设置画笔的颜色
p.setColor(Color.RED);
//绘制一个小圆(作为小球)
canvas.drawCircle(currentX, currentY, 15, p);
}
}
跟随手指移动的小球,参考一下吧。
etVisible( true ); rb.roll( ); }} c++设计两个小球碰撞演示的源代码看题义应该是只考虑在一维空间这种简单的情形,也就是只有正反两个同线方向,并且还不用考虑的球的大小(如果一个小球与一个大球相撞,还要考虑撞击方向不在两球