我想比较两点,如果一个点位于特定区域,它应该生成另一个点,不知怎的,我的程序不会这样做... 这只是它的一部分...
我的进口商品:
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,任何错误的重绘()?
答案 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();
这是检查特定点是否与某个区域相吻合的非常简单的方法。