我试图弄清楚如何在正交投影下正确计算 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) 假设我有以下类的层次结构:
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)
这仍然不起作用并传回一个空列表.什么给这里?