我想比较两点,如果一个点在特定区域中,它应该生成另一个点,所以我的程序无法执行此操作...
这只是其中的一部分...

我的进口:

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,使用repaint()是否有错误?

最佳答案

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


这是一种非常简单的检查特定点是否会拖到特定区域的方法。

10-06 14:39