Vectoren berechnen

Ste3et_C0st

Mitglied
Heyho nachdem mir hier im Forum das letze mal schon so super geholfen wurde hoffe ich nun darauf dass mir wieder echt gut geholfen wird ich versuch nun schon seit Tagen mein Problem zu lösen.

Zu meinem Problem: Ich habe ein Modelier Plugin für Minecraft Geschrieben welches auch super funktioniert https://www.spigotmc.org/resources/furnituremaker.20667/ mit diesem Plugin hab ich mir nun aus ArmorStands ein auto zusammen gebastelt:

2016-05-02_13.06.49.png


Das auto besteht aus verschiedene ArmorStands die Relative zur mitte erzeugt werden
Nun möchte ich natürlich das Auto auch zum fahren bekommen o_O das fahren an sich ist leicht gemacht über vektoren berechnung nun möchte ich halt das das auto sich beim drücken von "D" um die eigene Axe dreht hier mal ein kleines Beispiel Video


Meine Idee war nun wie folgt da das Auto ja aus X ArmorStands besteht diese einzeln in einer for Schleife abarbeiten:

Java:
@EventHandler
        Location loc =FurnitureLib.getInstance().getLocationUtil().getCenter(e.getID().getStartLocation()).subtract(0, .5, 0);
        Vector v = loc.toVector();
        float angle = 2;
        for(fEntity entity : e.getID().getPacketList()){
            
        }
    }

Nun berechne ich die Relativen Koordinaten des ArmorStands und der Mitte:

Java:
@EventHandler
        Location loc =FurnitureLib.getInstance().getLocationUtil().getCenter(e.getID().getStartLocation()).subtract(0, .5, 0);
        Vector v = loc.toVector();
        float angle = 2;
        for(fEntity entity : e.getID().getPacketList()){
            Relative relative = new Relative(loc, entity.getLocation());
            double xOffset = relative.getOffsetX();
            double zOffset = relative.getOffsetZ();
        }
    }

So nun hab ich den xOffset und den zOffset des 3d Vectors nun hab ich mir es so gedacht:

2016-05-02_23.35.06.png


Dass quasi um die Mitte ein Kreis erzeugt wird mit der Länge des Abstandes ArmorStand zur Mitte das sieht nun so aus:

Java:
@EventHandler
        Location loc =FurnitureLib.getInstance().getLocationUtil().getCenter(e.getID().getStartLocation()).subtract(0, .5, 0);
        Vector v = loc.toVector();
        float angle = 2;
        for(fEntity entity : e.getID().getPacketList()){
            Relative relative = new Relative(loc, entity.getLocation());
            double xOffset = relative.getOffsetX();
            double zOffset = relative.getOffsetZ();
            double radius = relative.getFirstLocation().toVector().distance(relative.getSecondLocation().toVector());
        }
    }

so bis hierher geht noch alles ich hab nun die radius den xOffset und den zOffset aber nun setzt es schon aus wie bekomm ich nun den neuen Punkt im kreis der sagen wir mal um 2 Grad abweich vom eigentlichen punkt o_O
 

Jardcore

Top Contributor
Was sind ArmorStands?

Und deine Überschrift "Vectoren berechnen" schließt nicht unbedingt auf das Problem bei dem du Hilfe benötigst.

Wenn du etwas bewegen willst, was aus vielen kleinen Teilen besteht, solltest du die vielen kleinen Teile dem Größerem zuordnen. Also jede Entity könnte wieder aus anderen Entities bestehen und nur eine Art Container darstellen.

Wenn eine Entity nun aktualisiert wird, werden auch die Kind-Elemente aktualisiert und deren Position an das Vater-Element angepasst, Wenn ein Element keinen Vater hat, ist es der Container, auf dem die eigentliche Pensionsberechnung gemacht wird. Alle anderen bestimmten die Position nur abhängig vom Vater + Offset.
Code:
Entity{
    Entity vater;
    List<Entity> kinder;

    update() {
        berechnePosition();

        for(Entity kind : kinder) {
            kind.update();
        }
    }
}
 
Zuletzt bearbeitet:

Ste3et_C0st

Mitglied
So ich hab nun ein bisschen weiter geschrieben

ArmorStands auch Rüstungsständer genannt sind Entitys/Mobs/Lebewesen aus dem Spiel Minecraft Diese biten den Spieler die Möglichkeit Items auf ihnen zu Platzieren:

Und zwar haben diese Folgende Slots
  • Kopf
  • Brustplatte
  • Hose
  • Schuhe
  • Linker Arm
  • Rechter Arm
Auf diesen Slots können Items abgelegt werden anschließend können folgende Teile über EularAngle rotiert werden

  • Kopf
  • Bauch
  • Linker/Rechter Arm
  • Linkes/Rechtes Bein
Außerdem kann der ArmorStand noch unsichtbar gemacht werden etc.

Dabei ist das Video entstanden:


Leider hab ich irgendwo einen Fehler hinein Programmiert das hier ist mein Programm Code:

Java:
    public void rotate(ObjectID id, Player p){
        float angle = 10;
        fEntity f1 = null;
        fEntity f2 = null;
       
        for(fEntity entity : id.getPacketList()){
            if(entity.getHelmet()!=null){
                if(entity.getHelmet().getType().equals(Material.BEACON)){
                    if(f1==null){f1 = entity; continue;}
                    if(f2==null){f2 = entity; break;}
                }
            }
        }
        if(f1!=null&&f2!=null){
            double midX = (f1.getLocation().getX() + f2.getLocation().getX()) / 2;
            double midY = (f1.getLocation().getZ() + f2.getLocation().getZ()) / 2;
           
            Location loc = new Location(f1.getWorld(), midX, f1.getLocation().getY(), midY);
            p.spigot().playEffect(loc, Effect.HAPPY_VILLAGER, 0, 0, 0, 2, 0, 1, 5, 30);
           
            angle = (float) ((angle ) * (Math.PI/180));
            for(fEntity entity : id.getPacketList()){
                if(!entity.equals(f1)&&!entity.equals(f2)){
                    Location loc2 = entity.getLocation();
                    double rotatedX = Math.cos(angle) * (loc2.getX() - loc.getX()) - Math.sin(angle) * (loc2.getZ() - loc.getZ()) + loc.getX();
                    double rotatedY = Math.sin(angle) * (loc2.getX() - loc.getX()) + Math.cos(angle) * (loc2.getZ() - loc.getZ()) + loc.getZ();
                    double rX = loc2.getX()-rotatedX;
                    double rY = loc2.getZ()-rotatedY;
                    entity.move(rX, 0, rY);
                }
            }
        }
    }

Ich hab es nun wie folgt versucht die zwei Objecte die in der Luft schweben sind meine "EckPunkte" aus diesen zwei Eckpunkten berechne ich den Mittelpunkt der im Video als grüner streifen dargestellt wird und dann wolte ich alle armorstands um den grünen punkt rotieren
 

MichelDerWolf

Neues Mitglied
kann nicht einmal einer dieses Entwicklers mit einem Skript helfen , das Weill geht, wie ih seht er versteht die Rotation_matrix nicht dann brink es nicht nur einen Link zu posten jetzt helft ihn doch Es ärgern mich diese Leute die nur ein Wort oder einen Link schreiben Antworten :(
 

DrZoidberg

Top Contributor
Was mir hier auffällt sind diese beiden Zeilen:
Java:
double rX = loc2.getX()-rotatedX;
double rY = loc2.getZ()-rotatedY;
Ich vermute die müssten so lauten:
Java:
double rX = rotatedX-loc2.getX();
double rY = rotatedY-loc2.getZ();
 

Jardcore

Top Contributor
Also eine Rotation im 2D Raum, bzw. 3D mit gleichbleibenden Z?

Wie wäre es mit:
heading := (0 >= x <= 2Pi | x € R)

startHeading = 2/3 Pi;
targetHeading = 4/5 PI;

==> startHeading erhöhen bis es targetHeading erreicht hat.
Und entsprechend des headings dein "was auch immer" drehen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Vectoren Java Basics - Anfänger-Themen 10
T .add(E) für mehrdimensionale Vectoren Java Basics - Anfänger-Themen 5
P Attribute von Objekten in Vectoren überprüfen Java Basics - Anfänger-Themen 4
S System.arraycopy für Vectoren Java Basics - Anfänger-Themen 12
L Arbeiten mit Vectoren in einer Hashtable Java Basics - Anfänger-Themen 2
G Vectoren in DefaultTableModel Java Basics - Anfänger-Themen 8
P Was sind Vectoren und Maps in Java? Java Basics - Anfänger-Themen 3
M problem mit vectoren Java Basics - Anfänger-Themen 2
G Vectoren Java Basics - Anfänger-Themen 7
W Java Cast bei Vectoren Java Basics - Anfänger-Themen 10
J JTable + Vectoren. was stimmt da nicht? Java Basics - Anfänger-Themen 2
I Vectoren abhängig voneinander sortieren Java Basics - Anfänger-Themen 17
B Einen Array aus vielen Vectoren Java Basics - Anfänger-Themen 3
N Vergleich zweier Elemente verschiedener Vectoren Java Basics - Anfänger-Themen 2
F Sortieren: Zwei Vectoren ineinander verschachtelt Java Basics - Anfänger-Themen 6
K Vectoren vergleichen Java Basics - Anfänger-Themen 2
J Vectoren im Vector? Geht das? Java Basics - Anfänger-Themen 5
S Vectoren in Datein speichern --> Fehlermeldung Java Basics - Anfänger-Themen 6
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
V Durchschnittliche Volatility in Prozent für 4 Stunden berechnen Java Basics - Anfänger-Themen 14
T Fibonacci mit einer Hilfsmethode berechnen Java Basics - Anfänger-Themen 10
laxla123 Quersumme berechnen Java Basics - Anfänger-Themen 1
I For Schleife Summe berechnen Java Basics - Anfänger-Themen 13
S Vollmond berechnen und ausgeben Java Basics - Anfänger-Themen 12
S Vollkommene Zahl berechnen und ausgeben Java Basics - Anfänger-Themen 16
A Berechnen Moor Nachbarschaft Java Basics - Anfänger-Themen 5
E Geburtstag im Schaltjahr berechnen Java Basics - Anfänger-Themen 24
Lion.King Schaltjahr berechnen Java Basics - Anfänger-Themen 31
E Alter (Laufzeit) berechnen Java Basics - Anfänger-Themen 11
I Zuschläge berechnen Java Basics - Anfänger-Themen 15
L mit Fakultät mathematische Formel berechnen Java Basics - Anfänger-Themen 5
TanTanIsTrying Durschnitt berechnen von eingegebener Zahl bis 1 heruntergezählt Java Basics - Anfänger-Themen 9
L Präfix berechnen Java Basics - Anfänger-Themen 33
F Abstand zwischen zwei Objekten berechnen wie? Java Basics - Anfänger-Themen 1
Aemulit Java Schaltjahr berechnen Code Java Basics - Anfänger-Themen 7
Poppigescorn Quersumme Berechnen mit einer While Schleife Java Basics - Anfänger-Themen 13
I Potenz berechnen mit for-Schleife Java Basics - Anfänger-Themen 3
A Standardabweichung in Java berechnen Java Basics - Anfänger-Themen 10
H Gesamtabweichung mit Array berechnen Java Basics - Anfänger-Themen 2
G Java Rabatt berechnen Java Basics - Anfänger-Themen 8
V Rückgeld berechnen Java Basics - Anfänger-Themen 6
eleonori Durchschnitt aller Werte eines Baums berechnen Java Basics - Anfänger-Themen 5
Ianatrix Zahlen von a bis b berechnen Java Basics - Anfänger-Themen 7
L Max, min, Summe und Durchschnitt berechnen Java Basics - Anfänger-Themen 4
L Anhalteweg berechnen Java Basics - Anfänger-Themen 6
Aeon Erste Schritte Preise berechnen mit do-while Java Basics - Anfänger-Themen 9
M Quadratwurzel berechnen Java Basics - Anfänger-Themen 8
V Wachstum berechnen und in Ist-Formel verwenden Java Basics - Anfänger-Themen 5
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Abschreibungsplan berechnen Java Basics - Anfänger-Themen 23
V Gehalt berechnen in Java Java Basics - Anfänger-Themen 6
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
L Anzahl der benachbarten Minen berechnen und setzen Java Basics - Anfänger-Themen 15
J Array Speicherplatz berechnen Java Basics - Anfänger-Themen 35
H Eingabedaten berechnen Java Basics - Anfänger-Themen 9
B Tranportkosten berechnen mit unterschiedlichen MwSt Java Basics - Anfänger-Themen 9
L Anzahl der Paare deren Summe = 0 ergibt berechnen Java Basics - Anfänger-Themen 0
V Erste Schritte Berechnen von Sinus; sin(x) ohne Math.* Java Basics - Anfänger-Themen 1
J Hilfe bei Java Aufgabe (Restschuld berechnen) Java Basics - Anfänger-Themen 11
N Ein Datum berechnen Java Basics - Anfänger-Themen 3
T Sparplan berechnen Java Basics - Anfänger-Themen 4
F Abstand zum Durchschnitt von 5 Zahlen berechnen... Java Basics - Anfänger-Themen 16
B java.util.Date berechnen Java Basics - Anfänger-Themen 11
P Mittelwert Arrayelemente berechnen Fehler Java Basics - Anfänger-Themen 5
CptK Best Practice Schussparabel berechnen Java Basics - Anfänger-Themen 3
T Modulo / Pow berechnen Java Basics - Anfänger-Themen 4
E Statistische Kennzahlen berechnen Java Basics - Anfänger-Themen 2
F Switch Case Modulo berechnen Java Basics - Anfänger-Themen 12
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
C Preis berechnen mit Java Java Basics - Anfänger-Themen 4
B Zahl in String abspeichern und später berechnen Java Basics - Anfänger-Themen 15
N Best Practice Image recognition fuzzy Superhash berechnen Java Basics - Anfänger-Themen 1
Dawinartor Erste Schritte Schaltjahr berechnen Java Basics - Anfänger-Themen 1
L Pi berechnen Java Basics - Anfänger-Themen 1
CptK Term (als String) berechnen und ausgeben Java Basics - Anfänger-Themen 10
L Den Winkel zwischen zwei Vektoren berechnen! Java Basics - Anfänger-Themen 2
J Variablen arithmetischen Mittelwert berechnen Java Basics - Anfänger-Themen 5
K Matrixen berechnen nach Worker Master Paradigma mit Threads Java Basics - Anfänger-Themen 4
R Winkel berechnen bzw. Geraden sortieren Java Basics - Anfänger-Themen 33
I Schnittpunkt zweier Geraden berechnen Java Basics - Anfänger-Themen 25
M Erste Schritte Mittelwert berechnen -> Methode in der Methode? Java Basics - Anfänger-Themen 14
S Compiler-Fehler Schaltjahr berechnen Java Basics - Anfänger-Themen 5
B Fakultätsfunktion Rekursiv Berechnen aber mit Array Java Basics - Anfänger-Themen 10
S Durchschnitt berechnen aus zwei Textfeldern Java Basics - Anfänger-Themen 21
D Summe berechnen mit verändertem Wert aus Schleife Java Basics - Anfänger-Themen 1
R Liga Berechnen Java Basics - Anfänger-Themen 1
P Klassen Berechnen mehrerer Map-Werte Java Basics - Anfänger-Themen 13
R Fussballtabellen berechnen Java Basics - Anfänger-Themen 12
J Fibonacci -Folge rekursiv berechnen Java Basics - Anfänger-Themen 18
J Durchschnitt jeder Zeile und und Spalte in einem 2D Arrays berechnen Java Basics - Anfänger-Themen 6
F ISBN Prüfziffer berechnen Java Basics - Anfänger-Themen 17
F Die Teilersumme einer Eingabe berechnen Java Basics - Anfänger-Themen 11
S Negafibonacci Folge berechnen Java Basics - Anfänger-Themen 24
G Array Mittelwert berechnen, wie? Java Basics - Anfänger-Themen 8
S Primzahlen berechnen funktioniert nicht richtig Java Basics - Anfänger-Themen 1
N Mit LocalDate alter berechnen Java Basics - Anfänger-Themen 3
J Laufzeit berechnen/Laufzeitanalyse Java Basics - Anfänger-Themen 2
N Arrays mit Zufallzahlen füllen und Statistiken berechnen Java Basics - Anfänger-Themen 5
A Wochentag berechnen Java Basics - Anfänger-Themen 10
L Durchschnitt in der Schleife berechnen Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben