0

如何计算从 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 个坐标的缓冲区中。然后计算它们的平均值。

提前致谢

亲切的问候

帕斯卡

4

1 回答 1

0

makebufferXbufferY两个变量 public ;并在此方法中设置它们

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();


}

}

于 2013-04-10T08:59:14.270 回答