Java模拟桌球打击处理及绘制

本文介绍了一种使用Java实现桌球碰撞处理和绘制的方法,通过复杂的数学运算模拟桌球运动轨迹,包括球体初始位置、速度、碰撞计算等。代码中创建了桌面、球以及碰撞规则,并提供了鼠标交互功能,可以进行视觉效果演示。
摘要由CSDN通过智能技术生成
由于Java可以很轻易的完成比较复杂的数学运算,所以我们经常能看到物理领域的问题借助Java实现效果演示,下面我给出一个桌球碰撞的处理及绘制实例。

package  org.test.mail;

import  java.awt.Color;
import  java.awt.Frame;
import  java.awt.Graphics;
import  java.awt.Image;
import  java.awt.Panel;
import  java.awt.event.MouseEvent;
import  java.awt.event.MouseListener;
import  java.awt.event.MouseMotionListener;
import  java.awt.event.WindowAdapter;
import  java.awt.event.WindowEvent;
import  java.awt.image.BufferedImage;

/**
 * <p>
 * Title: LoonFramework
 * </p>
 * <p>
 * Description:Java桌球演示
 * </p>
 * <p>
 * Copyright: Copyright (c) 2007
 * </p>
 * <p>
 * Company: LoonFramework
 * </p>
 * 
 * 
@author chenpeng
 * @email:ceponline@yahoo.com.cn
 * 
@version 0.1
 
*/


public   class  JavaBilliards  extends  Panel  implements  Runnable, MouseListener,
        MouseMotionListener 
{

    
/**
     * 
     
*/

    
private static final long serialVersionUID = -5019885590391523441L;

    
// 球
    private double _ball;

    
// 缓存用背景
    private Image _screen;

    
// 画布
    private Graphics _graphics;

    
// 台桌
    private Image _table;

    
private double c[];

    
private double d[];

    
private double e[];

    
private double f[];

    
private int countBall;

    
private int h;

    
private double i[];

    
private double j[];

    
private double k[];

    
private double l[];

    
private double m[];

    
private double n[];

    
private double o[];

    
private double p[];

    
private boolean q[];

    
private double r;

    
private int a;

    
private int u;

    
private int v;

    
private int w;

    
private int x;

    
private boolean y;

    
private int z;

    
private int A;

    
/**
     * 初始化
     * 
     
*/

    
public JavaBilliards() {
        a 
= 0;
        r 
= 10D;
        z 
= 300;
        A 
= 0;
        setBounds(
5050700350);
        Frame frame 
= new Frame("Java桌球演示");
        frame.add(
this);
        frame.setBounds(
00700380);
        frame.setResizable(
false);
        frame.setVisible(
true);
        frame.addWindowListener(
new WindowAdapter() {
            
public void windowClosing(WindowEvent e) {
                System.exit(
0);
            }

        }
);
        requestFocus();
        initialize();
    }


    
public void initialize() {
        
// 基础数据
        base();
        
// 注入实例
        immit();
        
// 缓存背景
        _screen = new BufferedImage(this.getWidth(), this.getHeight(), 1);
        
// 背景图形
        _graphics = _screen.getGraphics();
        
// 绘制台桌
        makeTable();
        
// 设置监听
        addMouseListener(this);
        addMouseMotionListener(
this);
        
// 启动
        new Thread(this).start();
    }


    
/**
     * 初始化数据
     * 
     
*/

    
public void base() {

        
// 球体
        _ball = 16D;
        c 
= (new double[] { 40D, (double) (getWidth() - 40) });
        d 
= (new double[] { c[0], (double) getHeight() - c[0] });
        e 
= (new double[] { c[0+ 20D, (double) (getWidth() / 2), c[1- 20D });
        f 
= (new double[] { d[0+ 20D, d[1- 20D });
    }


    
/**
  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值