(Java3D) Einen Faden programmieren - Logikproblem

Java3D_Noob

Mitglied
Hallo Community,
ich hab ein Problem. Und zwar muss ich ein Fadenpendel simulieren.(mit Java3D) Das ganze sieht so aus, dass ein Punkt auf einem Koordinatensystem liegt, der sich nicht bewegen kann. An diesem wird der Faden befestigt und auf der anderen Seite des Fadens ist ein zweiter Punkt, der wiederum bewegt werden kann.
Die Bewegungen werden durch programmierte Kräfte simuliert (wie in Physik). In der Schule haben wir z.B. eine Feder programmiert, was dazu führte, dass der 2. Punkt Durch Schwerkraft und durch die Feder hin und her "schwingt" - wie in echt halt auch.
Mein Problem: Ich hab keine Idee wie ich diesen Faden von der Logik her programmieren soll. Ich hab schon versucht die Feder mit sehr sehr hoher Federhärte als Faden zu betrachten, aber das ist zu ungenau und schwingt trotzdem noch ein bisschen hoch und runter.

Hat jemand eine Idee wie ich einen Faden rein von der Logik her überhaupt programmieren könnte?

Hier mal den Text von der Feder:
[JAVA=42]
package basisklassen;

/**
* Zwischen zwei Massepunkten ist eine Feder angebracht.<br>
* Die Feder ist masselos und kann in Abhängigkeit von ihrer Nulllänge, der Federhärte und ihrer aktuellen
* Dehnung den Massepunkten die wirkende Kraft mitteilen.<br>
* Gerade wegen der Masselosigkeit der Feder ist sie auch bestens dafür geeignet,
* andere Kräfte wie Gravitation oder Coulombkraft zu simulieren.
*
* @author **********
* @version 1.0 (9.12.2012)
*/
public class Feder {
private double D = 0;
private double l0 = 0;
private Massenpunkt m1;//Massenpunkt: Die Punkte, die im Koordinatensystem sind.(eigene Klasse)
private Massenpunkt m2;

private Vektor F = new Vektor(); // eigene Klasse, dient für die Erstellung von Punkten im Koord.-Sys.
double l;
double ds;

/**
* Eine neue Feder wird erzeugt.<br>
* Diese hat eine Federhärte (in N/m), eine Nulllänge (in m) einen Anfangspunkt und einen Endpunkt, wobei egal ist, welcher welcher ist.
*
* @param _D Federhärte
* @param _l0 Nulllänge
* @param _m1 Anfangspunkt
* @param _m2 Endpunkt
*/
public Feder(double _D, double _l0, Massenpunkt _m1, Massenpunkt _m2) {
D = _D;
l0 = _l0;
m1 = _m1;
m2 = _m2;
}
public double getl0(){
return l0;
}

/**
* Die passenden Kräfte wirken auf die beiden Massenpunkte.
*
* @see Massenpunkt
*/
public void KraefteWirken() {
// Bestimme den Richtungsvektor: (m2 - m1) und die Länge davon.
F.set(m2.getX());
F.Subtrahiere(m1.getX());
l = F.Laenge();
// Jetzt nur Richtung des Vektors von m1 nach m2 merken:
F.Normieren();
// Dehnung berechnen.
// Die ist positiv, wenn die Feder länger als l0 ist.
// Dann wird m2 herangezogen (also -r) und m1 auch (also +r).
// Dehnung ist negativ, wenn die Feder kürzer als l0 ist.
// Dann wird m2 abgestoßen (also +r) und m1 auch (also -r).
// Also wie "positiv" denken, den Rest macht das Vorzeichen von ds!
ds = l - l0;
F.MultipliziereZahl(ds);
F.MultipliziereZahl(D);
// Das ist nun offensichtlich die Kraft auf die Masse 1:
m1.F_wirkt(F);
// umgekehrte Kraft auf die Masse 2:
F.Gegenvektor();
m2.F_wirkt(F);
}

}

[/code]

Ich hab mir schon überlegt, dass ich irgendwie die Dehnung so machen muss, dass sie immer 1 (also keine Dehnung) ist. Aber das klappt irgendwie nicht.

Vielen Dank im vorraus :)
 

Marco13

Top Contributor
Das mit der "Länge 1" ist schon nicht verkehrt. Bei Kräften hat man ja immer ein Problem: Wenn man den Faden wirklich NICHT-dehnbar machen will (oder auch nur "sehr wenig dehnbar") dann treten leicht mal große Kräfte auf. Ein normaler Euler wird da instabil, und einen impliziten Löser... ... willst du sicher nicht schreiben ;) (abgesehen davon, dass er ggf. unerwünschte Dämpfung reinbringt). Das ganze findet praktische Anwendung eher im 2D-Fall, nämlich bei der Stoffsimulation. Aber auch der 1D-Fall kommt vor: Bei der Simulation von Haaren. Da wurde auf der letzten VRIPHYS ein Verfahren vorgestellt, das kannst du dir ggf. mal ansehen: http://www.matthiasmueller.info/publications/FTLHairFur.pdf
 

Horschie

Mitglied
Wird das nicht alles zu kompliziert? Im Grunde sind die Massepunkte steif im Raum, vlt. auf beliebig zu definierenden Koordinaten. Die wirkende Kraft auf jeden Punkt ist genau die halbe Federkraft, welche sich aus der FEderkonstante ermitteln lässt. Die in x,y,z-Richtung wirkenden Kräfte kannst du aus dem Kräftegleichgewicht und ein paar Winkelfunktionen ermitteln.
 

Java3D_Noob

Mitglied
Ok schonmal ein großes Danke an euch beide :) Ich glaub allerdings dass Marco13s Lösung wirklich zu kompliziert für mich ist, im Moment bin ich in der 11. Klasse und euler zeugs hatten wir noch garnicht.. :/ @Horschie: Ja die Massenpunkte kann man beliebig im Raum setzen, aber wie kommst du darauf, dass die Kraft, die wirkt die halbe Federkraft ist? (sorry falls das ne blöde Frage ist, aber Physik hab ich abgewählt.. xD)
Ach ja und ich hab mal folgendes versucht, bei der Feder:
Java:
[...]
l0 = l;
ds = l - l0 +1 ;
F.MultipliziereZahl(ds);
[...]
Aber dann springt alles nurnoch wild hin und her, sah sehr lustig aus :D aber leider nicht hilfreich???:L
 
Zuletzt bearbeitet:

piu58

Mitglied
Das mußte so klappen:

Dein beweglicher Punkt hat einen Ort und einen (Anfangs-)Geschwindigkeitsvektor. Die Gravitation erzwingt eine Beschleunigung (kann auch bremsend wirken), welche in einem kleinen Zeitintervall delta_t eine Geschwindigkeitsänderung bewirkt. Du darfst nur Komponenten der Beschleunigung benutzen, welche senkrecht zur Fadenlinie stehen.
 

Marco13

Top Contributor
Vermutlich hattet ihr den Euler schon, habt ihn aber nicht unter diesem Namen kennengelernt: Irgendwo werden ja aus Kräften neue Beschleunigungen berechet, aus den Beschleunigungen dann neue Geschwindigkeiten, und das den Geschwindigkeiten neue Positionen. Das ist quasi der Euler. Aber vielleicht findest du auch eine einfachere Lösung für das ganze, als das, was z.B. in http://www.matthiasmueller.info/publications/posBasedDyn.pdf beschrieben ist.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O 3D-Grafik java3D in eclipse verwenden Allgemeine Java-Themen 0
K Lauffähige jar-Datei Java3D Allgemeine Java-Themen 5
G 3D-Grafik Java3D QuadArrays beleuchten Allgemeine Java-Themen 4
C Prüfen ob sich ein Punkt innerhalb einer Kugel befindet (Java3D,nicht-lineare GLS) Allgemeine Java-Themen 5
B Jar-File und Java3D Allgemeine Java-Themen 7
P Java3D mehrere Ebenen parallel zu yz-Ebene Allgemeine Java-Themen 9
Developer_X Import Java3D in der Eingabeaufforderung Allgemeine Java-Themen 12
Developer_X Java3D-Ball größe angeben Allgemeine Java-Themen 12
J Java3D JRE/SDK Allgemeine Java-Themen 2
C Java3D und Win XP Allgemeine Java-Themen 2
S Java3D Performance optimieren Allgemeine Java-Themen 5
M Was soll ich benutzen? Java2D, Java3D, Swing, AWT?? Allgemeine Java-Themen 21
Jose05 Umgang mit Exceptions in einen Programm Allgemeine Java-Themen 2
Robert Zenz Ich brauche bitte mal kurz einen Sanity/Reality-Check betreffend Tests. Allgemeine Java-Themen 9
R Wie gestaltet man einen Authentifizierungsflow? Allgemeine Java-Themen 6
berserkerdq2 Jemand einen Tipp wie man ein Javafx-Hintergrund "dynamisch" macht Allgemeine Java-Themen 3
berserkerdq2 Text über einen Shape anzeigen (Scenebuilder) Allgemeine Java-Themen 1
Lennox Schinkel Java Kara Auf einen Java Host laufen lassen Allgemeine Java-Themen 17
A verschachtelte for-Schleife in einen Stream umwandeln? Allgemeine Java-Themen 4
N Wie mache ich einen UnitTest? Allgemeine Java-Themen 16
D Klassendesign für einen Pascal Interpreter Allgemeine Java-Themen 6
Jose05 Gibt es einen Nachteil bei dem JDK 8? Allgemeine Java-Themen 7
E Objekte in einen String packen und wieder laden Allgemeine Java-Themen 5
O Warum kann ich so keine Elemente löschen und erhalte einen IllegalStateException? Allgemeine Java-Themen 4
M Schleife für einen TicTacToe Computer Allgemeine Java-Themen 5
N Validator für einen SQL-Befehl Allgemeine Java-Themen 22
ZH1896ZH Best Practice Wie erstellt man am besten einen Kalender? Allgemeine Java-Themen 3
R Java Stream: Ist es möglich, einen stream zusammenzufassen Allgemeine Java-Themen 6
Zrebna FileUtils.cleanDirectory() - aber einen sub-Ordner "verschonen" Allgemeine Java-Themen 1
MiMa Datei verschieben hat einen Fehler?? Allgemeine Java-Themen 20
L Generator für einen Parser implementieren Allgemeine Java-Themen 13
W Haben Konstruktoren in Java eigentlich immer mindestens einen Parameter? Allgemeine Java-Themen 4
J Wie kann ich von Vornherrein einen Fokus auf ein Objekt entfernen? Allgemeine Java-Themen 3
P einen public <Optinal String> in einer anderen Klasse mit einem Int vergleichen Allgemeine Java-Themen 2
A Mithilfe von einer Nummer einen Namen finden n-Beziehung Allgemeine Java-Themen 8
B Long in einen Double umwandeln und im Label anzeigen Allgemeine Java-Themen 7
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
MoxxiManagarm Ich brauche einen smarten Ansatz Allgemeine Java-Themen 23
J Gebautes Jar per Maven in einen Docker Container kopieren Allgemeine Java-Themen 0
Drachenbauer Wie kann eine vorgegebene Farbe über einen String erkannt werden? Allgemeine Java-Themen 11
L File beim Kopieren in einen anderen Ordner umbenennen Allgemeine Java-Themen 6
E Einen Bot Programmieren. Allgemeine Java-Themen 6
F Operationen/Methoden einen WebService im Browser mit Apache Axis aufrufen Allgemeine Java-Themen 4
N Über einen Button in JavaFX ein Event über eine Pipeline schicken(Netty) Allgemeine Java-Themen 1
J Einen Thread in einer Schleife Allgemeine Java-Themen 2
P [Webdriver] einen Datensatz signieren Allgemeine Java-Themen 0
R MAC-Adresse eindeutig für einen PC ? Bezug zu Netzwerk, wieso ? Allgemeine Java-Themen 7
L Variablen Eigenes Objekt wie z.B. einen Integer zuweisen Allgemeine Java-Themen 3
N Wie öffne ich einen runtergeladadenen Code in IntelliJ Allgemeine Java-Themen 3
R Wie einen ClientBuilder / JarBuilder programmieren? Allgemeine Java-Themen 14
S Input/Output Beste Möglichkeit einen String in einen Datei zu Schreiben Allgemeine Java-Themen 2
L Input/Output Wie kann man in der Konsole einen Text farbig ausgeben z.b in grün Allgemeine Java-Themen 6
L Wie programmiert man einen Listener? Allgemeine Java-Themen 1
M Nanosekunden-Pause innerhalb einen Thread-Loops Allgemeine Java-Themen 3
Thallius Wie convertiere ich einen pkcs8 key in einen java lesbaren? Allgemeine Java-Themen 16
M Was braucht man, um einen Java Job zu bekommen? Allgemeine Java-Themen 8
G Substrings in einen String zusammenfassen Allgemeine Java-Themen 5
C Classpath Neue Klasse über einen Button ausführen Allgemeine Java-Themen 3
N Compiler-Fehler Warum erhalte ich einen Nullpointer Fehler? Allgemeine Java-Themen 2
P Zum src Ordner einen Projektes navigieren Allgemeine Java-Themen 8
J Abhängigkeit zwischen Rechenzeit und Speicherbedarf in einen Algorithmus Allgemeine Java-Themen 7
MaxG. Swing Wie kann man einen Dateiordner auswählen ? Allgemeine Java-Themen 3
D Kopieren von Dateien aus einem Ordner in einen anderen Allgemeine Java-Themen 6
KeVoZ_ int Werte in einen String fassen Allgemeine Java-Themen 4
RalleYTN Problem bei Schleife die durch einen 2D raum iterieren soll Allgemeine Java-Themen 1
S Einen Punkt um den Ursprung drehen Allgemeine Java-Themen 5
Tausendsassa Threads Einen Thread sich selbst schließen lassen Allgemeine Java-Themen 17
M Genaues Bugtracking - jemand einen Vorschlag? Allgemeine Java-Themen 14
L Gibt es in Java einen Property Editor? Allgemeine Java-Themen 2
S Einen übergebenen String kopieren Allgemeine Java-Themen 3
J Wie erschaffe ich einen sicheren Datenaustausch zwischen Thread und Nicht-Threads Allgemeine Java-Themen 8
L Wie kann ich einen Keystore aus existierenden Zertifikaten erstellen? Allgemeine Java-Themen 1
P Vectorelemente in einen anderen Vector kopieren Allgemeine Java-Themen 12
U in java an einen Rückgabewert aus matlab rankommen Allgemeine Java-Themen 2
B einen color-chooser bauen, ähnliche Farben vermeiden Allgemeine Java-Themen 5
B .txt Datei in einen kompletten String konvertieren Allgemeine Java-Themen 20
H Gibt es einen großen Unterschied zwischen Java 6 und Java 7? Allgemeine Java-Themen 3
M String in einen 2D array bringen Allgemeine Java-Themen 2
Y Prüfen ob ein Graph immer einen von mehren Enden erreicht Allgemeine Java-Themen 4
Y Applet/Html - Wie Java-Methode aufrufen, die einen Parameter erwartet? Allgemeine Java-Themen 3
Rudolf In wie fern lohnt sich C++ für einen Javaentwickler Allgemeine Java-Themen 70
A Welches Speichermanagement für einen Kalkulator Allgemeine Java-Themen 7
S OOP Objekte als Return-Werte: Einen Klon zurückgeben oder Instanz auf das Feld? Allgemeine Java-Themen 10
J String-Typ in einen generischen Typ T umwandeln Allgemeine Java-Themen 6
S RandomAcessFile das einen InputStream wrappt..? Allgemeine Java-Themen 2
H Scanner soll einen Inputredirect einlesen, liest aber nicht jedes Wort ein. Allgemeine Java-Themen 3
H Wie erzeugt man einen Daemon? Allgemeine Java-Themen 7
S Wie beendet man einen Process in Java Platform unabhänging? Allgemeine Java-Themen 8
Z Threads Thread für einen Client Allgemeine Java-Themen 9
A nur einen Wert aus einer .conf lesen und erneuern Allgemeine Java-Themen 3
S MANIFEST DATEI hat nur einen Eintrag Allgemeine Java-Themen 14
M Einen Prozess "crashen" lassen Allgemeine Java-Themen 9
I getResponseCode(); returnt einen falschen Wert? Allgemeine Java-Themen 7
U Wie kann mit einen Java Applet Dateien erstellen,verschieben und löschen? Allgemeine Java-Themen 9
C Argument an einen Thread übergeben Allgemeine Java-Themen 4
A Framework für einen Web Service Allgemeine Java-Themen 6
I %AppData% Variable für einen Prozess setzen Allgemeine Java-Themen 23
V Gibt es einen Variablen Cast? Allgemeine Java-Themen 8
S regex für einen Link Allgemeine Java-Themen 3
M Client für einen Webservice erstellen (ONVIF) Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben