Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

11

08.01.2014, 00:42

Was genau willst du erreichen? Dein Soll- und Ist-Vektor sind 2D Vektoren in der Ebene? Soll die Drehung animiert werden oder willst du einfach nur eine Matrix finden, die ein Objekt entsprechend ausrichtet!?

VanceRegnet

Frischling

  • »VanceRegnet« ist der Autor dieses Themas

Beiträge: 13

Wohnort: München

Beruf: CAD-Zeichner i.R.

  • Private Nachricht senden

12

08.01.2014, 14:49

Zitat

Gesamter Ordner und es sollte laufen.
Danke, läuft noch nicht aber es steht ^^

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

13

08.01.2014, 16:34

Ich entwickel unter Linux, kann sein dass der ein oder andere Header unter Windows so nicht existiert/verfügbar ist... aber eigentlich nicht.

VanceRegnet

Frischling

  • »VanceRegnet« ist der Autor dieses Themas

Beiträge: 13

Wohnort: München

Beruf: CAD-Zeichner i.R.

  • Private Nachricht senden

14

08.01.2014, 16:44

Was genau willst du erreichen? Dein Soll- und Ist-Vektor sind 2D Vektoren in der Ebene? Soll die Drehung animiert werden oder willst du einfach nur eine Matrix finden, die ein Objekt entsprechend ausrichtet!?
Ich beschreibe mal die Aufgabenstellung,zuerst, was ich bis jetzt erreicht habe :grumble:

// 0 <= t < 1 , 0 <= arg < 2pi
// 1 <= F < lim, hier F = 5
// hier phiR = 1
// phiS n*(F-1) / F * pi
// n <= 0 <= F
x = sin(F*2*pi*t*arg)*sin((F+1)*2*pi*t+phiR)
y = sin(F*2*p*it*arg+phiS)*sin((F+1)*2*pi*t+phiR*pi/2+phiS)

Zur besseren Darstellung im jpg habe ich die 2D-Version gewählt. Hätte gerne eine Animation angehängt, die sprengt aber das Speicherlimit.
Der Phasenoffset phiR bestimmt die Lage der Ebene, phiS kopiert die Kurve abstandsgleich.
Während einer Periode 2pi wandern die Momentanere einmal um den Ursprung.

Im 3D-Raum gibt es 8 bevorzugte phiR,in 2 Gruppen, die man als links- und rechtsdrehend bezeichnen könnte.
Sie erzeugen 4 Ebenen, senkrecht auf den Diagonalen eines gedachten Würfels.

Ich möchte nun 4 Wellen gleichzeitig darstellen und dabei Abstandsgleichheit zwischen den Wellen erreichen.
Meine Vermutung ist, dass die Wellen Schwingungen um den Ursprung machen müssen.
Ich könnte nun in einer 3fach-Schleife einen weiteren Phasenoffset phiY ermitteln, das würde aber bedeuten, dass ich Vertices dynamisch berechnen müsste, das würde dauern.
Darum meine Frage nach den Rotationswinkeln.

Ich hoffe, ihr greift mir unter die Arme, ich bin nicht kitzelig :)
p.s. Warum steht der Quelltext in einer Zeile, mache ich da was falsch ?
»VanceRegnet« hat folgendes Bild angehängt:
  • IdefixeVR001.jpg

VanceRegnet

Frischling

  • »VanceRegnet« ist der Autor dieses Themas

Beiträge: 13

Wohnort: München

Beruf: CAD-Zeichner i.R.

  • Private Nachricht senden

15

09.01.2014, 09:05

Zitat

Ich entwickel unter Linux, kann sein dass der ein oder andere Header unter Windows so nicht existiert/verfügbar ist... aber eigentlich nicht.
Ich benutze Xcode 5, OS X 10.8
Was ich meinte, war, ich hab' die files fehlerfrei eingebunden aber noch nicht angefasst.

MVG Uwe

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

16

09.01.2014, 09:56

[...]

Ich bin mir nicht ganz sicher, ob ich diese Erklärung richtig verstanden hab. Ich seh da oben nur x und y Koordinaten die offenbar Punkte auf einer Ebene beschreiben. Wo ist jetzt der Vektor, an dem etwas ausgerichtet werden soll? Wie genau ist die Ebene (die ja offenbar in 3D liegt) definiert?

p.s. Warum steht der Quelltext in einer Zeile, mache ich da was falsch ?

Das ist leider ein bekanntes Problem, tritt auf, wenn du deinen Beitrag im Editor- und nicht im Quellcodemodus verfasst (ober der Textbox, in der du deinen Beitrag eingibst, sind Tabs zum umschalten).

Btw: Das Forum unterstützt auch LaTeX ;)

§\begin{align} x &= \sin(2 \pi F t \alpha) \sin(2 \pi (F+1) t + \varphi_R) \\ y &= \sin(2 \pi F t \alpha + \varphi_S) \sin(2 \pi (F+1) t + \frac{\pi}{2} \varphi_R + \varphi_S) \end{align}§

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dot« (09.01.2014, 11:04)


VanceRegnet

Frischling

  • »VanceRegnet« ist der Autor dieses Themas

Beiträge: 13

Wohnort: München

Beruf: CAD-Zeichner i.R.

  • Private Nachricht senden

17

09.01.2014, 10:20

Zitat

Ich bin mir nicht ganz sicher, ...
Ich bin mir ganz sicher, dass ich die mathematische Sprache nicht beherrsche.:(
In meinem Kopf ist der Punkt x,y,z ein Vektor, wenn er vom Ursprung eine Richtung angibt.
Wenn es 1 Uhr ist, muss ich 5 Minuten warten, bis beide Zeiger übereinander stehen.
Der grosse hat dann 30 grad zurückgelegt.
Wenn es doch immer so eifach wäre. :)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

18

09.01.2014, 10:22

Ok, d.h. x und y da oben geben eine Richtung an!? Dann fehlt mir immer noch die Ebene, in der dieser Richtungsvektor liegen soll... ;)

Edit: Hab den Thread mal hierher verschoben...

VanceRegnet

Frischling

  • »VanceRegnet« ist der Autor dieses Themas

Beiträge: 13

Wohnort: München

Beruf: CAD-Zeichner i.R.

  • Private Nachricht senden

19

09.01.2014, 12:30

Ok, d.h. x und y da oben geben eine Richtung an!? Dann fehlt mir immer noch die Ebene, in der dieser Richtungsvektor liegen soll...
Die Vektorgleichung der Ebene ist mir nicht geläufig, liefern kann ich die Normale, da hast du die gewünschten 3 Punkte.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
void triangleNormal(float p0[3], float p1[3], float p2[3], float result[3])
{
    float v0[3], v1[3];
    unsigned ii;
    for(ii=0;ii<3;ii++)
    {
        v0[ii] = p0[ii] - p1[ii];
        v1[ii] = p2[ii] - p1[ii];
    }
    crossproduct(v0, v1, result);
    normalize(result);
}

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

20

09.01.2014, 12:35

Gut, damit hast du eine Ebene definiert. Was jetzt noch fehlt, ist die Ausrichtung deines Koordinatensystems in dieser Ebene. Die Normale definiert nur, wie die Ebene im Raum liegt. Damit wir aber wissen, was x und y in dieser Ebene bedeuten sollen, müssen wir wissen, wie die x und y Achse in die Ebene gelegt werden sollen (es gibt unendlich viele Möglichkeiten, die x und y Achse um die Normale herum anzuordnen). Sobald wir das haben, sind wir fertig, weil damit können wir dann direkt eine Matrix angeben, die aus der Ebene heraus nach 3D transformiert...

Edit: Es kann natürlich sein, dass dir diese Ausrichtung egal ist!?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (09.01.2014, 12:46)


Werbeanzeige

Ähnliche Themen