So, und weils so schön ist, hier der gesamte Code für VB3 bis VB6
' Gleichseitiges Dreieck konstruieren
' -----------------------------------
' Autor: K. Langbein, www.ActiveVB.de, Juli 2018
' Ziegruppe: Schüler ab 8.Klasse, VB-Anfänger, Lehrer ;-)
'
' Siehe auch: https://de.wikipedia.org/wiki/Gleichseitiges_Dreieck
'
' Benötigt: Form1 mit Picture1 (ca. 15 x 15 cm) und Command-Button: cmdSet
Dim Pi As Double
Private Type PointD ' Variablentyp für Punkte (x,y)
X As Double
Y As Double
End Type
Dim A As PointD
Dim B As PointD
Dim C As PointD
Dim E As PointD
Dim F As PointD
Dim L As Double ' Seitenlänge des gleichschenklichen Dreiecks
Dim Alpha As Double ' Winkel
Private Sub cmdDraw_Click()
Pi = 4 * Atn(1)
Picture1.Scale (0, 10)-(10, 0) ' Koordinatensystem von 10 x 10 Einheiten (
' z.B cm) einrichten.
' Werte setzen
A.X = 2 ' X-Wert willkürlich bei 2
A.Y = 3 ' Y-Wert für A - auch willkürlich, wie es halt passt
B.X = 8 ' X-Wert für B kann nach belieben eingestellt werden
B.Y = 3 ' Gleiche Y-Position wie bei A
' C.X und C.Y sind zunächst unbekannt.
L = (B.X - A.X) ' Seitenlänge bestimmen
E.X = A.X + (L / 2) ' Position der Halbierenden bestimmen
E.Y = A.Y
F.X = E.X ' X-Position der Halbierenden
F.Y = 9.5 ' Y-Position von F ist zunächst willkürlich
Picture1.Cls ' Tafel wischen
Picture1.ForeColor = 0 ' Schwarzmalerei
Picture1.Line (A.X, A.Y)-(B.X, B.Y) ' Grundlinie Zeichnen
Picture1.ForeColor = vbRed
Picture1.Circle (A.X, A.Y), 0.1 ' Kleine Kreise zur Markierung der Punkte
Picture1.Circle (B.X, B.Y), 0.1
Picture1.Line (E.X, E.Y)-(F.X, F.Y) ' vertikale Einzeichnen
' --------------------------------------------------------------
' Jetzt gehts los: C wird bestimmt
C.X = A.X + L / 2 ' Punkt C befindet sich an der Halbierenden des Dreiecks
Alpha = Pi / 3 ' Beim gleichseitigen Dreieck haben alle Ecken einen
' Winkel
' von 60° entspricht Pi/3
C.Y = A.Y + L * Sin(Alpha) ' Y-Position von C ist A.Y plus die errechnete
' Höhe
' weitere Seiten des Dreiecks einzeichnen.
Picture1.ForeColor = 0 ' Schwarzmalerei
Picture1.Line (A.X, A.Y)-(C.X, C.Y) ' Seite A-C Einzeichnen
Picture1.Line (B.X, B.Y)-(C.X, C.Y) ' Seite b-C Einzeichnen
Picture1.ForeColor = vbRed
Picture1.Circle (C.X, C.Y), 0.1 ' Kleine Kreise zur Markierung der Punkte
' Beschriftung
Picture1.ForeColor = 0 ' Schwarzmalerei
Picture1.CurrentX = A.X - 0.4 ' A wird etwas nach links gesetzt
Picture1.CurrentY = A.Y + 0.2 ' etwas nach oben
Picture1.FontSize = 12
Picture1.FontBold = True
Picture1.Print "A"
Picture1.CurrentX = B.X + 0.2 ' "B" wird etwas nach rechts von Punkt B _
versetzt
Picture1.CurrentY = B.Y + 0.2
Picture1.FontSize = 12
Picture1.FontBold = True
Picture1.Print "B"
Picture1.CurrentX = C.X + 0.2
Picture1.CurrentY = C.Y + 0.2
Picture1.FontSize = 12
Picture1.FontBold = True
Picture1.Print "C"
Picture1.CurrentX = A.X + 0.3
Picture1.CurrentY = A.Y + 0.45
Picture1.FontSize = 12
Picture1.FontBold = False
Picture1.Print "60" & Chr$(176) ' Beschriftung mit Winkel
Picture1.Circle (A.X, A.Y), 1, , 0, (Pi / 3) ' Kreissegment für Winkel
' einzeichnen.
' Aufgabe: Zeichne den Winkel bei B ein
' Zeichne das Kreissegment für B (Winkel bestimmen)
End Sub
Private Sub Form_Load()
Picture1.AutoRedraw = True
Picture1.BackColor = &HF0FFFF
End Sub siehe auch:
www.ActiveVb.de/members/klaus/Math/Triangle/Equilateral_Triangle/Equilateral_Triangle.zip
Mehr zum Thema Mathe-Hausaufgaben gibts bei www.ActiveVB.de - ich wünsche einen angenehmen Schlaf und gute Noten. |