Avatar billede svuppenator Nybegynder
04. oktober 2001 - 13:47 Der er 5 kommentarer og
1 løsning

Rotation!!!

Hey jeg vilel roterer noget så jeg gik ind og kiggede på sun side og fandt noget om rotation! Uh great!! Ud fra deres eksempel ville jeg så selv roterer noget, men kan ikke rigtigt få min firkant til det.
Lige meget hvor jeg placere min repaint(); i koden vil den ikke roterer.
kode:
------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
class Firkant extends Frame
{
    AffineTransform at = new AffineTransform();
    private int x;
    private int y;
    private int b;
    private int h;
   
    public Firkant(int x, int y, int b, int h)
    {this.x=x;this.y=y;this.b=b;this.h=h;}
    public void tegnFirkant(Graphics g)
    {
        g.setColor(Color.lightGray);
        g.fillRect(x,y,b,h);
        for(int i=0;i<36;i++)
        {
            at.rotate(Math.toRadians(i));

        }
       
    }
}
public class rotate extends Frame
{
    AffineTransform at = new AffineTransform();
   
    public rotate()
    {
        super(\"Rotate Fætter\");
        setSize(640,640);
       
        show();
    }
   
    public void paint(Graphics g)
    {
        Firkant f1 = new Firkant(150,71,50,50);
        f1.tegnFirkant(g);
       
    }
   
    public static void main(String []args)
    {new rotate();}
}
Der er ingen repaint(); her for jeg ved ikke hvor jeg skal smide den.
Avatar billede carstenknudsen Nybegynder
04. oktober 2001 - 13:59 #1
Du skal huske at sætte den affine transformation i
din løkke;
    ((Graphics2D)g).setTransform(at);
dernæst skal du tegne objektet
    g.fillRect(x,y,b,h);
Jeg har testet dit program med disse ændringer og
det roterer firkanten.
Avatar billede svuppenator Nybegynder
04. oktober 2001 - 14:33 #2
ok... nu er det bare sådan at den skal rotere rundt om centret på firkanten og ikke roterer samtidigt med at den kører i en stor cirkel...
Avatar billede carstenknudsen Nybegynder
04. oktober 2001 - 14:40 #3
Det var ikke det der stod oprindelig.  Hvis du vil have
at et enkelt objekt roterer skal du sørge for at din
affine transformation har centrum i centrum af
den figur du roterer. Du skal så huske at kalde
translate(double,double) før du kalder rotate(double).
Avatar billede svuppenator Nybegynder
04. oktober 2001 - 14:43 #4
nej ok... sorry... det var bare et udforudset spørgsmål, troede selv at den ville starte i centrum af firkanten.
Avatar billede carstenknudsen Nybegynder
04. oktober 2001 - 14:50 #5
Jeg skriver lige et eksempel.
Avatar billede svuppenator Nybegynder
04. oktober 2001 - 14:52 #6
jeg fandt ud af det...

det du sagde med center er ikke nødvendigt.
man kan bare sætte to ekstra koordinator på rotate
altså rotate((...),x,y) hvor x,y er center af firkanten...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester