如何获取 GeneralPath 对象的顶点?看起来这应该是可能的,因为路径是由点(lineTo、curveTo 等)构造的。
我正在尝试创建点数据的 double[][] (x/y 坐标数组)。
您可以从以下网站取回积分PathIterator http://download.oracle.com/javase/6/docs/api/java/awt/geom/PathIterator.html
.
我不确定你的约束是什么,但如果你的形状总是只有一个闭合的子路径并且只有直边(没有曲线),那么以下将起作用:
static double[][] getPoints(Path2D path) {
List<double[]> pointList = new ArrayList<double[]>();
double[] coords = new double[6];
int numSubPaths = 0;
for (PathIterator pi = path.getPathIterator(null);
! pi.isDone();
pi.next()) {
switch (pi.currentSegment(coords)) {
case PathIterator.SEG_MOVETO:
pointList.add(Arrays.copyOf(coords, 2));
++ numSubPaths;
break;
case PathIterator.SEG_LINETO:
pointList.add(Arrays.copyOf(coords, 2));
break;
case PathIterator.SEG_CLOSE:
if (numSubPaths > 1) {
throw new IllegalArgumentException("Path contains multiple subpaths");
}
return pointList.toArray(new double[pointList.size()][]);
default:
throw new IllegalArgumentException("Path contains curves");
}
}
throw new IllegalArgumentException("Unclosed path");
}
如果您的路径可能包含曲线,您可以使用的扁平化版本getPathIterator() http://download.oracle.com/javase/6/docs/api/java/awt/geom/Path2D.html#getPathIterator%28java.awt.geom.AffineTransform,%20double%29.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)