Kegel in 3D um seine Bodenfläche rotieren lassen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Kegel in 3D um seine Bodenfläche rotieren lassen

    Also, ich möchte mit GM 3D einen Kegel zeichen, der (wie der Titel sagt) um seine Bodenfläche rotiert.
    Momentan benutze ich folgenden Code:

    GML-Quellcode

    1. xa=x+lengthdir_x(20,direction);
    2. ya=y+lengthdir_y(20,direction);
    3. xb=x+lengthdir_x(20,direction+180);
    4. yb=y+lengthdir_y(20,direction+180);
    5. xc=x+lengthdir_x(20+d*4,45);
    6. yc=y+lengthdir_y(20+d*4,45);
    7. xd=x+lengthdir_x(20+d*4,45+180);
    8. yd=y+lengthdir_y(20+d*4,45+180);
    9. draw_set_color(c_red);
    10. d3d_transform_set_identity();
    11. d3d_transform_add_translation(0,-y,-z);
    12. d3d_transform_add_rotation_x(90);
    13. d3d_transform_add_translation(0,y,z);
    14. d3d_transform_add_translation(-xa,-ya,0);
    15. d3d_transform_add_rotation_z(direction);
    16. d3d_transform_add_translation(xa,ya,0);
    17. d3d_draw_cone(xa-1,ya,z-10,xa+1,ya-20,z+10,-1,1,1,true,24);
    Alles anzeigen

    allerdings funktioniert das nicht wirklich, der Kegel eiert irgendwie herum, aber er rotiert nicht so, wie er soll.
    Ich habe mir auch schon Moolts 3D Einsteigertut angeschaut, aber ich komme mit den Transformationen immer
    noch nicht wirklich zurecht. Hoffentlich kann mir einer von euch helfen.
    Gruß, Spellmaker
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • Für eine Rotation um die Z Achse reicht so ein code:

    GML-Quellcode

    1. // xrot = Dreheung um die z Achse
    2. xrot+=0.1 // Muss natürlich angepasst/geändert werden
    3. d3d_transform_add_translation(-x+0,-y+0,-z+15,);
    4. d3d_transform_add_rotation_z(xrot);
    5. d3d_transform_add_translation(x+0,y+0,z+15);
    6. d3d_draw_cone(x-30,y-30,z-30,x+30,y+30,z+30,-4,1,1,0,16);
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Ich habs irgendwie geschafft, mein Problem selber zu lösen.
    Allerdings dreht sich der Kegel jetzt nicht um seine Bodenfläche, sondern um seinen Mittelpunkt.
    (Hat sich für meine Problemstellung im nachhinein als sinnvoller herausgestellt)
    Für alle, die sowas auch mal machen müssen:

    GML-Quellcode

    1. //kegel zeichnen
    2. draw_set_color(c_red);
    3. d3d_transform_set_identity();
    4. d3d_transform_add_translation(0,-y,-z);
    5. d3d_transform_add_rotation_x(90);
    6. d3d_transform_add_translation(0,y,z);
    7. d3d_transform_add_translation(-x,-y,0);
    8. d3d_transform_add_rotation_z(direction+90);
    9. d3d_transform_add_translation(x,y,0);
    10. d3d_draw_cone(x-1,y+20,z-20,x+1,y-20,z+20,-1,1,1,true,24);

    der Punkt (x,y,z) bezeichnet den Mittelpunkt des kegels

    Edit: Danke WIN, ich hab deinen Post leider übersehen X(
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • Benutzer online 1

    1 Besucher