Add File
This commit is contained in:
106
src/main/java/org/dromara/easyai/tools/RegionBody.java
Normal file
106
src/main/java/org/dromara/easyai/tools/RegionBody.java
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
package org.dromara.easyai.tools;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import org.dromara.easyai.matrixTools.Matrix;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lidapeng
|
||||||
|
* @description 分区实体
|
||||||
|
*/
|
||||||
|
public class RegionBody {
|
||||||
|
private int minX = -1;
|
||||||
|
private int minY = -1;
|
||||||
|
private int maxX;
|
||||||
|
private int maxY;
|
||||||
|
private int type;
|
||||||
|
private int xSize;
|
||||||
|
private int ySize;
|
||||||
|
private List<Integer> pointList = new ArrayList<>();
|
||||||
|
private Matrix regionMap;//分区图
|
||||||
|
|
||||||
|
RegionBody(Matrix regionMap, int type, int xSize, int ySize) {
|
||||||
|
//System.out.println("type===" + type);
|
||||||
|
this.regionMap = regionMap;
|
||||||
|
this.type = type;
|
||||||
|
this.xSize = xSize;
|
||||||
|
this.ySize = ySize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Integer> getPointList() {
|
||||||
|
return pointList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setType(int type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void mergeRegion(RegionBody regionBody) throws Exception {
|
||||||
|
List<Integer> list = regionBody.getPointList();
|
||||||
|
for (int pixel : list) {
|
||||||
|
int x = pixel >> 12;
|
||||||
|
int y = pixel & 0xfff;
|
||||||
|
setPoint(x, y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPoint(int x, int y) throws Exception {
|
||||||
|
if (x < minX || minX == -1) {
|
||||||
|
minX = x;
|
||||||
|
}
|
||||||
|
if (x > maxX) {
|
||||||
|
maxX = x;
|
||||||
|
}
|
||||||
|
if (y < minY || minY == -1) {
|
||||||
|
minY = y;
|
||||||
|
}
|
||||||
|
if (y > maxY) {
|
||||||
|
maxY = y;
|
||||||
|
}
|
||||||
|
int pixel = x << 12 | y;
|
||||||
|
pointList.add(pixel);
|
||||||
|
//System.out.println("type==" + type);
|
||||||
|
regionMap.setNub(x, y, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setX(int x) {
|
||||||
|
if (x < minX || minX == -1) {
|
||||||
|
minX = x;
|
||||||
|
}
|
||||||
|
if (x > maxX) {
|
||||||
|
maxX = x;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setY(int y) {
|
||||||
|
if (y < minY || minY == -1) {
|
||||||
|
minY = y;
|
||||||
|
}
|
||||||
|
if (y > maxY) {
|
||||||
|
maxY = y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMinX() {
|
||||||
|
return minX * xSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMinY() {
|
||||||
|
return minY * ySize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMaxX() {
|
||||||
|
return maxX * xSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMaxY() {
|
||||||
|
return maxY * ySize;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user