Hi, I am looking for a script or function or similar that will list all of the coordinates inside a sphere, example:

```
Vector3(0, 0, 0);
Vector3(1, 0, 0);
Vector3(0, 1, 0);
Vector3(0, 0, 1);
Vector3(-1, 0, 0);
Vector3(0, -1, 0);
Vector3(0, 0, -1);
Vector3(1, 1, 0);
Vector3(1, 0, 1);
Vector3(0, 1, 1);
... (skip a few)
Vector3(4, 5, -6);
etc...
```

as you can see all of the coords are ints

it lists every coord

it starts from the centre

I have searched google and unity answers but have only found answers about the **edges** of a sphere

Bonus points if you know what such a function is called

Also Bonus points if you know how to adapt it for an ellipse

thanks

So if i get the question right you want all whole number-coordinates which are inside a sphere with a given radius?

In that case, just iterate over all whole-number-coordinates of the bounding box of the sphere and do an “inside check” with the formula

```
x² + y² + z² < r²
```

You could implement it with a two method approach to keep it versatile:

```
// You need a "using System.Collections.Generic;" at the top
IEnumerable<Vector3> GetPointsInBoundingBox(Bounds aBounds)
{
int maxX = Mathf.RoundToInt(aBounds.max.x);
int maxY = Mathf.RoundToInt(aBounds.max.y);
int maxZ = Mathf.RoundToInt(aBounds.max.z);
for(int z = Mathf.RoundToInt(aBounds.min.z); z < maxZ; z++)
for(int y = Mathf.RoundToInt(aBounds.min.y); y < maxY; y++)
for(int x = Mathf.RoundToInt(aBounds.min.x); x < maxX; x++)
yield return new Vector3(x,y,z);
}
IEnumerable<Vector3> GetPointsInSphere(Vector3 aCenter, float aRadius)
{
Bounds bounds = new Bounds(aCenter, Vector3.one * aRadius*2);
float rSquared = aRadius*aRadius;
foreach(var p in GetPointsInBoundingBox(bounds))
{
if ((p-aCenter).sqrMagnitude < rSquared)
yield return p;
}
}
```

Now you can do something like this and you get a “blocky” filled sphere:

```
foreach(var p in GetPointsInSphere(Vector3.zero, 7))
{
var go = GameObject.CreatePrimitive(PrimitiveType.Cube);
go.transform.position = p;
}
```

If you just want the points in a List / array, just use ToList or ToArray from the System.Linq namespace:

```
// You need of course "using System.Linq;" at the top
Vector3[] points = GetPointsInSphere(Vector3.zero, 7).ToArray();
```

**edit**

Keep in mind that i use Vector3 here for simplicity and compatibilty. If you really want them as int coordinates you might want to create your own “Vector3i” struct.

**second edit**

If you want the points to be sorted by the distance from the origin you can also use linq. just like this:

```
Vector3[] points = GetPointsInSphere(Vector3.zero, 7).OrderBy((v)=>v.sqrMagnitude).ToArray();
```