MyTool _Dynamic.CompleteTriangle全解三角形

查看:MyTool.Static.TriangleSolutions解三角形

/// <summary>
/// 全解三角形
/// </summary>
public class CompleteTriangle{
	private float A_Angle=0;//角
	private float B_Angle=0;
	private float C_Angle=0;
	private float A_Edge=0;//边
	private float B_Edge=0;
	private float C_Edge=0;
	private float diameter;//外接圆半径
	//=================================================
	/// <summary>
	/// 返回三角形的角A  [正数]
	/// </summary>
	public float GetA_Angle{get{return A_Angle;}}
	/// <summary>
	/// 返回三角形的角B  [正数]
	/// </summary>
	public float GetB_Angle{get{return B_Angle;}}
	/// <summary>
	/// 返回三角形的角C  [正数]
	/// </summary>
	public float GetC_Angle{get{return C_Angle;}}

	/// <summary>
	/// 返回三角形的角A对边
	/// </summary>
	public float GetA_Edge{get{return A_Edge;}}
	/// <summary>
	/// 返回三角形的角B对边
	/// </summary>
	public float GetB_Edge{get{return B_Edge;}}
	/// <summary>
	/// 返回三角形的角C对边
	/// </summary>
	public float GetC_Edge{get{return C_Edge;}}
	/// <summary>
	/// 返回三角形的外接圆半径
	/// </summary>
	public float Get_diameter{get{return diameter;}}

	//=[三角形全解]=================================================
	/// <summary>
	/// 边边边 :
	/// 提供 : 三角形的三个边 , 全解三角形
	/// </summary>
	/// <param name="A_Edge">角A的对边</param>
	/// <param name="B_Edge">角B的对边</param>
	/// <param name="C_Edge">角C的对边</param>
	/// <returns></returns>
	public CompleteTriangle SolutionsTriangle_EEE(float A_Edge,float B_Edge,float C_Edge){//只有3边解三角,钝角锐角都可解

		A_Angle = MyTool.Static.TriangleSolutions.Get_A_Angle_EEE(A_Edge,B_Edge,C_Edge);
		B_Angle = MyTool.Static.TriangleSolutions.Get_A_Angle_EEE(B_Edge,A_Edge,C_Edge);
		C_Angle = MyTool.Static.TriangleSolutions.Get_A_Angle_EEE(C_Edge,A_Edge,B_Edge);	

		return this;
	}
	/// <summary>
	/// 角边边 :
	/// 提供 : 一个角和两个边 , 全解三角形
	/// </summary>
	/// <param name="A_Angle">角A</param>
	/// <param name="A_Edge">角A的对边</param>
	/// <param name="B_Edge">角B的对边</param>
	/// <param name="B_ObtuseAngle">角B优先解为钝角,一般为false</param>
	/// <returns></returns>
	public CompleteTriangle SolutionsTriangle_AEE(float A_Angle,float A_Edge,float B_Edge,bool B_ObtuseAngle){//1角2边解三角,钝角锐角都可解,B_ObtuseAngle钝角优先解

		diameter = MyTool.Static.TriangleSolutions.Getdiameter_Edge_Angle(A_Angle,A_Edge);

		B_Angle = MyTool.Static.TriangleSolutions.GetAngle_Edge_diameter(B_Edge,diameter);//获得<=90的角
		C_Angle = 90 - MyTool.Static.TriangleSolutions.Get_A_Angle_AAA(90-A_Angle,B_Angle);//绕一圈获得c角
		C_Edge = MyTool.Static.TriangleSolutions.GetEdge_Angle_diameter(C_Angle,diameter);//通过角获得边
		if(A_Angle<=90&&B_ObtuseAngle){//b为钝角优先解
			B_Angle = MyTool.Static.TriangleSolutions.Get_A_Angle_AAA(A_Angle,C_Angle);//角b为钝角重计算
		}else{
			C_Angle = MyTool.Static.TriangleSolutions.Get_A_Angle_AAA(A_Angle,B_Angle);//c为钝角优先解
			C_Edge = MyTool.Static.TriangleSolutions.GetEdge_Angle_diameter(C_Angle,diameter);//通过角获得边
		}
		return this;
	}
	/// <summary>
	/// 边角边 :
	/// 提供 : 两个边和一个夹角 , 全解三角形
	/// </summary>
	/// <param name="A_Edge">角A的对边</param>
	/// <param name="B_Angle">夹角B</param>
	/// <param name="C_Edge">角C的对边</param>
	/// <returns></returns>
	public CompleteTriangle SolutionsTriangle_EAE(float A_Edge,float B_Angle,float C_Edge){//两边夹一角解三角,钝角锐角都可解

		B_Edge = MyTool.Static.TriangleSolutions.Get_A_Edge_EAE(B_Angle,A_Edge,C_Edge);
		A_Angle = MyTool.Static.TriangleSolutions.Get_A_Angle_EEE(A_Edge,C_Edge,B_Edge);
		C_Angle = MyTool.Static.TriangleSolutions.Get_A_Angle_EEE(C_Edge,A_Edge,B_Edge);

		return this;
	}
	/// <summary>
	/// 角边角 :
	/// 提供 : 两个角夹和一个边 , 全解三角形
	/// </summary>
	/// <param name="A_Angle">角A</param>
	/// <param name="B_Edge">角B的对边</param>
	/// <param name="C_Angle">角C</param>
	/// <returns></returns>
	public CompleteTriangle SolutionsTriangle_AEA(float A_Angle,float B_Edge,float C_Angle){//两角夹一边解三角,钝角锐角都可解

		B_Angle = MyTool.Static.TriangleSolutions.Get_A_Angle_AAA(A_Angle,C_Angle);//暂时求出不定角
		diameter = MyTool.Static.TriangleSolutions.Getdiameter_Edge_Angle(B_Angle,B_Edge);//获取外接直径
		A_Edge = MyTool.Static.TriangleSolutions.GetEdge_Angle_diameter(A_Angle,diameter);//通过角获得边
		C_Edge = MyTool.Static.TriangleSolutions.GetEdge_Angle_diameter(C_Angle,diameter);//通过角获得边
		
		return this;
	}

}

查看:MyTool.Static.TriangleSolutions解三角形

猜你喜欢

转载自blog.csdn.net/qq_40346899/article/details/86527162