本文主要是介绍C#——已知两点及半径,求圆心坐标,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
已知A点和B点及半径,其中B点为所在圆的切点,求该圆心坐标
float radius;//半径float angleO;//圆心角Vector3 m_yuanxin;//圆心坐标/// <summary>/// 计算圆心坐标/// </summary>/// <param name="Point1">A点(第一点)</param>/// <param name="Point2">B点(第二点,即切点)</param>/// <param name="Radius">半径</param>/// <returns></returns>void CalculateO(List<Vector3> ve){float angle = 0;float _x = ve[0].x - ve[1].x;float l_AB = Mathf.Sqrt(_x * _x + (ve[0].y - ve[1].y) * (ve[0].y - ve[1].y));if (ve[0].x >= ve[1].x && ve[0].y >= ve[1].y)//270-360;A点相对于B点在第一象限,则O点在第二象限{angle = Mathf.Acos(_x / l_AB) * 180 / Mathf.PI;angleO = -90 + angle;}else if (ve[0].x >= ve[1].x && ve[0].y <= ve[1].y)//180-270;A点相对于B点在第四象限,则O点在第一象限{angle = Mathf.Acos(_x / l_AB) * 180 / Mathf.PI;angleO = -(angle + 90);}else if (ve[0].x <= ve[1].x && ve[0].y < ve[1].y)//90-180;A点相对于B点在第三象限,则O点在第四象限{angle = Mathf.Acos(-_x / l_AB) * 180 / Mathf.PI;angleO = angle + 90;}else if (ve[0].x <= ve[1].x && ve[0].y >= ve[1].y)//0-90;A点相对于B点在第二象限,则O点在第三象限{angle = Mathf.Acos(-_x / l_AB) * 180 / Mathf.PI;angleO = 90 - angle;}float x = ve[1].x - radius * Mathf.Cos(angleO * Mathf.PI / 180);float y = ve[1].y - radius * Mathf.Sin(angleO * Mathf.PI / 180);m_yuanxin = new Vector3(x, y, 0);}
这篇关于C#——已知两点及半径,求圆心坐标的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!