「java轨迹挖掘」轨迹挖掘算法

博主:adminadmin 2022-12-23 03:00:08 56

今天给各位分享java轨迹挖掘的知识,其中也会对轨迹挖掘算法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

用java写一个物体移动的轨迹

lz 你好

我做了一个比较简单的雏形

绿色正方形水平随机运动

蓝色正方形垂直随机运动

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.math.*;

 

public class MoveRect extends Frame implements Runnable{

    private Rectangle hRect, vRect;

    private Image buffer;

    private Object o = new Object();

     

    public MoveRect(){

        super("MoveRect");

         

        hRect = new Rectangle(50,0,50,50);//水平随机运动的正方形

        vRect = new Rectangle(0,50,50,50);//垂直随机运动的正方形

         

        setUndecorated(true);  

        setLocation(500,200);

        setSize(400,400);

        setVisible(true);

        addWindowListener(new WindowAdapter(){

            public void windowClosing(WindowEvent e){

                System.exit(0);

            }

        });

    }

     

    //启动循环绘制(使正方形一直循环的运动)

    public void circleDraw(){

    }

     

    //绘制正方形的状态

    public void drawRect(Graphics g,Rectangle r){

        g.drawRect(r.x, r.y, r.width, r.height);

    }

     

    //双缓冲机制(主要解决闪屏)

    public void update(Graphics g){

        buffer = createImage(getSize().width, getSize().height);

         

        if(buffer != null){          

            Graphics g2 = buffer.getGraphics();

            paint(g2);

            g2.dispose();      

            g.drawImage(buffer, 0, 0, this);        

        }

         

        else{

            paint(g);

        }

    }

     

    public void paint(Graphics g){      

        g.setColor(Color.GREEN);

        drawRect(g,hRect);

        g.setColor(Color.BLUE);

        drawRect(g,vRect);

         

        hRect.x = (int)(Math.random()*351);

        vRect.y = (int)(Math.random()*351);  

    }

     

    public void run(){

        while(true){

            stop();

            rePaint();

        }              

    }

     

    //同步方法rePaint

    public synchronized void rePaint(){

        repaint();

    }

     

    //同步方法stop

    public synchronized void stop(){

        if(hRect.x = 50  vRect.y = 50){

            try {

                Thread.sleep(500);

            }

            catch (Exception ex) {

                ex.printStackTrace();

            }

        }      

    }

     

    public static void main(String[] args){    

        new Thread(new MoveRect()).start();

    }

}

关于java中模拟抛物线轨迹的问题

看了这套题目感觉很有兴趣,就花了一个中午亲手给你写了一个类似的例子,相信可以帮助你对这个游戏有很好的理解,从右向左那个是僵尸,点一下鼠标就出现植物,我只是起到一个抛砖引玉的作用。代码如下(绝对可以用的代码):

import java.awt.Dimension;

import java.awt.Graphics;

import java.awt.event.MouseEvent;

import java.util.Vector;

import javax.swing.JFrame;

import javax.swing.event.MouseInputAdapter;

public class PlantsAndZombies extends JFrame {

private static final long serialVersionUID = 1L;

public static final int screenWidth=800;

public static final int screenHeight=600;

Printer printer;

Zombies zombies=new Zombies();

Thread T_Zombies;

Bullet bullet=new Bullet();

Thread T_Bullet;

public PlantsAndZombies(){

this.setSize(new Dimension(screenWidth,screenHeight));

this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

this.addMouseListener(new Shoot(this));

this.setVisible(true);

printer=new Printer( this.getGraphics());

printer.Add(zombies);

printer.Add(bullet);

T_Zombies=new Thread(zombies);

T_Zombies.start();

T_Bullet=new Thread(bullet);

T_Bullet.start();

}

public void Shoot(){

bullet.getTarget(zombies);

}

public static void main(String[] args){

PlantsAndZombies game=new PlantsAndZombies();

}

public void run() {

while(true){

}

}

}

interface Drawable{

void drawMe(Graphics g);

}

class Zombies implements Drawable,Runnable{

public boolean isLive=true;

public int x=PlantsAndZombies.screenWidth;

public int y=500;

public void run() {

while(true){

if(x10){

x-=20;

}else x=PlantsAndZombies.screenWidth;

try {

Thread.sleep(500);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

public void drawMe(Graphics g){

g.drawRect(x,y,20,50);

}

}

class Bullet implements Drawable,Runnable{

private int x=0;

private int y=500;

private Zombies _z;

private float a,b,c;

private float step;

public void getTarget(Zombies z){

_z=z;

// 用三点确定一个抛物线的方法,计算弹道

int x1=0;

int y1=500;

int x2=(z.x-6*20)/2;

int y2=300;  // 抛物线高度200个像素

int x3=z.x-6*20; // 假设击中僵尸用3秒钟,在这3秒钟内僵尸向前移动了6*20个像素

int y3=500;

a=(float)((y2-y1)*(x3-x2)-(y3-y2)*(x2-x1))/(float)((x2*x2-x1*x1)*(x3-x2)-(x3*x3-x2*x2)*(x2-x1));

b=(float)((y2-y1)-a*(x2*x2-x1*x1))/(float)(x2-x1);

c=y1-a*x1*x1-b*x1;

step=(float)(x3-x1)/(float)(3*20);

}

public void run() {

while(true){

try {

x+=step;

y=(int)(a*x*x+b*x+c);

if(y500){

_z.isLive=false;

}

Thread.sleep(50);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

public void drawMe(Graphics g) {

g.drawRect(x,y,20,20);

}

}

class Printer extends Thread{

private VectorDrawable v=new VectorDrawable();

private Graphics _g;

public Printer(Graphics g){

_g=g;

this.start();

}

public void Add(Drawable o){

v.add(o);

}

public void run(){

while(true){

_g.clearRect(0,0,PlantsAndZombies.screenWidth,PlantsAndZombies.screenHeight);

for(Drawable o:v){

o.drawMe(_g);

}

try {

Thread.sleep(500);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

class Shoot extends MouseInputAdapter{

private PlantsAndZombies _adaptee;

public Shoot(PlantsAndZombies adaptee){

_adaptee=adaptee;

}

public void mouseClicked(MouseEvent e) {

_adaptee.Shoot();

}

}

Java如何让多个图片都按照一定轨迹下落

图片的位移(下落),可以通过修改图片的x,y坐标来实现, 在Swing/Html中,我们可以使用Timer定时(比如每隔100毫秒)去修改图片的x,y坐标即可实现,

多个图片都按照一定的轨迹移动,那都按照自己的轨迹的算法,去定时修改x,y坐标即可.

JavaFX是java先进的图形界面框架, 里面有3D和各种动画, 所以按照轨迹移动,都能轻松实现

JavaFX参考代码如下

import javafx.animation.Animation;

import javafx.animation.Interpolator;

import javafx.animation.PathTransition;

import javafx.animation.RotateTransition;

import javafx.application.Application;

import javafx.geometry.Insets;

import javafx.scene.Group;

import javafx.scene.Scene;

import javafx.scene.control.Button;

import javafx.scene.image.ImageView;

import javafx.scene.layout.HBox;

import javafx.scene.shape.MoveTo;

import javafx.scene.shape.Path;

import javafx.scene.shape.QuadCurveTo;

import javafx.stage.Stage;

import javafx.util.Duration;

public class PathAnimateDemo extends Application {

public static void main(String[] args) {

launch(args);

}

@Override

public void start(Stage primaryStage) throws Exception {

ImageView imv=new ImageView(getClass().getResource("ball.png").toExternalForm());

Path path = new Path();// 路径;运动轨迹

MoveTo mt = new MoveTo(20, 50);

QuadCurveTo quadTo2 = new QuadCurveTo(175, 190, 350, 30);

path.getElements().addAll(mt, quadTo2);

HBox hbox = new HBox(10);

Button btnStart = new Button("开始");

Button btnPause = new Button("暂停");

Button btnResume = new Button("继续");

Button btnStop = new Button("结束");

hbox.getChildren().addAll(btnStart, btnPause, btnResume, btnStop);

hbox.setPadding(new Insets(20));

hbox.setLayoutX(80);

hbox.setLayoutY(230);

Group root = new Group();

root.getChildren().addAll(imv, path, hbox); // 不添加path.就可以不显示path了

Scene scene = new Scene(root, 430, 300);

primaryStage.setTitle("JavaFX");

primaryStage.setScene(scene);

primaryStage.show();

//旋转动画设置

RotateTransition rt=new RotateTransition(Duration.millis(1000),imv);

rt.setInterpolator(Interpolator.LINEAR);

rt.setFromAngle(0);

rt.setToAngle(360);

rt.setCycleCount(Animation.INDEFINITE);

rt.play();

//路径动画设置

PathTransition pt = new PathTransition(Duration.millis(800), path, imv);// 路径动画

pt.setCycleCount(Animation.INDEFINITE);

pt.setAutoReverse(true);

btnStart.setOnAction(e - {

pt.playFromStart();// 从头开始播放

});

//----按钮的响应设置---

btnPause.setOnAction(e - {

pt.pause();

});

btnResume.setOnAction(e - {

pt.play(); // 播放

});

btnStop.setOnAction(e - {

pt.jumpTo(new Duration(0));// 跳到第0秒处

pt.stop();

});

}

}

java如何编写用鼠标脱出轨迹 我的代码怎么修改就有轨迹了 求帮助

把鼠标的x和y放一个队列里,限定队列长度,每次都把队列里的点画出来就行了。

java轨迹挖掘的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于轨迹挖掘算法、java轨迹挖掘的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-23,除非注明,否则均为首码项目网原创文章,转载请注明出处。