小编Mar*_*ler的帖子

如何实现FPS相机?

所以我目前正在开发OpenGL中的一些FPS游戏编程(JOGL,更具体地说)只是为了好玩,我想知道创建类似FPS的摄像机的推荐方法是什么?

目前我基本上有一个玩家面向方向的矢量,按下"w"或前进键后,它将被添加到当前玩家位置.该向量的负数当然用于"s"或后向键.对于"a",left和"d",右边我使用方向向量的法线.(我知道这会让玩家飞起来,但目前这不是问题)

移动鼠标后,将使用三角学和矩阵旋转方向向量.当然,所有矢量都被标准化以便于速度控制.

这是常见的和/或好的方式还是有更简单/更好的方法?

java opengl math jogl

12
推荐指数
1
解决办法
2797
查看次数

项目欧拉问题的提示#78

这是问题所在:问题#78

这真让我抓狂.我一直工作在这几个小时,现在我已经能够减少寻找的方式堆叠数量的复杂n硬币O(n/2),但即使有这些改进,并从开始n的这p(n)接近一百万,我在一分钟之内仍然无法得到答案.实际上根本没有.

有什么提示可以帮助我吗?

请记住,我不想要一个完整的解决方案,这里不应该发布任何功能性解决方案,以免破坏其他人的问题.这就是我没有包含任何代码的原因.

language-agnostic algorithm

12
推荐指数
1
解决办法
5773
查看次数

Java图形性能

我正在编写一个简单的游戏,并希望通过Java Graphics + Swing API显示它.当然,感觉有点慢,所以我测量了重画需要多长时间,大约是32毫秒.然后我读到了加速Java图形并使用了这里描述的方法:Space Invaders

然而,不知何故,这甚至更慢.现在需要大约98毫秒才能重绘.这是为什么?

请注意,我知道像LWGL和JOGL这样的库,但我不想使用完整的OpenGL包装器来制作这样一个图形简单的游戏.

java graphics

6
推荐指数
3
解决办法
3319
查看次数

在Java中使用"字典中的函数"最实用的方法是什么?

使用C/C++或Python编程时,我有时会根据指定的键使用包含函数引用的字典.但是,我真的不知道如何在Java中使用相同的 - 或者至少是相似的 - 行为,从而允许我使用动态密钥功能(或Java方法中的方法)关联.

另外,我确实找到了有人建议的HashMap技术,但这是最优秀和最优雅的方式吗?我的意思是,为我想要使用的每个方法创建一个新类似乎很多.

我真的很感激每一个输入.

java methods function

4
推荐指数
1
解决办法
204
查看次数

对于C++中的循环函数参数奇性

在我目前的项目中,我偶然发现了一个奇怪的现象,即嵌套的for循环只执行一次内循环然后停止.即使仔细检查了所涉及的所有变量,外部for循环仍然没有正当理由终止.使这个结构与我程序中包含的其他for循环不同的唯一因素是,计数器变量作为参数传递给包含循环的函数,并且从不复制到任何地方.

所以我决定测试是否可以重现问题:

#include <stdio.h>

void someFunction(int x, int y, int width, int length)
{
    int endX = x+width;
    int endY = y+length;

    printf("x will not exceed: %i\n", endX);
    printf("y will not exceed: %i\n", endY);

    for(; x < endX; x++)
    {
        for(; y < endY; y++)
        {
            printf("(%i, %i)\n", x, y);
        }
    }
}

int main(int argc, const char *argv[])
{
    someFunction(1, 1, 5, 5);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,在执行时,应用程序的输出与直观的预期不同:

x will not exceed: 6
y will not exceed: 6
(1, 1) …
Run Code Online (Sandbox Code Playgroud)

c++

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

java.util.Random特性

所以这是人们可能做的最简单的事情之一:

Random rng = new Random();
int a = rng.nextInt(10);
int b = rng.nextInt(10);
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但我们希望避免使用相等的a和b,所以我们自然会这样做:

Random rng = new Random();
int a = rng.nextInt(10);
int b = rng.nextInt(10);
while (a == b){
  b = rng.nextInt(10);
}
Run Code Online (Sandbox Code Playgroud)

然而 - 对我非常非常惊讶 - while循环永远不会退出.决不.

我理解,从理论上讲,随机数字可以包含一个数字的无限序列.但是我已经让这段代码运行了10分钟而且它还没有退出循环.

怎么了?我在最新的Linux Mint上运行JDK 6 Update 16.

java random linux-mint

0
推荐指数
1
解决办法
890
查看次数