tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
11
ZUGRIFFE
1411
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von lisali
    lisali lisali ist offline Mitglied Brokat
    Registriert seit
    Feb 2009
    Ort
    Berlin
    Beiträge
    381
    Hallo,

    ich habe ein Java Programm, wo ich Farbwerte in zwei Schleifendurchgängen ändern kann.

    Also, man sollte sich das als Koordinatensystem vorstellen, jedoch umgekehrt von den Werten her. Das heißt, dass von oben nach unten positiv inkrementiert wird. Und auf der X-Achse sowieso positiv.

    Und jetzt habe ich mit der Bedinung:

    x < y

    aufgestellt, dass ein schwarzes Dreieck gezeichnet wird (Die Hintergrundfarbe spielt keine Rolle, hauptsache man sieht dieses Dreieck).

    Und jetzt bin ich an der Spitze angekommen.

    Jetzt möchte ich aber, dass sich das Dreieck so schließt, dass es aussieht wie ein Pfeil bzw. 2 Dreiecke aneinander: > statt die obere Hälfte davon.

    Ich hab jetzt schon überlegt, aber komm nicht auf ein Ergebnis, um das hinzukriegen.

    Kann mir jemand helfen bitte?
     
    Liebe Grüße,

    Lisa

  2. #2
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.802
    Blog-Einträge
    5
    Hallo Lisa,

    probier es mal mit der Bedingung:
    Code :
    1
    
    (y <= height/2 && x < 2*y) || (y > height/2 && x < 2*(height-y))
    In height sollte dabei die Gesamthöhe gespeichert sein.

    Grüße,
    Matthias
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  3. #3
    Avatar von lisali
    lisali lisali ist offline Mitglied Brokat
    Registriert seit
    Feb 2009
    Ort
    Berlin
    Beiträge
    381
    Danke für deine Antwort.

    Hier zeigt mir Eclipse den Fehler an:

    http://www.xup.in/pic,20782759/Clipboard02.jpg
     
    Liebe Grüße,

    Lisa

  4. #4
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.802
    Blog-Einträge
    5
    Hallo,

    bei Java muss die komplette Bedingung einer if-Abfrage in Klammern stehen:
    Code java:
    1
    2
    
    if ((y <= height/2 && x < 2*y) || (y > height/2 && x < 2*(height-y)))
    { r=0; g=0; b=0; }

    Grüße,
    Matthias
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  5. #5
    Avatar von lisali
    lisali lisali ist offline Mitglied Brokat
    Registriert seit
    Feb 2009
    Ort
    Berlin
    Beiträge
    381
    Ich hab's noch nicht probieren können, da ich noch nicht dazu gekommen bin, hab aber jetzt gerade noch eine zusätzliche Frage. Jedenfalls schon mal Danke und ich werd es später probieren!

    Und zwar wollte ich die japanische Flagge darstellen. Der Hintergrund ist weiß und ich wollte eben diesen roten Kreis in der Mitte haben. Jetzt hatte ich als if-Bedingung:

    Code java:
    1
    
    if ((x*x)+(y*y)<100){ r=255; g=0; b=0; }

    Jedoch zeigt mir das nur einen rechts-unteren Viertelkreis an. Was kann ich da machen, um einen ganzen Anzeigen zu lassen?
     
    Liebe Grüße,

    Lisa

  6. #6
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.802
    Blog-Einträge
    5
    Zitat Zitat von lisali Beitrag anzeigen
    Ich hab's noch nicht probieren können, da ich noch nicht dazu gekommen bin, hab aber jetzt gerade noch eine zusätzliche Frage. Jedenfalls schon mal Danke und ich werd es später probieren!

    Und zwar wollte ich die japanische Flagge darstellen. Der Hintergrund ist weiß und ich wollte eben diesen roten Kreis in der Mitte haben. Jetzt hatte ich als if-Bedingung:

    Code java:
    1
    
    if ((x*x)+(y*y)<100){ r=255; g=0; b=0; }

    Jedoch zeigt mir das nur einen rechts-unteren Viertelkreis an. Was kann ich da machen, um einen ganzen Anzeigen zu lassen?
    Schau mal hier: http://de.wikipedia.org/wiki/Kreissc...natengleichung
    Bei dir sind x_M und y_M aus der Gleichung beide 0, deshalb liegt das Zentrum deines Kreises auch im Ursprung.

    Grüße,
    Matthias
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  7. #7
    Avatar von lisali
    lisali lisali ist offline Mitglied Brokat
    Registriert seit
    Feb 2009
    Ort
    Berlin
    Beiträge
    381
    Also, bei der Sache mit dem Dreieck danke ich dir erstmal, da mich das auch weiter bringt als ich bisher war! Jedoch möchte ich die bahamische Flagge darstellen und nun ist dieses Dreieck leider viel zu lang. Ich hab schon versucht es zu begrenzen mit

    if x < width/3

    aber das funktioniert auch nicht, weil dann sozusagen die Spitze ab einem Drittel abgeschnitten wird. Was könnte man da tun?
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Dreieck zeichnen-clipboard02.jpg  
     
    Liebe Grüße,

    Lisa

  8. #8
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.802
    Blog-Einträge
    5
    Zitat Zitat von lisali Beitrag anzeigen
    Also, bei der Sache mit dem Dreieck danke ich dir erstmal, da mich das auch weiter bringt als ich bisher war! Jedoch möchte ich die bahamische Flagge darstellen und nun ist dieses Dreieck leider viel zu lang. Ich hab schon versucht es zu begrenzen mit

    if x < width/3

    aber das funktioniert auch nicht, weil dann sozusagen die Spitze ab einem Drittel abgeschnitten wird. Was könnte man da tun?
    Du musst die Steigung ändern, also konkret den Vorfaktor der rechten Seite der Ungleichung verringern. Das ganze ist ja nichts anderes als eine Gleichung für eine lineare Funktion der Form y = m*x + t, wie man sie aus der Schule kennt.

    Grüße,
    Matthias
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  9. #9
    Avatar von lisali
    lisali lisali ist offline Mitglied Brokat
    Registriert seit
    Feb 2009
    Ort
    Berlin
    Beiträge
    381
    Danke für deine Hilfe, Matthias!

    Ich hab es hingekriegt, wobei ich mir jetzt noch irgendwie den Kopf darüber zerbreche wieso man diese Formel nimmt.
    Also, klar ist mir die Formel einer linearen Funktion geläufig, aber ich hatte mir bisher auch nie großartig Gedanken darüber gemacht wie sie zustande kommt oder wieso sie so funktioniert wie sie funktioniert.
    Bei mir kommt z.B. hier die Frage auf, warum die Steigung multipliziert mit einer Zahl (x) die Steigung bestimmt. Insbesondere auf das "multipliziert" will ich hierbei hinaus... ich würde mir gerne erklären warum das die Steigung beeinflusst, aber ich komm irgendwie nicht drauf!
     
    Liebe Grüße,

    Lisa

  10. #10
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    Diese "Formel" ist ja grundsätzlich nichts anderes als die Definition einer Funktion.
    y = m * x + q

    Jedem x wird ein entsprechender Wert y zugeordnet.

    Um zu verstehen, dass m für die Steigung zuständig ist gibt es zwei mögliche Ansätze. Einer ist eher visuell, der andere basiert darauf, dass du "akzeptierst" und auch verstanden hast, dass die Ableitung einer Funktion ihre Steigung ist.

    Zuerst den mit der Ableitung:
    y = m * x + q = m * x^1 + q * x^0 => y' = 1 * m * x^(1-1) + 0 * q * x^(0 - 1) => y' = m

    Daher sehen wir gleich, dass die Ableitung konstant m ist. Da aber die Ableitung die Steigung an einem Punkt bedeutet ist auch klar, dass m dann die Steigung bedeutet. Je grösser m, desto grösser die Ableitung

    Der andere Weg:
    Nehmen wir einfach mal an q sei 0, dann ist y für x = 0 auch 0, denn m * 0 gibt 0. Jetzt stellen wir uns vor, wir wandern auf der x-Achse immer schön Schritt für Schritt vorwärts. Wir beginnen bei 1 und schauen nach, wie weit die Funktion von uns weg ist.

    Das machen wir bei folgenden zwei Funktionen:
    y_1 = 1 * x (m = 1)
    y_2 = 2 * x (m = 2)

    Für y_1 haben wir an der Stelle 1 den Wert 1. An der Stelle 2 haben wir den Wert 2, und so weiter. Die Funktion wird also pro Einheit auf der x-Achse eine Einheit grösser. Die Funktion "steigt um 1".

    Nehmen wir die andere Funktion:
    Für y_2 haben wir an der Stelle 1 den Wert 2. An der Stelle 2 den Wert 4, und so weiter. Diese Funktion wird also pro Einheit auf der x-Achse 2 Einheiten grösser auf der y-Achse. Die Funktion "steigt um 2".

    Allgemein:
    Die Funktion "steigt um m".
     

  11. #11
    Avatar von lisali
    lisali lisali ist offline Mitglied Brokat
    Registriert seit
    Feb 2009
    Ort
    Berlin
    Beiträge
    381
    Danke für deine sehr ausführliche und vor allem hilfreiche Beschreibung, Cromon! Ich bin dir sehr dankbar!

    Ich habe das auch jetzt gut nachvollziehen können!

    Könntest du mir vielleicht noch eine Erklärung für den Kreis geben? Also, wenn es nicht zu viel verlangt ist.

    Ich verstehe ja, dass es dieses Steigunsdreieck gibt und kenn auch die Formel von Pythagoras. Aber im Grunde sind es doch nur 2 Quadrate. Warum ergeben 2 Quadrate, die man miteinander addiert, einen Kreis? Weißt du was ich da für einen Hintergedanken mit der Frage im Kopf hab? Also, einfach vom logischen Verständnis her, würde ich mich echt freuen, wenn mir das einleuchten könnte, weil ich ganze Zeit nur diese 2 Quadrate vor Augen habe, wenn ich an a²+b² = c² denke...
     
    Liebe Grüße,

    Lisa

  12. #12
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    Dazu habe ich mal ein kleines Bild gemacht:
    http://www.imagr.eu/up/4bccc2ef7cc21_circle.jpg

    Vorerst mal der Fall, dass der Kreis im Mittelpunkt des Koordinatensystems ist. Was schliessen wir dann daraus? Die gelbe Linie ist nicths anderes als die y-Komponente des Punktes und die hellblaue die x-Komponente des Punktes. Nehmen wir die hellblaue Linie parallel nach unten auf die x-Achse, so bilden die braune Linie (der Radius), die gelbe Linie (die y-Komponente) und die nun auf der x-Achse liegende hellblaue Linie (die x-Komponente) ein rechtwinkliges Dreieck.

    Dabei gilt dann natürlich x^2 + y^2 = r^2. Und wir haben die Gleichung für den Kreis!

    Eine andere Möglichkeit daran zu gehen:
    Der Radius r ist ja nichts anderes als der Abstand zwischen Mittelpunkt und Punkt auf dem Kreis. Da der Mittelpunkt der Nullpunkt ist bedeutet das der Abstand von einem Punkt auf dem Kreis zum Nullpunkt. Wie ist der Abstand zum Nullpunkt gegeben für einen Punkt (x/y)? Durch die Wurzel des Skalarprodukts mit sich selbst:
    <(x/y), (x/y)> = x*x + y*y = x^2 + y^2
    Daher ist der Abstand zum Nullpunkt: sqrt(x^2 + y^2), oder anders geschrieben: r = sqrt(x^2 + y^2)

    Nun muss man nurnoch quadrieren und erhält r^2 = x^2 + y^2

    Wenn der Kreis nicht im Ursprung liegt müssen wir etwas ausholen, hier eine Zeichnung:
    http://www.imagr.eu/up/4bccc6126298f_circle.jpg

    Jetzt sind die x/y Koordinaten des Punktes nicht mehr so einfach herauszufinden. Um an die hellblaue Linie zu kommen müssen wir von den x-Koordinaten zuerst m_x abziehen (die pinke Linie) und für die gelbe Linie zuerst die m_y (die graue Linie).

    Wir haben also für die hellblaue Linie: (x - m_x) und für die gelbe Linie (y - m_y). Man kann wieder vorherige Gleichung anwenden, da wir wieder das rechtwiklige Dreieck haben:
    (x - m_x)^2 + (y - m_y)^2 = r^2

    Und wir haben die allgemeine Gleichung! (Wenn du für m_x und m_y den Punkt (0/0) einsetzt kommst du wieder auf die Lösung oben, wie erwartet
     

Ähnliche Themen

  1. Dreieck - Viereck
    Von sb15420 im Forum Cinema 4D
    Antworten: 8
    Letzter Beitrag: 04.11.08, 16:14
  2. Pascalsches Dreieck
    Von the_undertaker im Forum C/C++
    Antworten: 11
    Letzter Beitrag: 30.05.07, 11:45
  3. Dreieck in quarkxpress
    Von skadi im Forum Sonstige Grafik-Programme
    Antworten: 0
    Letzter Beitrag: 19.04.07, 19:04
  4. PHP Grafiken Dreieck?
    Von Askart im Forum PHP
    Antworten: 7
    Letzter Beitrag: 17.05.05, 20:28
  5. Dreieck maßstabsgerecht zeichnen
    Von tischler1 im Forum Visual Basic 6.0
    Antworten: 12
    Letzter Beitrag: 27.12.04, 23:04