Guten Tag liebe Community,
ich programmiere gegenwärtig eine Space-Simulation in XNA(Ich verwende XNA weil es Komplikationen mit dem Content Importer des Monogames gibt).
Um die Distanz zur Sonne von Planet P zu bestimmen, nutze ich den Satz des Pythagoras..
Soweit so gut..
Mein Vorhaben ist es, die Distanz von Planet P zur Sonne B zu plotten(in Form einer Linie).
Es funktioniert... jedoch gibt es ein schwerwiegenden Fehler...
Ich konvertiere die Weltkoordinaten in Bildschirmkoordinaten mit dieser Methode um:
public static Vector2 Vec3ToVec2(GraphicsDevice device, Matrix projection, Matrix view, Matrix world, Vector3 current_pos)
{
var coord = device.Viewport.Project(current_pos, projection, view, world);
return new Vector2(coord.X, coord.Y);
}
Das funktioniert alles soweit.. Die Sonne B liegt bei P(0, 0, 0).. also
Game1.Vec3ToVec2(Device, Camera.ProjectionsMatrix, Camera.ViewMatrix, Matrix.Identity, new Vector3(GLOBALX, GLOBALY, GLOBALZ));
Das Ergebnis aus der "konvenablen" Perspektive:(ANHANG Screenshot 151)
Das Ergebnis aus der "inkonvenablen" Perspektive:(ANHANG Screenshot 152)
'Tis not too late to seek a newer world.
Konnte Anhang 152 nicht in den ersten Post integrieren... ) =
'Tis not too late to seek a newer world.
Es funktioniert... jedoch gibt es ein schwerwiegenden Fehler...
Welchen? Wie ist überhaupt die Frage?
LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
Guten Tag,
der Fehler liegt darin, dass wenn ich von der selben Position nach oben schaue, die Linien und die String gezeigt werden...
Anhang 152 ist von der selben Position nur nach oben geschaut... und Anhang 151 ist die selbe Position von unten geschaut.
Das bedeutet, es zeichnet da, wo ich es will, aber es zeichnet auch da, wo ich es nicht will.
Anders kann man das nicht formulieren... Ich mach kurz ein Video..
Gruß.
Link auf Video entfernt, bitte beachte [Hinweis] Wie poste ich richtig?, Punkt 6.1. Was für Bilder gilt, gilt auch für Videos: Keine externen Filehoster verwenden.
'Tis not too late to seek a newer world.
Hi 3r0rXx,
Das bedeutet, es zeichnet da, wo ich es will, aber es zeichnet auch da, wo ich es nicht will.
Anders kann man das nicht formulieren...
Doch kann man. Da braucht es auch kein Erklär-Video. Also: Wo sollen die Linien gezeichnet werden, und wo werden sie stattdessen gezeichnet? Was hast du bereits probiert, und woran bist du gescheitert? Bitte beachte unseren [Hinweis] Wie poste ich richtig?, besonders Punkt 4, 4.2 und 5.
Christian
Weeks of programming can save you hours of planning
Es tut mir leid,
es ist so:
Ich habe einen Planeten P1.. von dem ziehe ich eine Linie zu B1(0,0,0).
Das klappt auch gut.
Guckt man aber von der selben Position nach oben, wird plötzlich ebenso eine Linie gezeichnet..(Anhang 152)
Anders kann man es nicht formulieren.
Wie würdet ihr denn Strings und Linie im 3d Raum zeichnen?
Viele Grüße,
3r0rXx
'Tis not too late to seek a newer world.
Wie sehen denn die Z-Werte des Rückgabetypes von ViewPort.Project aus?
ImageTools for Silverlight: http://imagetools.codeplex.com | http://www.silverdiagram.net | http://www.cleancodedeveloper.de b:::
Die Werte liegen zwischen 0.9993f und 1.
EDIT: Ray Intersection klappt nun.. ich hatte das Ray nicht geupdated ^^+.
SpriteBatch Problems steht .
'Tis not too late to seek a newer world.
Ich habe einen Planeten P1.. von dem ziehe ich eine Linie zu B1(0,0,0).
Das klappt auch gut.
Guckt man aber von der selben Position nach oben, wird plötzlich ebenso eine Linie gezeichnet..(Anhang 152)
Ich hab das Problem immer noch nicht verstanden. Auf den beiden angehängten Bildern sind jede Menge Linien zu sehen. Ob die korrekt gezeichnet sind oder nicht, kann man nicht erkennen.
Nach dem Beitrag zu urteilen, den du gestern wegeditiert hast, scheint das Problem auch weniger beim Zeichnen der Linien zu liegen, als an der Projektion der Koordinaten von 3D in 2D. Vielleicht solltest du mal die wichtigsten Codestellen posten, also z.B. die Erstellung der Projektions-Matrizen. Ansonsten kannst du den Fehler auch selbst weiter eingrenzen, indem du deinen Code debuggst und testest:
[Artikel] Debugger: Wie verwende ich den von Visual Studio? und [Artikel] Unit-Tests: Einführung in das Unit-Testing mit VisualStudio
Christian
Weeks of programming can save you hours of planning
Guten Abend,
[...}indem du deinen Code debuggst und testest:[...]
So hab ich das Ray-Problem gelöst, nichtsdestotrotz, danke Dir ( =.
Also:
Wir nehmen an Planet Pluto liegt auf V3(200000,0,200000)..
Um Pluto nicht zu vernachlässigen, wird eine Linie gezeichnet, die den aktuellen Standort des Planeten Pluto markiert.(Denn Pluto ist weit entfernt lokalisiert)
Gucken wir nun von V3(0,0,0) zu V3(200000,0,200000) wird die Linie auch gezeichnet.(Yaw: 1, Pitch 1.5)
Rotiert man die Kamera aber nun um 180° also (Yaw: 1, Pitch MINUS 1.5) wird ebenso die Linie gezeichnet..
Ein Beispiel als Anhang(statt Linie, String)(Perspektive 1 und Perspektive 2, selbe Position, nur veränderte Yaw und Pitch Werte)
'Tis not too late to seek a newer world.
Ich habe wirklich keine Ahnung, was auf den Screenshots zu sehen sein soll. Oder auf was sich deine Beschreibung bezieht.
Ich frag jetzt nochmal: Unter welchen Umständen werden Linien korrekt gezeichnet, und unter welchen Umständen nicht? Wenn du das nicht beschreiben kannst, kann dir auch niemand bei der Problemlösung helfen. Wir sind keine Wahrsager.
Versuch dich bei der Problembeschreibung in einen Außenstehenden hineinzuversetzen, der keine Ahnung von deiner Vorgehensweise hat. Du kannst dir auch hier im Forum durchlesen, wie ähnliche Fragen formuliert wurden, die schneller eine Antwort bekommen haben. Wir haben auch in [Hinweis] Wie poste ich richtig? einige Tips zur Fragestellung zusammengefaßt. Aber das Beschreiben des Problems ist deine Aufgabe, die dir auch niemand abnehmen kann.
Christian
Weeks of programming can save you hours of planning
Anders kann man das nicht formulieren... Ich mach kurz ein Video..
Das ist der Grund, wieso es ohne ein Video nicht geht.
Man wird es erst verstehen, wenn man die Problemstellung auch sieht.
Auf den Screenshots sind die Namen Earth, Mercury, Venus et cetera zu sehen.
Einmal dann, wenn es auch sein soll.. also wenn man den Planeten sieht, sieht man auch seinen Namen; und ein anderes Mal, wenn man den Planeten NICHT sieht, aber trotz dessen seinen Namen.
Es tut mir leid, anders ist es einfach nicht zu beschreiben; und wenn dies der Moderation oder den Nutzer dieses Forums einfach zu nervig wird, bitte ich um die Schließung des Threads.
'Tis not too late to seek a newer world.