Hallo zusammen,
ich hab ein kleines Problemchen.
Und zwar sollen wir von der Uni aus ein Prgramm entwickeln, welches die Brechung eines Lichtstrahles an einer Linse graphisch darstellt.
Wir haben die Programmierung der Grafik in unserer Gruppe halbwegs hinbekommen, jedoch sitzt sie nich an der Gewünschten stelle.
Im Anhang hab ich 2 Bilder hochgeladen.
Wir möchten die Grafik im rot markiertem Bereich des ersten Bildes haben. Ich habe zu Hause etwas rumprobiert doch ich bekomme das nicht wirklich hin.
Wenn ich das mache sieht das immer so aus wie im zweiten Bild.
Kann mir vllt jemand sagen oder einen tipp geben wie ich das verändern kann?
Hier der Quellcode:
Dazu müsste ich noch sagen, das ich nicht unbedingt viel ahnung vom programmieren habe.
Die ganze grafik hat ein Kollege von mir aus unserer Gruppe programmiert, ich soll jetzt nur das Grafik mit dem Layout verbinden.
Wär schön wenn mir jemand helfen könnte.
ich hab ein kleines Problemchen.
Und zwar sollen wir von der Uni aus ein Prgramm entwickeln, welches die Brechung eines Lichtstrahles an einer Linse graphisch darstellt.
Wir haben die Programmierung der Grafik in unserer Gruppe halbwegs hinbekommen, jedoch sitzt sie nich an der Gewünschten stelle.
Im Anhang hab ich 2 Bilder hochgeladen.
Wir möchten die Grafik im rot markiertem Bereich des ersten Bildes haben. Ich habe zu Hause etwas rumprobiert doch ich bekomme das nicht wirklich hin.
Wenn ich das mache sieht das immer so aus wie im zweiten Bild.
Kann mir vllt jemand sagen oder einen tipp geben wie ich das verändern kann?
Hier der Quellcode:
VB.NET-Quellcode
- Public Class Form1
- Dim rlinks As Integer
- Dim rrechts As Integer
- Dim llinks As Integer
- Dim lrechts As Integer
- Dim redPen As Pen = New Pen(Color.Red, 2)
- Dim eintrittshöhe As Integer
- Dim eintrittswinkel As Integer
- Dim eintrittsx As Integer
- Dim starty As Integer
- Dim blackpen As Pen = New Pen(Color.Black, 2)
- Dim blackthin As Pen = New Pen(Color.Black, 1)
- Dim greenpen As Pen = New Pen(Color.Green, 2)
- Dim clearall As Pen = New Pen(Color.White, 2000)
- Dim graythin As Pen = New Pen(Color.Gray, 1)
- Dim alphalinks As Integer
- Dim alpharechts As Integer
- Dim h As Integer
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- rlinks = TextBox1.Text
- rrechts = TextBox2.Text
- h = TextBox5.Text
- eintrittshöhe = TextBox3.Text
- eintrittswinkel = TextBox4.Text
- eintrittsx = (300 + lrechts) - Math.Sqrt(rrechts ^ 2 - eintrittshöhe ^ 2)
- starty = 300 - eintrittshöhe - Math.Tan(eintrittswinkel * Math.PI / 180) * (eintrittsx - 50)
- Me.CreateGraphics.DrawLine(clearall, 0, 0, 1000, 1000)
- Me.CreateGraphics.DrawLine(blackpen, 50, 300, 550, 300)
- Me.CreateGraphics.DrawLine(graythin, 300, 290, 300, 310)
- Me.CreateGraphics.DrawLine(graythin, 50, 300 - eintrittshöhe, 550, 300 - eintrittshöhe)
- Me.CreateGraphics.DrawLine(graythin, 60, 300 - eintrittshöhe, 60, 300)
- Me.CreateGraphics.DrawArc(graythin, 170, 300 - eintrittshöhe - CInt((eintrittsx - 50) / 2), eintrittsx - 50, eintrittsx - 50, 180, eintrittswinkel)
- Me.CreateGraphics.DrawString("h", SystemFonts.DefaultFont, Brushes.Black, 40, 300 - (eintrittshöhe / 2))
- Me.CreateGraphics.DrawString("alpha", SystemFonts.DefaultFont, Brushes.Black, 180, 300 - eintrittshöhe - ((300 - eintrittshöhe - starty) / 8))
- If rrechts > 0 Then
- If rlinks > 0 Then
- llinks = Math.Sqrt((rlinks * rlinks) - (h * h))
- lrechts = Math.Sqrt((rrechts * rrechts) - (h * h))
- alphalinks = (Math.Asin(h / rlinks)) * 180 / Math.PI
- alpharechts = (Math.Asin(h / rrechts)) * 180 / Math.PI
- Me.CreateGraphics.DrawArc(greenpen, 300 - (rlinks + llinks), 300 - rlinks, 2 * rlinks, 2 * rlinks, 360 - alphalinks, 2 * alphalinks)
- Me.CreateGraphics.DrawArc(greenpen, 300 - (rrechts - lrechts), 300 - rrechts, 2 * rrechts, 2 * rrechts, 180 - alpharechts, 2 * alpharechts)
- Me.CreateGraphics.DrawLine(redPen, 50, starty, eintrittsx, 300 - eintrittshöhe)
- End If
- If rlinks < 0 Then
- rlinks = Math.Abs(rlinks)
- llinks = Math.Sqrt((rlinks * rlinks) - (h * h))
- lrechts = Math.Sqrt((rrechts * rrechts) - (h * h))
- alphalinks = (Math.Asin(h / rlinks)) * 180 / Math.PI
- alpharechts = (Math.Asin(h / rrechts)) * 180 / Math.PI
- Me.CreateGraphics.DrawArc(greenpen, 300 - (rlinks - llinks), 300 - rlinks, 2 * rlinks, 2 * rlinks, 180 - alphalinks, 2 * alphalinks)
- Me.CreateGraphics.DrawArc(greenpen, 300 - (rrechts - lrechts), 300 - rrechts, 2 * rrechts, 2 * rrechts, 180 - alpharechts, 2 * alpharechts)
- Me.CreateGraphics.DrawLine(redPen, 50, starty, eintrittsx, 300 - eintrittshöhe)
- End If
- End If
- If rrechts < 0 Then
- If rlinks > 0 Then
- rrechts = Math.Abs(rrechts)
- llinks = Math.Sqrt((rlinks * rlinks) - (h * h))
- lrechts = Math.Sqrt((rrechts * rrechts) - (h * h))
- alphalinks = (Math.Asin(h / rlinks)) * 180 / Math.PI
- alpharechts = (Math.Asin(h / rrechts)) * 180 / Math.PI
- Me.CreateGraphics.DrawArc(greenpen, 300 - (rlinks + llinks), 300 - rlinks, 2 * rlinks, 2 * rlinks, 360 - alphalinks, 2 * alphalinks)
- Me.CreateGraphics.DrawArc(greenpen, 300 - (rrechts + lrechts), 300 - rrechts, 2 * rrechts, 2 * rrechts, 360 - alpharechts, 2 * alpharechts)
- End If
- End If
- End Sub
- End Class
Dazu müsste ich noch sagen, das ich nicht unbedingt viel ahnung vom programmieren habe.
Die ganze grafik hat ein Kollege von mir aus unserer Gruppe programmiert, ich soll jetzt nur das Grafik mit dem Layout verbinden.
Wär schön wenn mir jemand helfen könnte.