Dreieck zeichnen

lisali

Erfahrenes Mitglied
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?
 
Hallo Lisa,

probier es mal mit der Bedingung:
Code:
(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
 
Hallo,

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

Grüße,
Matthias
 
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:

Java:
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?
 
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:

Java:
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/Kreisscheibe#Koordinatengleichung
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
 
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?
 

Anhänge

  • Clipboard02.jpg
    Clipboard02.jpg
    9,4 KB · Aufrufe: 29
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
 
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!
 
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".
 
Zurück