Не получается отрисовать модель

275
04 мая 2018, 13:54

Нужно определить находится ли треугольники модели(орел) внутри прямоугольной плоскости. Написал программу, но отрисовка почему- то работает плохо. В чем причина?

matrCoord - Вершина треугольника, projMatrCopy - матрица проекции P * V * M. Получаю новые координаты вершины треугольника модели:

private Vector3f getVector(int pos) {
        Matrix4f projMatrCopy = new Matrix4f().set(proj);
        Matrix4f matrCoord = new Matrix4f(new Vector4f(positions[pos], positions[pos + 1], positions[pos + 2], 1.0f),
                new Vector4f(0, 0, 0, 0),
                new Vector4f(0, 0, 0, 0),
                new Vector4f(0,0,0, 0));
        Vector4f p1 = new Vector4f();
        projMatrCopy.mul(matrCoord).getColumn(0, p1);
        return new Vector3f(p1.x, p1.y, p1.z);
    }

И далее эту вершину проверяю на то, что находится ли она внутри прямоугольной области. Делаю это так:

private boolean intersectsPlaneToPoint(Vector3f point, List<Vector4f> planes) {
        Float d1 = Intersectionf.distancePointPlane(point.x, point.y, point.z,planes.get(0).x,planes.get(0).y,planes.get(0).z,planes.get(0).w);
        Float d2 = Intersectionf.distancePointPlane(point.x, point.y, point.z, planes.get(1).x,planes.get(1).y,planes.get(1).z,planes.get(1).w);
        Float d3 = Intersectionf.distancePointPlane(point.x, point.y, point.z, planes.get(2).x,planes.get(2).y,planes.get(2).z,planes.get(2).w);
        Float d4 = Intersectionf.distancePointPlane(point.x, point.y, point.z, planes.get(3).x,planes.get(3).y,planes.get(3).z,planes.get(3).w);
        Float d5 = Intersectionf.distancePointPlane(point.x, point.y, point.z, planes.get(4).x,planes.get(4).y,planes.get(4).z,planes.get(4).w);
        Float d6 = Intersectionf.distancePointPlane(point.x, point.y, point.z,planes.get(5).x,planes.get(5).y,planes.get(5).z,planes.get(5).w);
        return d1 < 0 && d2 < 0 && d3 < 0 && d4 >= 0 && d5 < 0 && d6 >= 0;
    }

planes.get(0).x,planes.get(0).y,planes.get(0).z,planes.get(0).w - это a b c d компоненты плоскости

READ ALSO
метод toString в классе BigDecimal

метод toString в классе BigDecimal

Листинг из JDK 18:

260
ImageView на весь экран

ImageView на весь экран

Всем приветКогда нажимаешь на картинку в приложении картинка открываеться в полный рост

216
Java SE, корректная запись строки байтовых символов в байтовый массив

Java SE, корректная запись строки байтовых символов в байтовый массив

Имеется Строка String Packet в которой записываетются данные а-ля FA0023CC и массив byte[] P = new byte[Packetlength()/2]в который нужно загнать данные по типу 0xFA 0x00 0x23 0xCC Пишу...

227
Как создать переменную int из выражения?

Как создать переменную int из выражения?

Можно ли сделать одну int переменную из listget(count-1))

241