我想比较两点,如果一个点在特定区域中,它应该生成另一个点,所以我的程序无法执行此操作...
这只是其中的一部分...
我的进口:
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();
这是一种非常简单的检查特定点是否会拖到特定区域的方法。