drawLine(...) - Linie soll nur begrenzt lang sein

Willibergi

Mitglied
Hallo,
wenn ich mit drawLine(...) eine Linie zeichnen will, muss ich ja x- und y-Koordinaten des Start- und Endpunktes angeben.
Gibt es eine Möglichkeit, dass die Linie zwar zum Endpunkt hin gerichtet, aber z. B. nur 75px lang ist?
Danke schon mal!
 

flopalko

Bekanntes Mitglied
Du hast mit Start- und Endpunkt eine Gerade. Diese besitzt eine Richtung und du willst vom Startpunkt aus als Länge der Gerade 75px. Das ist keine schwere Rechnung, das bekommt man mit ein bisschen Nachdenken zusammen.
 

JCODA

Top Contributor
Vermutlich sowas wie...
aber keine Garantie, nur runtergetippt.

Java:
int startX = 100;
int startY = 300;
int endX = 542;
int endY = 152;

int dx = endX-startX;
int dy = endY-startY;
double length = Math.sqrt(dx*dx+dy*dy);
double newLength = Math.min(length,75);
dx=(int)(dx*newLength/length);
dy=(int)(dy*newLength/length);
g.drawLine(startX,startY,startX+dx,startY+dy);
 
X

Xyz1

Gast
Mal ganz auf die Schnelle und getestet:
Java:
        Point start = new Point(10, 100);
        Point end = new Point(100, 10);
        Point startEnd = new Point(end.x - start.x, end.y - start.y);
        Point endStart = new Point(start.x - end.x, start.y - end.y);
        double len1 = Math.sqrt(startEnd.x * startEnd.x + startEnd.y * startEnd.y);
        System.out.println("len1 = " + len1);
        double len2 = Math.sqrt(endStart.x * endStart.x + endStart.y * endStart.y);
        System.out.println("len2 = " + len2);

        double skalar1 = 75.0 / len1;
        double skalar2 = 75.0 / len2;
        startEnd.x = (int) Math.round(startEnd.x * skalar1);
        startEnd.y = (int) Math.round(startEnd.y * skalar1);
        endStart.x = (int) Math.round(endStart.x * skalar1);
        endStart.y = (int) Math.round(endStart.y * skalar1);

        Point end2 = new Point(start.x + startEnd.x, start.y + startEnd.y);
        System.out.println("start = " + start);
        System.out.println("end2 = " + end2);

        Point start2 = new Point(end.x + endStart.x, end.y + endStart.y);
        System.out.println("start2 = " + start2);
        System.out.println("end = " + end);

        System.out.println("Zeichne von " + start + " bis " + end2 + " , oder von " + start2 + " bis " + end + " , fuer eine 75 Pixel lange Gerade ... ");

Code:
startEnd = java.awt.Point[x=90,y=-90]
endStart = java.awt.Point[x=-90,y=90]
len1 = 127.27922061357856
len2 = 127.27922061357856
start = java.awt.Point[x=10,y=100]
end2 = java.awt.Point[x=63,y=47]
start2 = java.awt.Point[x=47,y=63]
end = java.awt.Point[x=100,y=10]
Zeichne von java.awt.Point[x=10,y=100] bis java.awt.Point[x=63,y=47] , oder von java.awt.Point[x=47,y=63] bis java.awt.Point[x=100,y=10] , fuer eine 75 Pixel lange Gerade ...

Mir sind dabei 1000 Flüchtigkeitsfehler unterlaufen, bitte stets acht geben.

BITTE LASST DIE FORMEL FÜR GERADE(N) AU?EN VOR; BLEIBT BEI DER VEKTORRECHNUNG ! ! !
 
X

Xyz1

Gast
Also du hast eine Gerade von (10, 100) bis (100, 10) - kann auch jeder anderer Wert sein!!!! Diese Gerade hat ne Richtung usw. Und eine Länge von 127.27 ... Wenn die Gerade 75 (Pixel) lang sein soll, DANN zeichne sie von (10, 100) bis (63, 47) - oder von (47, 63) bis (100, 10)!!!! Dass es hierbei ne gewisse Symmetrie gibt, sei jetzt mal egal.

Das war doch jetzt mal Gutes deutsch ...
 

BRoll

Bekanntes Mitglied
Geht doch auch viel einfacher?
Java:
  int startx=200;
  int starty=200;
  int endx=100;
  int endy=0;
  int length=75;
   
  double angle=Math.atan2(endy-starty, endx-startx);
  int x2=startx+(int)(Math.cos(angle)*length);
  int y2=starty+(int)(Math.sin(angle)*length);
  g.drawLine(startx,starty,x2,y2);
 
X

Xyz1

Gast
Was heißt einfacher? Etwas genauer ist meines. Und ich weiß halt nicht, ob von start 75 px Richtung end - oder von end 75 px Richtung start. Aber über die Winkel ist auch nice. ;) :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M AWT -eigene DrawLine Methode mit Farbverlauf in der Linie ? Java Basics - Anfänger-Themen 2
J Erste Schritte drawLine Methode der Graphics Klasse Java Basics - Anfänger-Themen 2
B drawLine in eine Schleife packen Java Basics - Anfänger-Themen 2
B Drawline mit Borderlayout Java Basics - Anfänger-Themen 3
B Drawline wird auf JFrame nicht angezeigt Java Basics - Anfänger-Themen 3
F g.drawLine in g 2D casten Java Basics - Anfänger-Themen 5
F Simpler DrawLine - Befehl!? Java Basics - Anfänger-Themen 9
N DrawLine Java Basics - Anfänger-Themen 7
F g.drawLine Farbübergänge Java Basics - Anfänger-Themen 4
G drawLine + Linienstärke Java Basics - Anfänger-Themen 2
N NullPointerException in "g.drawLine(x, y, x, y);" Java Basics - Anfänger-Themen 6
G g.drawLine arbeitet sehr ungenau. Java Basics - Anfänger-Themen 4
Makaan_Neo Eigene DrawLine Methode mit Farbverlauf Java Basics - Anfänger-Themen 5
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
J Linie wird zu lang gezeichnet Java Basics - Anfänger-Themen 4
C JFreeChart Linie nicht korrekt dargestellt Java Basics - Anfänger-Themen 1
L Anfängerin möchte Linie zeichnen Java Basics - Anfänger-Themen 8
P Überprüfen ob Mausklick auf Linie ist? Java Basics - Anfänger-Themen 6
snipesss Linie zeichnen ohne extra Klasse? Java Basics - Anfänger-Themen 3
H Linie zeichnen... Java Basics - Anfänger-Themen 16
H Erste Schritte Linie/Raster mit Magnetfunktion Java Basics - Anfänger-Themen 1
X Kreis/Linie Programmieren Java Basics - Anfänger-Themen 1
B Konsoleninput eingegebene linie nach Eingabe löschen Java Basics - Anfänger-Themen 5
A Linie Zeichnen Applet mit Double Wert Java Basics - Anfänger-Themen 3
N Linie auf spezielle Area zeichnen Java Basics - Anfänger-Themen 9
H gezeichnete Linie Eventhandling Java Basics - Anfänger-Themen 2
G Frage wegen Applet( Linie) Java Basics - Anfänger-Themen 2
G Linie zeichen mit JLabel Java Basics - Anfänger-Themen 7
M Linie Java Basics - Anfänger-Themen 4
A Linie zeichnen Java Basics - Anfänger-Themen 4
S Linie ausgeben, die sich auf Knopfdruck verlängert Java Basics - Anfänger-Themen 2
S Linie ausgeben, die sich periodisch verlängert Java Basics - Anfänger-Themen 10
S Fette Linie zeichnen Java Basics - Anfänger-Themen 3
V Linie beginnt nich bei 0,0 Java Basics - Anfänger-Themen 2
G Linie innerhalb Rechteck Java Basics - Anfänger-Themen 2
G dicke linie zeichnen bzw schräges rechteck füllen Java Basics - Anfänger-Themen 2
G Linie/Gitter in GridBagLayout Java Basics - Anfänger-Themen 4
A Linie zeichnen per Knopfdruck --> Fehler Java Basics - Anfänger-Themen 7
B Eine Linie zeichnenmit Java, ich verstehe das einfach nicht Java Basics - Anfänger-Themen 4
Ü Methode soll Quadrat aus der Summer zurückgeben Java Basics - Anfänger-Themen 10
DrahtEck Schleife soll wieder da anfangen wo ich es möchte ! Java Basics - Anfänger-Themen 17
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
Com.Roter Wie soll ich lernen? Java Basics - Anfänger-Themen 17
T code so schreiben das er von sich selber anpasst (code soll die anzahl aller bustaben bestimmen) Java Basics - Anfänger-Themen 16
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
I aus 2 random zahlen soll nur die ungerade summe der beiden genommen werden. Java Basics - Anfänger-Themen 13
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
M Bei nach oben scrollen soll Seite aktualisiert werden (Userscript mit Javascript) Java Basics - Anfänger-Themen 10
R App soll selbstständig reagieren, anstatt via Models Java Basics - Anfänger-Themen 0
A Wenn eine Zahl durch 7 teilbar ist, soll statt der Zahl ein ‘*‘ angezeigt werden. java? Java Basics - Anfänger-Themen 47
C Ein Algorithmus soll schneller werden Java Basics - Anfänger-Themen 24
K Ein Objekt Auto kennt den Inhalt seines links und rechtsstehenden Autos, wie soll man das ermöglichen Java Basics - Anfänger-Themen 2
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
O Ich habe einen String und soll mit matches schauen, ob ein Buchstabe zu einer geraden ANzahl im String vorkommt, wie soll das gehen? Java Basics - Anfänger-Themen 7
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
B Java Programm soll mit Python kommunizeren Java Basics - Anfänger-Themen 1
J Kreis soll die gleiche Fläche wie das Rechteck haben wie mache ich das? Java Basics - Anfänger-Themen 3
MichelNeedhelp Brauche zu diesem Labyrinth ein Skript? Der Hamster soll im Urzeigersinn das ganze Labyrinth abgehen und wieder an seinem Ursprungsplatz sein. Java Basics - Anfänger-Themen 40
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
kazzam94 Methode soll Array von Boolean zurückgeben Java Basics - Anfänger-Themen 5
S Scanner soll Groß-/ Kleinschreibung ignorieren Java Basics - Anfänger-Themen 2
E Division von BigInteger soll Gelitkommazahl liefern Java Basics - Anfänger-Themen 46
M Unterklasse soll nicht alle Methoden erben Java Basics - Anfänger-Themen 3
E Methode soll andere Methode der selben Klasse aufrufen Java Basics - Anfänger-Themen 28
S Vergleichen ob der Integer der benutzt eingeben werden soll überhaupt ein int ist Java Basics - Anfänger-Themen 1
C Ganzzahlige Werte in Boolean ausgeben und überprüfen ob Primzahl oder nicht, wenn es keine Primzahl ist soll es die Primfaktorzerlegung ausgeben Java Basics - Anfänger-Themen 4
E Kreis soll eine Raupe darstellen Java Basics - Anfänger-Themen 37
V Erste Schritte for-Schleife; Ausgabe soll alle 5 Sekunden erfolgen. Java Basics - Anfänger-Themen 4
H Koordinateneingabe im 2D Array soll true/false zurückgeben Java Basics - Anfänger-Themen 5
D Etwas unsicher wie es weitergehen soll Java Basics - Anfänger-Themen 2
N Bewegtes Objekt soll sich um eine Parallele bewegen Java Basics - Anfänger-Themen 0
B Button soll sowohl auf Klicken als auch auf die Enter-Taste reagieren Java Basics - Anfänger-Themen 9
B Derzeit JSF - Projekt, später soll MobileApp folgen Java Basics - Anfänger-Themen 5
scratchy1 Wie deklariert man eine Methode, die ein Objekt zurückgeben soll? Java Basics - Anfänger-Themen 22
V Vererbung Subklasse soll Superklasse verändern Java Basics - Anfänger-Themen 2
T Random soll Zufallszahl beibehalten. Java Basics - Anfänger-Themen 11
C Objekt soll ein Array sein. Java Basics - Anfänger-Themen 15
N Ich weiß nicht, wie ich meinen Code richtig designen soll und komme nicht weiter Java Basics - Anfänger-Themen 4
K Zufalsszahl soll sich nicht wiederholen Java Basics - Anfänger-Themen 9
W Eigener Iterator soll mehrdimensionales Array durchlaufen Java Basics - Anfänger-Themen 4
P Methode soll Variable einer anderen Klasse ändern. Wie? Java Basics - Anfänger-Themen 1
J Kopierte Datei soll alte ersetzen. Java Basics - Anfänger-Themen 6
A Variablen Main Klasse soll auf eine andere Klasse zugreifen Java Basics - Anfänger-Themen 3
I Programm tut nicht was es soll :) Java Basics - Anfänger-Themen 5
Tommy135 Klassen jComboBox macht nicht was sie soll Java Basics - Anfänger-Themen 4
D JButton soll Farbe von JTextfield ändern Java Basics - Anfänger-Themen 5
R While-Schleife macht nicht was sie soll Java Basics - Anfänger-Themen 24
kilopack15 Methode soll int-Array zurückgeben Java Basics - Anfänger-Themen 2
S Variable in JTextField soll immer um 5 zunehmen Java Basics - Anfänger-Themen 8
S JButton soll für bestimmte Zeit verschwinden Java Basics - Anfänger-Themen 5
J-Gallus Ein Getter bekommt eine anderen Type als er Return soll Java Basics - Anfänger-Themen 9
L Bei falscher Eingabe soll NaN zurückgegeben werden, Rückgabetyp jedoch double Java Basics - Anfänger-Themen 3
I Fenster A soll Fenster B schliessen Java Basics - Anfänger-Themen 5
A Variablen Variable soll ihren Wert nach Initialisierung nicht mehr ändern Java Basics - Anfänger-Themen 2
TheMenox Methoden Bestimmung an welche Methode eine andere Methode ihren Wert weitergeben soll Java Basics - Anfänger-Themen 35

Ähnliche Java Themen

Neue Themen


Oben