Converting the sine of an angle to degrees, minutes, and seconds

  • Thread starter Thread starter JungleJim74
  • Start date Start date
J

JungleJim74

I am using VS2003 Professional and am trying to display the other two angles
of a right triangle in degrees, minutes, and seconds. This is easy enough to
do with my desktop calculator but I am having difficulty doing it in DOTNET
code. I find the sine of an angle as .6157548327167 which is the sine of an
angle a little over 38 degrees. How do I get this to 38 degrees ? minutes ?
seconds? Thanks in advance for any help and have a good day.
 
It happens that JungleJim74 formulated :
I am using VS2003 Professional and am trying to display the other two angles
of a right triangle in degrees, minutes, and seconds. This is easy enough to
do with my desktop calculator but I am having difficulty doing it in DOTNET
code. I find the sine of an angle as .6157548327167 which is the sine of an
angle a little over 38 degrees. How do I get this to 38 degrees ? minutes ?
seconds? Thanks in advance for any help and have a good day.

To go from the sine of an angle to it's value, use the Math.Asin()
method. This will return a value in radians. Note: there is also a
Math.Acos() method that starts with the cosine.
There are "pi" radians in 180 degrees, so you will have to divide the
answer by Math.PI and multiply by 180.
There is no built-in method that displays this number in degress,
minutes and seconds so you will have to calculate that yourself.
The Math.Truncate() method could help here.

For more methods, see
http://msdn.microsoft.com/en-us/library/system.math.aspx

Hans Kesting
 
JungleJim74 said:
I am using VS2003 Professional and am trying to display the other two
angles of a right triangle in degrees, minutes, and seconds. This is
easy enough to do with my desktop calculator but I am having
difficulty doing it in DOTNET code. I find the sine of an angle as
.6157548327167 which is the sine of an angle a little over 38
degrees. How do I get this to 38 degrees ? minutes ? seconds?

Use Math.Asin to get the angle in radians and then use google to find the
conversion.

http://www.freevbcode.com/ShowCode.asp?ID=8179

Andrew
 
Andrew said:
Use Math.Asin to get the angle in radians and then use google to find
the conversion.

http://www.freevbcode.com/ShowCode.asp?ID=8179

Or if you were using a later version of VS, you could do the conversion like

Dim a As Double = Math.Asin(0.06316308504476903) * 180.0 / Math.PI
Dim d As Double = Math.Truncate(a)
Dim t As New TimeSpan(CLng((a - d) * 36000000000.0))
Console.WriteLine("{0} {1} {2}", d, t.Minutes, t.Seconds) ' ->3 37 17

Watch out for negative angles.

Andrew
 
Thank you so much but when I try to use the Function that is shown when I
click on your link I get an error in my compiler
C:\MyDotNet\DecimalDegreesToDMS\Form1.vb(197): 'Truncate' is not a member of
'System.Math'.
"How do I eliminate this compiler error? TIA
 
JungleJim74 said:
Thank you so much but when I try to use the Function that is shown when I
click on your link I get an error in my compiler
C:\MyDotNet\DecimalDegreesToDMS\Form1.vb(197): 'Truncate' is not a member of
'System.Math'.
"How do I eliminate this compiler error? TIA

What version of VS are you using?
 
"JungleJim74"wrote
Thank you so much but when I try to use the Function that is shown when I
click on your link I get an error in my compiler
C:\MyDotNet\DecimalDegreesToDMS\Form1.vb(197): 'Truncate' is not a member
of
'System.Math'.
"How do I eliminate this compiler error? TIA

Oh! Math.Truncate appears to not be in .NET 1.1.

Did you know you can get a free version of Visual Basic 2008 Express?
http://www.microsoft.com/express/vb/Default.aspx

Otherwise, you can define

Function truncate(ByVal x As Double) As Integer
If Math.Sign(x) >= 0 Then
Return Math.Floor(x)
Else
Return Math.Ceiling(x)
End If
End Function

HTH

Andrew
 
Back
Top