Necesito implementar conexiones en forma de líneas curvas en C# (Unity). Me gustaría obtener un resultado lo más similar posible a la implementación en Miro.com (ver captura de pantalla).
Después de adjuntar la curva, calculo la ruta de la curva Bezier cúbica. Para este primer segmento, se utilizan los puntos de anclaje y los desplazamientos de los objetos que conecta. No hay problemas en esta etapa.
Problema : al dividir la curva en segmentos haciendo clic y arrastrando uno de los puntos azules del segmento (ver captura de pantalla), se divide en dos por la mitad. En la unión de dos nuevas curvas, se forma un nuevo punto interactivo (móvil) para el cual se desconocen la tangente y las coordenadas de los puntos de control. Necesito encontrar la posición de estos puntos de control cada vez que cambia la posición de los puntos interactivos (puntos blancos en la imagen de abajo). Además, la curva no debe cambiar drásticamente su posición al dividirse, no formar bucles, tener diferentes longitudes de vectores de puntos de control (no estoy seguro aquí) y comportarse lo más adecuadamente posible (como en el tablero en Miro).
Por puntos de control me refiero a 2 puntos de guía invisibles para el segmento Bezier.
De negro pinté los puntos de control conocidos, y de rojo los que necesito encontrar. (Pn - puntos interactivos, Cn - puntos de control) 
Los algoritmos que he intentado encontrar dan distancias y direcciones incorrectas de los puntos de control.
Se probaron los siguientes algoritmos:
Sospecho que la solución es interpolar cordalmente los puntos usando una spline Catmull-Rom y traducir el resultado a puntos para una curva Bezier. Sin embargo, todavía hay problemas con la implementación.
Las curvas de 3DMax también se ven muy similares. En su documentación, solo encontré una mención de la curva paramétrica.


Métodos que no usé (o no funcionaron):
Estaría inmensamente agradecido por cualquier ayuda, pero pido la mayor cantidad de detalles posible.
Encuentre fuentes útiles para comprender las curvas de Bézier aquí y aquí .
Para hacer lo que quieras, probaría el enfoque Catmull-Rom, que creo que es mucho más simple que el de Bezier, que es el que se usa en el activointermedio , que es gratuito y tienes muchas funciones implementadas.
Si quieres apegarte a las curvas bezier y encontrar los puntos de control, te diré lo que haría para encontrarlos.
Para el caso de la curva de Bezier de 2 puntos de control:
P = (1-t)P1 + tP2
Para conocer los puntos de control P1(x1,y1) y P2(x2,y2), necesitas aplicar la ecuación en un punto conocido de tu curva. Tenga en cuenta que la ecuación 2D es vectorial, por lo que cada punto proporciona 2 ecuaciones, una para x y otra para y, y tiene 4 incógnitas, x e y para cada punto.
Entonces, para el primer nodo de la curva (t=0), tendrías:
Px = (1-0)P1x + 0*P2x
Py = (1-0)P1y + 0*P2y
Para el último punto (t=1)
Px = (1-1)P1x + 1*P2x
Py = (1-1)P1y + 1*P2y
Con estas 4 ecuaciones intentaría conseguir los puntos de control P1 y P2. Puede hacerlo con t = 0 y t = 1, que son los supuestos puntos que conoce de su curva y los que simplifican las matemáticas debido a los valores de t, pero debería poder usar cualquiera siempre que conozca los puntos. coords en la curva para t determinado.
Si la curva es un bezier de 3 puntos de control, necesitaría 6 ecuaciones para los 3 puntos de control y así sucesivamente.
Creo que el mejor enfoque es componer la composición de la curva de curvas cuadráticas y calcular los puntos de control para cada parte, pero no estoy seguro de esto.
Una vez que se entiendan las matemáticas y se logren los puntos de control, en caso de que tenga éxito, intentaría implementar eso en el código.