點和圓相切的兩個切點坐標


【算法】 過圓外一點,求該點和圓相切的兩個切點坐標

如圖,點A為圓外點,求過A和圓相切的兩個切點坐標,這個坐標怎么算?avatar

最佳答案:
很簡單我就不畫圖了,你可以自己畫一下
假設過圓外一點A的一條直線與圓O相切於點B
要求點B的坐標,只需要點O坐標+向量OB即可
問題在於向量OB的方向不知道
但是因為直角三角形,我們知道 OB / OA = cos 角AOB
也就是說知道角AOB的值,拿向量OA的單位向量旋轉一下再乘以半徑r就得到了向量OB
這樣就算是完成了

c#實現:

var a = new Vector2(1, 2);
var o = new Vector2(5, 1);
var ao = o - a;
var r = 2;
var cosAOB = r / ao.Length();
var radianAOB = (float)Math.Acos(cosAOB);
var a1 = Vector2.Normalize(ao);
var ob1 = Vector2.Transform(-a1, Matrix3x2.CreateRotation(-radianAOB)) * r;
var b = o + ob1;
Console.WriteLine(b);

var ob2 = Vector2.Transform(-a1, Matrix3x2.CreateRotation(radianAOB)) * r;
var b2 = o + ob2;
Console.WriteLine(b2);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM