Example usage for org.apache.commons.math3.geometry.euclidean.threed Vector3D getY

List of usage examples for org.apache.commons.math3.geometry.euclidean.threed Vector3D getY

Introduction

In this page you can find the example usage for org.apache.commons.math3.geometry.euclidean.threed Vector3D getY.

Prototype

public double getY() 

Source Link

Document

Get the ordinate of the vector.

Usage

From source file:services.SimulationService.java

public Ray convertRayToModelSpace(Point3D origin, Point3D end, SWGObject object) {

    Point3D position = object.getPosition();

    WB_M44 translateMatrix = new WB_M44(1, 0, 0, position.x, 0, 1, 0, position.y, 0, 0, 1, position.z, 0, 0, 0,
            1);/*ww w  . j a  v a 2  s. c  o  m*/

    float radians = object.getRadians();
    float sin = (float) Math.sin(radians);
    float cos = (float) Math.cos(radians);

    WB_M44 rotationMatrix = new WB_M44(cos, 0, sin, 0, 0, 1, 0, 0, -sin, 0, cos, 0, 0, 0, 0, 1);

    WB_M44 modelSpace = null;
    try {
        modelSpace = translateMatrix.mult(rotationMatrix).inverse();
    } catch (Exception ex) {
        // It's usually a bank terminal causing this
        //System.out.println("The object " + object.getTemplate() + " at x:" + object.getWorldPosition().x + " z:" + object.getWorldPosition().z + " causes a problem during modelspaceconversion. Can be safely ignored.");
        if (modelSpace == null)
            return new Ray(origin, new Vector3D(0, 0, 0));
    }

    float originX = (float) (modelSpace.m11 * origin.x + modelSpace.m12 * origin.y + modelSpace.m13 * origin.z
            + modelSpace.m14);
    float originY = (float) (modelSpace.m21 * origin.x + modelSpace.m22 * origin.y + modelSpace.m23 * origin.z
            + modelSpace.m24);
    float originZ = (float) (modelSpace.m31 * origin.x + modelSpace.m32 * origin.y + modelSpace.m33 * origin.z
            + modelSpace.m34);

    origin = new Point3D(originX, originY, originZ);

    float endX = (float) (modelSpace.m11 * end.x + modelSpace.m12 * end.y + modelSpace.m13 * end.z
            + modelSpace.m14);
    float endY = (float) (modelSpace.m21 * end.x + modelSpace.m22 * end.y + modelSpace.m23 * end.z
            + modelSpace.m24);
    float endZ = (float) (modelSpace.m31 * end.x + modelSpace.m32 * end.y + modelSpace.m33 * end.z
            + modelSpace.m34);

    end = new Point3D(endX, endY, endZ);
    Vector3D direction = new Vector3D(end.x - origin.x, end.y - origin.y, end.z - origin.z);
    if (direction.getX() > 0 && direction.getY() > 0 && direction.getZ() > 0)
        direction.normalize();

    return new Ray(origin, direction);

}

From source file:tests.TestDrawing.java

@Test
public void testDrawing() {
    BufferedImage img = null;//  w ww.  j  ava  2 s.  c o m
    BufferedImage imgs[] = new BufferedImage[2];

    try {
        imgs[0] = ImageIO.read(new File("../captures/4.jpg")); // eventually C:\\ImageTest\\pic2.jpg
        imgs[1] = ImageIO.read(new File("../captures/5.jpg")); // eventually C:\\ImageTest\\pic2.jpg
        img = ImageIO.read(new File("../captures/5.jpg")); // eventually C:\\ImageTest\\pic2.jpg
        for (int x = 0; x < img.getWidth(); x++) {
            for (int y = 0; y < img.getHeight(); y++) {
                int rgbDiff = RgbCalculator.absoluteDifference(imgs[0].getRGB(x, y), imgs[1].getRGB(x, y));
                img.setRGB(x, y, rgbDiff);
            }
        }

        Graphics2D g2d = img.createGraphics();
        g2d.setBackground(Color.BLUE);
        g2d.setColor(Color.RED);

        Vector3D[] corners = new Vector3D[] { new Vector3D(new double[] { 172, 78, 0 }),
                new Vector3D(new double[] { 455, 71, 0 }), new Vector3D(new double[] { 507, 350, 0 }),
                new Vector3D(new double[] { 143, 362, 0 }) };
        //draw lines from corner to corner
        for (int c = 0; c < corners.length; c++) {
            Vector3D v1 = corners[c];
            Vector3D v2 = corners[(c + 1) % corners.length];
            g2d.drawLine((int) v1.getX(), (int) v1.getY(), (int) v2.getX(), (int) v2.getY());
        }

        for (int x = 0; x < img.getWidth(); x++) {
            for (int y = 0; y < img.getHeight(); y++) {
                Vector3D currentPos = new Vector3D(new double[] { x, y, 0 });
                double[] normalizedCoordinates = new double[2];
                {
                    //normalize x coordinate
                    Line floor = new Line(corners[0], corners[3], 0.5);
                    Line roof = new Line(corners[1], corners[2], 0.5);
                    double floorDistance = floor.distance(currentPos) * 1 / corners[0].distance(corners[3]);
                    double roofDistance = roof.distance(currentPos) * 1 / corners[1].distance(corners[2]);
                    normalizedCoordinates[0] = interpolate(0, 1,
                            floorDistance / (floorDistance + roofDistance));
                }
                {
                    //normalize y coordinate
                    Line floor = new Line(corners[0], corners[1], 0.5);
                    Line roof = new Line(corners[2], corners[3], 0.5);
                    double floorDistance = floor.distance(currentPos) * 1 / corners[0].distance(corners[1]);
                    double roofDistance = roof.distance(currentPos) * 1 / corners[2].distance(corners[3]);
                    normalizedCoordinates[1] = interpolate(0, 1,
                            floorDistance / (floorDistance + roofDistance));
                }

                boolean isEdge = false;
                for (int d = 0; d < 2; d++) {
                    double val = normalizedCoordinates[d];
                    if (Math.abs((double) ((int) (val * 8)) - (val * 8)) < 0.05) {
                        isEdge = true;
                    }
                }
                if (isEdge) {
                    //color corners red:
                    img.setRGB(x, y, Color.RED.getRGB());
                }

            }

        }

        JFrame dialog = new JFrame();
        ImagePanel imagePanel = new ImagePanel(img);
        dialog.add(imagePanel);
        imagePanel.setSize(100, 100);
        dialog.pack();
        dialog.setSize(300, 300);
        dialog.setVisible(true);
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
    assertTrue("hello", true);
}