2D-Grafik Punkte um Mittelpunkt drehen

felixpk

Mitglied
Schönen guten Abend zusammen,
als aller erstes werde ich mein Problem mal mit folgenden Bild verdeutlichen:

4g3crm.png


Mein Problem ist, dass ich nicht weiß wie ich die Punkte(A,B,C,D) um den Mittelpunkt des Autos drehen kann.

Nebenbei: Die 4 Punkte die ich erstellt habe, dienen als Start- und Endpunkt für Linien.
Ich mache das so, weil die Line-Klasse eine intersection-Methode hat.
Das funktioniert auch 1A! Nur eben an der falschen Stelle.

Ich habe mich mal an AffineTransform gewagt, das hat aber leider nur Komische sachen gemacht :(

Ich hoffe Ihr versteht das Problem, und habt eine Lösung für mich! :rtfm::toll:

Achja hier noch einen Ausschnitt aus dem Code, was das ganze nochmal verdeutlichen sollte.

Java:
        A.move((int)position.x-width/2, (int)position.y-height/2);
		B.move((int)position.x+width/2, (int)position.y-height/2);
		C.move((int)position.x+width/2, (int)position.y+height/2);
		D.move((int)position.x-width/2, (int)position.y+height/2);

		lineAB.setLine(A, B);

		lineBC.setLine(B, C);

		lineCD.setLine(C, D);

		lineDA.setLine(D, A);

Und hier das was ich mit Affinetransform versucht habe:

Java:
        AffineTransform at = new AffineTransform();
		at.translate(position.x, position.y);
		at.rotate(Math.toRadians(carHeading));
		at.translate(-position.x, -position.y);
		at.transform(A, A);

MfG, Felix
 

felixpk

Mitglied
Erstmal vielen Dank für deine Antwort,

ja diese Methode habe ich auch schon ausprobiert!
Da das auch nicht geklappt hat, wollte ich einfach "ein bisschen mehr Kontrolle" über die Sache haben, und habe es manuell gemacht.

Das Problem ist nur, das dass weiße Quadrat die openGL interne rotationsmethode benutzt.
Die kann ich ja nur leider nicht auf die Vertexes der Boundingbox anwenden, da diese ja nur die Verbildlichung der Punkte + Lines ist. Die Vertexes an sich haben ja keine intersection-Methode, die Lines, die aus den Punkten entstehen aber schon.

Ich hoffe jetzt ist es ein wenig klarer?

EDIT:

Ich habe mir gerade etwas überlegt, wenn du dich mit lwjgl auskennst, kannst du mir vielleicht helfen.
Wenn ich die Koordinaten des Autos habe ( Weißes Quadrat ), hätte ich ja absolut kein Problem mehr.
Dann könnte ich die Koordinaten der "GL11.glVertex2f();" auf die der Boundingbox übertragen.

Kennt jemand eine Möglichkeit die Koodinaten aus einem openGL vertex zu bekommen? :rtfm:

MfG Felix
 
Zuletzt bearbeitet:
P

pappawinni

Gast
at.rotate(Math.toRadians(carHeading));

"carHeading" hört sich so an, als würde das die Richtung des Autos absolut anzeigen.
D.h. meinetwegen, immer wenn Auto nach unten fährt ist carHeading sagen wir 90°.. keine Ahnung, immer der gleiche Wert halt.
Ein rotate macht aber eine relative Drehung. Jedesmal wenn du das neu rechnest,
würdest du damit also dein Kästchen um weitere 90° drehen. Das hätte dann wenig Sinn.
Wäre das so, müsstest entweder nur die Richtungsänderung erfassen und nur die anwenden, oder aus der aktuellen Ausrichtung die erforderliche Rotation berechnen, um die entsprechende Ausrichtung zu erhalten.
[EDIT]Vielleicht kannst du die Transformation auch einfach auf die "Nulllage" des Kästchens anwenden, statt auf der aktuellen Transformation.[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:

felixpk

Mitglied
Puh, das ist in der Tat ziemlich schwer zu erklären, aber das hat nichts mit dem Problem zutun.
Ich würde sagen ich Mache mal ein Video von dem was passiert und werde dann auch mal den Code hochladen.

(ich weiß das carHeading absolut ist, und das falsch ist, hatte bissher nur keine lust mich mit der Berechnung zu beschäftigen)

Java:
import java.awt.Point;
import java.awt.geom.AffineTransform;
import java.util.Vector;

import org.lwjgl.opengl.GL11;
import org.lwjgl.util.vector.Vector2f;
public class Car {

	private Vector2f position;
	private int width, height;
	private float acceleration, deceleration;
	private float maxVelocity;
	private float drag;
	private float carHeading;
	private float carVelocity;
	private float steerVelocity;
	private float steerAngle;
	private float maxSteeringAngle;
	private float wheelBase;

	private boolean frontDirection = true;

	Line lineAB,lineBC,lineCD,lineDA;
	Point A,B,C,D;

	private Vector<Line> lines = new Vector<Line>();

	public Car(int x, int y, int width, int height, float wheelBase, float carHeading, float acceleration, float deceleration, float maxVelocity, float drag, float steerVelocity, float maxSteeringAngle) {
		this.position = new Vector2f(x+width/2, y+height/2);
		this.width = width;
		this.height = height;
		this.wheelBase = wheelBase;
		this.carHeading = carHeading;
		this.acceleration = acceleration;
		this.deceleration = deceleration;
		this.maxVelocity = maxVelocity;
		this.drag = drag;
		this.steerVelocity = steerVelocity;
		this.maxSteeringAngle = maxSteeringAngle;
		this.steerAngle = 0;

		setBoundingBox();
	}

	public void setBoundingBox(){

		A = new Point((int)position.x-width/2,(int)position.y-height/2);
		B = new Point((int)position.x+width/2,(int)position.y-height/2);
		C = new Point((int)position.x+width/2,(int)position.y+height/2);
		D = new Point((int)position.x-width/2,(int)position.y+height/2);

		lineAB = new Line();
		lineAB.setLine(A, B);
		lines.addElement(lineAB);

		lineBC = new Line();
		lineBC.setLine(B, C);
		lines.addElement(lineBC);

		lineCD = new Line();
		lineCD.setLine(C, D);
		lines.addElement(lineCD);

		lineDA = new Line();
		lineDA.setLine(D, A);
		lines.addElement(lineDA);
	}

	public boolean intersects(Vector<Line> objLines){
		for (int i = 0; i < objLines.size(); i++) {
			for (int j = 0; j < lines.size(); j++) {
				if(objLines.get(i).intersectsLine(lines.get(j))){
					return true;
				}
			}
		}
		return false;
	}

	public Vector<Line> getLines(){
		return lines;
	}

	public Vector2f getPosition() {
		return position;
	}

	public int getWidth() {
		return width;
	}

	public int getHeight() {
		return height;
	}

	public float getAcceleration() {
		return acceleration;
	}

	public float getDeceleration() {
		return deceleration;
	}

	public float getWheelBase() {
		return wheelBase;
	}

	public float getCarHeading() {
		return carHeading;
	}

	public void setCarHeading(float carHeading) {
		this.carHeading = carHeading;
	}

	public float getCarVelocity() {
		return carVelocity;
	}

	public void setCarVelocity(float carVelocity) {
		this.carVelocity = carVelocity;
	}

	public float getSteerVelocity() {
		return steerVelocity;
	}

	public float getMaxSteeringAngle() {
		return maxSteeringAngle;
	}

	public float getSteerAngle() {
		return steerAngle;
	}

	public void setSteerAngle(float steerAngle) {
		this.steerAngle = steerAngle;
	}

	public boolean isFrontDirection() {
		return frontDirection;
	}

	public void setFrontDirection(boolean frontDirection) {
		this.frontDirection = frontDirection;
	}

	public void setPosition(Vector2f position) {
		this.position = position;
	}

	public float getDrag() {
		return drag;
	}

	public float getMaxVelocity() {
		return maxVelocity;
	}

	public String toString() {
		return "Acc: " + acceleration + " Vel: " + carVelocity + " MaxVel:" + maxVelocity; 
	}

	public void show(){
		
		
		AffineTransform at = new AffineTransform();
		at.translate(position.x, position.y);
		at.rotate(Math.toRadians(carHeading));
		at.translate(-position.x, -position.y);
		at.transform(A, A);
		at.transform(B, B);
		at.transform(C, C);
		at.transform(D, D);
		
//		A.move((int)position.x-width/2, (int)position.y-height/2);
//		B.move((int)position.x+width/2, (int)position.y-height/2);
//		C.move((int)position.x+width/2, (int)position.y+height/2);
//		D.move((int)position.x-width/2, (int)position.y+height/2);

		lineAB.setLine(A, B);

		lineBC.setLine(B, C);

		lineCD.setLine(C, D);

		lineDA.setLine(D, A);
		
		
		// Wheel matrix
		GL11.glColor3f(0f, 255f, 255f);

		GL11.glPushMatrix();

		GL11.glTranslatef(getPosition().x, getPosition().y, 0);
		GL11.glRotatef((float)Math.toDegrees(getCarHeading()), 0f, 0f, 1f);
		GL11.glTranslatef(-getPosition().x, -getPosition().y, 0);

		GL11.glTranslatef(getPosition().x + (getWheelBase()/2), getPosition().y - (getHeight()/2) + 7, 0);
		GL11.glRotatef((float)Math.toDegrees(getSteerAngle()), 0f, 0f, 1f);
		GL11.glTranslatef(-(getPosition().x + (getWheelBase()/2)), -(getPosition().y - (getHeight()/2) + 7), 0);

		GL11.glBegin(GL11.GL_QUADS);
		GL11.glVertex2f(getPosition().x + (getWheelBase()/2) - 10, getPosition().y - (getHeight()/2));
		GL11.glVertex2f(getPosition().x + (getWheelBase()/2) + 10 , getPosition().y - (getHeight()/2));
		GL11.glVertex2f(getPosition().x + (getWheelBase()/2) + 10 , getPosition().y - (getHeight()/2) + 10);
		GL11.glVertex2f(getPosition().x + (getWheelBase()/2) - 10, getPosition().y - (getHeight()/2) + 10);
		GL11.glEnd();

		GL11.glPopMatrix();

		GL11.glColor3f(0f, 255f, 255f);

		GL11.glPushMatrix();

		GL11.glTranslatef(getPosition().x, getPosition().y, 0);
		GL11.glRotatef((float)Math.toDegrees(getCarHeading()), 0f, 0f, 1f);
		GL11.glTranslatef(-getPosition().x, -getPosition().y, 0);

		GL11.glTranslatef(getPosition().x + (getWheelBase()/2), getPosition().y + (getHeight()/2) - 7, 0);
		GL11.glRotatef((float)Math.toDegrees(getSteerAngle()), 0f, 0f, 1f);
		GL11.glTranslatef(-(getPosition().x + (getWheelBase()/2)), -(getPosition().y + (getHeight()/2) - 7), 0);

		GL11.glBegin(GL11.GL_QUADS);
		GL11.glVertex2f(getPosition().x + (getWheelBase()/2) - 10, getPosition().y + (getHeight()/2));
		GL11.glVertex2f(getPosition().x + (getWheelBase()/2) + 10 , getPosition().y + (getHeight()/2));
		GL11.glVertex2f(getPosition().x + (getWheelBase()/2) + 10 , getPosition().y + (getHeight()/2) - 10);
		GL11.glVertex2f(getPosition().x + (getWheelBase()/2) - 10, getPosition().y + (getHeight()/2) - 10);
		GL11.glEnd();

		GL11.glPopMatrix();

		// Wheel matrix end
		// Car matrix

		GL11.glColor3f(255f, 255f, 255f);
		GL11.glPushMatrix();
		GL11.glTranslatef(getPosition().x, getPosition().y, 0);
		GL11.glRotatef((float)Math.toDegrees(getCarHeading()), 0f, 0f, 1f);
		GL11.glTranslatef(-getPosition().x, -getPosition().y, 0);

		GL11.glBegin(GL11.GL_QUADS);
		GL11.glVertex2f(getPosition().x - getWidth()/2, getPosition().y - getHeight()/2);
		GL11.glVertex2f(getPosition().x + getWidth()/2, getPosition().y - getHeight()/2);
		GL11.glVertex2f(getPosition().x + getWidth()/2, getPosition().y + getHeight()/2);
		GL11.glVertex2f(getPosition().x - getWidth()/2, getPosition().y + getHeight()/2);
		GL11.glEnd();
		GL11.glPopMatrix();
		
		// BOUND

		GL11.glColor3f(0f, 255f, 255f);
		GL11.glBegin(GL11.GL_QUADS);
		GL11.glVertex2f(A.x,A.y);
		GL11.glVertex2f(B.x,B.y);
		GL11.glVertex2f(C.x,C.y);
		GL11.glVertex2f(D.x,D.y);
		GL11.glEnd();
		GL11.glPopMatrix();

		// Car matrix end

		// Refresh Bounds
		
		

		// Refresh Bounds end
	}
}

Java:
package de.felix.pk.opengl;

import static org.lwjgl.opengl.GL11.GL_DEPTH_TEST;
import static org.lwjgl.opengl.GL11.GL_MODELVIEW;
import static org.lwjgl.opengl.GL11.GL_PROJECTION;
import static org.lwjgl.opengl.GL11.glDisable;
import static org.lwjgl.opengl.GL11.glLoadIdentity;
import static org.lwjgl.opengl.GL11.glMatrixMode;
import static org.lwjgl.opengl.GL11.glOrtho;
import static org.lwjgl.opengl.GL11.glViewport;

import org.lwjgl.LWJGLException;
import org.lwjgl.Sys;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.lwjgl.util.vector.Vector2f;

public class GameTest {

	private final int WIDTH = 800;
	private final int HEIGHT = 600;
	
	private long lastFrame;


	Obstacle obs = new Obstacle(50, 50, 300, 500,0f,100f,100f);
	Obstacle obs2 = new Obstacle(50, 50, 500, 500,0f,255f,255f);
	Car car = new Car(0, 0, 100, 50, 80, 0, 0.001f, 0.0015f, 0.2f, 0.0001f, 0.01f, (float)Math.toRadians(50));
	
	public GameTest(){
		start();
	}

	public void start(){
		try{
			Display.setDisplayMode(new DisplayMode(WIDTH, HEIGHT));
			Display.create();
		}catch(LWJGLException e){
			e.printStackTrace();
		}

		initGl();
		getDelta();

		while(!Display.isCloseRequested()){
			int delta = getDelta();
			update(delta);
			renderGl();
			Display.update();
			Display.sync(100);
		}

		Display.destroy();
	}

	private void renderGl() {
		GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);

		// Obstacles
		obs.show();
		obs2.show();

		//car
		car.show();
	}

	private void update(int delta) {

		if(car.getCarVelocity() - car.getDrag() > 0){
			car.setCarVelocity(car.getCarVelocity() - car.getDrag());
		}

		// Shift

		if(Keyboard.isKeyDown(Keyboard.KEY_LCONTROL)){
			car.setFrontDirection(false);
		}

		if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)){
			car.setFrontDirection(true);
		}

		// Shift end

		if(Keyboard.isKeyDown(Keyboard.KEY_UP)){
			if(car.isFrontDirection()){
				if(car.getCarVelocity() + car.getAcceleration() < car.getMaxVelocity()){
					car.setCarVelocity(car.getCarVelocity() + car.getAcceleration());
				}
			}else{
				car.setCarVelocity(car.getCarVelocity() - car.getAcceleration());
			}
		}

		if(Keyboard.isKeyDown(Keyboard.KEY_DOWN)){
			if(car.isFrontDirection()){
				if(car.getCarVelocity() - car.getDeceleration() > 0){
					car.setCarVelocity(car.getCarVelocity() - car.getDeceleration());
				}else{
					car.setCarVelocity(0);
				}
			}else{
				if(car.getCarVelocity() + car.getDeceleration() < 0){
					car.setCarVelocity(car.getCarVelocity() + car.getDeceleration());
				}else{
					car.setCarVelocity(0);
				}
			}
		}

		if(Keyboard.isKeyDown(Keyboard.KEY_LEFT)){
			if(car.getSteerAngle() - car.getSteerVelocity() > -car.getMaxSteeringAngle()){
				car.setSteerAngle(car.getSteerAngle() - car.getSteerVelocity());
			}
		}

		if(Keyboard.isKeyDown(Keyboard.KEY_RIGHT)){
			if(car.getSteerAngle() + car.getSteerVelocity() < car.getMaxSteeringAngle()){
				car.setSteerAngle(car.getSteerAngle() + car.getSteerVelocity());
			}
		}

		// Car update


		float frontWheelX = (float) (car.getPosition().x + car.getWheelBase() / 2 * Math.cos(car.getCarHeading()));
		float frontWheelY = (float) (car.getPosition().y + car.getWheelBase() / 2 * Math.sin(car.getCarHeading()));

		float backWheelX = (float) (car.getPosition().x - car.getWheelBase() / 2 * Math.cos(car.getCarHeading()));
		float backWheelY = (float) (car.getPosition().y - car.getWheelBase() / 2 * Math.sin(car.getCarHeading()));


		backWheelX += car.getCarVelocity() * delta * Math.cos(car.getCarHeading());
		backWheelY += car.getCarVelocity() * delta * Math.sin(car.getCarHeading());

		frontWheelX += car.getCarVelocity() * delta * Math.cos(car.getCarHeading() + car.getSteerAngle());
		frontWheelY += car.getCarVelocity() * delta * Math.sin(car.getCarHeading() + car.getSteerAngle());

		car.setPosition(new Vector2f((frontWheelX + backWheelX) / 2, (frontWheelY + backWheelY) / 2));

		car.setCarHeading((float) Math.atan2( frontWheelY - backWheelY , frontWheelX - backWheelX));
		// Car update end
		
		if(car.intersects(obs.getLines())){
			System.out.println("INTERSECTION");
		}
	}

	private void initGl() {
		glDisable(GL_DEPTH_TEST);

		glMatrixMode(GL_PROJECTION);
		glLoadIdentity();

		glOrtho(0, 800, 600, 0, -1, 1);
		glMatrixMode(GL_MODELVIEW);
		glLoadIdentity();
		glViewport(0, 0, 800, 600);
	}

	public int getDelta(){
		long time = getTime();
		int delta = (int)(time - lastFrame);
		lastFrame = time;
		return delta;
	}

	public long getTime(){
		return (Sys.getTime() * 1000) / Sys.getTimerResolution();
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new GameTest();
	}
}

Hier mal die 2 Klassen

MfG Felix
 

Marco13

Top Contributor
Ich kapier's immer noch nicht ... du wendest die GL-Matrizen an ("Car matrix"), machst dann ein Pop und malst die Bounds - praktisch untransformiert. Wenn du auf die Bounds die gleiche Matrix anwenden würdest (rotate(angle,x,y)), sollten auch die gleichen Punkte rauskommen. Kann man da ein KSKB basteln?
 

felixpk

Mitglied
Wenn du lwjgl hast, dann ja.

Das Problem ist das die Boundingbox rein garnichts mit openGl zutun hat :(
Die Boundingbox besteht ja aus 4 Line's die aus 4 Punkten gebildet werden (java.awt)
Okay egal: ich werde jetzt das Szenarion mal komplett "durchspielen":

1) Auto wird in der Hauptklasse erzeugt:
Java:
Car car = new Car(0, 0, 100, 50, 80, 0, 0.001f, 0.0015f, 0.2f, 0.0001f, 0.01f, (float)Math.toRadians(50));
Die Parameter sind größtenteils Fahrverhaltensparameter und sowas wie Größe und Reifenabstand ( Hier eigentlich nicht wichtig )

2) Die Klasse Car hat eine Methode: setBoundingBox() die im konstruktor aufgerufen wird:
Java:
public void setBoundingBox(){

		A = new Point((int)position.x-width/2,(int)position.y-height/2);
		B = new Point((int)position.x+width/2,(int)position.y-height/2);
		C = new Point((int)position.x+width/2,(int)position.y+height/2);
		D = new Point((int)position.x-width/2,(int)position.y+height/2);
		

		lineAB = new Line();
		lineAB.setLine(A, B);
		lines.addElement(lineAB);

		lineBC = new Line();
		lineBC.setLine(B, C);
		lines.addElement(lineBC);

		lineCD = new Line();
		lineCD.setLine(C, D);
		lines.addElement(lineCD);

		lineDA = new Line();
		lineDA.setLine(D, A);
		lines.addElement(lineDA);
	}

3) Jetzt wird in der Methode show() der openGL aufruf gemacht:
Java:
GL11.glColor3f(255f, 255f, 255f);
		GL11.glPushMatrix();
		GL11.glTranslatef(getPosition().x, getPosition().y, 0);
		GL11.glRotatef((float)Math.toDegrees(getCarHeading()), 0f, 0f, 1f);
		GL11.glTranslatef(-getPosition().x, -getPosition().y, 0);

		GL11.glBegin(GL11.GL_QUADS);
		GL11.glVertex2f(getPosition().x - getWidth()/2, getPosition().y - getHeight()/2);
		GL11.glVertex2f(getPosition().x + getWidth()/2, getPosition().y - getHeight()/2);
		GL11.glVertex2f(getPosition().x + getWidth()/2, getPosition().y + getHeight()/2);
		GL11.glVertex2f(getPosition().x - getWidth()/2, getPosition().y + getHeight()/2);
		GL11.glEnd();
		GL11.glPopMatrix();
das ist nur ein kleiner Teil des ogl-Teils.

4) Hier wird jetzt die BoundingBox aus den oben erzeugten Punkten(Point2D) gerendert:
Java:
// BOUND

		GL11.glColor3f(0f, 255f, 255f);
		GL11.glBegin(GL11.GL_QUADS);
		GL11.glVertex2f(A.x,A.y);
		GL11.glVertex2f(B.x,B.y);
		GL11.glVertex2f(C.x,C.y);
		GL11.glVertex2f(D.x,D.y);
		GL11.glEnd();
		GL11.glPopMatrix();

Jetzt brauche ich nur noch eine Methode die diese Punkte, genauso wie es GL11 mit den vertices macht, dreht.

Ich habe mir also eben die Point2D Schnitstellenbeschreibung durchgelesen und bin zufälligerweise auf math.geom2d.Point2D gestoßen(!)
Dort gibt es die Methode Rotate (+ rotate um einen Mittelpunkt :toll::applaus:)
Wenn ich versuche das zu importen, bzw mit Point2D auf eine Rotate-Methode zuzugreifen klappt das einfach nicht. Und ich kann mir nicht erklären warum.

Ich hoffe ihr versteht jetzt mein Problem und oder könnt mir mit dieser math.geom2d.Point2D klasse helfen ... ?

MfG Felix!
 
J

JohannisderKaeufer

Gast
Zum Drehen eignen sich meiner Meinung nach Polarkoordinten hervorragend.

Polarkoordinaten ? Wikipedia

Polarkoordinate ist ausgehend von einem Nullpunkt eine Entfernung mit einem Winkel.

Um eine Drehung hinzubekommen muß nur der Winkel verändert werden.

Als Beispiel:
Der Punkt (4;3) soll um den Punkt (1;1) um 10 Grad gedreht werden.

(1;1) ist der Nullpunkt, somit ist ein Vektor der davon ausgeht und zu (4;3) führt
(3;2).

(3;2) wird in Polarkoordinaten umgerechnet.

Theta = Math.arctan(2;3);
Länge = Math.sqrt(3*3+2*2);

Drehung
Theta += 10 Grad

Und nun wieder zurückrechnen in Kartesische Koordinaten

x = Länge * cos Theta
y = Länge * sin Theta


Da die Drehung um den Punkt 1;1 stattfindet muß dieser nun dazuaddiert werden
(x+1; y+1)
 

Marco13

Top Contributor
Polarkoordinaten...? ???:L Jedenfalls sollte man die Abfolge
Java:
        GL11.glTranslatef(getPosition().x, getPosition().y, 0);
        GL11.glRotatef((float)Math.toDegrees(getCarHeading()), 0f, 0f, 1f);
        GL11.glTranslatef(-getPosition().x, -getPosition().y, 0);
eben genau durch
Java:
        at.translate(position.x, position.y);
        at.rotate(Math.toRadians(carHeading));
        at.translate(-position.x, -position.y);
nachbauen können, d.h. wenn man dort die gleichen Punkte übergibt, sollten auch die gleichen Ergebnisse rauskommen. Ansonsten wäre ein KSKB nicht schlecht.
 

felixpk

Mitglied
Great news!! Ich habe es geshafft!
Ich habe mir eine neue API heruntergeladen mit der mehr oder weniger einfach war das zu realisieren!
Ich muss jetzt zur arbeit, werde das heute nacht aber näher erläutern!

Vielen Dank an ALLE die mir geholfen haben!! :)

MfG felix
 

Marco13

Top Contributor
Es ging nicht um den Begriff an sich, sondern eher darum, was er mit der eigentlichen Frage zu tun hatte. Aber das hat sich ja erledigt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H String teilen, damit bei JLabel keine Punkte am Ende angezeigt werden AWT, Swing, JavaFX & SWT 4
T Swing Tetraeder - mehrere Punkte verbinden? - Ansätze gesucht AWT, Swing, JavaFX & SWT 2
G JavaFX Projection von 3D Punkte auf 2D Punkte AWT, Swing, JavaFX & SWT 0
Soloeco Graphics2D - Verbinden zweier Punkte AWT, Swing, JavaFX & SWT 6
N jFreeChart einzelne Punkte anwählen und Formatieren AWT, Swing, JavaFX & SWT 0
M Punkte malen AWT, Swing, JavaFX & SWT 1
J Reihenfolge der Punkte in Vielecken AWT, Swing, JavaFX & SWT 3
N 2D-Grafik AffineTransform - Punkte abfragen nach transform() AWT, Swing, JavaFX & SWT 3
E 2D-Grafik Div. Punkte zur Sinuskurve verbinden AWT, Swing, JavaFX & SWT 25
B unsortierte Punkte verbinden AWT, Swing, JavaFX & SWT 8
K Punkte eines Funktionsplotters zeitlich versetzt zeichnen AWT, Swing, JavaFX & SWT 18
K swing/awt Panel punkte malen AWT, Swing, JavaFX & SWT 4
P Welche Methode um Punkte in xy Ebene zu zeichnen? AWT, Swing, JavaFX & SWT 4
L Punkte verbinden AWT, Swing, JavaFX & SWT 3
W Punkte im JLabel AWT, Swing, JavaFX & SWT 7
H Punkte im Kreis AWT, Swing, JavaFX & SWT 3
E Mysthische Punkte auf JFrame(FlowLayout) nach Komboboxklick AWT, Swing, JavaFX & SWT 5
K Punkte in eine bestimmte Richtung bewegen AWT, Swing, JavaFX & SWT 5
M gezeichnete Punkte dynamisch verschieben mit mousedragged AWT, Swing, JavaFX & SWT 4
H Punkte auf einem JPanel zeichnen AWT, Swing, JavaFX & SWT 4
V Punkte malen im Panel AWT, Swing, JavaFX & SWT 3
G Punkte auf Canvas zeichnen AWT, Swing, JavaFX & SWT 2
F Swing Rotation eines Bildes mit beliebigen Koordinaten um den Mittelpunkt AWT, Swing, JavaFX & SWT 3
Jats 2D-Grafik Quadrat/Dreieck um Mittelpunkt drehen AWT, Swing, JavaFX & SWT 10
onek2705 ButtonArray drehen AWT, Swing, JavaFX & SWT 5
N Bild Drehen AWT, Swing, JavaFX & SWT 1
B JavaFX Bild um die eigene Achse drehen lassen AWT, Swing, JavaFX & SWT 0
S JavaFX Drehen um eigene Achse AWT, Swing, JavaFX & SWT 2
J Images drehen AWT, Swing, JavaFX & SWT 5
M Java FX 3D kamera drehen oder lieber die Gruppe drehen AWT, Swing, JavaFX & SWT 10
B Graphics2D Componente Drehen AWT, Swing, JavaFX & SWT 2
TheSorm Rectangle drehen AWT, Swing, JavaFX & SWT 9
HoloYoitsu Swing JButton in verschiedenen Winkeln drehen AWT, Swing, JavaFX & SWT 0
C Rechteck drehen AWT, Swing, JavaFX & SWT 1
B 2D-Grafik String drehen/platzieren/formatieren in bestimmten Bereich AWT, Swing, JavaFX & SWT 1
L 2D-Grafik Bild in Richtung Maus drehen AWT, Swing, JavaFX & SWT 18
T Bild drehen ohne Resize AWT, Swing, JavaFX & SWT 3
S Objekt durch Tasteneingabe mehrmals drehen AWT, Swing, JavaFX & SWT 9
M Rechtecke drehen AWT, Swing, JavaFX & SWT 15
P JComponent / JLabel drehen (Rotation) AWT, Swing, JavaFX & SWT 2
S Bild in Richtung Mauszeiger drehen AWT, Swing, JavaFX & SWT 2
D Swing Spielfeld drehen von Pentago endet in einer Katastrophe AWT, Swing, JavaFX & SWT 2
B 2D-Grafik Zeilen drehen im JEditorPane AWT, Swing, JavaFX & SWT 3
G Grafikobjekt drehen AWT, Swing, JavaFX & SWT 6
M Rechteck "umdrehen"/über die Kante drehen AWT, Swing, JavaFX & SWT 4
G Swing JLabel drehen für Kartenspiel AWT, Swing, JavaFX & SWT 9
R Bild drehen UND skalieren (Image bzw BufferedImage) AWT, Swing, JavaFX & SWT 5
multiholle Swing Panel um 90° drehen AWT, Swing, JavaFX & SWT 5
O JLabel um 90 Grad drehen ? AWT, Swing, JavaFX & SWT 9
E Bild drehen AWT, Swing, JavaFX & SWT 4
R Rechteck drehen! AWT, Swing, JavaFX & SWT 4
S BufferedImage drehen AWT, Swing, JavaFX & SWT 3
N Formen drehen und auf JPanel zeichnen AWT, Swing, JavaFX & SWT 6
S wie Jpanel drehen AWT, Swing, JavaFX & SWT 4
J swing komponenten drehen? AWT, Swing, JavaFX & SWT 11
K Graphics drehen? AWT, Swing, JavaFX & SWT 7
B Ein Image Objekt drehen? AWT, Swing, JavaFX & SWT 2
N Bild drehen (AffinTransform etc.) AWT, Swing, JavaFX & SWT 2
N Bild drehen AWT, Swing, JavaFX & SWT 7
thE_29 Bild drehen AWT, Swing, JavaFX & SWT 6
C Koordinatensystem drehen AWT, Swing, JavaFX & SWT 3
B Text drehen AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen


Oben