来自鼠标JAVA的平均X和Y坐标

时间:2013-04-10 08:44:33

标签: java coordinates average

如何计算从JAVA中的鼠标IR事件接收的12个坐标的平均值?

我的意思是: 每个动作都以X和Y坐标发送给我。 在12个坐标中缓冲这些坐标 计算这12个坐标的平均值

我知道如何获得数组的平均值,但是当X是坐标时它是如何工作的? X尚未定义,因为它会发生变化,所以我该怎么办呢?

这样的事情就完成了工作:

  int count = 0;
     double buffer = 0;
     while(true){ // loop waarin inputs binnen komen
     if(true){ // stel dat je een input binnenkrijgt
           count++;
           buffer += oX;
              if( count == 12 ){ // als je er 12 gekregen hebt
                 //send_output( buffer/12 ); // verzend
                 // reset buffer en count
                 System.out.println(buffer/12);
                         buffer = 0;
                     count = 0;

                  }
            }
        }

@edit 也许更好地理解它:

public void onIrEvent(IREvent arg0) {       
    int oX;
    int oY;

    oX = arg0.getAx()/10;
    oY = arg0.getAy()/10;

oX和oY必须放在缓冲区中,可以有12个坐标。然后计算它们的平均值。

提前致谢

亲切的问候

帕斯卡

1 个答案:

答案 0 :(得分:0)

bufferXbufferY两个变量公开;并在此方法中设置它们

int i =0;
public void onIrEvent(IREvent arg0) {       
    int oX;
    int oY;

    oX = arg0.getAx()/10;
    oY = arg0.getAy()/10;

/////////////here set the buffer
  if(i<12){
     bufferX += oX;
     bufferY +=oY;
 }
 i++;
}

试试这个例子:

public class MouseMotionEventDemo extends JPanel implements MouseMotionListener {

private int mX, mY;
int bufferX = 0;
int bufferY = 0;
int count = 0;

public MouseMotionEventDemo() {
    addMouseMotionListener(this);
    setVisible(true);
}

public void mouseMoved(MouseEvent me) {
    mX = (int) me.getPoint().getX();
    mY = (int) me.getPoint().getY();
    bufferX += mX;
    bufferY += mY;
    System.out.println("X: "+mX+"  Y:"+mY);
    count++;
    if (count == 12) { 
        System.out.println("X average =" +bufferX / 12);
        System.out.println("Y average =" +bufferY / 12);
        count = 0;

    }
}

public void mouseDragged(MouseEvent me) {
     }

public static void main(String[] args) {
    JFrame f = new JFrame();
    f.getContentPane().add(new MouseMotionEventDemo());
    f.setSize(200, 200);
    f.show();


}

}