VB.Net Tutorial/Development/Math — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Версия 19:40, 26 мая 2010
Содержание
Convert rectangular 3D coordinates to cylindrical coordinates.
<source lang="vbnet">"Convert cylindrical coordinates to rectangular 3D coordinates.
" ----- Convert rectangular 3D coordinates to " spherical coordinates. " ----- Convert spherical coordinates to " rectangular 3D coordinates. " ----- Convert spherical coordinates to " cylindrical coordinates. " ----- Convert cylindrical coordinates to " spherical coordinates.
" Quote from "Visual Basic 2005 Cookbook Solutions for VB 2005 Programmers "by Tim Patrick (Author), John Craig (Author) "# Publisher: O"Reilly Media, Inc. (September 21, 2006) "# Language: English "# ISBN-10: 0596101775 "# ISBN-13: 978-0596101770 Public Class Tester
Public Shared Sub Main Dim result As New System.Text.StringBuilder Dim pointRec As New Point3D(3, 4, 5) Dim pointCyl As Point3D = RectToCylinder(pointRec) Dim pointSph As Point3D = RectToSphere(pointRec) Dim pointRecToCyl As Point3D = RectToCylinder(pointRec) Dim pointRecToSph As Point3D = RectToSphere(pointRec) Dim pointCylToRec As Point3D = CylinderToRect(pointCyl) Dim pointCylToSph As Point3D = CylinderToSphere(pointCyl) Dim pointSphToRec As Point3D = SphereToRect(pointSph) Dim pointSphToCyl As Point3D = SphereToCylinder(pointSph) result.AppendLine("Rec: " & pointRec.Tostring()) result.AppendLine("Cyl: " & pointCyl.Tostring()) result.AppendLine("Sph: " & pointSph.Tostring()) result.AppendLine() result.AppendLine("Rec to Cyl: " & pointRecToCyl.Tostring()) result.AppendLine("Rec to Sph: " & pointRecToSph.Tostring()) result.AppendLine("Cyl to Rec: " & pointCylToRec.Tostring()) result.AppendLine("Cyl to Sph: " & pointCylToSph.Tostring()) result.AppendLine("Sph to Rec: " & pointSphToRec.Tostring()) result.AppendLine("Sph to Cyl: " & pointSphToCyl.Tostring()) Console.WriteLine(result.ToString())
End Sub Public Shared Function RectToCylinder(ByVal pointA As Point3D) _ As Point3D " ----- Convert rectangular 3D coordinates to " cylindrical coordinates. Dim rho As Double Dim theta As Double rho = Math.Sqrt(pointA.X ^ 2 + pointA.Y ^ 2) theta = Math.Atan2(pointA.Y, pointA.X) Return New Point3D(rho, theta, pointA.Z) End Function Public Shared Function CylinderToRect(ByVal pointA As Point3D) _ As Point3D " ----- Convert cylindrical coordinates to " rectangular 3D coordinates. Dim x As Double Dim y As Double x = pointA.X * Math.Cos(pointA.Y) y = pointA.X * Math.Sin(pointA.Y) Return New Point3D(x, y, pointA.Z) End Function Public Shared Function RectToSphere(ByVal pointA As Point3D) _ As Point3D " ----- Convert rectangular 3D coordinates to " spherical coordinates. Dim rho As Double Dim theta As Double Dim phi As Double rho = Math.Sqrt(pointA.X ^ 2 + pointA.Y ^ 2 + _ pointA.Z ^ 2) theta = Math.Atan2(pointA.Y, pointA.X) phi = Math.Acos(pointA.Z / Math.Sqrt( _ pointA.X ^ 2 + pointA.Y ^ 2 + pointA.Z ^ 2)) Return New Point3D(rho, theta, phi) End Function Public Shared Function SphereToRect(ByVal pointA As Point3D) _ As Point3D " ----- Convert spherical coordinates to " rectangular 3D coordinates. Dim x As Double Dim y As Double Dim z As Double x = pointA.X * Math.Cos(pointA.Y) * Math.Sin(pointA.Z) y = pointA.X * Math.Sin(pointA.Y) * Math.Sin(pointA.Z) z = pointA.X * Math.Cos(pointA.Z) Return New Point3D(x, y, z) End Function Public Shared Function CylinderToSphere(ByVal pointA As Point3D) _ As Point3D " ----- Convert cylindrical coordinates to " spherical coordinates. Dim rho As Double Dim theta As Double Dim phi As Double rho = Math.Sqrt(pointA.X ^ 2 + pointA.Z ^ 2) theta = pointA.Y phi = Math.Acos(pointA.Z / _ Math.Sqrt(pointA.X ^ 2 + pointA.Z ^ 2)) Return New Point3D(rho, theta, phi) End Function Public Shared Function SphereToCylinder(ByVal pointA As Point3D) _ As Point3D " ----- Convert spherical coordinates to " cylindrical coordinates. Dim rho As Double Dim theta As Double Dim z As Double rho = pointA.X * Math.Sin(pointA.Z) theta = pointA.Y z = pointA.X * Math.Cos(pointA.Z) Return New Point3D(rho, theta, z) End Function
End Class
Public Class Point3D
Public X As Double Public Y As Double Public Z As Double Public Sub New(ByVal xPoint As Double, _ ByVal yPoint As Double, ByVal zPoint As Double) Me.X = xPoint Me.Y = yPoint Me.Z = zPoint End Sub Public Overrides Function Tostring() As String Return "{X=" & X & ",Y=" & Y & ",Z=" & Z & "}" End Function
End Class</source>
Rec: {X=3,Y=4,Z=5} Cyl: {X=5,Y=0.927295218001612,Z=5} Sph: {X=7.07106781186548,Y=0.927295218001612,Z=0.785398163397448} Rec to Cyl: {X=5,Y=0.927295218001612,Z=5} Rec to Sph: {X=7.07106781186548,Y=0.927295218001612,Z=0.785398163397448} Cyl to Rec: {X=3,Y=4,Z=5} Cyl to Sph: {X=7.07106781186548,Y=0.927295218001612,Z=0.785398163397448} Sph to Rec: {X=3,Y=4,Z=5} Sph to Cyl: {X=5,Y=0.927295218001612,Z=5}
Generating random integers.
<source lang="vbnet">Module Tester
Sub Main() Dim randomObject As Random = New Random() Dim randomNumber As Integer Dim output As String = "" Dim i As Integer For i = 1 To 20 randomNumber = randomObject.Next(1, 7) output &= randomNumber & " " If i Mod 5 = 0 Then " is i a multiple of 5? output &= vbCrLf End If Next Console.WriteLine(output) End Sub
End Module</source>
4 1 3 4 3 5 6 2 6 5 5 3 6 4 1 6 6 3 6 3
Math. Cos and Sin
<source lang="vbnet">Public Class Tester
Public Shared Sub Main Dim X As Single Dim Y As Single X = CSng( Math.Cos(100)) Y = CSng( Math.Sin(100)) Console.WriteLine(X) Console.WriteLine(Y) End Sub
End Class</source>
0.8623189 -0.5063657
Math.Round
<source lang="vbnet">Public Class Tester
Public Shared Sub Main Dim digits As Integer For digits = 0 To 5 Console.WriteLine(Math.Round(Math.PI, digits)) Next digits End Sub
End Class</source>
3 3.1 3.14 3.142 3.1416 3.14159
Math.Sqrt and Atan2
<source lang="vbnet">Public Class Tester
Public Shared Sub Main Dim magnitude As Single Dim radians As Single magnitude = CSng(Math.Sqrt(100 ^ 2 + 120 ^ 2)) radians = CSng(Math.Atan2(100, 123))
Console.WriteLine(magnitude) Console.WriteLine(radians) End Sub
End Class</source>
156.205 0.6826226
Randomize
<source lang="vbnet">Option Strict On Public Module RandomizeStatement
Public Sub Main() Dim number As Double = 1.0325 Rnd(-1) Randomize(number) " Number is any Double For ctr As Integer = 1 to 10 Console.WriteLine(Rnd()) Next End Sub
End Module</source>
0.3610106 0.579608 0.2782471 0.05653632 0.2865489 0.33937 0.6398301 0.2991799 0.8264404 0.1662288