#Region " Sines "
Private Function FindSineAngle(ByVal Side1 As Double, ByVal Side2 As Double, ByVal Angle As Double) As Double
Return RadianToDegree(Math.Asin((Side1 / Side2) * (Math.Sin(DegreeToRadian(Angle)))))
End Function
Private Function FindSineSide(ByVal Side As Double, ByVal Angle1 As Double, ByVal Angle2 As Double) As Double
Return Side * ((Math.Sin(DegreeToRadian(Angle1)) / Math.Sin(DegreeToRadian(Angle2))))
End Function
#End Region
#Region " Cosines "
Friend Function FindCosineSide(ByVal Side1 As Double, ByVal Side2 As Double, ByVal Angle As Double) As Double
'Get our variables setup and preprocessed for ease
Dim Side1A As Double = Side1 ^ 2.0R
Dim Side2A As Double = Side2 ^ 2.0R
'Setup Formula
Return Math.Sqrt((Side1A + Side2A) - (2.0R * Side1 * Side2 * System.Math.Cos(DegreeToRadian(Angle))))
End Function
Private Function FindCosineAngle(ByVal A As Double, ByVal B As Double, ByVal C As Double, ByVal Angle As CosineAngles) As Double
Dim SideA As Double = A ^ 2.0R
Dim SideB As Double = B ^ 2.0R
Dim SideC As Double = C ^ 2.0R
Dim Output As Double = Double.NaN
Select Case Angle
Case CosineAngles.AngleA
Output = RadianToDegree(Math.Acos((SideA - SideB - SideC) / (-2.0R * B * C)))
Case CosineAngles.AngleB
Output = RadianToDegree(Math.Acos((SideB - SideA - SideC) / (-2.0R * A * C)))
Case CosineAngles.AngleC
Output = RadianToDegree(Math.Acos((SideC - SideB - SideA) / (-2.0R * A * B)))
End Select
Return Output
End Function
#End Region