Koordinate (mehr oder weniger) spiegeln

  • Hallo nochmal,

    nachdem mein letzter Thread aufgrund eines Denkfehlers von mir nicht wirklich großen sinn hatte, hab ich jetzt eine andere Idee zur Lösung meines 3D Problems... Also:
    - gegeben: P1, M und Winkel ß
    - gesucht: Koordinaten P2

    ich glaube, man kann Punkte bzw Koordinaten ja mit einem Winkel spiegeln, insofern kann mir einer sagen, ob das möglich ist bzw wie es geht?

    sry für meine Dreiecksfragen^^
    mfg Developer30

    Dateien

    "Je mehr Käse, desto mehr Löcher; je mehr Löcher, desto weniger Käse. Ergo: Je mehr Käse, desto weniger Käse. 8| "
    "Programmers never die: they just GOSUB without RETURN"
    "I tried to change the world but I couldn't find the source code."

    Einmal editiert, zuletzt von Developer30 (14. September 2010 um 18:36)

  • ist das nicht genau das gleiche wie im anderen thread nur das du P2 mit M und P3 mit P2 ersetzt hast? :huh:
    EDIT: oder soll P1 und P2 auf der gleichen höhe liegen? wenn ja dan gehts :)
    oder ist MP1 und MP2 gleich lang?

  • ist das nicht genau das gleiche wie im anderen thread nur das du P2 mit M und P3 mit P2 ersetzt hast?

    hm also find ich nicht. hier geht es um Spiegelung, im anderen Thread ging es um den 3. Punkt im Dreieck. Ja das Thema liegt eng zusammen, aber der Lösungsweg scheint ein anderer zu sein. Im Endeffekt ist es die gleiche Aufgabe, aber anders angesetzt.
    Im anderen Thread ging es darum irgendeinen Punkt zu suchen, der zu einem Dreieck gehört, hier geht es darum, gezielt den Punkt über den den Winkel zu spiegeln.

    oder ist MP1 und MP2 gleich lang?

    MP1 und MP2 ist gleich lang (also soll gleich lang sein)

    "Je mehr Käse, desto mehr Löcher; je mehr Löcher, desto weniger Käse. Ergo: Je mehr Käse, desto weniger Käse. 8| "
    "Programmers never die: they just GOSUB without RETURN"
    "I tried to change the world but I couldn't find the source code."

  • P2 (x,y)
    x=Mx+MP1 x cos ( 180 - ß - ATan((P1y-My)/(P1x-Mx)))
    y=My+MP1 x sin ( 180 - ß - ATan ((P1y-My)/(P1x-Mx)))

    ich wette es gibt ne einfache möglichkeit :D


    Mx heißt x coordinate von M ;)
    ...
    ich hoffe das ist alles richtig ( habs nicht ausprobiert )

    EDIT: ATan ist ja in radians :love:
    x=Mx+MP1 x cos ( Pi - ß - ATan((P1y-My)/(Mx-P1x)))
    y=My+MP1 x sin ( Pi - ß - ATan ((P1y-My)/(Mx-P1x)))

  • jo danke. ich werds mir morgen mal genauer ansehen.. ich hab heute Abend leider keine zeit mehr.
    aber thx schonmal für deine mühe :)

    "Je mehr Käse, desto mehr Löcher; je mehr Löcher, desto weniger Käse. Ergo: Je mehr Käse, desto weniger Käse. 8| "
    "Programmers never die: they just GOSUB without RETURN"
    "I tried to change the world but I couldn't find the source code."

  • Zitat

    hab ich jetzt eine andere Idee zur Lösung meines 3D Problems...

    Von 3D ist weit und breit nichts zu sehen....
    Wenn es aber schon an der Spiegelung eines Punktes an einer Gerade hapert....dann wirds mit 3D auch so schnell nichts...

    Mal "zu Fuß" erklärt...
    Es bietet sich an, das Verfahren in eine Funktion zu packen, aber das sollte man alleine hinbekommen :D

    [autoit]

    ;Spiegelung Punkt P an einer Geraden y=mx+b ergibt P2

    [/autoit][autoit][/autoit][autoit]

    ;Verfahren:
    ;1) Geradengleichung der Senkrechten auf die Spiegelgerade finden durch den Punkt P
    ;2) Der Schnittpunkt der Senkrechten und der Spiegelgeraden ergibt S
    ;3) Auf der Gerade durch P und S liegt P2 im Abstand 2*PS

    [/autoit][autoit][/autoit][autoit]

    ;Punkt P auf der Ebene
    $Px = 1
    $Py = -5

    [/autoit][autoit][/autoit][autoit]

    ;Geradengleichung y=mx+b
    $m = -0.5
    $b = 3
    ;$y = $m * $x + $b

    [/autoit][autoit][/autoit][autoit]

    ;1) Zur Spiegelgeraden senkrechte Geraden haben alle die Steigung ms=-1/m
    $ms = -1 / $m
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $ms = ' & $ms & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

    [/autoit][autoit][/autoit][autoit]

    ;gesucht wird eine auf die Spiegelgerade senkrechte Gerade durch den Punkt P
    ;Geradengleichung senkrechte Gerade: y=ms*x+bs
    ;$Py = $ms * $Px + $bs
    $bs = $Py - ($ms * $Px)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $bs = ' & $bs & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ;2) Schnittpunkt beider Geraden
    ;$ys = $m * $xs + $b = $ms * $xs + $bs
    $xs = ($bs - $b) / ($m - $ms)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $xs = ' & $xs & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    $ys = $ms * $xs + $bs
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $ys = ' & $ys & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    ;PS liegt in der Hälfte zwischen P1 und P2

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ;3) Geradengleichung durch P und S
    ;2*Abstand PS ergibt P2
    $P2x = $Px + 2 * ($xs - $Px)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $P2x = ' & $P2x & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    $P2y = $Py + 2 * ($ys - $Py)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $P2y = ' & $P2y & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

    [/autoit]
  • So?

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    Opt("MustDeclareVars", 1)
    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Local $hGUI, $hGraphics, $hBackbuffer, $hBitmap, $hBrush, $hPen
    Local $iX = 800, $iY = 600

    [/autoit] [autoit][/autoit] [autoit]

    ; Initialize GDI+
    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("Spiegeln", $iX, $iY)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iX, $iY, $hGraphics)
    $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)

    [/autoit] [autoit][/autoit] [autoit]

    ; Using antialiasing
    _GDIPlus_GraphicsSetSmoothingMode($hBackbuffer, 2)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Create a Pen object
    $hBrush = _GDIPlus_BrushCreateSolid(0)
    $hPen = _GDIPlus_PenCreate(0xFF000000)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

    [/autoit] [autoit][/autoit] [autoit]

    Local $P1_x = 100
    Local $P1_y = 100
    Local $P2_x = 300
    Local $P2_y = 400
    Local $P3_x, $P3_y, $PT_x, $PT_y

    [/autoit] [autoit][/autoit] [autoit]

    While Sleep(20)
    _GDIPlus_GraphicsClear($hBackbuffer, 0xFFFFFFFF)

    [/autoit] [autoit][/autoit] [autoit]

    $P3_x = $P1_x + 2 * ($P2_x - $P1_x)
    $P3_y = $P1_y - 5

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_PenSetColor($hPen, 0xFF000000)
    _GDIPlus_GraphicsDrawLine($hBackbuffer, $P1_x, $P1_y, $P2_x, $P2_y, $hPen)
    _GDIPlus_GraphicsDrawLine($hBackbuffer, $P2_x, $P2_y, $P3_x, $P3_y, $hPen)
    _GDIPlus_PenSetColor($hPen, 0xFF0000FF)
    _GDIPlus_GraphicsDrawLine($hBackbuffer, $P2_x, $P1_y - 40, $P2_x, $P2_y + 40, $hPen)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Punkt 1
    _GDIPlus_BrushSetSolidColor($hBrush, 0xFFFF0000)
    _GDIPlus_GraphicsFillEllipse($hBackbuffer, $P1_x - 5, $P1_y - 5, 10, 10, $hBrush)

    [/autoit] [autoit][/autoit] [autoit]

    ;Punkt 2
    _GDIPlus_BrushSetSolidColor($hBrush, 0xFF00FF00)
    _GDIPlus_GraphicsFillEllipse($hBackbuffer, $P2_x - 5, $P2_y - 5, 10, 10, $hBrush)

    [/autoit] [autoit][/autoit] [autoit]

    ;Punkt 3 (Spiegel von Punkt 1)
    _GDIPlus_BrushSetSolidColor($hBrush, 0xFF0000FF)
    _GDIPlus_GraphicsFillEllipse($hBackbuffer, $P3_x - 5, $P3_y - 5, 10, 10, $hBrush)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $iX, $iY)
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    ; Clean up
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hBackbuffer)
    _GDIPlus_GraphicsDispose($hGraphics)

    [/autoit] [autoit][/autoit] [autoit]

    ; Uninitialize GDI+
    _GDIPlus_Shutdown()
    Exit
    EndFunc

    [/autoit]

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • ist die spiegelachse immer vertikal?
    konnte man aus der zeichnung iwie nicht sehen
    wenn ja, dann macht es das ja viel einfacher ^^

  • Zitat

    ist die spiegelachse immer vertikal?

    wenn das so wäre, dann reduziert sich das ganze Problem auf eine Addition, das sollte dann auch ein 2.-Klässler schaffen...
    Denn dann wäre Y2 = Y1 und X2= X1 + (XS-X1) + (XS-X1)

  • Andy: ich muss als spiegelachse die Mittelsenkrechte des Winkels holen, und davon hab ich keine funktionsgleichung f(x) bzw y.
    @ uez: ich brauch nur den rechenweg, nix mit GDI+.. trotzdem thx..

    "Je mehr Käse, desto mehr Löcher; je mehr Löcher, desto weniger Käse. Ergo: Je mehr Käse, desto weniger Käse. 8| "
    "Programmers never die: they just GOSUB without RETURN"
    "I tried to change the world but I couldn't find the source code."

  • Als Funktion

    [autoit]

    Func _Punkt_gespiegelt_an_Gerade($m, $b, $Px, $Py) ;y=mx+b , Koordinaten P, return=array mit P'x und P'y
    Local $a[2]
    $a[0] = $Px + 2 * (((($Py - ((-1 / $m) * $Px)) - $b) / ($m - (-1 / $m))) - $Px)
    $a[1] = $Py + 2 * (((-1 / $m) * ((($Py - ((-1 / $m) * $Px)) - $b) / ($m - (-1 / $m))) + ($Py - ((-1 / $m) * $Px))) - $Py)
    Return $a
    EndFunc ;==>_Punkt_gespiegelt_an Gerade

    [/autoit][autoit][/autoit][autoit]

    $koordinaten=_Punkt_gespiegelt_an_Gerade(-0.5, 3, 1, -5)
    _arraydisplay($koordinaten)

    [/autoit]
  • Die Mittelsenkrechte des Winkels? Oha, meinst du ggf. die Winkelhalbierende als "Spiegelachse"?
    Dann könnte man die "Spiegelung" als Drehung von P um Punkt S mit dem Winkel alpha auffassen?(was aufs Gleiche wie die Spiegelung rausläuft)

    So?

    Spoiler anzeigen
    [autoit]

    Func _Punkt_gedreht_um_Winkel($Px, $Py, $alpha, $DPx, $DPy) ;Koordinaten Punkt, Winkel in Grad Drehrichtung nach RECHTS, Koordinaten Drehpunkt
    Local $Hx = $Px - $DPx
    Local $Hy = $Py - $DPy

    [/autoit] [autoit][/autoit] [autoit]

    ;$degToRad = atan(1)*4 / 180 ;atan(1)*4=pi
    $degtorad = 0.0174532925

    [/autoit] [autoit][/autoit] [autoit]

    $sinus = Sin(-$alpha * $degtorad)
    $cosinus = Cos(-$alpha * $degtorad)

    [/autoit] [autoit][/autoit] [autoit]

    Local $a[2] ;array koordinaten
    $a[0] = $DPx + Round($Hx * $cosinus - $Hy * $sinus,2) ;2 Nachkommastellen sollten reichen
    $a[1] = $DPy + Round($Hx * $sinus + $Hy * $cosinus,2)
    Return $a
    EndFunc ;==>_Punkt_gedreht_um_Winkel

    [/autoit] [autoit][/autoit] [autoit]

    $koordinaten = _Punkt_gedreht_um_Winkel(2, 5, 90, 3, 3)
    _ArrayDisplay($koordinaten)

    [/autoit]

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    2 Mal editiert, zuletzt von Andy (14. September 2010 um 14:37)

  • Die Mittelsenkrechte des Winkels? Oha, meinst du ggf. die Winkelhalbierende als "Spiegelachse"?
    Dann könnte man die "Spiegelung" als Drehung von P um Punkt S mit dem Winkel alpha auffassenwas aufs Gleiche wie die Spiegelung rausläuft)


    ja quasi eine Drehung (bei mir in der skizze oben heißt der winkel beta, aber das spielt ja auch keine rolle...), oder halt die Winkelhalbierende als Spiegelachse. welches der beiden varianten ist mir eigentlich egal.

    Edit: ah danke für die Funktion. ich werde sie mir nachher mal ansehen..

    "Je mehr Käse, desto mehr Löcher; je mehr Löcher, desto weniger Käse. Ergo: Je mehr Käse, desto weniger Käse. 8| "
    "Programmers never die: they just GOSUB without RETURN"
    "I tried to change the world but I couldn't find the source code."

  • Zitat

    ich brauch nur den rechenweg, nix mit GDI+.. trotzdem thx..

    GDI+ ist doch nicht der Rechner, sondern die Projektion des Gerechneten! Der Rechenweg steht doch dort geschrieben!

    Du musst nur beachten, dass hier P(0,0) oben links in der Ecke ist - in der Schule ist ja der Mittelpunkt i.d.R. wo anders. ;)

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Um jetzt beide Funktionen zu nutzen, könnte man ja erst den Punkt P um die Winkelhalbierende drehen um so den Punkt M' zu erhalten (M und M' wären dann die Spiegelachse) und dann P an der Spiegelachse spiegeln :rofl:

  • Die Darstellung der Spiegelung mittel GDI+:

    Spoiler anzeigen
    [autoit]


    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    Opt("MustDeclareVars", 1)
    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Local $hGUI, $hGraphics, $hBackbuffer, $hBitmap, $hBrush, $hPen
    Local $iX = 800, $iY = 600

    [/autoit] [autoit][/autoit] [autoit]

    ; Initialize GDI+
    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("Spiegeln von P1 an der Achse P2 von UEZ 2010", $iX, $iY)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iX, $iY, $hGraphics)
    $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)

    [/autoit] [autoit][/autoit] [autoit]

    ; Using antialiasing
    _GDIPlus_GraphicsSetSmoothingMode($hBackbuffer, 2)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Create a Pen object
    $hBrush = _GDIPlus_BrushCreateSolid(0)
    $hPen = _GDIPlus_PenCreate(0xFF000000)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")

    [/autoit] [autoit][/autoit] [autoit]

    Local $deg = ACos(-1) / 180
    Local $rad = 180 / ACos(-1)
    Local $P1_x = 300
    Local $P1_y = 100
    Local $P2_x = 150
    Local $P2_y = 500
    Local $alpha = 60
    Local $P3_x, $P3_y
    Local $radius = Pixel_Distance($P1_x, $P1_y, $P2_x, $P2_y)

    [/autoit] [autoit][/autoit] [autoit]

    ;Winkel von Punkt1 berechnen
    Local $mwx = $P1_x - $P2_x
    Local $mwy = $P2_y - $P1_y
    Local $P1angle = -ATan($mwy / $mwx) * $rad
    If $mwx < 0 Then
    $P1angle = -180 + $P1angle
    ElseIf $mwx >= 0 And $mwy < 0 Then
    $P1angle = -360 + $P1angle
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;Spiegel berechnen
    Local $PT_x = $P2_x + Cos(($alpha / 2 + $P1angle) * $deg) * $radius * 1.25
    Local $PT_y = $P2_y + Sin(($alpha / 2 + $P1angle) * $deg) * $radius * 1.25

    [/autoit] [autoit][/autoit] [autoit]

    While Sleep(40)
    _GDIPlus_GraphicsClear($hBackbuffer, 0xFFFFFFFF)

    [/autoit] [autoit][/autoit] [autoit]

    $P3_x = $P2_x + Cos(($alpha + $P1angle) * $deg) * $radius
    $P3_y = $P2_y + Sin(($alpha + $P1angle) * $deg) * $radius

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_PenSetColor($hPen, 0xFF000000)
    _GDIPlus_GraphicsDrawLine($hBackbuffer, $P1_x, $P1_y, $P2_x, $P2_y, $hPen)
    _GDIPlus_GraphicsDrawLine($hBackbuffer, $P2_x, $P2_y, $P3_x, $P3_y, $hPen)

    [/autoit] [autoit][/autoit] [autoit]

    ;~ _GDIPlus_GraphicsDrawEllipse($hBackbuffer, $P2_x - $radius, $P2_y - $radius, 2 * $radius, 2 * $radius, $hPen)
    _GDIPlus_PenSetColor($hPen, 0xFF0000FF)
    _GDIPlus_GraphicsDrawLine($hBackbuffer, $P2_x, $P2_y, $PT_x, $PT_y, $hPen)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;Punkt 1
    _GDIPlus_BrushSetSolidColor($hBrush, 0xFFFF0000)
    _GDIPlus_GraphicsFillEllipse($hBackbuffer, $P1_x - 5, $P1_y - 5, 10, 10, $hBrush)

    [/autoit] [autoit][/autoit] [autoit]

    ;Punkt 2
    _GDIPlus_BrushSetSolidColor($hBrush, 0xFF00FF00)
    _GDIPlus_GraphicsFillEllipse($hBackbuffer, $P2_x - 5, $P2_y - 5, 10, 10, $hBrush)

    [/autoit] [autoit][/autoit] [autoit]

    ;Punkt 3 (Spiegel von Punkt 1)
    _GDIPlus_BrushSetSolidColor($hBrush, 0xFF0000FF)
    _GDIPlus_GraphicsFillEllipse($hBackbuffer, $P3_x - 5, $P3_y - 5, 10, 10, $hBrush)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsDrawString($hBackbuffer, "P1" & @CRLF & "(" & Int($P1_x) & "," & Int($P1_y) & ")", $P1_x - 25, $P1_y - 40)
    _GDIPlus_GraphicsDrawString($hBackbuffer, "P2" & @CRLF & "(" & Int($P2_x) & "," & Int($P2_y) & ")", $P2_x - 25, $P2_y - 40)
    _GDIPlus_GraphicsDrawString($hBackbuffer, "Winkel alpha = " & $alpha, $P2_x - 45, $P2_y + 10)
    _GDIPlus_GraphicsDrawString($hBackbuffer, "P3" & @CRLF & "(" & Int($P3_x) & "," & Int($P3_y) & ")", $P3_x - 25, $P3_y - 40)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsDrawImageRect($hGraphics, $hBitmap, 0, 0, $iX, $iY)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func Pixel_Distance($x1, $y1, $x2, $y2) ;Pythagoras theorem
    Local $a, $b, $c
    If $x2 = $x1 And $y2 = $y1 Then
    Return 0
    Else
    $a = $y2 - $y1
    $b = $x2 - $x1
    $c = Sqrt($a * $a + $b * $b)
    Return $c
    EndIf
    EndFunc ;==>Pixel_Distance

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    ; Clean up
    _GDIPlus_PenDispose($hPen)
    _GDIPlus_BrushDispose($hBrush)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hBackbuffer)
    _GDIPlus_GraphicsDispose($hGraphics)

    [/autoit] [autoit][/autoit] [autoit]

    ; Uninitialize GDI+
    _GDIPlus_Shutdown()
    Exit
    EndFunc

    [/autoit]


    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

    3 Mal editiert, zuletzt von UEZ (14. September 2010 um 16:38)

  • ok danke für alle antworten
    und nochmal speziell thx @ andy, für die funktion, die ich gesucht hab :thumbup:
    danke! problem ist somit gelöst

    "Je mehr Käse, desto mehr Löcher; je mehr Löcher, desto weniger Käse. Ergo: Je mehr Käse, desto weniger Käse. 8| "
    "Programmers never die: they just GOSUB without RETURN"
    "I tried to change the world but I couldn't find the source code."