小编CB_*_*ick的帖子

Java OpenGL - 计算等距视图的正交平截头体

我试图弄清楚如何在正交投影下正确计算 openGL 场景的截锥体边界。我用来执行此操作的代码如下:

public void setFrustum(GL gl, GLU glu){

    double[] forwardAxis = properties.getForwardAxis();
    double[] leftAxis = VecMath.normalVector(properties.getUpDir(), forwardAxis);
    double[] upAxis = VecMath.normalVector(forwardAxis, leftAxis);

    double[] v = bounds.getWidthVector();

    double width = VecMath.magnitude(VecMath.project(v, leftAxis));
    double height = VecMath.magnitude(VecMath.project(v, upAxis));

    double modelRatio = width / height;
    double canvasRatio = properties.getAspectRatio();
    // -- height bigger than width --
    if (modelRatio < canvasRatio){
        // -- update width --
        width = height * canvasRatio;
    } else{
        // -- update height --
        height = width / canvasRatio; …
Run Code Online (Sandbox Code Playgroud)

java opengl jogl

5
推荐指数
1
解决办法
448
查看次数

Java抽象使用instanceof从List中收集类

假设我有以下类的层次结构:

public class MainClass {

}

class A extends MainClass {

}

class B extends MainClass {

}

class C extends MainClass {

}
Run Code Online (Sandbox Code Playgroud)

现在假设我有一个List<MainClass> classes看起来像:

 {A, MainClass, A, B, B, MainClass, C, A, C, B, A}
Run Code Online (Sandbox Code Playgroud)

我希望能够通过他们的班级挑选出对象的子列表.例如,我希望能够仅提取此类A列表中的那些类(但不能提取类MainClass).因此,使用isAssignableFrom(A.class)对我不起作用.

我目前的方法如下:

public <T extends MainClass> List<T> getClasses(List<MainClass> classes, Class classToCollect) {
    List<T> subclasses = new ArrayList<T>();

    for (MainClass clazz : classes) {
        if (clazz.getClass().isInstance(classToCollect)) {
            subclasses.add((T)clazz);
        }
    }

    return subclasses;
}
Run Code Online (Sandbox Code Playgroud)

这仍然不起作用并传回一个空列表.什么给这里?

java

2
推荐指数
1
解决办法
80
查看次数

标签 统计

java ×2

jogl ×1

opengl ×1