Skip to content

Commit

Permalink
First commit : todo : translate math referential to screen referential
Browse files Browse the repository at this point in the history
  • Loading branch information
theblackunknown committed Sep 30, 2011
1 parent 4c03095 commit a99c080
Show file tree
Hide file tree
Showing 7 changed files with 470 additions and 0 deletions.
6 changes: 6 additions & 0 deletions README
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
1. $ java TheCube -mode=fildefer | -mode=facesvisibles
2. 1 cube = 8 lignes de 3 floattant sur fichier d'entrée
3. à l'aide des boutons tourner dans l'espace(centre cube immobile)
4. afficher après chaque usage de bouton
4'. Perspective ?
This file was modified by IntelliJ IDEA 10.5.2 for binding GitHub repository
66 changes: 66 additions & 0 deletions src/org/blackpanther/Launcher.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package org.blackpanther;

import org.blackpanther.model.Cube;
import org.blackpanther.render.CubeRender;
import org.blackpanther.render.CubeScene;

import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
* @author MACHIZAUD Andréa
* @version 9/29/11
*/
public class Launcher {

private static final java.util.logging.Logger logger =
java.util.logging.Logger.getLogger(Launcher.class.getCanonicalName());

public static void main(String[] args) {

CubeRender.DrawMode mode = CubeRender.DrawMode.LINE;

if( args.length > 0 && args[0].equals("--fill") ) {
mode = CubeRender.DrawMode.FILL;
}

logger.info("Draw mode changed to " + mode);

final Frame frame = new Frame("Cube manipulation");
final Dimension drawingAreaDimension = new Dimension(500, 500);
final Cube cube = new Cube();
final CubeRender renderer = new CubeRender(
cube, 40,
drawingAreaDimension);
final CubeScene scene = new CubeScene(renderer, drawingAreaDimension);

frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
frame.dispose();
}
});

frame.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
frame.dispose();
}
}
});

frame.add(scene);
frame.pack();

frame.setLocationRelativeTo(null);
renderer.render();

frame.setVisible(true);

}

}
48 changes: 48 additions & 0 deletions src/org/blackpanther/model/Cube.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package org.blackpanther.model;

/**
* @author MACHIZAUD Andréa
* @version 9/29/11
*/
public class Cube {
private static final java.util.logging.Logger logger =
java.util.logging.Logger.getLogger(Cube.class.getCanonicalName());

//top
public static final int A = 0;
public static final int B = 1;
public static final int C = 2;
public static final int D = 3;
public static final int E = 4;
public static final int F = 5;
public static final int G = 6;
public static final int H = 7;

//face
public static final int ABFE = 0;
public static final int ABCD = 1;
public static final int BCGF = 2;
public static final int CDHG = 3;
public static final int EHGF = 4;
public static final int DAEH = 5;

private final Point3D[] matrix;

@SuppressWarnings("unchecked")
public Cube() {
this.matrix = new Point3D[]{
new Point3D(-1, -1, -1), //A
new Point3D(-1, -1, +1), //B
new Point3D(-1, +1, +1), //C
new Point3D(-1, +1, -1), //D
new Point3D(+1, -1, -1), //E
new Point3D(+1, -1, +1), //F
new Point3D(+1, +1, +1), //G
new Point3D(+1, +1, -1) //H
};
}

public final Point3D[] getPoints() {
return matrix;
}
}
36 changes: 36 additions & 0 deletions src/org/blackpanther/model/Point3D.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package org.blackpanther.model;

/**
* @author MACHIZAUD Andréa
* @version 9/29/11
*/
public class Point3D {
private static final java.util.logging.Logger logger =
java.util.logging.Logger.getLogger(Point3D.class.getCanonicalName());

private int[] coordinate;

@SuppressWarnings("unchecked")
public Point3D(
final int x,
final int y,
final int z
) {
coordinate = new int[3];
coordinate[0] = x;
coordinate[1] = y;
coordinate[2] = z;
}

public final int getX(){
return coordinate[0];
}

public final int getY(){
return coordinate[1];
}

public final int getZ(){
return coordinate[2];
}
}
49 changes: 49 additions & 0 deletions src/org/blackpanther/model/Vector3D.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package org.blackpanther.model;

/**
* @author MACHIZAUD Andréa
* @version 9/29/11
*/
public class Vector3D {
private static final java.util.logging.Logger logger =
java.util.logging.Logger.getLogger(Vector3D.class.getCanonicalName());

private final int[] chunks;

public Vector3D(
final int x,
final int y,
final int z
) {
chunks = new int[]{x,y,z};
}

public Vector3D(Point3D origin, Point3D destination) {
this(
destination.getX() - origin.getX(),
destination.getY() - origin.getY(),
destination.getZ() - origin.getZ()
);
}

public final int getX(){
return chunks[0];
}

public final int getY(){
return chunks[1];
}

public final int getZ(){
return chunks[2];
}

public final Vector3D normal(Vector3D v) {
final Vector3D u = this;
return new Vector3D(
u.getY() * v.getZ() - u.getZ() * v.getY(),
u.getZ() * v.getX() - u.getX() * v.getZ(),
u.getX() * v.getY() - u.getY() * v.getX()
);
}
}
Loading

0 comments on commit a99c080

Please sign in to comment.