Export (0) Print
Expand All

Math.Asin Method

Returns the angle whose sine is the specified number.

Namespace: System
Assembly: mscorlib (in mscorlib.dll)

public:
static double Asin (
	double d
)
public static double Asin (
	double d
)
public static function Asin (
	d : double
) : double
Not applicable.

Parameters

d

A number representing a sine, where -1 d 1.

Return Value

An angle, θ, measured in radians, such that -π/2 θπ/2 -or- NaN if d < -1 or d > 1.

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>
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 trpezoid'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() );
}


/// <summary>
/// The following class represents simple functionallity of the Trapezoid
/// </summary>
class MathTrapezoidSample
{
    private double mLongBase;
    private double mShortBase;
    private double mLeftLeg;
    private double mRightLeg;
    public MathTrapezoidSample(double longBase, double shortBase, 
        double leftLeg, double rightLeg)
    {
        mLongBase = System.Math.Abs(longBase);
        mShortBase = System.Math.Abs(shortBase);
        mLeftLeg = System.Math.Abs(leftLeg);
        mRightLeg = System.Math.Abs(rightLeg);
    } //MathTrapezoidSample

    private double GetRightSmallBase()
    {
        return (System.Math.Pow(mRightLeg, 2.0) 
            - System.Math.Pow(mLeftLeg, 2.0) 
            + System.Math.Pow(mLongBase, 2.0) 
            + System.Math.Pow(mShortBase, 2.0) 
            - 2 * mShortBase * mLongBase) / (2 * (mLongBase - mShortBase));
    } //GetRightSmallBase

    public double GetHeight()
    {
        double x = GetRightSmallBase();
        return System.Math.Sqrt(System.Math.Pow(mRightLeg, 2.0) 
            - System.Math.Pow(x, 2.0));
    } //GetHeight

    public double GetSquare()
    {
        return GetHeight() * mLongBase / 2.0;
    } //GetSquare

    public double GetLeftBaseRadianAngle()
    {
        double sinX = GetHeight() / mLeftLeg;
        return System.Math.Round(System.Math.Asin(sinX), 2);
    } //GetLeftBaseRadianAngle

    public double GetRightBaseRadianAngle()
    {
        double x = GetRightSmallBase();
        double cosX = (System.Math.Pow(mRightLeg, 2.0) 
               + System.Math.Pow(x, 2.0) 
               - System.Math.Pow(GetHeight(), 2.0)) / (2 * x * mRightLeg);
        return System.Math.Round(System.Math.Acos(cosX), 2);
    } //GetRightBaseRadianAngle

    public double GetLeftBaseDegreeAngle()
    {
        double x = GetLeftBaseRadianAngle() * 180 / System.Math.PI;
        return System.Math.Round(x, 2);
    } //GetLeftBaseDegreeAngle

    public double GetRightBaseDegreeAngle()
    {
        double x = GetRightBaseRadianAngle() * 180 / System.Math.PI;
        return System.Math.Round(x, 2);
    } //GetRightBaseDegreeAngle

    public static void main(String[] args)
    {
        MathTrapezoidSample trpz = 
            new MathTrapezoidSample(20.0, 10.0, 8.0, 6.0);
        Console.WriteLine("The trpezoid'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: " 
            + System.Convert.ToString(h));
        double dxR = trpz.GetLeftBaseRadianAngle();
        Console.WriteLine("Trapezoid left base angle is: " 
            + System.Convert.ToString(dxR) + " Radians");
        double dyR = trpz.GetRightBaseRadianAngle();
        Console.WriteLine("Trapezoid right base angle is: " 
            + System.Convert.ToString(dyR) + " Radians");
        double dxD = trpz.GetLeftBaseDegreeAngle();
        Console.WriteLine("Trapezoid left base angle is: " 
            + System.Convert.ToString(dxD) + " Degrees");
        double dyD = trpz.GetRightBaseDegreeAngle();
        Console.WriteLine("Trapezoid left base angle is: " 
            + System.Convert.ToString(dyD) + " Degrees");
    } //main
} //MathTrapezoidSample

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 2.0, 1.0

XNA Framework

Supported in: 1.0

Community Additions

ADD
Show:
© 2014 Microsoft