我正在编写一个由几个模块组成的游戏引擎。其中两个是图形引擎和物理引擎。
我想知道在它们之间共享数据是否是一个好的解决方案?
两种方式(共享或不共享)看起来像这样:
GraphicsModel{
//some common for graphics and physics data like position
//some only graphic data
//like textures and detailed model's vertices that physics doesn't need
};
PhysicsModel{
//some common for graphics and physics data like position
//some only physics data
//usually my physics data contains A LOT more information than graphics data
}
engine3D->createModel3D(...);
physicsEngine->createModel3D(...);
//connect graphics and physics data
//e.g. update graphics model's position when physics model's position will change
Run Code Online (Sandbox Code Playgroud)
我看到两个主要问题:
我不得不说这是一个错误发现的,因为我试图将 a 转换String为 an Integer,但我没有意识到它是一种Character类型而不是Integer。
但不知何故,尽管JDK 文档中没有提到,但Integer.valueOf仍然可以使用参数运行?Character
System.out.println(Integer.valueOf("2")); // >>> 2
System.out.println(Integer.valueOf('2')); // >>> 50
Run Code Online (Sandbox Code Playgroud)
虽然它对于String的参数工作得很好"2",但它没有为Character的参数提供预期的结果'2'。为什么会出现这种情况?
我想了解我是否错过了什么?为什么它返回 50 而不是 2?
谢谢
好的,我检查了 ASCII 表,它返回 50,因为 的索引Character '2'是 50。
在浮点运算中计算两个数字的平均值的最准确方法是什么?让我们考虑一下最常见的双精度 64 位数字。
(a + b) / 2
a / 2 + b / 2
a + (b - a) / 2
这些计算平均值的方法可能会给出不同的结果,如下面的 C++ 代码所示:
double a = 1.2;
double b = 3.6;
double mean1 = (a + b) / 2.0;
double mean2 = a / 2.0 + b / 2.0;
double mean3 = a + (b - a) / 2.0;
cout << fixed << setprecision(20);
cout << "mean1: " << mean1 << endl;
cout << "mean2: " << mean2 …Run Code Online (Sandbox Code Playgroud) 如果我想将这段代码放到一行怎么办?
if (count >= 0 && count <= 199) {
return 1;
} else if (count >= 200 && count <= 399) {
return 2;
} else if (count >= 400 && count <= 599) {
return 3;
} else if (count >= 600 && count <= 799) {
return 4;
} else {
return 5;
}
Run Code Online (Sandbox Code Playgroud)
我只想知道这几行代码是否有任何捷径.
c++ ×2
3d-engine ×1
game-engine ×1
graphics ×1
ieee-754 ×1
if-statement ×1
java ×1
sqldatatypes ×1