* Used to represent point in a 3D space or vector.
*/
-public class Point3D extends Point2D implements Cloneable {
+public class Point3D implements Cloneable {
- public double z;
+ public double x, y, z;
public Point3D() {
}
}
public Point3D add(final Point3D direction) {
- super.add(direction);
+ x += direction.x;
+ y += direction.y;
z += direction.z;
return this;
}
- @Override
public Point3D clone() {
return new Point3D(this);
}
return this;
}
- @Override
public boolean isZero() {
return (x == 0) && (y == 0) && (z == 0);
}
return Math.atan2(y - anotherPoint.y, z - anotherPoint.z);
}
+ public double getAngleXY(final Point3D anotherPoint) {
+ return Math.atan2(x - anotherPoint.x, y - anotherPoint.y);
+ }
+
/**
* Compute distance to another point.
*/
return sqrt(((xDelta * xDelta) + (yDelta * yDelta) + (zDelta * zDelta)));
}
- @Override
public double getVectorLength() {
return sqrt(((x * x) + (y * y) + (z * z)));
}
- @Override
public Point3D invert() {
x = -x;
y = -y;
z = z2 + center.z;
}
- @Override
public void roundToInteger() {
x = (int) x;
y = (int) y;
}
public Point3D subtract(final Point3D direction) {
- super.subtract(direction);
+ x -= direction.x;
+ y -= direction.y;
z -= direction.z;
return this;
}
return false;
}
- @Override
public Point3D zero() {
- super.zero();
+ x = 0;
+ y = 0;
z = 0;
return this;
}
final eu.svjatoslav.sixth.e3d.renderer.raster.Color textColor) {
final Texture texture = new Texture(text.length()
- * TextCanvas.FONT_CHAR_WIDTH, TextCanvas.FONT_CHAR_HEIGHT,
+ * TextCanvas.FONT_CHAR_WIDTH_PIXELS, TextCanvas.FONT_CHAR_HEIGHT_PIXELS,
maxUpscaleFactor);
// texture.graphics.setColor(Color.BLUE);
for (int c = 0; c < text.length(); c++)
texture.graphics.drawChars(new char[]{text.charAt(c),}, 0, 1,
- (c * TextCanvas.FONT_CHAR_WIDTH) - 0,
- (0 * TextCanvas.FONT_CHAR_HEIGHT) + 11);
+ (c * TextCanvas.FONT_CHAR_WIDTH_PIXELS) - 0,
+ (0 * TextCanvas.FONT_CHAR_HEIGHT_PIXELS) + 11);
return texture;
}
public class CanvasCharacter extends AbstractCoordinateShape {
- public static final double SIZE_MULTIPLIER = 0.005;
private static final int MAX_FONT_SIZE = 500;
private static final Font[] fonts = new Font[MAX_FONT_SIZE];
private String value;
// set corner coordinates (for drawing background)
{
- final double widthHalf = TextCanvas.FONT_CHAR_WIDTH / 2d;
- final double heightHalf = TextCanvas.FONT_CHAR_HEIGHT / 2d;
+ final double widthHalf = TextCanvas.FONT_CHAR_WIDTH_PIXELS / 2d;
+ final double heightHalf = TextCanvas.FONT_CHAR_HEIGHT_PIXELS / 2d;
// upper left
coordinates[1].coordinate = point.clone().translateX(-widthHalf)
renderingContext.graphics.setFont(getFont(size));
renderingContext.graphics.setColor(foregroundAwtColor);
- renderingContext.graphics.drawString(value, (int) onScreenLocation.x
- - (int) (size / 3.2), (int) onScreenLocation.y
- + (int) (size / 2.5));
+ renderingContext.graphics.drawString(
+ value,
+ (int) onScreenLocation.x - (int) (size / 3.2),
+ (int) onScreenLocation.y + (int) (size / 2.5));
}
import java.io.IOException;
import java.io.StringReader;
+import static eu.svjatoslav.sixth.e3d.renderer.raster.Color.BLACK;
+import static eu.svjatoslav.sixth.e3d.renderer.raster.Color.WHITE;
+
public class TextCanvas extends TexturedRectangle {
- public static final int FONT_CHAR_WIDTH = 8;
- public static final int FONT_CHAR_HEIGHT = 16;
+ public static final int FONT_CHAR_WIDTH_PIXELS = 8;
+ public static final int FONT_CHAR_HEIGHT_PIXELS = 16;
public static final Font FONT = CanvasCharacter.getFont(15);
private static final String GROUP_TEXTURE = "texture";
private static final String GROUP_CHARACTERS = "characters";
private final TextPointer cursorLocation = new TextPointer();
CanvasCharacter lines[][];
private RenderMode renderMode = null;
- private Color backgroundColor = Color.BLACK;
-
- private Color foregroundColor = Color.WHITE;
+ private Color backgroundColor = BLACK;
+ private Color foregroundColor = WHITE;
public TextCanvas(final Transform location, final String text,
final Color foregroundColor, final Color backgroundColor) {
this.foregroundColor = foregroundColor;
// initialize underlying textured rectangle
- initialize(columns * FONT_CHAR_WIDTH, rows * FONT_CHAR_HEIGHT, 0);
+ initialize(columns * FONT_CHAR_WIDTH_PIXELS, rows * FONT_CHAR_HEIGHT_PIXELS, 0);
getTexture().primaryBitmap.fillColor(backgroundColor);
getTexture().resetResampledBitmapCache();
final char character, final Color foreground) {
final Graphics2D graphics = getTexture().graphics;
- getTexture().primaryBitmap.drawRectangle(column * FONT_CHAR_WIDTH, row
- * FONT_CHAR_HEIGHT, (column * FONT_CHAR_WIDTH)
- + FONT_CHAR_WIDTH, (row * FONT_CHAR_HEIGHT) + FONT_CHAR_HEIGHT,
+ getTexture().primaryBitmap.drawRectangle(column * FONT_CHAR_WIDTH_PIXELS, row
+ * FONT_CHAR_HEIGHT_PIXELS, (column * FONT_CHAR_WIDTH_PIXELS)
+ + FONT_CHAR_WIDTH_PIXELS, (row * FONT_CHAR_HEIGHT_PIXELS) + FONT_CHAR_HEIGHT_PIXELS,
backgroundColor);
graphics.setFont(FONT);
graphics.setColor(foreground.toAwtColor());
graphics.drawChars(new char[]{character,}, 0, 1,
- (column * FONT_CHAR_WIDTH) - 0, (row * FONT_CHAR_HEIGHT) + 13);
+ (column * FONT_CHAR_WIDTH_PIXELS) - 0, (row * FONT_CHAR_HEIGHT_PIXELS) + 13);
getTexture().resetResampledBitmapCache();
}
public Point3D getCharLocation(final int row, final int column) {
final Point3D coordinate = topLeft.clone();
- coordinate.translateY((row * FONT_CHAR_HEIGHT)
- + ((FONT_CHAR_HEIGHT / 2) - 3));
+ coordinate.translateY((row * FONT_CHAR_HEIGHT_PIXELS)
+ + ((FONT_CHAR_HEIGHT_PIXELS / 2) - 3));
- coordinate.translateX((column * FONT_CHAR_WIDTH)
- + (FONT_CHAR_WIDTH / 2));
+ coordinate.translateX((column * FONT_CHAR_WIDTH_PIXELS)
+ + (FONT_CHAR_WIDTH_PIXELS / 2));
return coordinate;
}