Verfügbare Informationen zu "Praktika Java / Computergraphik"
Qualität des Beitrags: Beteiligte Poster: timo Forum: 14. Info Forenbeschreibung: Informatiker der NTA-Isny aus dem Unterforum: Java Antworten: 1 Forum gestartet am: Donnerstag 15.06.2006 Sprache: deutsch Link zum Originaltopic: Praktika Java / Computergraphik Letzte Antwort: vor 16 Jahren, 8 Monaten, 13 Tagen, 3 Stunden, 53 Minuten
Alle Beiträge und Antworten zu "Praktika Java / Computergraphik"
Re: Praktika Java / Computergraphik
timo - 14.07.2007, 13:40Praktika Java / Computergraphik
Folgende Lösungen der Aufgaben der Praktika wurden gesammelt und von einzelnen Teilnehmern der Übungsgruppe 14. Info zur Verfügung gestellt. Es wird kein Anspruch auf Vollständigkeit erhoben.
Praktika 1
import java.awt.*;
import java.awt.event.*;
import javax.media.j3d.*;
import javax.swing.*;
import javax.vecmath.*;
import com.sun.j3d.utils.behaviors.interpolators.*;
import com.sun.j3d.utils.behaviors.keyboard.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;
class Aufgabe1 extends JFrame {
// Konstruktor von Aufgabe 1
public Aufgabe1() {
// Anwendung beenden beim Schliessen des Fensters
addWindowListener(new WindowAdapter () {
public void windowClosing(WindowEvent evt) {
System.exit(0);
}
});
// Ab hier folgt der Java 3D Code
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas3D = new Canvas3D(config);
getContentPane().add("Center", canvas3D);
SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
simpleU.getViewingPlatform().setNominalViewingTransform();// 2a
BranchGroup scene = createContentBranchGraph();
simpleU.addBranchGraph(scene);
}
// Diese Funktion muss angepasst werden (Rückgabetyp beachten!)
public BranchGroup createContentBranchGraph()
{
BranchGroup wuerfel = new BranchGroup();
wuerfel.addChild(new ColorCube(0.4));
return wuerfel;
}
public static void main(String argv[]) {
Aufgabe1 mainFrame = new Aufgabe1();
mainFrame.setSize(400, 400);
mainFrame.setTitle("ComputerGrafik Praktikum - Aufgabe 1");
mainFrame.setVisible(true);
}
}
Praktika 2
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.behaviors.interpolators.*;
import com.sun.j3d.utils.behaviors.keyboard.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;
class Aufgabe2 extends Frame
{
// Konstruktor von Aufgabe 2
public Aufgabe2()
{
// Anwendung beenden beim Schliessen des Fensters
addWindowListener(new WindowAdapter ()
{
public void windowClosing(WindowEvent evt)
{
System.exit(0);
}
});
// Ab hier folgt der Java 3D Code
setLayout(new BorderLayout());
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas3d = new Canvas3D(config);
add("Center", canvas3d);
SimpleUniverse simpleU = new SimpleUniverse(canvas3d);
BranchGroup scene = createContentBranchGraph();
simpleU.addBranchGraph(scene);
// Menü-Steuerung
// Pfeiltasten: UP - DOWN - LEFT - RIGHT
BranchGroup viewBranchGroup = new BranchGroup();
TransformGroup viewPlatform = simpleU.getViewingPlatform().getViewPlatformTransform();
KeyNavigatorBehavior keyNavBeh = new KeyNavigatorBehavior(viewPlatform);
keyNavBeh.setSchedulingBounds(new BoundingSphere(new Point3d(0,0,0), 1000.0));
//VewBranchGraph zusammenstellen und dem Simple Universe hinzufügen
viewBranchGroup.addChild(keyNavBeh);
simpleU.getViewingPlatform().addChild(viewBranchGroup);
}
// Diese Funktion muss angepasst werden (Rückgabetyp beachten!)
public BranchGroup createContentBranchGraph()
{
BranchGroup objRoot = new BranchGroup();
//Drehung
Transform3D rotate = new Transform3D();
Transform3D tempRotate = new Transform3D();
rotate.rotX(Math.PI/4.0d);
tempRotate.rotY(Math.PI/6.0d);
rotate.mul(tempRotate);
TransformGroup objRotate = new TransformGroup(rotate);
//Drehung um die Achse
objRotate.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
Alpha alpha = new Alpha(-1, Alpha.INCREASING_ENABLE, 0, 0, 4000, 0, 0, 0, 0, 0);
RotationInterpolator dreh = new RotationInterpolator(alpha, objRotate, rotate, 0.0f, (float) Math.PI*3.0f);
dreh.setSchedulingBounds(new BoundingSphere());
objRoot.addChild(dreh);
objRoot.addChild(objRotate);
objRotate.addChild(new ColorCube(0.4));
objRoot.compile();
return objRoot;
}
public static void main(String argv[])
{
Aufgabe2 mainFrame = new Aufgabe2();
mainFrame.setSize(400, 400);
mainFrame.setTitle("ComputerGrafik Praktikum - Aufgabe 2");
mainFrame.setVisible(true);
}
}
Praktika 4
import java.awt.*;
import java.awt.event.*;
import javax.media.j3d.*;
import javax.swing.*;
import javax.vecmath.*;
import com.sun.j3d.utils.behaviors.interpolators.*;
import com.sun.j3d.utils.behaviors.keyboard.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.image.TextureLoader;
import com.sun.j3d.loaders.objectfile.*;
import java.io.*;
import com.sun.j3d.loaders.*;
class Aufgabe1 extends Frame {
// Konstruktor von Aufgabe 1
public Aufgabe1() {
// Anwendung beenden beim Schliessen des Fensters
addWindowListener(new WindowAdapter () {
public void windowClosing(WindowEvent evt) {
System.exit(0);
}
});
// Ab hier folgt der Java 3D Code
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas3D = new Canvas3D(config);
add("Center", canvas3D);
SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
simpleU.getViewingPlatform().setNominalViewingTransform();
BranchGroup scene = createContentBranchGraph();
simpleU.addBranchGraph(scene);
BranchGroup viewBranchGraph = new BranchGroup();
TransformGroup viewPlatform = simpleU.getViewingPlatform().getViewPlatformTransform();
/*
rechts, links, hoch, runter, bild auf, bild ab
ZUERST NACH LINKS ODER RECHTS SONST HAUT DAS OBJEKT AB
*/
KeyNavigatorBehavior keyNav = new KeyNavigatorBehavior(viewPlatform);
keyNav.setSchedulingBounds(new BoundingSphere(new Point3d(), 1000.0));
viewBranchGraph.addChild(keyNav);
simpleU.getViewingPlatform().addChild(viewBranchGraph);
simpleU.getViewingPlatform().setNominalViewingTransform();
}
// Diese Funktion muss angepasst werden (Rückgabetyp beachten!)
public BranchGroup createContentBranchGraph()
{
BranchGroup objRoot = new BranchGroup();
Appearance appear = new Appearance();
//TextureLoader loader = new TextureLoader("earth.jpg", null);
//ImageComponent2D image = loader.getImage();
//Texture2D texture = new Texture2D(Texture.BASE_LEVEL, Texture.RGBA, image.getWidth(), image.getHeight());
//texture.setImage(0, image);
//appear.setTexture(texture);
//Sphere sphere = new Sphere(1.0f, Primitive.GENERATE_TEXTURE_COORDS, appear);
Transform3D rotate = new Transform3D();
Transform3D tempRotate = new Transform3D();
TransformGroup objRotate = new TransformGroup(rotate);
objRotate.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
Alpha alpha = new Alpha(-1,Alpha.INCREASING_ENABLE,0,0,2000,0,0,0,0,0);
RotationInterpolator dreh = new RotationInterpolator (alpha,objRotate,rotate,0.0f,(float) Math.PI*2.0f);
dreh.setSchedulingBounds(new BoundingSphere(new Point3d(0.0,0.0,0.0),100.0));
try{
Scene s = null;
ObjectFile f = new ObjectFile (ObjectFile.RESIZE);
s = f.load("airtable.obj");
objRoot.addChild(s.getSceneGroup());
}
catch(IOException e){}
AmbientLight lightA = new AmbientLight();
lightA.setInfluencingBounds(new BoundingSphere());
objRoot.addChild(lightA);
DirectionalLight lightD1 = new DirectionalLight();
lightD1.setInfluencingBounds(new BoundingSphere());
Vector3f direction1 = new Vector3f(-1.0f, -1.0f, -0.5f);
direction1.normalize();
lightD1.setDirection(direction1);
lightD1.setColor(new Color3f(0.0f, 0.0f, 1.0f));
objRoot.addChild(lightD1);
objRoot.addChild(dreh);
objRoot.addChild(objRotate);
//objRotate.addChild(sphere); // Erde verschwindet
return objRoot;
}
public static void main(String argv[]) {
Aufgabe1 mainFrame = new Aufgabe1();
mainFrame.setSize(400, 400);
mainFrame.setTitle("ComputerGrafik Praktikum - Aufgabe 1");
mainFrame.setVisible(true);
}
}
Praktika 6
// Auvgabe 6 - Java-Praktikum 22.05.2007
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import javax.media.j3d.*;
import javax.swing.*;
import javax.vecmath.*;
import com.sun.j3d.utils.behaviors.interpolators.*;
import com.sun.j3d.utils.behaviors.keyboard.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;
class Aufgabe1 extends JFrame {
// Konstruktor von Aufgabe 1
public Aufgabe1() {
// Anwendung beenden beim Schliessen des Fensters
addWindowListener(new WindowAdapter () {
public void windowClosing(WindowEvent evt) {
System.exit(0);
}
});
// Ab hier folgt der Java 3D Code
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
Canvas3D c3d = new Canvas3D(config);
getContentPane().add("Center", c3d);
SimpleUniverse simpleU = new SimpleUniverse(c3d);
simpleU.getViewingPlatform().setNominalViewingTransform();
BranchGroup scene = createContentBranchGraph();
simpleU.addBranchGraph(scene);
// Menü-Steuerung
// Pfeiltasten: UP - DOWN - LEFT - RIGHT
BranchGroup viewBranchGroup = new BranchGroup();
TransformGroup viewPlatform = simpleU.getViewingPlatform().getViewPlatformTransform();
KeyNavigatorBehavior keyNavBeh = new KeyNavigatorBehavior(viewPlatform);
keyNavBeh.setSchedulingBounds(new BoundingSphere(new Point3d(0,0,0), 1000.0));
//VewBranchGraph zusammenstellen und dem Simple Universe hinzufügen
viewBranchGroup.addChild(keyNavBeh);
simpleU.getViewingPlatform().addChild(viewBranchGroup);
}
// Diese Funktion muss angepasst werden (Rückgabetyp beachten!)
public BranchGroup createContentBranchGraph()
{
myCube cube = new myCube();
BranchGroup wuerfel = new BranchGroup();
//wuerfel.addChild(new ColorCube(0.4));
wuerfel.addChild(new Shape3D(cube));
return wuerfel;
}
public BranchGroup createSceneGraph()
{
// Create the root of the branch graph
BranchGroup objRoot = new BranchGroup();
// rotate object has composited transformation matrix
Transform3D rotate = new Transform3D();
Transform3D tempRotate = new Transform3D();
rotate.rotX(Math.PI/4.0d);
tempRotate.rotY(Math.PI/5.0d);
rotate.mul(tempRotate);
TransformGroup objRotate = new TransformGroup(rotate);
objRoot.addChild(objRotate);
objRotate.addChild(new ColorCube(0.4));
// Let Java 3D perform optimizations on this scene graph.
objRoot.compile();
return objRoot;
}
public static void main(String argv[]) {
Aufgabe1 mainFrame = new Aufgabe1();
mainFrame.setSize(400, 400);
mainFrame.setTitle("ComputerGrafik Praktikum - Aufgabe 2");
mainFrame.setVisible(true);
}
}
class myCube extends QuadArray
{
private float[] verts=
{
1.0f, -1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
-1.0f, 1.0f, 1.0f,
-1.0f, -1.0f, 1.0f,
1.0f, -1.0f, 1.0f,
1.0f, -1.0f, -1.0f,
1.0f, 1.0f, -1.0f,
1.0f, 1.0f, 1.0f,
1.0f, -1.0f, -1.0f,
-1.0f, -1.0f, -1.0f,
-1.0f, 1.0f, -1.0f,
1.0f, 1.0f, -1.0f,
-1.0f, 1.0f, -1.0f,
-1.0f, -1.0f, -1.0f,
-1.0f, -1.0f, 1.0f,
-1.0f, 1.0f, 1.0f,
-1.0f, -1.0f, -1.0f,
1.0f, -1.0f, -1.0f,
1.0f, -1.0f, 1.0f,
-1.0f, -1.0f, 1.0f,
-1.0f, 1.0f, -1.0f,
-1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
1.0f, 1.0f, -1.0f,
};
//private float[] normals=[];
private float[] colors=
{
0.2f, 0.3f, 0.4f,
0.5f, 0.3f, 0.1f,
0.2f, 0.3f, 0.3f,
0.2f, 0.3f, 0.4f,
0.9f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.9f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.9f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 03.f, 0.4f,
0.9f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.9f, 0.4f,
};
myCube()
{
super(24,QuadArray.COORDINATES|QuadArray.COLOR_3);
setCoordinates(0,verts);
//setNormals(0,verts);
setColors(0,colors);
}
}
Praktika 7
// Aufgabe 7 - Java-Praktikum 12.06.2007
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import javax.media.j3d.*;
import javax.swing.*;
import javax.vecmath.*;
import com.sun.j3d.utils.behaviors.interpolators.*;
import com.sun.j3d.utils.behaviors.keyboard.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;
class Aufgabe1 extends JFrame {
// Konstruktor von Aufgabe 1
public Aufgabe1() {
// Anwendung beenden beim Schliessen des Fensters
addWindowListener(new WindowAdapter () {
public void windowClosing(WindowEvent evt) {
System.exit(0);
}
});
// Ab hier folgt der Java 3D Code
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
Canvas3D c3d = new Canvas3D(config);
getContentPane().add("Center", c3d);
SimpleUniverse simpleU = new SimpleUniverse(c3d);
simpleU.getViewingPlatform().setNominalViewingTransform();
BranchGroup scene = createContentBranchGraph();
simpleU.addBranchGraph(scene);
// Menü-Steuerung
// Pfeiltasten: UP - DOWN - LEFT - RIGHT
BranchGroup viewBranchGroup = new BranchGroup();
TransformGroup viewPlatform = simpleU.getViewingPlatform().getViewPlatformTransform();
KeyNavigatorBehavior keyNavBeh = new KeyNavigatorBehavior(viewPlatform);
keyNavBeh.setSchedulingBounds(new BoundingSphere(new Point3d(0,0,0), 1000.0));
//VewBranchGraph zusammenstellen und dem Simple Universe hinzufügen
viewBranchGroup.addChild(keyNavBeh);
simpleU.getViewingPlatform().addChild(viewBranchGroup);
}
// Diese Funktion muss angepasst werden (Rückgabetyp beachten!)
public BranchGroup createContentBranchGraph()
{
// myCube cube = new myCube();
BranchGroup wuerfel = new BranchGroup();
// wuerfel.addChild(new ColorCube(0.4));
// wuerfel.addChild(new Shape3D(cube));
wuerfel.addChild(new Haus());
return wuerfel;
}
public BranchGroup createSceneGraph()
{
// Create the root of the branch graph
BranchGroup objRoot = new BranchGroup();
// rotate object has composited transformation matrix
Transform3D rotate = new Transform3D();
Transform3D tempRotate = new Transform3D();
rotate.rotX(Math.PI/4.0d);
tempRotate.rotY(Math.PI/5.0d);
rotate.mul(tempRotate);
TransformGroup objRotate = new TransformGroup(rotate);
objRoot.addChild(objRotate);
objRotate.addChild(new ColorCube(0.4));
// Let Java 3D perform optimizations on this scene graph.
objRoot.compile();
return objRoot;
}
public static void main(String argv[]) {
Aufgabe1 mainFrame = new Aufgabe1();
mainFrame.setSize(400, 400);
mainFrame.setTitle("ComputerGrafik Praktikum - Aufgabe 2");
mainFrame.setVisible(true);
}
}
/*
class myCube extends QuadArray
{
private float[] verts=
{
1.0f, -1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
-1.0f, 1.0f, 1.0f,
-1.0f, -1.0f, 1.0f,
1.0f, -1.0f, 1.0f,
1.0f, -1.0f, -1.0f,
1.0f, 1.0f, -1.0f,
1.0f, 1.0f, 1.0f,
1.0f, -1.0f, -1.0f,
-1.0f, -1.0f, -1.0f,
-1.0f, 1.0f, -1.0f,
1.0f, 1.0f, -1.0f,
-1.0f, 1.0f, -1.0f,
-1.0f, -1.0f, -1.0f,
-1.0f, -1.0f, 1.0f,
-1.0f, 1.0f, 1.0f,
-1.0f, -1.0f, -1.0f,
1.0f, -1.0f, -1.0f,
1.0f, -1.0f, 1.0f,
-1.0f, -1.0f, 1.0f,
-1.0f, 1.0f, -1.0f,
-1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
1.0f, 1.0f, -1.0f,
};
//private float[] normals=[];
private float[] colors=
{
0.2f, 0.3f, 0.4f,
0.5f, 0.3f, 0.1f,
0.2f, 0.3f, 0.3f,
0.2f, 0.3f, 0.4f,
0.9f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.9f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.9f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 03.f, 0.4f,
0.9f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.3f, 0.4f,
0.2f, 0.9f, 0.4f,
};
myCube()
{
super(24,QuadArray.COORDINATES|QuadArray.COLOR_3);
setCoordinates(0,verts);
//setNormals(0,verts);
setColors(0,colors);
}
}
*/
class Haus extends Shape3D
{
private Geometry HausGeometry;
public Haus()
{
HausGeometry = createGeometry();
setGeometry(HausGeometry);
}
private Geometry createGeometry()
{
float rectangles[]=
{
// Floor
0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f,
// East side
1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f,
// West side
0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f,
// South side
0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f,
// North side
0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f,
// Roof east side
1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.5f, 1.5f, 0.0f, 0.5f, 1.5f, 1.0f,
// Roof west side
0.0f, 1.0f, 1.0f, 0.5f, 1.5f, 1.0f, 0.5f, 1.5f, 0.0f, 0.0f, 1.0f, 0.0f
};
float triangles[]=
{
0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.5f, 1.5f, 1.0f,
0.5f, 1.5f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f
};
int vertexCount = rectangles.length/3;
QuadArray quad = new QuadArray(vertexCount, QuadArray.COORDINATES | QuadArray.COLOR_3);
quad.setCoordinates(0, rectangles);
vertexCount = triangles.length/3;
TriangleArray tri = new TriangleArray(vertexCount, TriangleArray.COORDINATES | TriangleArray.COLOR_3);
tri.setCoordinates(0,triangles);
// Define colors. Otherwise everything will be white
Color3f colors[] = new Color3f[rectangles.length/3];
for (int i=0; i<4; i++) colors[i] = new Color3f(Color.white); // Floor
for (int i=4; i<20; i++) colors[i] = new Color3f(Color.blue); // Walls
for (int i=20; i<28; i++) colors[i] = new Color3f(Color.red); // Roof
quad.setColors(0, colors); // Java 3D
colors = new Color3f[triangles.length/3];
for (int i=0; i<6; i++) colors[i] = new Color3f(Color.blue);
tri.setColors(0, colors);
setGeometry(quad); // Shape3D methods
insertGeometry(tri, 0);
return getGeometry();
}
}
Praktika 8
import java.awt.*;
import javax.swing.*;
import java.awt.image.*;
public class Aufgabe8b extends JFrame {
private BufferedImage image;
private final static int XMAX = 320;
private final static int YMAX = 240;
private final static double AUGE_X =0.0;
private final static double AUGE_Y =0.0;
private final static double AUGE_Z =500.0;
private final static double KUGEL_X =0.0;
private final static double KUGEL_Y =0.0;
private final static double KUGEL_Z =-100.0;
private final static double KUGEL_RADIUS =100.0;
private final static double DISTANCE =300.0;
private Aufgabe8b() {
setSize( new Dimension ( XMAX,YMAX ) );
image = new BufferedImage( XMAX, YMAX,
BufferedImage.TYPE_3BYTE_BGR);
}
public void paint( Graphics gc ) {
((Graphics2D) gc).drawImage(image,0,0,Color.white,null);
}
private void trace() {
for ( int y = -YMAX/2; y<YMAX/2; ++y) {
for ( int x = -XMAX/2; x<XMAX/2; ++x) {
double vz = DISTANCE;
double l = Math.sqrt(x*x+y*y+vz*vz);
double vx = x/l;
double vy = y/l;
vz = vz/l;
double b = 2.0 * ( vx*(AUGE_X-KUGEL_X) + vy*(AUGE_Y-KUGEL_Y) + vz*(AUGE_Z-KUGEL_Z) );
double c = (AUGE_X-KUGEL_X)*(AUGE_X-KUGEL_X) + (AUGE_Y-KUGEL_Y)*(AUGE_Y-KUGEL_Y) + (AUGE_Z-KUGEL_Z)*(AUGE_Z-KUGEL_Z) - 2*KUGEL_RADIUS*KUGEL_RADIUS;
double diskriminate = b*b-4*c;
if ( diskriminate<0>1.0f) { rr=1.0f; } else if (rr<0>1.0f) { gg=1.0f; } else if (gg<0>1.0f) { bb=1.0f; } else if (bb<0.0f) { bb=0.0f; };
Color cc = new Color(rr,gg,bb) ;
image.setRGB(x+XMAX/2, y+YMAX/2, cc.getRGB() );
}
}
this.repaint();
}
}
public static void main( String[] args) {
Aufgabe8b ray = new Aufgabe8b ();
ray.show();
ray.trace();
}
}
Praktika 9
import java.awt.*;
import javax.swing.*;
import java.awt.image.*;
public class Aufgabe9 extends JFrame {
private BufferedImage image;
private final static int XMAX = 640;
private final static int YMAX = 480;
private final static double AUGE_X =0.0;
private final static double AUGE_Y =0.0;
private final static double AUGE_Z =300.0;
private final static double KUGEL_X =-50.0;
private final static double KUGEL_Y =0.0;
private final static double KUGEL_Z =-100.0;
private final static double KUGEL2_X =150.0;
private final static double KUGEL2_Y =0.0;
private final static double KUGEL2_Z =-100.0;
private final static double KUGEL_RADIUS =100.0;
private final static double KUGEL2_RADIUS =100.0;
private final static double DISTANCE =300.0;
private Aufgabe9() {
setSize( new Dimension ( XMAX,YMAX ) );
image = new BufferedImage( XMAX, YMAX,
BufferedImage.TYPE_3BYTE_BGR);
}
public void paint( Graphics gc ) {
((Graphics2D) gc).drawImage(image,0,0,Color.white,null);
}
private void trace() {
for ( int y = -YMAX/2; y<YMAX/2; ++y) {
for ( int x = -XMAX/2; x<XMAX/2; ++x) {
double vz = DISTANCE;
double l = Math.sqrt(x*x+y*y+vz*vz);
double vx = x/l;
double vy = y/l;
vz = vz/l;
double b = 2.0 * ( vx*(AUGE_X-KUGEL_X) + vy*(AUGE_Y-KUGEL_Y) + vz*(AUGE_Z-KUGEL_Z) );
double c = (AUGE_X-KUGEL_X)*(AUGE_X-KUGEL_X) + (AUGE_Y-KUGEL_Y)*(AUGE_Y-KUGEL_Y) + (AUGE_Z-KUGEL_Z)*(AUGE_Z-KUGEL_Z) - 2*KUGEL_RADIUS*KUGEL_RADIUS;
double b2 = 2.0 * ( vx*(AUGE_X-KUGEL2_X) + vy*(AUGE_Y-KUGEL2_Y) + vz*(AUGE_Z-KUGEL2_Z) );
double c2 = (AUGE_X-KUGEL2_X)*(AUGE_X-KUGEL2_X) + (AUGE_Y-KUGEL2_Y)*(AUGE_Y-KUGEL2_Y) + (AUGE_Z-KUGEL2_Z)*(AUGE_Z-KUGEL2_Z) - 2*KUGEL2_RADIUS*KUGEL2_RADIUS;
double diskriminate = b*b-4*c;
double diskriminate2 = b2*b2-4*c2;
if ( diskriminate<0.0 && diskriminate2<0>1.0f) { rr=1.0f; } else if (rr<0>1.0f) { gg=1.0f; } else if (gg<0>1.0f) { bb=1.0f; } else if (bb<0>1.0f) { rr2=1.0f; } else if (rr2<0>1.0f) { gg2=1.0f; } else if (gg2<0>1.0f) { bb2=1.0f; } else if (bb2<0.0f) { bb2=0.0f; };
Color cc = new Color(rr,gg,bb) ;
Color cc2 = new Color(rr2,gg2,bb2) ;
image.setRGB(x+XMAX/2, y+YMAX/2, cc.getRGB()+cc2.getRGB() );
}
}
this.repaint();
}
}
public static void main( String[] args) {
Aufgabe9 ray = new Aufgabe9 ();
ray.show();
ray.trace();
}
}
Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken
Weitere Beiträge aus dem Forum 14. Info
Sorber-Verabschiedung - gepostet von ravekev am Mittwoch 19.09.2007
1. Semester - gepostet von ravekev am Donnerstag 15.06.2006
studivz.net - gepostet von ravekev am Mittwoch 14.02.2007
Studentenmarktplatz - gepostet von ravekev am Montag 05.11.2007
Passwort für die Prüfungsanmeldung - gepostet von ravekev am Dienstag 12.06.2007
Ähnliche Beiträge wie "Praktika Java / Computergraphik"
Praktika - Che Guewara (Donnerstag 20.09.2007)
Java - Freaky Finger (Mittwoch 12.05.2004)
Java ist Open Source - gnomed (Dienstag 08.05.2007)
euIRC Java-Chat - Jonathan Pearce (Freitag 12.10.2007)
Java Progs - r4nc0r (Freitag 29.09.2006)
300 mobile java games - tamilwarrior (Mittwoch 28.06.2006)
Java E-Book - Per_ox (Sonntag 11.06.2006)
Bio-Praktika für 6. Sem NANO - Markus Maniak (Freitag 23.02.2007)
Hausaufgaben zum 02.10.07 (Java-Passwortschutz) - Conse (Dienstag 25.09.2007)
Java's Emu 0.2.1 - Java (Sonntag 07.01.2007)