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 DE-CIX
Edge computing: behandling ved kilden
Edge computing revolutionerer den måde, data behandles på, ved at bringe kapacitet og ydeevne tættere på dér, hvor der er behov for det.
15. april 2025
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