Canvas HTML5: Calculando um ponto x, y quando rotacionado

Desenvolvo um aplicativo de tela HTML5 e envolve a leitura de um arquivo xml que descreve a posição de setas, retângulos e outras formas que preciso desenhar na tel

Exemplo do layout XML:

<arrow left="10" top="20" width="100" height="200" rotation="-40" background-color="red"/> 
<rect left="10" top="20" width="100" height="200" rotation="300" background-color="red"/> 

Se o objeto for girado, isso envolverá o cálculo da posição de um ponto (chamado P, a nova posição do objeto após a rotação) quando girado em torno de outro ponto (esquerdo, superior). Estou tentando criar uma função / fórmula geral que possa ser usada para calcular esse ponto P, mas minha matemática é um pouco fraca e não consigo identificar qual fórmula de arco / tangente devo usar.

Pode me ajudar a criar uma fórmula que eu possa usar para calcular o ponto P para rotações que podem ser positivas e negativa

No exemplo acima: point (14.446) é o ponto superior esquerdo (226.496) e o ponto médio do objeto quando NÃO é girado, de modo que o ponto = (esquerdo + largura / 2, superior + altura / 2) e o ponto azul é o ponto médio quando girado. Eu sei como calcular o comprimento da linha entre os pontos (14.446) e (226.496), mas não como calcular o ponto azul x, posição y - BTW: o comprimento dessa linha é o mesmo que a linha entre o ponto azul e (14.446)

len = sqrt( (496-446)^2 + (226-14)^2 );
    = 227.56;