ADD: CylinderSelection for worldguard to be able to create regions

MOD: moved polygonize method of CylinderRegion to RegionUtil so it can be
reused later on
This commit is contained in:
Martin
2014-01-07 01:44:28 +01:00
parent 40e49f7f74
commit 359b8abfe3
4 changed files with 113 additions and 17 deletions

View File

@ -22,11 +22,13 @@ package com.sk89q.worldedit.regions;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.sk89q.worldedit.BlockVector;
import com.sk89q.worldedit.BlockVector2D;
import com.sk89q.worldedit.LocalWorld;
import com.sk89q.worldedit.Vector;
import com.sk89q.worldedit.Vector2D;
import com.sk89q.worldedit.util.RegionUtil;
/**
* Represents a cylindrical region.
@ -366,22 +368,6 @@ public class CylinderRegion extends AbstractRegion implements FlatRegion {
@Override
public List<BlockVector2D> polygonize(int maxPoints) {
final Vector2D radius = getRadius();
int nPoints = (int) Math.ceil(Math.PI*radius.length());
// These strange semantics for maxPoints are copied from the selectSecondary method.
if (maxPoints >= 0 && nPoints >= maxPoints) {
nPoints = maxPoints - 1;
}
final List<BlockVector2D> points = new ArrayList<BlockVector2D>(nPoints);
for (int i = 0; i < nPoints; ++i) {
double angle = i * (2.0 * Math.PI) / nPoints;
final Vector2D pos = new Vector2D(Math.cos(angle), Math.sin(angle));
final BlockVector2D blockVector2D = pos.multiply(radius).add(center).toBlockVector2D();
points.add(blockVector2D);
}
return points;
return RegionUtil.polygonizeCylinder(center, radius, maxPoints);
}
}