다음을 통해 공유


Math 클래스

삼각, 로그 및 기타 일반 수학 함수에 대한 상수 및 정적 메서드를 제공합니다.

네임스페이스: System
어셈블리: mscorlib(mscorlib.dll)

구문

‘선언
Public NotInheritable Class Math
‘사용 방법
정적 클래스의 멤버는 클래스 인스턴스를 사용하지 않고 직접 액세스할 수 있습니다.
public static class Math
public ref class Math abstract sealed
public final class Math
public final class Math

예제

다음 코드 예제에서는 Math 클래스에서 몇 가지 수학 및 삼각 함수를 사용하여 사다리꼴의 내부 각도를 계산합니다.

'The following class represents simple functionallity 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 trpezoid'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
/// <summary>
/// The following class represents simple functionallity 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 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: " + 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");
    }
}
/// <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

상속 계층 구조

System.Object
  System.Math

스레드로부터의 안전성

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

플랫폼

Windows 98, Windows 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

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

Math 멤버
System 네임스페이스