Schönen guten Abend, liebe Community,
ich komme gleich zum Thema:
Für ein aktuelles Projekt würde ich gerne in meinen aktuellen Code ein - sich mitbewegendes - Koordinatensystem für die X, Y, Z Achse einfügen, jedoch habe ich leider keine Ahnung wie, habe schon vieles ausprobiert, aber leider hat davon nichts so funktioniert, wie ich es haben wollte.
Also bisher ohne Erfolg..
Ich hätte es gerne so wie auf folgendem Bild:
bilder-upload.eu/bild-85ce74-1569710587.png.html
Das blaue Koordinatensystem steht fest im Raum (bewegt sich jedoch beim Drehen des Quaders in X, Y, Z Richtung mit)
Das schwarze Koordinatensystem ist fest mit dem Quader "verbunden", schwingt also hin und her und lässt sich ebenfalls in X, Y, Z Richtung mitbewegen
Aktuell sieht das ganze bei mir so aus:
bilder-upload.eu/bild-e772f2-1569743065.jpg.html
Also bloß der drehbare Quader ohne sichtbare Achsenbeschriftung.
Mein Quellcode sieht folgendermaßen aus:
*Topic verschoben*
ich komme gleich zum Thema:
Für ein aktuelles Projekt würde ich gerne in meinen aktuellen Code ein - sich mitbewegendes - Koordinatensystem für die X, Y, Z Achse einfügen, jedoch habe ich leider keine Ahnung wie, habe schon vieles ausprobiert, aber leider hat davon nichts so funktioniert, wie ich es haben wollte.
Also bisher ohne Erfolg..
Ich hätte es gerne so wie auf folgendem Bild:
bilder-upload.eu/bild-85ce74-1569710587.png.html
Das blaue Koordinatensystem steht fest im Raum (bewegt sich jedoch beim Drehen des Quaders in X, Y, Z Richtung mit)
Das schwarze Koordinatensystem ist fest mit dem Quader "verbunden", schwingt also hin und her und lässt sich ebenfalls in X, Y, Z Richtung mitbewegen
Aktuell sieht das ganze bei mir so aus:
bilder-upload.eu/bild-e772f2-1569743065.jpg.html
Also bloß der drehbare Quader ohne sichtbare Achsenbeschriftung.
Mein Quellcode sieht folgendermaßen aus:
VB.NET-Quellcode
- Public Class Form2
- Dim alpha_z, alpha_y As Decimal
- Dim maus_x, maus_y As Integer
- Private Sub frmTest_Paint(ByVal sender As Object,
- ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
- If RadioButton_2D.Checked Then
- Dim p As New Pen(Color.Blue, 2)
- Dim x, y As Integer
- 'x = 100 + 100 * Math.Sin(Form1.phi)
- x = Me.Width / 2 + 115 * Math.Sin(Form1.phi) 'Zentrierung X-Achse
- y = Me.Height / 2 + 115 * Math.Cos(Form1.phi) 'Zentrierung Y-Achse
- 'y = 100 + 100 * Math.Cos(Form1.phi)
- e.Graphics.DrawEllipse(Pens.Red, x - 10, y - 10, 20, 20) 'Kugel
- e.Graphics.FillEllipse(Brushes.Red, x - 10, y - 10, 20, 20)
- e.Graphics.DrawLine(p, CInt(Me.Width / 2), CInt(Me.Height / 2), x, y) 'Der Faden
- e.Graphics.DrawLine(Pens.Black, 212, CInt(Me.Height / 2), Me.Width - 212, CInt(Me.Height / 2))
- With e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias 'test für Anti-Aliasing als Weichzeichner Methode
- e.Graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality 'Zusätzlicher Test mit HighQuality
- End With
- Button1.Visible = False
- Button2.Visible = False
- Button3.Visible = False
- Button4.Visible = False
- Label1.Visible = False
- End If
- 'Formatierung eines Quaders in 3D durch ein Koordinatensystem
- If RadioButton_3D.Checked Then
- Dim b, t, h As Decimal
- b = 6
- t = 2
- h = 15
- Dim x(7), y(7), z(7) As Decimal
- y(1) = b
- x(2) = t
- y(2) = b
- x(3) = t
- z(4) = h
- y(5) = b
- z(5) = h
- x(6) = t
- y(6) = b
- z(6) = h
- x(7) = t
- z(7) = h
- Button1.Visible = True
- Button2.Visible = True
- Button3.Visible = True
- Button4.Visible = True
- Label1.Visible = True
- For i = 0 To 7
- z(i) = z(i) - 1.0 * h
- y(i) = y(i) - 0.5 * b
- Next
- Dim x0(7), y0(7), z0(7) As Decimal
- For i = 0 To 7
- x0(i) = x(i)
- y0(i) = y(i) * Math.Cos(Form1.phi) - z(i) * Math.Sin(Form1.phi)
- z0(i) = y(i) * Math.Sin(Form1.phi) + z(i) * Math.Cos(Form1.phi)
- Next
- 'nachfolgender Schritt für Drehung um die Z Achse
- Dim x1(7), y1(7), z1(7) As Decimal
- For i = 0 To 7
- x1(i) = x0(i) * Math.Cos(alpha_z) - y0(i) * Math.Sin(alpha_z)
- y1(i) = x0(i) * Math.Sin(alpha_z) + y0(i) * Math.Cos(alpha_z)
- z1(i) = z0(i)
- Next
- 'nachfolgender Schritt für Drehung um die Y Achse
- Dim x2(7), y2(7), z2(7) As Decimal
- For i = 0 To 7
- x2(i) = x1(i) * Math.Cos(alpha_y) - z1(i) * Math.Sin(alpha_y)
- z2(i) = x1(i) * Math.Sin(alpha_y) + z1(i) * Math.Cos(alpha_y)
- y2(i) = y1(i)
- Next
- '3D auf 2D Umrechnung
- Dim xb(7), yb(7) As Integer 'Dimensionierung des Quaders
- For i = 0 To 7
- xb(i) = Me.Width / 2 + y2(i) * 20 '- x2(i) * 0.707 * 0.5 * 20
- yb(i) = Me.Height / 2 - z2(i) * 20 '+ x2(i) * 0.707 * 0.5 * 20
- e.Graphics.DrawEllipse(Pens.Black, xb(i) - 4, yb(i) - 4, 8, 8) 'Eckpunkte des Quaders
- Next
- For j = 0 To 1
- For i = 0 To 2
- e.Graphics.DrawLine(Pens.Black, xb(i + j * 4), yb(i + j * 4), xb(i + 1 + j * 4), yb(i + 1 + j * 4))
- Next
- e.Graphics.DrawLine(Pens.Black, xb(3 + j * 4), yb(3 + j * 4), xb(0 + j * 4), yb(0 + j * 4))
- Next
- For i = 0 To 3
- e.Graphics.DrawLine(Pens.Black, xb(i), yb(i), xb(i + 4), yb(i + 4))
- Next
- 'nachfolgend Fläche mit Farbe
- 'Vorne
- If x2(3) - x2(0) > 0 Then
- Dim quader() As Point =
- {New Point(xb(2), yb(2)),
- New Point(xb(3), yb(3)),
- New Point(xb(7), yb(7)),
- New Point(xb(6), yb(6))}
- With e.Graphics
- .SmoothingMode = Drawing.Drawing2D.SmoothingMode.HighQuality
- '.DrawLines(New Pen(Color.Black, 2), quader)
- End With
- e.Graphics.FillPolygon(Brushes.Red, quader)
- End If
*Topic verschoben*
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()