Math Class
.NET Framework 3.0
Provides constants and static methods for trigonometric, logarithmic, and other common mathematical functions.
Namespace: System
Assembly: mscorlib (in mscorlib.dll)
Assembly: mscorlib (in mscorlib.dll)
The following code sample uses several mathematical and trigonometric functions from the Math class to calculate the inner angles of a 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.Community Additions
ADD
Show: