Halbkreise, halbe Ellipsen, halbe Rechtecke, usw. zeichnen

  • GM 7
  • Halbkreise, halbe Ellipsen, halbe Rechtecke, usw. zeichnen

    Hi, ich wollte mal fragen, ob es mit dem Gamemaker möglich ist...

    ...halbe Kreise zu zeichnen, also dass man z.b. wenn man nur die outline zeichnet, dann eine gebogene Linie hat, die halt nicht zusammengeführt ist.

    Also so:


    Gehen eig. auch noch kleinere Anteile vom Kreis, also z.b. Viertelkreise oder Zehntelkreise, usw.?



    Achja, was mir gerade eingefallen ist:

    Wie mache ich eine dickere Outline? Funktioniert das überhaupt?
    Gruß Gamer
  • ja das funktioneirt alles jedoch nur wenn du es selebr machst.

    (oder gibts da echt ne GM funktion?= ich glaube nicht)

    eine kreis bewegung ist qasi die überlöappung 2er orthogonalen (heißt das so?) schwingungen.

    im klartext:

    x(t)=r*cos(w*t); w ist die "winkelgeschwindigkeit", und t der zeitpunkt.

    y(t)=r*sin(w*t);

    nun lässd du t imemr weiter wachsen und zwar:

    w=2*pi*1/T und wenn du dann nen halbkreis haben willsd muss t von 0 bis 1/2*T gehen.

    nun lsst du so nacheinander jeden punkt zeiechnen in EINEM event, dann wirds ja "sofort" alels auf einmal gezeichnet.

    für ellipsen müssen r für x und y richtung unterschiedlich sein.

    eine "outline" kannsd du hinzufügen indem du zB 3mal diese kreisbewegung machst, einmal mit radius r , einmal mit r-1 und einmal mit r+1.
  • OK, Vielen Dank!

    ich versteh nicht ganz wie ich jeden Punkt zeichnen lassen soll?


    edit: hab nochmal ne Frage:

    Kann man es mit nem Blendmode oder irgendwie anders machen, dass die Outline bei nem Kreis schöner gezeichnet wird, weil die sieht so verpixelt aus?
    Gruß Gamer

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von The Gamer ()

  • GML-Quellcode

    1. draw_primitive_begin(pr_linestrip);
    2. for (i=winkel1;i<=winkel2;i+=1) {
    3. xx = punktx+lengthdir_x(radius,i);
    4. yy = punkty+lengthdir_y(radius,i);
    5. draw_vertex(xx,yy);
    6. }
    7. draw_primitive_end();
    Und das ganze mit Breite:

    GML-Quellcode

    1. draw_primitive_begin(pr_trianglestrip);
    2. for (i=winkel1;i<=winkel2;i+=1) {
    3. xx = punktx+lengthdir_x(radius-breite/2,i);
    4. yy = punkty+lengthdir_y(radius-breite/2,i);
    5. draw_vertex(xx,yy);
    6. xx = punktx+lengthdir_x(radius+breite/2,i);
    7. yy = punkty+lengthdir_y(radius+breite/2,i);
    8. draw_vertex(xx,yy);
    9. }
    10. draw_primitive_end();
    (Nicht getestet!)

    The Gamer schrieb:

    Kann man es mit nem Blendmode oder irgendwie anders machen, dass die Outline bei nem Kreis schöner gezeichnet wird, weil die sieht so verpixelt aus?
    Nein, dafür sind Blendmodes auch gar nicht zuständig.
  • edit: danke copyboy, funktioniert, aber wie zeichne ich das ganze jetzt ohne outline, also gefüllt?

    eidt2: habs rausbekommen, einfach das zweite ein bisschen verändern :D


    das mit der verpixelten Outline, kann man das irgendwie anders verschönern?
    Gruß Gamer

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von The Gamer ()

  • Gefüllt:

    GML-Quellcode

    1. draw_primitive_begin(pr_trianglefan);
    2. draw_vertex(punktx,punkty);
    3. for (i=winkel1;i<=winkel2;i+=1) {
    4. xx = punktx+lengthdir_x(radius,i);
    5. yy = punkty+lengthdir_y(radius,i);
    6. draw_vertex(xx,yy);
    7. }
    8. draw_primitive_end();

    Verschönern könntest du es, indem du mehrere Linien mit verschiedenem Alpha-Wert zeichnest.

    GML-Quellcode

    1. draw_set_alpha(0.5);
    2. draw_circle_part(xx,yy,radius-0.5);
    3. draw_circle_part(xx,yy,radius+0.5);
    4. draw_set_alpha(1);
    5. draw_circle_part(xx,yy,radius);
  • Benutzer online 1

    1 Besucher