Public Class SBPmain 'Part 1: Variable structures and variables on module level 'Variable structure for handling pixel-coordinates Structure Coordinate Dim X As Short Dim Y As Short End Structure 'Variable structure for handling pixel-polar coordinates Structure PolarCoordinate Dim Arc As Double Dim Radius As Double Dim Cosinus As Double Dim Sinus As Double End Structure 'Variable structure for handling the bar and border size of a container Structure FrameSize Dim Border As Short Dim Bar As Short End Structure 'Part 2: Functions 'Function calculates border- and barsize for rectangular objects Function ObjectFrame(OuterWidth As Integer, OuterHeight As Integer, InnerWidth As Integer, InnerHeight As Integer) As FrameSize 'Internal function variable Dim Result As FrameSize 'Calculating border and Bar size (=Result) Result.Border = (OuterWidth - InnerWidth) / 2 Result.Bar = OuterHeight - InnerHeight - 2 * Result.Border 'Returning function value Return Result End Function 'Function calculates border- and barsize for forms Function Frame(Element As Form) As FrameSize 'Internal function variable Dim Result As FrameSize 'Calculating border and Bar size (=Result) Result.Border = (Element.Width - Element.ClientSize.Width) / 2 Result.Bar = Element.Height - Element.ClientSize.Height - 2 * Result.Border 'Returning function value Return Result End Function 'Function calculates the distance (Radius) between two points Function CreateRadius(Point As Coordinate, Referencepoint As Coordinate) As Double 'Internal function variable variables Dim Result As Double 'Calculating Radius (= Result) Result = ((Point.X - Referencepoint.X) ^ 2 + (Point.Y - Referencepoint.Y) ^ 2) ^ 0.5 'Returning function value Return Result End Function 'Function calculates the sinus between two points Function CreateSinus(Point As Coordinate, Referencepoint As Coordinate) As Double 'Internal function variables Dim Result As Double Dim Radius As Double 'Calculating Radius and Sinus (= Result) Radius = ((Point.X - Referencepoint.X) ^ 2 + (Point.Y - Referencepoint.Y) ^ 2) ^ 0.5 Result = (Point.Y - Referencepoint.Y) / Radius 'Returning function value Return Result End Function 'Function calculates the cosinus between two points Function CreateCosinus(Point As Coordinate, Referencepoint As Coordinate) As Double 'Internal function variables Dim Result As Double Dim Radius As Double 'Calculating Radius and Cosinus (= Result) Radius = ((Point.X - Referencepoint.X) ^ 2 + (Point.Y - Referencepoint.Y) ^ 2) ^ 0.5 Result = (Point.X - Referencepoint.X) / Radius 'Returning function value Return Result End Function 'Function calculates the arc in degrees between two points Function CreateDegree(Point As Coordinate, Referencepoint As Coordinate) As Double 'Internal function variables Dim Result As Double Dim Radius As Double Dim Sinus As Double Dim Cosinus As Double Dim TempArc As Double 'Calculating Radius, Sinus and Cosinus Radius = ((Point.X - Referencepoint.X) ^ 2 + (Point.Y - Referencepoint.Y) ^ 2) ^ 0.5 Sinus = (Point.Y - Referencepoint.Y) / Radius Cosinus = (Point.X - Referencepoint.X) / Radius 'Calculating TempArc in degree TempArc = Math.Acos(Cosinus) * (180 / Math.PI) 'Determining the real arc (=Result) based on Sinus and Cosinus in degree If Cosinus >= 0 And Sinus < 0 Then Result = 90 - TempArc ElseIf Cosinus >= 0 And Sinus >= 0 Then Result = 90 + TempArc ElseIf Cosinus < 0 And Sinus >= 0 Then Result = 90 + TempArc ElseIf Cosinus < 0 And Sinus < 0 Then Result = 450 - TempArc End If 'Returning function value Return Result End Function 'Function calculates polar coordinate between two points Function CreatePolarCoord(Point As Coordinate, Referencepoint As Coordinate) As PolarCoordinate 'Internal function variable variables Dim TempArc As Double Dim Result As PolarCoordinate 'Calculating Radius, Cosinus, Sinus and Arc Result.Radius = ((Point.X - Referencepoint.X) ^ 2 + (Point.Y - Referencepoint.Y) ^ 2) ^ 0.5 Result.Cosinus = (Point.X - Referencepoint.X) / Result.Radius Result.Sinus = (Point.Y - Referencepoint.Y) / Result.Radius 'Calculating TempArc in degrees TempArc = Math.Acos(Result.Cosinus) * (180 / Math.PI) 'Determining the real arc (=Result.Arc) based on Sinus and Cosinus in degree If Result.Cosinus >= 0 And Result.Sinus < 0 Then Result.Arc = 90 - TempArc ElseIf Result.Cosinus >= 0 And Result.Sinus >= 0 Then Result.Arc = 90 + TempArc ElseIf Result.Cosinus < 0 And Result.Sinus >= 0 Then Result.Arc = 90 + TempArc ElseIf Result.Cosinus < 0 And Result.Sinus < 0 Then Result.Arc = 450 - TempArc End If 'Returning function value Return Result End Function