栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

向多边形添加点

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

向多边形添加点

扩展@normalocity的想法,这似乎是一种可能的方法。

附录:供参考,此方法仅使用公共API,但其他变体也是可能的。

安慰:

MoveTo:[0.0、0.0、0.0、0.0、0.0、0.0]LineTo:[0.0、10.0、0.0、0.0、0.0、0.0]LineTo:[10.0、10.0、0.0、0.0、0.0、0.0]LineTo:[10.0、0.0、0.0、0.0、0.0、0.0]关闭:[10.0、0.0、0.0、0.0、0.0、0.0]MoveTo:[0.0、0.0、0.0、0.0、0.0、0.0]LineTo:[1.0、5.0、0.0、0.0、0.0、0.0]LineTo:[0.0、10.0、0.0、0.0、0.0、0.0]LineTo:[10.0、10.0、0.0、0.0、0.0、0.0]LineTo:[10.0、0.0、0.0、0.0、0.0、0.0]关闭:[10.0、0.0、0.0、0.0、0.0、0.0]

码:

import java.awt.Point;import java.awt.Polygon;import java.awt.geom.PathIterator;import java.util.Arrays;public class MyPoly extends Polygon {    public static void main(String[] args) {        final MyPoly square = new MyPoly();        square.addPoint(0, 0);        square.addPoint(0, 10);        square.addPoint(10, 10);        square.addPoint(10, 0);        System.out.println(square.toString());        MyPoly pentagon = square.insert(1, new Point(1, 5));        System.out.println(pentagon.toString());    }        public MyPoly insert(int index, Point point) {        MyPoly mp = new MyPoly();        PathIterator pi = this.getPathIterator(null);        double[] coords = new double[6];        int i = 0;        while (!pi.isDone()) { if (i == index) {     mp.addPoint(point.x, point.y); } else {     if (pi.currentSegment(coords) != PathIterator.SEG_CLOSE) {         mp.addPoint((int) coords[0], (int) coords[1]);     }     pi.next(); } i++;        }        return mp;    }    @Override    public String toString() {        PathIterator pi = this.getPathIterator(null);        double[] coords = new double[6];        StringBuilder sb = new StringBuilder();        while (!pi.isDone()) { int kind = pi.currentSegment(coords); switch (kind) {     case PathIterator.SEG_MOVETO:         sb.append("MoveTo: ");         break;     case PathIterator.SEG_LINETO:         sb.append("LineTo: ");         break;     case PathIterator.SEG_CLOSE:         sb.append("Close:  ");         break;     default:         throw new IllegalArgumentException("Bad path segment"); } sb.append(Arrays.toString(coords)); sb.append("n"); pi.next();        }        return sb.toString();    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/569365.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号