Algoritmo para criar cantos arredondados em um polígono

Estou procurando um algoritmo que permita criar cantos arredondados a partir de um polígono. Em Input, recebo uma matriz de pontos que representa o polígono (linha vermelha) e na saída, uma matriz de pontos que representa o polígono com canto arredondado (linha preta).

Eu também gostaria de ter uma maneira de controlar o raio de cada canto. Eu já tentei usar Bezier e Subdivision, mas não é o que estou procurando. Bezier e Subdivision estão suavizando todo o polígono. O que eu quero é apenas fazer os cantos arredondados.

Alguém conhece algum bom algoritmo para fazer isso? Estou trabalhando em c #, mas o código deve ser independente de qualquer biblioteca do .NET.