# Average ratio of incenters to circumcenters, using matlab

## Alec Jacobson

## February 08, 2010

The incenter radius of a triangle is given by the formula:
```
2*A with A = area
r = -------
(a+b+c)
```

the circumcenter radius is given by
```
abc
R = -----
(4A)
```

We want the ratio of the incenter to circumcenter so that's
`r 8A`^{2}
_ = ---------------
R ((a+b+c)*(abc))

So then if you have a triangle mesh with a variable `edge_norms`

which is an n by 3 matrix of the lengths of edges in your mesh, a way to get the incenter radii is, first applying Heron's formula to find the areas of each triangle:
```
semi_perimeters = (edge_norms(:,1) + edge_norms(:,2) + edge_norms(:,3))*0.5;
areas = sqrt( ...
semi_perimeters.* ...
(semi_perimeters-edge_norms(:,1)).* ...
(semi_perimeters-edge_norms(:,2)).* ...
(semi_perimeters-edge_norms(:,3)));
ratios = 8*areas.*areas./(sum(edge_norms')'.*prod(edge_norms')')
```

Then just take the mean:
```
mean(ratios)
```

**Note:** I coded up the calculations of the incenters and circumcenters to check this out so I figure I might as well post that, too:
```
r=2*areas./(edge_norms(:,1)+edge_norms(:,2)+edge_norms(:,3))
R=(edge_norms(:,1).*edge_norms(:,2).*edge_norms(:,3))./(4*areas)
```