.NET Framework Class Library
Math.Asin Method
Updated: March 2011
Returns the angle whose sine is the specified number.
Assembly: mscorlib (in mscorlib.dll)
Syntax
Visual Basic
Public Shared Function Asin ( _ d As Double _ ) As Double
C#
public static double Asin( double d )
Visual C++
public: static double Asin( double d )
F#
static member Asin : d:float -> float
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.
Remarks
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.
Examples
The following example uses Asin to assist in the computation of the inner angles of a given trapezoid.
Visual Basic
'The following class represents simple functionality of the trapezoid. Class MathTrapezoidSample Private m_longBase As Double Private m_shortBase As Double Private m_leftLeg As Double Private m_rightLeg As Double Public Sub New(ByVal longbase As Double, ByVal shortbase As Double, ByVal leftLeg As Double, ByVal rightLeg As Double) m_longBase = Math.Abs(longbase) m_shortBase = Math.Abs(shortbase) m_leftLeg = Math.Abs(leftLeg) m_rightLeg = Math.Abs(rightLeg) End Sub Private Function GetRightSmallBase() As Double GetRightSmallBase = (Math.Pow(m_rightLeg, 2) - Math.Pow(m_leftLeg, 2) + Math.Pow(m_longBase, 2) + Math.Pow(m_shortBase, 2) - 2 * m_shortBase * m_longBase) / (2 * (m_longBase - m_shortBase)) End Function Public Function GetHeight() As Double Dim x As Double = GetRightSmallBase() GetHeight = Math.Sqrt(Math.Pow(m_rightLeg, 2) - Math.Pow(x, 2)) End Function Public Function GetSquare() As Double GetSquare = GetHeight() * m_longBase / 2 End Function Public Function GetLeftBaseRadianAngle() As Double Dim sinX As Double = GetHeight() / m_leftLeg GetLeftBaseRadianAngle = Math.Round(Math.Asin(sinX), 2) End Function Public Function GetRightBaseRadianAngle() As Double Dim x As Double = GetRightSmallBase() Dim cosX As Double = (Math.Pow(m_rightLeg, 2) + Math.Pow(x, 2) - Math.Pow(GetHeight(), 2)) / (2 * x * m_rightLeg) GetRightBaseRadianAngle = Math.Round(Math.Acos(cosX), 2) End Function Public Function GetLeftBaseDegreeAngle() As Double Dim x As Double = GetLeftBaseRadianAngle() * 180 / Math.PI GetLeftBaseDegreeAngle = Math.Round(x, 2) End Function Public Function GetRightBaseDegreeAngle() As Double Dim x As Double = GetRightBaseRadianAngle() * 180 / Math.PI GetRightBaseDegreeAngle = Math.Round(x, 2) End Function Public Shared Sub Main() Dim trpz As MathTrapezoidSample = New MathTrapezoidSample(20, 10, 8, 6) Console.WriteLine("The trapezoid's bases are 20.0 and 10.0, the trapezoid's legs are 8.0 and 6.0") Dim h As Double = trpz.GetHeight() Console.WriteLine("Trapezoid height is: " + h.ToString()) Dim dxR As Double = trpz.GetLeftBaseRadianAngle() Console.WriteLine("Trapezoid left base angle is: " + dxR.ToString() + " Radians") Dim dyR As Double = trpz.GetRightBaseRadianAngle() Console.WriteLine("Trapezoid right base angle is: " + dyR.ToString() + " Radians") Dim dxD As Double = trpz.GetLeftBaseDegreeAngle() Console.WriteLine("Trapezoid left base angle is: " + dxD.ToString() + " Degrees") Dim dyD As Double = trpz.GetRightBaseDegreeAngle() Console.WriteLine("Trapezoid left base angle is: " + dyD.ToString() + " Degrees") End Sub End Class
C#
/// <summary> /// The following class represents simple functionality of the trapezoid. /// </summary> class MathTrapezoidSample { private double m_longBase; private double m_shortBase; private double m_leftLeg; private double m_rightLeg; public MathTrapezoidSample(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); } static void Main(string[] args) { MathTrapezoidSample trpz = new MathTrapezoidSample(20.0, 10.0, 8.0, 6.0); Console.WriteLine("The trapezoid's bases are 20.0 and 10.0, the trapezoid's legs are 8.0 and 6.0"); double h = trpz.GetHeight(); Console.WriteLine("Trapezoid height is: " + h.ToString()); double dxR = trpz.GetLeftBaseRadianAngle(); Console.WriteLine("Trapezoid left base angle is: " + dxR.ToString() + " Radians"); double dyR = trpz.GetRightBaseRadianAngle(); Console.WriteLine("Trapezoid right base angle is: " + dyR.ToString() + " Radians"); double dxD = trpz.GetLeftBaseDegreeAngle(); Console.WriteLine("Trapezoid left base angle is: " + dxD.ToString() + " Degrees"); double dyD = trpz.GetRightBaseDegreeAngle(); Console.WriteLine("Trapezoid left base angle is: " + dyD.ToString() + " Degrees"); } }
Visual C++
/// <summary> /// The following class represents simple functionality of the trapezoid. /// </summary> public ref class MathTrapezoidSample { private: double m_longBase; double m_shortBase; double m_leftLeg; double m_rightLeg; public: MathTrapezoidSample( 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 ) ); } double GetSquare() { return GetHeight() * m_longBase / 2.0; } double GetLeftBaseRadianAngle() { double sinX = GetHeight() / m_leftLeg; return Math::Round( Math::Asin( sinX ), 2 ); } 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 ); } double GetLeftBaseDegreeAngle() { double x = GetLeftBaseRadianAngle() * 180 / Math::PI; return Math::Round( x, 2 ); } double GetRightBaseDegreeAngle() { double x = GetRightBaseRadianAngle() * 180 / Math::PI; return Math::Round( x, 2 ); } }; int main() { MathTrapezoidSample^ trpz = gcnew MathTrapezoidSample( 20.0,10.0,8.0,6.0 ); Console::WriteLine( "The trapezoid's bases are 20.0 and 10.0, the trapezoid's legs are 8.0 and 6.0" ); double h = trpz->GetHeight(); Console::WriteLine( "Trapezoid height is: {0}", h.ToString() ); double dxR = trpz->GetLeftBaseRadianAngle(); Console::WriteLine( "Trapezoid left base angle is: {0} Radians", dxR.ToString() ); double dyR = trpz->GetRightBaseRadianAngle(); Console::WriteLine( "Trapezoid right base angle is: {0} Radians", dyR.ToString() ); double dxD = trpz->GetLeftBaseDegreeAngle(); Console::WriteLine( "Trapezoid left base angle is: {0} Degrees", dxD.ToString() ); double dyD = trpz->GetRightBaseDegreeAngle(); Console::WriteLine( "Trapezoid left base angle is: {0} Degrees", dyD.ToString() ); }
Version Information
.NET Framework
Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0.NET Framework Client Profile
Supported in: 4, 3.5 SP1Portable Class Library
Supported in: Portable Class LibraryPlatforms
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
See Also
Reference
Change History
|
Date |
History |
Reason |
|---|---|---|
|
March 2011 |
Updated return value information. |
Customer feedback. |