Avatar billede ast Nybegynder
13. november 2002 - 10:50 Der er 2 kommentarer og
1 løsning

3D cube med tekst...

Hej,

Er der nogen der kan lave en 3D-cube der kan rotere om sig selv. Det er planen at der skal være tekst på hver enkel kant af cuben. Oven i hatten skal det være muligt at ændre på teksten uden de store manøvrer...

Det er ikke krav til hvilket program den skal laves i, men jo simplere jo bedre :)

På forhånd tak
Avatar billede hb5v6 Nybegynder
13. november 2002 - 23:09 #1
du kan lave det i Java.

----------------------------------------------
import java.applet.*;
import java.awt.*;
import java.io.*;

public class cube  extends java.applet.Applet implements java.lang.Runnable {
  //core 3d stuff
  world3d w;
  meshBuilder mb;
  mesh3d obj;
  matrix34 rot; //incremental rotation

  Frame frm; //needed if we arent in an applet
  Thread t; //needed if we ARE in an applet
  boolean isinApplet=true;
 
  //animation stuff
  int delay; //to get a fixed framerate
  double swing; //for the cameras swing
 
  //to prevent flicker
  Dimension offDimension; Image offImage;  Graphics offGraphics;

  //This lets the same program run as an applet and a java program
  public static void main(String[] argv) {
    cube c = new cube();
    c.isinApplet=false;
    c.frm = new Frame("3D-Cube");
    c.frm.add("Center", c);
    c.frm.show();
    c.init();
    c.start();
  }
   
  double toRadian(double n) {
  return n * Math.PI/180.0;
  }

  public void init(){
    int i=0;
   
    //frame rate stuff
    String str = getParameter("fps");

    int fps = (str != null) ? Integer.parseInt(str) : 30;

    delay = (fps > 0) ? (1000 / fps) : 100;
   
    //create a cube
    mb = new meshBuilder();
    obj = mb.mkCube(50);
    mb=null;   

    //set cubes colors
    for(i = 0; i < obj.vertices(); i++)
      obj.vertex(i).color=0x00FF0000;

    obj.transform.setDirection(toRadian(45.0), 0.0, 1.0, 0.0);
    obj.transform.setOffset(0.0, 0.0, 160.0);
   
    rot = new matrix34(toRadian(3.0), 0.5, -1.0, 5.0);

    //place it in the world
    w = new world3d();
    w.push(obj);

    //set the worlds camera at 0,0,0 defaults fov to 70
    w.camera.transform.setIdentity();
    str = getParameter("fov");
    w.camera.fov = toRadian((str != null) ? Integer.parseInt(str) : 70.0);
    swing=0.0;
   
    //start the damned applet already
    t=new Thread(this);
    t.start();
  }
   
  public void run(){   
  while(Thread.currentThread()==t) {
      repaint();   
      try {      // Delay for a while
        Thread.sleep(delay);     
      } catch (InterruptedException e) {     
    break;
      }   
      doframe();    //update world
  }
  }
 
  public void stop() {
    t = null;
  }
 
  public void paint(Graphics g) {
    if (offImage != null) {
      g.drawImage(offImage, 0, 0, null); // Paint offscreen image onto screen
    }
  }
 
  public void update(Graphics g) {
    Dimension d = size();

    // Create offscreen image
    if ((offGraphics == null)
    || (d.width != offDimension.width)
        || (d.height != offDimension.height)) {
        offDimension = d;
        offImage = createImage(d.width, d.height);
        offGraphics = offImage.getGraphics();
    }

  // Paint current frame into offscreen image
  offGraphics.setColor(getBackground());
  offGraphics.fillRect(0, 0, d.width, d.height);

  w.render(offGraphics, 0, 0, size().width, size().height);
  g.drawImage(offImage, 0, 0, null); // Paint offscreen image onto screen
  }
 
  public void doframe() {
    //rotate the object by applying rotation on it
    obj.transform.mul(rot);     
  }     
};


--------------------------------------------------


--> HB5v6
Avatar billede ast Nybegynder
15. november 2002 - 09:35 #2
Jeg siger mange tak...

En udmærket løsning, og bestemt noget jeg kan arbejde videre med :)
Avatar billede kegud Nybegynder
02. december 2002 - 08:19 #3
nej
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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