Trouver une tangente entre le point et le cercle Toile

Ok, je suis un peu rouillé sur ma trigonométrie.

Essentiellement, j'essaie de faire une sorte de projecteur dans la toile. J'essaie de maintenir un angle de 9 degrés, ce qui explique pourquoi c'est un peu délicat. Voici ma violon jusqu'à présent.

Http://jsfiddle.net/uq8fe/

it's a bit long please refer to the fiddle /\ 

Assez proche, mais j'ai besoin des points tangents sur le cercle afin que je puisse dessiner un triangle entre ces deux points et la souris, alors je ressemble à un beau faisceau lisse.

Http://en.wikipedia.org/wiki/File:Inscribed_angle_theorem4.svg

Ci-dessus est essentiellement le schéma et la formule que je dois mettre en œuvre. J'ai besoin du point T et S. J'espère que cela a du sens.

C'est le code pour calculer les tangentes: Démo

  //Calculate Tangents var pointDistance = { x: beamCenter.x - mousePos.x, y: beamCenter.y - mousePos.y, length: function () { return Math.sqrt(this.x * this.x + this.y * this.y) } } var radius = getDist(p1.x, p1.y, p2.x, p2.y) / 2; //Alpha var a = Math.asin(radius / pointDistance.length()); //Beta var b = Math.atan2(pointDistance.y, pointDistance.x); //Tangent angle var t = b - a; //Tangent points var T1 = { x: beamCenter.x + radius * Math.sin(t), y: beamCenter.y + radius * -Math.cos(t) }; t = b + a; var T2 = { x: beamCenter.x + radius * -Math.sin(t), y: beamCenter.y + radius * Math.cos(t) }