📄 polygon.java.svn-base
字号:
package wFramework;
import java.util.Vector;
import javax.microedition.lcdui.Graphics;
public class Polygon
{
private Vector points;
private Point min, max;
public Polygon()
{
min = new Point(0, 0);
max = new Point(0, 0);
points = new Vector();
}
public Polygon(String str)
{
min = new Point(0, 0);
max = new Point(0, 0);
points = new Vector();
parseString(str);
}
public void reset()
{
points.removeAllElements();
}
public void addPoint(Point point)
{
if (points.size() == 0)
{
min.x = point.x;
min.y = point.y;
max.x = point.x;
max.y = point.y;
}
else
{
min.x = Math.min(min.x, point.x);
min.y = Math.min(min.y, point.y);
max.x = Math.max(max.x, point.x);
max.y = Math.max(max.y, point.y);
}
points.addElement(point);
}
public void parseString(String str)
{
points.removeAllElements();
if (str.startsWith("POLYGON"))
{
int s = -1;
int x = -1;
int y = -1;
for (int i = 0; i < str.length(); i++)
{
if (Character.isDigit(str.charAt(i)) || str.charAt(i) == '.')
{
if (s < 0)
s = i;
}
else if (s >= 0)
{
if (x < 0)
x = (int)(Float.parseFloat(str.substring(s, i)) + 0.5f);
else
y = (int)(Float.parseFloat(str.substring(s, i)) + 0.5f);
if (x >= 0 && y >= 0)
{
addPoint(new Point(x, y));
x = -1;
y = -1;
}
s = -1;
}
}
}
}
public Point getCenter()
{
if (points.size() < 2) return null;
Point center = new Point(0, 0);
for (int i = 0; i < points.size() - 1; i++)
{
Point p = (Point)points.elementAt(i);
if (i == 0)
{
center.x = p.x;
center.y = p.y;
}
else
{
center.x += p.x;
center.y += p.y;
}
}
center.x /= points.size() - 1;
center.y /= points.size() - 1;
return center;
}
public int getNumPoints()
{
return points.size();
}
public Point getPoint(int i)
{
if (i >= 0 && i < points.size())
return (Point)points.elementAt(i);
else
return null;
}
public void paint(Graphics g)
{
for (int i = 0; i < points.size() - 1; i++)
{
Point p0 = (Point)points.elementAt(i);
Point p1 = (Point)points.elementAt(i + 1);
g.drawLine(p0.x, p0.y, p1.x, p1.y);
}
}
public Point getMin()
{
return min;
}
public Point getMax()
{
return max;
}
public Polygon transformToPixel(Map m)
{
Polygon p = new Polygon();
for (int i = 0; i < points.size(); i++)
p.addPoint(m.worldToPixel((Point)points.elementAt(i)));
return p;
}
public Polygon transformToWorld(Map m)
{
Polygon p = new Polygon();
for (int i = 0; i < points.size(); i++)
p.addPoint(m.pixelToWorld((Point)points.elementAt(i)));
return p;
}
public void paint(Graphics g, Map m)
{
for (int i = 0; i < points.size() - 1; i++)
{
Point p0 = m.worldToPixel((Point)points.elementAt(i));
Point p1 = m.worldToPixel((Point)points.elementAt(i + 1));
g.drawLine(p0.x, p0.y, p1.x, p1.y);
}
}
public String toString()
{
return "";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -