Math.Asin Method
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Returns the angle whose sine is the specified number.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- d
- Type: System.Double
A number representing a sine, where d must be greater than or equal to -1, but less than or equal to 1.
Return Value
Type: System.DoubleAn angle, θ, measured in radians, such that -π/2 ≤θ≤π/2
-or-
NaN if d < -1 or d > 1 or d equals NaN.
A positive return value represents a counterclockwise angle from the x-axis; a negative return value represents a clockwise angle.
Multiply the return value by 180/Math.PI to convert from radians to degrees.
The following code sample uses Asin to assist in the computation of the inner angles of a given trapezoid.
/// <summary> /// The following class represents simple functionality of the trapezoid. /// </summary> class Example { private double m_longBase; private double m_shortBase; private double m_leftLeg; private double m_rightLeg; public Example(double longbase, double shortbase, double leftLeg, double rightLeg) { m_longBase = Math.Abs(longbase); m_shortBase = Math.Abs(shortbase); m_leftLeg = Math.Abs(leftLeg); m_rightLeg = Math.Abs(rightLeg); } private double GetRightSmallBase() { return (Math.Pow(m_rightLeg, 2.0) - Math.Pow(m_leftLeg, 2.0) + Math.Pow(m_longBase, 2.0) + Math.Pow(m_shortBase, 2.0) - 2 * m_shortBase * m_longBase) / (2 * (m_longBase - m_shortBase)); } public double GetHeight() { double x = GetRightSmallBase(); return Math.Sqrt(Math.Pow(m_rightLeg, 2.0) - Math.Pow(x, 2.0)); } public double GetSquare() { return GetHeight() * m_longBase / 2.0; } public double GetLeftBaseRadianAngle() { double sinX = GetHeight() / m_leftLeg; return Math.Round(Math.Asin(sinX), 2); } public double GetRightBaseRadianAngle() { double x = GetRightSmallBase(); double cosX = (Math.Pow(m_rightLeg, 2.0) + Math.Pow(x, 2.0) - Math.Pow(GetHeight(), 2.0)) / (2 * x * m_rightLeg); return Math.Round(Math.Acos(cosX), 2); } public double GetLeftBaseDegreeAngle() { double x = GetLeftBaseRadianAngle() * 180 / Math.PI; return Math.Round(x, 2); } public double GetRightBaseDegreeAngle() { double x = GetRightBaseRadianAngle() * 180 / Math.PI; return Math.Round(x, 2); } public static void Demo(System.Windows.Controls.TextBlock outputBlock) { Example trpz = new Example(20.0, 10.0, 8.0, 6.0); outputBlock.Text += String.Format("The trapezoid's bases are 20.0 and 10.0, the trapezoid's legs are 8.0 and 6.0") + "\n"; double h = trpz.GetHeight(); outputBlock.Text += "Trapezoid height is: " + h.ToString() + "\n"; double dxR = trpz.GetLeftBaseRadianAngle(); outputBlock.Text += "Trapezoid left base angle is: " + dxR.ToString() + " Radians" + "\n"; double dyR = trpz.GetRightBaseRadianAngle(); outputBlock.Text += "Trapezoid right base angle is: " + dyR.ToString() + " Radians" + "\n"; double dxD = trpz.GetLeftBaseDegreeAngle(); outputBlock.Text += "Trapezoid left base angle is: " + dxD.ToString() + " Degrees" + "\n"; double dyD = trpz.GetRightBaseDegreeAngle(); outputBlock.Text += "Trapezoid left base angle is: " + dyD.ToString() + " Degrees" + "\n"; } }