Appliquer des coins arrondis aux chemins / polygones

Je suis la collecte de certaines informations pour un projet qui doit commencer dans un délai de quelques semaines.
Ce projet contient un navigateur de base de l'outil de dessin où les utilisateurs peuvent ajouter des formes prédéfinies ou formant des formes elles-mêmes. Les formes doivent être sélectionnables, librement extensible et orientable avec un Illustrateur-comme transformtool (poignées).
Formes prédéfinies que nous avons à l'esprit sont: des rectangles, des ellipses, des demi-ellipses et (isocèle) triangles.

So far So good, pour atteindre ce que je pensais de RaphaelJS ou FabricJS mais... Chaque forme (polygone/chemin d'accès) doit être établi avec un certain cornerradius. Et le cornerradius doit être maintenue tandis que la mise à l'échelle, donc pas de distorsion se produit. L'utilisateur peut spécifier l'arrondi en entrée.

Il y a quelques obstacles/questions:

  • Est-il un uniforme mathemetical formule à appliquer un cornerradius à la forme que j'ai citées? Ou doit chaque forme d'être traité comme un mini-projet en lui-même? Je tiens à le retourner comme un chemin ou poly, de sorte qu'il peut être établi avec SVG ou canvas.
  • Chaque échelle ou de l'opération de rotation, en faisant glisser le transformhandles, entraînera (massive) des calculs pour récupérer une mise à jour de la forme je pense. Les Rectangles sont les plus faciles à atteindre et à l'exception des ellipses, toutes les autres formes sera beaucoup plus difficile à calculer. Est-il un moyen pour accélérer le processus?

J'ai trouvé un site où les utilisateurs peuvent dessiner des diagrammes et d'appliquer un cornerradius sur presque toutes les formes sont offerts. Cela marche si bien, je ne peux pas l'ongle comment ils ont fait.
Lien: https://www.lucidchart.com/ (bouton essayer)

Pour l'instant, je suis un peu paumé, je pense à médiocre en mathématiques. Peut-être que quelqu'un peut me pousser dans la bonne direction et de partager quelques expériences?

Merci d'avance.

BTW. La Performance est la clé dans ce projet. La sortie du dessin doit être en format SVG.

source d'informationauteur MaPaBa | 2013-10-09