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
Annonceindlæg fra Trustworks
Tillid i en Zero-Trust verden
Med voksende trusler, nye EU-krav og øget kompleksitet er cybersikkerhed nu en central ledelsesopgave på linje med strategi og økonomi.
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