比较两点

时间:2015-03-03 14:39:22

标签: java random draw point graphic

我想比较两点,如果一个点位于特定区域,它应该生成另一个点,不知怎的,我的程序不会这样做... 这只是它的一部分...

我的进口商品:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.ArrayList;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
import org.opencv.core.Mat;
import org.opencv.core.MatOfByte;
import org.opencv.core.Point;
import org.opencv.highgui.Highgui;

我的方法:

public void drawMiddle(Graphics2D g) {
        g.setColor(Color.ORANGE);
        targetPoint = new Point(1080/2, 768/2);
        g.fillOval((int) targetPoint.x-5, (int)targetPoint.y-5, radius*2, radius*2);

        if((faceCenter.x > targetPoint.x-5 && faceCenter.x < targetPoint.x +5)&&(faceCenter.y > targetPoint.y-5 && faceCenter.y < targetPoint.y +5)){
            System.out.println("MATCH");
            // targetPoint random generieren
            targetPoint = new Point(Math.random()*1000+100, Math.random()*700+100);
            repaint();
        }


    }

如果您需要任何其他信息请告诉我:)

编辑:程序现在进入if子句,写入MATCH,但它不会生成一个新的Point,任何错误的重绘()?

1 个答案:

答案 0 :(得分:2)

想象一下Area是一个东西,它有x,y坐标和x,y大小。 Point有x,y坐标。然后你可以定义一个像这样的函数

public boolean isPointInArea(Area a, Point p){
    return (area.x <= myPoint.x && myPoint.x <= area.x + area.size_x &&
            area.y <= myPoint.y && myPoint.y <= area.y + area.size_y);
}

/* ... */

if (isPointInArea(area, point))
    spawnNewPoint();

这是检查特定点是否与某个区域相吻合的非常简单的方法。