Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Fällt der Turm?


GTA-Place - Fr 03.11.06 18:55
Titel: Fällt der Turm?
Hallo,

ich habe nach langer Zeit auch mal wieder eine Frage, die diesmal in den physikalischen Bereich geht. Dazu mal ein schönes Bild aus meinem aktuellen Projekt:
user defined image
Nun stellt sich mir die Frage, wie ich herausfinde, ob der Turm umfällt, was in diesem Beispiel ja passieren sollte. user profile icondelfiphan meinte vor langer Zeit mal (als ich ihn danach gefragt hab), ich könne jede Ebene für sich betrachten und wenn der Schwerpunkte der Steine darüber außerhalb der Fläche liegt, stürzt der Turm. Entweder ich habe das falsch verstanden, oder es geht so wirklich nicht (er sprach noch von konvexen Hüllen und so... xD).

Habt ihr da eine Idee?

Grüße
GTA-Place


Moderiert von user profile iconChristian S.: Topic aus Sonstiges (Delphi) verschoben am Fr 03.11.2006 um 17:56


ZeitGeist87 - Fr 03.11.06 18:58

vom rein logischem her würd ich sagen der turm stürtzt und die schuld würde ich dem stein ganz oben links zuschieben, da er sich außerhalb des schwerpunktes (einzelner stein in der mitte) befindet.

Wie du das programmiertechnisch am einfachsten löst -> don´t know


Ich werd das einfach überprüfen indem ich cinema 4d frag =)

LG
Stefan


GTA-Place - Fr 03.11.06 19:01

user profile iconZeitGeist87 hat folgendes geschrieben:
vom rein logischem her würd ich sagen der turm stürtzt und die schuld würde ich dem stein ganz oben links zuschieben, da er sich außerhalb des schwerpunktes (einzelner stein in der mitte) befindet.

Soweit war ich jetzt auch schon xD.


ZeitGeist87 - Fr 03.11.06 19:03

tut doch immer wieder gut sich bestätigt zu fühlen^^

Programmiertechnisch würd ich sagen ists einiger Aufwand..

Viel Spaß =)


cuejo - Fr 03.11.06 19:08
Titel: Re: Fällt der Turm?
user profile iconGTA-Place hat folgendes geschrieben:

Nun stellt sich mir die Frage, wie ich herausfinde, ob der Turm umfällt, was in diesem Beispiel ja passieren sollte.

Wie das geht weiß ich auch nicht, aber ich denke nicht, dass der Turm in diesem Fall umfällt, ganz eifach deswegen, weil die drei Reihen darüber genügend Gegengewicht bringen, um dem Ungleichgewicht in der obersten Reihe entgegenzuwirken. In den drei Reihen befinden sich 9 Klötze und wirken dem Übergewicht von nur einem Klotz entgegen. Außerdem musst du den Schwerpunkt bedenken. Der liegt wahrscheinlich noch auf der Breite des Mittleren Klotzes in der 5. Reihe. Ja ich denke du musst die Schwerpunkte berechnen um eine Vorhersage zu treffen.

P.S.: Ich habe meine Vermutung empirsch beweisen können ;)


Chryzler - Fr 03.11.06 19:11

Ich hatte mal was von einer 'Newton.dll' gehört.. Geht das damit nicht?


Martok - Fr 03.11.06 19:11

Also wenns ganz brutal werden soll: Newton Game Dynamics.

Aber sonst hat delfiphan schon recht. Schwierig wirds nur, wenn der mittlere Stein weg ist.

Aber: in deinem Beispiel würde er nicht fallen. Der Schwerpunkt des Teils über dem Kipp-Stein liegt irgendwo in der 2. Reihe von oben. Da fällt noch nix.

Was du machen könntest: betrachte den Turm von 2 Seiten, also so (Anhang 1) und berechne die Mittelpunkte der Polygone, die sich aus den Außenkanten ergeben (Wenn innen was fehlt, kann er ja nicht fallen). Damit hast du deinen Schwerpunkt in 2 Achsen geortet. Für die 3. Achse (von oben) würde ich mal mit der Turm-Mitte rechnen. Dann kannst du Prima auf Stein da oder nicht prüfen. Aber immer nur die Außenkanten benutzen.
Zur Optimierung könnte man es so machen, dass Schichten, bei denen noch alle Steine existieren, gar nicht erst überprüft werden.

Zu Polygonen gibts hier ne Funktion: http://www.efg2.com/Lab/Graphics/PolygonArea.htm (Centroid heißt der Punkt)

Edit: da schreibt man jetzt ne Viertelstunde lang, und dann waren auch noch andere schneller :(


GTA-Place - Fr 03.11.06 19:21

@Chryzler und Matrok: Das geht mit der Newton.dll bestimmt, aber ich will das ganz ohne extra Komponenten machen (deshalb auch kein OpenGL, etc.).

@Martok: Den Mittelpunkt der beiden Seiten? Das klingt interessant, ich guck mal, was ich da machen kann.


Lannes - Fr 03.11.06 19:31

Hallo,

kannst Du C ?
Dann könnte das für dich interessant sein, Seite 220:
http://www.haw-hamburg.de/rzbt/dankert/ctutor3.pdf


GTA-Place - Fr 03.11.06 19:37

Ich eigne mir C++ grad an. Danke.


Horst_H - Fr 03.11.06 19:48

Hallo,

es geht nur darum ob der gemeinsame Schwerpunkt der Steine oberhalb des einen Steins ausserhalb dieses Steines zu liegen kommt.
Also Stein fuer Stein Masse und Schwerpunktkoordiante bestimmen und immer zusammenfassen. Aus zwei mach einen(reduziert).
{Drehmoment um XsRed ist 0,Finger unter dem Schwerpunkt und alles bleibt ruhig)
(Xs1-XsRed)*m1=(XsRed-Xs2)*m2 (einmal links einmal rechtsdrehend)
Xs1*m1-XsRed*m1=XsRed*m2-Xs2*m2
Xs1*m1+Xs2*m2=XsRed*(m2+m1)| mRed =m1+m2
XsRed=(Xs1*m1+Xs2*m2)/mRed
Ysred = m1*Ys1+m2*Ys2/mRed)
Zsred = m1*Zs1+m2*Zs2/mRed
Also paarweise zusammenfassen, dann diese zusammen .. (2,4,8...bis alles in einem Schwerpunkt versammelt ist)
Das hat den Vorteil einen höheren Rechengenauigkeit(bei zigtausenden von Steinen)
Wenn man nacheinander immer 1 Stein mit hinzunimmt geht es aber hier auch.

Wenn dann XsRed,YsRed in dem oberen Rechteck des unteren Steines ist, so ist alles in Ordnung.

Xs des Quaders = Summe der X der Eckpunkte / Anzahl Eckpunkte(=8)
Ys,Zs analog.

Gruss Horst


GTA-Place - Fr 03.11.06 19:55

Sorry, user profile iconHorst_H, ich bin schon bei deinem ersten Satz gescheitert. Könntest du das bitte einfacher erklären?


Horst_H - Fr 03.11.06 20:07

Hallo,

der einzelne Stein bildet mit seinen Kanten eine Wippe.
Innerhalb der Kanten kannst soviel drücken wie Du willst da wackelt nichts.
Wenn die Kraft aber ausserhalb der Kanten wirkt, kann man wippen oder wie beim Stuhl kippeln.

Nimm doch ein dickes Buch und lege zwei Bleistifte parallel in geringem Abstand darunter (wie im Beispiel mit den Steinen ungefähr 1/3 von links und von rechts, lieber enger zusammen).
Dann nimmst du schweres anderes Bch und legst es in verschiedenen Position. Irgendwann wird es zum kippen kommen, wenn der gemeinsame Schwerpunkt der beiden Bücher nicht mehr zwischen den Bleistiften liegt.

Gruss Horst

http://de.wikipedia.org/wiki/Schwerpunkt


delfiphan - Fr 03.11.06 20:44

GTA: Ja, genau :D Es zählt jedoch nicht die Grundfläche (auf jeder Ebene) selbst, sondern eben die "konvexe Hülle" der Grundfläche die du erwähnt hast. Wenn man nun den Schwerpunkt auf die Grundfläche projiziert und dieser ausserhalb der konvexen Hülle der Grundfläche liegt, fällt der Turm.

Kleine Erläuterung, was die konvexe Hülle ist:
   _                                _
 _| |_                            /   \
|    _|   => konvexe Hülle =>    |     |
|___|                            |___ /
Man spannt also quasi eine Schnur um die Grundfläche und erhält so die konvexe Hülle. (Edit: Bemerkung: Es werden so Einbuchtungen und Löcher gestopft)

//Edit: Wieso funktioniert dies nicht?


Calculon - Fr 03.11.06 20:45

Ich würde das ganze validieren. Kennst du Jenga (das Spiel)? Versuch doch einfach verschiedene Konstellationen aus und schaue, ob es hält. So kannst du (ingenieursmäßig betrachtet) Gesetzmäßigkeiten über das Verhalten in deine Simulation übertragen.
Also beispielsweise, wenn mindestens so eine Hebelsituation vorliegt, hat die Konstruktion keine Chance.
Zugegeben sehr sehr tricky und nichts exaktes, aber ein erster Schritt.
Gruß


delfiphan - Fr 03.11.06 20:53

Unter Grundfläche versteht sich natürlich die Fläche, die Effektiv zur Stützung beiträgt. Wenn zwei Steine im rechten Winkel zueinander gestapelt sind, dann zählt natürlich nur das gemeinsame kleine Quadrat in der Mitte als Grundfläche - nicht die ganze Länge des Steins.


Allesquarks - Fr 03.11.06 20:55

Konvexe Hülle ist zwar richtig aber die ist im Fall eines Rechtecks nunmal das Rechteck selber.

Schwerpunkt berechnen: Sum über i (m_i*vec(r_i)) das sollte nicht so schwierig sein zumal Summen ja Assoziativ sind, das heißt, du kannst wenn du 4 Objekte hast, den Schwerpunkt von jeweils zweien berechnen und der Schwerpunkt aller vier ist dann die Summe beider Schwerpunkte.

Also müsstest du maximal über die Anzahl deiner Steine summieren und auch nur ein einziges mal.


GTA-Place - Fr 03.11.06 21:22

@delfiphan: Hab vorher ne Seite gefunden, bei der das mit nem Java-Applet erklärt war. Trotzdem Danke.
@Calculon: Jenga ist zufällig die Vorlage für mein Projekt - Mist, zuviel verraten xD.


Handycommander - Fr 03.11.06 21:28

user profile iconZeitGeist87 hat folgendes geschrieben:
vom rein logischem her würd ich sagen der turm stürtzt und die schuld würde ich dem stein ganz oben links zuschieben, da er sich außerhalb des schwerpunktes (einzelner stein in der mitte) befindet.

Wie du das programmiertechnisch am einfachsten löst -> don´t know


Ich werd das einfach überprüfen indem ich cinema 4d frag =)

LG
Stefan


und was hat die cinema 4d gesagt ;)
würd mich mal interessieren wie du das gemacht hast :)


hansa - Fr 03.11.06 22:31

Ihr theorethisiert. :lol: Packe eine Tonne Blei in den einen Stein und Luft in die oberen. Unten kommt beton rein und fertig. Dann fällt nichts um ! Ich will damit sagen, dass die Frage Spielraum in alle Richtungen offen lässt. 8)


Martok - Sa 04.11.06 01:32

user profile iconhansa hat folgendes geschrieben:
Ihr theorethisiert. :lol: Packe eine Tonne Blei in den einen Stein und Luft in die oberen. Unten kommt beton rein und fertig. Dann fällt nichts um ! Ich will damit sagen, dass die Frage Spielraum in alle Richtungen offen lässt. 8)

Wer theoretisiert hier wohl ;)
Haarspalter! :mrgreen:


Lannes - Sa 04.11.06 01:47

Hallo,

user profile iconhansa hat folgendes geschrieben:
... Spielraum in alle Richtungen.
:arrow: Seitenwind
Wie berechnet man die Auswirkung von Seitenwind auf den Schwerpunkt von zusammengesetzten Körpern :mrgreen:


GTA-Place - Sa 04.11.06 09:19

Mooooooment. Es gibt weder Seitenwind, noch sind die Steine unterschiedlich schwer.


hansa - Sa 04.11.06 12:51

Sind die Steine auch gleich groß, wenn sie schon gleich schwer sind ? Oder bestehen sie in der linken Hälfte aus Eisen und rechts aus Holz ? :shock: Wer weiß ? Du siehst es ist schwer. :mrgreen: Sind es vollkommen gleich Steine, es gibt keinen Seitenwind :lol: usw., dann fällt der Turm nicht !


GTA-Place - Sa 04.11.06 13:24

Macht es nicht komplizierter, als es ist xD. Die sind alle gleich groß, alle aus Holz und alle perfekt geschliffen. Außerdem haben sie keinen Lack drauf, der sie unterschiedlich schwer macht... xD


delfiphan - Sa 04.11.06 13:30

In der Theorie spielt es doch gar keine Rolle, wie schwer die Steine sind, ob sie gleich schwer sind, wie die Massenverteilung ist. Solange man Schwerpunkte berechnen kann und die Luft vernachlässigt wird, kann man es so rechnen, wie oben beschrieben.

Aber bei Jenga sind natürlich alle Steine gleich gross und gleich schwer. Der abgebildete Turm fällt nicht, wer schon mal Jenga gespielt hat, weiss das ;) Das ist auch von der Theorie klar: Der Schwerpunkt der obersten zwei Steine ist gerade auf der Trennlinie der beiden Steine und berührt somit gerade noch den Stabilitätsbereich der Grundfläche des einzelnen Steins unten. Das Gleichgewicht wäre also in diesem Fall schon neutral (weder stabil noch instabil). Aber: Jetzt sind zwischen dem einzelnen Stein in der Mitte und den obersten zwei noch 3 volle Reihen, die den Gesamtschwerpunkt noch weiter Richtung Mitte ziehen. Somit ist der projizierte Schwerpunkt strikt innerhalb der Fläche und das Gleichgewicht stabil. Der Turm fällt nicht.


hansa - Sa 04.11.06 13:32

Es ist aber wirklich so schwer. :mrgreen: Ist das für ein Spiel gedacht ? Dann schaffe doch die Naturgesetze einfach ab und fertig. :mrgreen: Zähle die Steine pro Ebene und Ende Gelände. Hebelwirkungen gibts dann eben nicht.


hansa - Sa 04.11.06 13:41

user profile icondelfiphan hat folgendes geschrieben:
Das Gleichgewicht wäre also in diesem Fall schon neutral (weder stabil noch instabil).


Wenn wir schon dabei sind : das nennt man indifferent. Weder labil noch stabil. Beispiel : Kugel auf Ebene. Die rollt nur, sofern man sie anstößt. Stabil wäre Kugel in Schüssel : die rollt von alleine immer zum tiefsten Punkt und bleibt da liegen. Labil : umgedrehte Schüssel, die Kugel rollt beim geringsten Anlass unweigerlich runter. Das noch zur Theorie, aber wie gesagt : am Besten Naturgesetze außer Kraft setzen. :mrgreen:


GTA-Place - Sa 04.11.06 13:41

Kann man sagen, dass bei Jenga der Turm nie umfallen wird, wenn die Steine perfekt ausgerichtet sind? Dann kann ich das wirklich weglassen, denn es gibt noch ne andere Methode bei meinem Spiel zu verlieren.


delfiphan - Sa 04.11.06 14:09

:lol: Naja, natürlich kann man (physikalische) Fehler machen, die den Turm zu Fall bringen.
Aber so wie ich das erlebt habe wird der Turm immer sehr, sehr hoch, bevor es kritisch wird. Oft kann man am Schluss die Steine, die man noch herausnehmen darf, nicht herausnehmen, weil sie klemmen (die Steine sind halt doch nicht alle exakt gleich hoch ;) ).
Die Steine oben draufzulegen ist fast nie ein Problem, nur das rausnehmen, da wegen der Reibung der ganze Turm anfängt zu wackeln... Das ist eigentlich das Spannende am Spiel.


GTA-Place - Sa 04.11.06 14:16

Ich glaub ich vernachlässige das nun einfach mal. Das Herausziehen ist bei meinem Spiel auch der entscheidende Faktor. Dann bin ich eigentlich soweit fertig, muss nur noch bissl am Design arbeiten. Ich danke euch trotzdem. Vielleicht ist der Schwerpunkt mal in Version 2 dann eingebaut xD.


delfiphan - Sa 04.11.06 14:38

Uh oh. Ich glaube du hast Recht. Wenn kein einzelner Stein aussen liegt (ausser zuoberst), dann kann der Turm höchstens indifferent (hansa :wink: ) werden...


hansa - Sa 04.11.06 14:59

Siehste. In der Mitte können 1000 Steine gestapelt sein und der Turm kippt nicht. Aber wehe einer kommt noch an der Seite dabei. Je höher um so schlimmerer Effekt.

Aber das :

user profile icondelfiphan hat folgendes geschrieben:
...dann kann der Turm höchstens indifferent (hansa :wink: ) werden...


ist eine Frechheit. :mrgreen: Bin doch keine Tunte. :lol: