# Circle shape : Geometry « 2D Graphics GUI « Java

Circle shape

```

//package net.slashie.utils;

import java.util.ArrayList;
import java.util.List;

public class Circle {
private Position center;
public Circle (Position p, int radius){
this.center = p;
}

public List<Position> getPoints (){
List<Position> ret = new ArrayList<Position>();
int d = 3 - (2 * radius);
Position runner = new Position(0, radius);
Position zero = new Position(0,0);
while (true) {
if (d < 0)
d = d + (4*runner.x)+6;
else {
d = d + 4 * (runner.x-runner.y) +10;
runner.y --;
}
runner.x++;
if (runner.y == 0)
break;
}
return ret;
}

private void addPoints(Position center, int x, int y, List<Position> collection){
collection.add(new Position(center.x + x, center.y + y));
collection.add(new Position(center.x + x, center.y - y));
collection.add(new Position(center.x - x, center.y + y));
collection.add(new Position(center.x - x, center.y - y));
collection.add(new Position(center.x + y, center.y + x));
collection.add(new Position(center.x + y, center.y - x));
collection.add(new Position(center.x - y, center.y + x));
collection.add(new Position(center.x - y, center.y - x));
}

}
class Position implements java.io.Serializable {
public int x,y,z;

public int x(){
return x;
}

public int y(){
return y;
}

public int z(){
return z;
}

public Position(int px, int py){
x = px;
y = py;
}

public Position(int px, int py, int pz){
this(px, py);
z = pz;
}

public Position(Position p){
x = p.x;
y = p.y;
z = p.z;
}

public static Position add (Position a, Position b){
return new Position (a.x + b.x, a.y + b.y, a.z + b.z);
}

public static Position subs (Position a, Position b){
return new Position (a.x - b.x, a.y - b.y, a.z - b.z);
}

public static Position mul(Position a, int c){
return new Position (a.x * c, a.y * c, a.z * c);
}

public static Position mul(Position a, Position b){
return new Position (a.x * b.x, a.y * b.y, a.z * b.z);
}

public void mul(Position pos){
x *= pos.x;
y *= pos.y;
z *= pos.z;
}

public boolean equals(Object o){
if (o == null)
return false;
try {
if (((Position)o).x == x && ((Position)o).y == y && ((Position)o).z == z){
return true;
}
} catch (ClassCastException cce){
throw new RuntimeException("Error comparing points "+this+" "+o, cce);
}
return false;
}

public int hashCode() {
}

public String toString(){
return "("+x+","+y+","+z+")";
}

public static int flatDistance(Position a, Position b){
return (int) Math.sqrt(Math.pow(a.x - b.x, 2) + Math.pow (a.y - b.y, 2));
}

public static int flatDistance(int x1, int y1, int x2, int y2){
return (int) Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow (y1 - y2, 2));
}

public static int distance(Position a, Position b){
return (int) Math.sqrt(Math.pow(a.x - b.x, 2) + Math.pow (a.y - b.y, 2));
}

/*  public static int distance(Position a, Position b){
return (int) Math.s(Math.pow(a.x - b.x, 2) + Math.pow (a.y - b.y, 2));
}*/

x += p.x;
y += p.y;
z += p.z;

}

}

```

### Related examples in the same category

 1 Collection of geometry utility methods 2 Unions Rectangle2D 3 Interpolates points given in the 2D plane 4 Returns distance between two sets of coords 5 Returns distance between 3D set of coords 6 Returns closest point on segment to point 7 Calculate Angle From 8 Returns distance to segment 9 Hexagon demo 10 Implements an Vector in 3D space. 11 Implementation of the 4 dimensional vector. 12 Quaternion 13 Geometry Utilities 14 This is a Polygon that allows the user to flip and swap the points along it's axis. 15 Fast trigonometric operations 16 A class to represent a latitude and longitude 17 An undirected graph that keeps track of connected components (groups). 18 Generates n logarithmically-spaced points between d1 and d2 using the provided base. 19 Returns a dimension where width and height are inside the bounds of the maxWidth and maxHeight parameters