我目前正在编写一个交互式模拟器,它显示了粒子系统的演变.我正在使用Visual Studio在Windows 7 32位上进行开发.
目前,我有一个功能来绘制屏幕上的所有粒子,如下所示:
void Simulator::draw()
{
glColor4f(255, 255, 255, 0);
glBegin();
for (size_t i = 0; i < numParticles; i++)
glVertex3dv(p[i].pos);
glEnd();
}
Run Code Online (Sandbox Code Playgroud)
这非常有效并且全部用于测试,但它的速度非常慢.如果我在屏幕上有200个粒子,没有做任何其他计算(只是重复调用draw()),我得到大约60 fps.但是,如果我使用1000个粒子,它的运行速度只有15 - 20 fps左右.
我的问题是:我怎样才能更快地绘制粒子?我的模拟以相当不错的速度运行,并且在某个点上它实际上被图画阻止(!).
我目前正在Mathematica中进行一些与量子力学相关的计算.随着我们从1D变为2D点阵模型,问题规模变得越来越成问题
目前,我们的总结看起来像这样:
corr[r1_, r2_, i_, j_] = Sum[Cos[f[x1, x2] Angle[i] r1 + f[y1, y2] Angle[j] r2], {x1, HL}, {x2, HL}, {y1, HL + 1, 2 HL}, {y2, HL + 1, 2 HL}];
Run Code Online (Sandbox Code Playgroud)
F[.,.]是预先计算的相关函数的查找函数,并且Angle [.]也是预先计算的.
完全没有办法以任何方式进一步简化这一点.我们已经通过将复指数(具有零虚部)转换为上面的余弦表达式来进行简单优化.
最大的问题是那些HL是基于尺寸大小的:对于沿轴的线性尺寸L,HL对应于L ^ d(这里d = 2).所以我们的计算实际上是O(n ^ 8),而忽略了i,j的和.
对于L = 8,这通常不是太糟糕,如果不是因为我们对r1的125个值进行迭代,而对r2的125进行迭代以创建125×125的图像.
我的问题是:如何在Mathematica中最有效地计算出来?我会用另一种语言来做这件事,但是如果我在像C++这样的东西中尝试它会有一些问题会使它变得那么慢.
额外信息:这是ND-ND(数字密度)相关计算.所有x和y都指的是离散2D网格上的discete点.这里唯一不分散的东西是我们的r.
Mathematica中是否存在复共轭转置的现有函数?matlab中的等价物是撇号算子(').
我知道每个都可以传递给另一个函数.在我看来,所有这些都像是微妙差异的替代品.
函数指针:指向函数的指针
function object:重载了()运算符的类的实例; 能够充当一种功能;
lambda函数:一个匿名函数(在C++ 11中新引入),可以在现场定义,并且仅在语句的生命周期中存在
由于微妙之处,我想知道在给定场景中哪三种选择中哪一种最合适.所以,那里的专家,请一些亮点(根据一些选择标准?),以便我可以在不同的场景中决定和使用它们.
假设我有一个包含100个数字的数组.数组中唯一不同的值是1,2和3.这些值在整个数组中随机排序.例如,可以将数组填充为:
int values[100];
for (int i = 0; i < 100; i++)
values[i] = 1 + rand() % 3;
Run Code Online (Sandbox Code Playgroud)
我怎样才能有效地对这样的数组进行排序?
以下两种语法顺序在Java中有效.为什么两者都允许并且是否有首选语法顺序?
private final static String consultantType = "consultantType";
private static final String consultantId = "consultantId";
Run Code Online (Sandbox Code Playgroud) 我正在尝试列出可以单击的两个按钮图标列表.我尝试过这样的事情,但图标重叠:
<ion-list>
<ion-item ng-repeat="item in items" class="item-button-right">
{{ item.Info }}
<button class="button button-positive" ng-click="Accept(item)">
<i class="icon ion-checkmark"></i>
</button>
<button class="button button-assertive" ng-click="Reject(item)">
<i class="icon ion-close"></i>
</button>
</ion-item>
</ion-list>
Run Code Online (Sandbox Code Playgroud)
我想要获得的理想行为是在左侧显示一些小信息,并在右侧显示两个选项.
我在这里有一个简单的自包含正确示例:http://codepen.io/anon/pen/vzLob
我目前正在开发一个需要进行一些可视化的应用程序,我将要做的最复杂的事情是显示点状对象。
对我的目的而言,除此之外的任何事情都是完全矫枉过正的,因为除了绘制点状物体之外,我不会做任何事情。
话虽如此,满足我的需求的最简单的解决方案是什么?
从下面的代码我期望CA类可以调用以下代码
fooamain中变量的变量a根据函数返回的值创建变量.为什么不是这样?我的结果就是
A
Run Code Online (Sandbox Code Playgroud)
虽然我在期待
ABB
Run Code Online (Sandbox Code Playgroud)
所以只调用构造函数.编译器是在幕后优化还是我错过了一些C++概念?
class CA{
public:
CA(){ std::cout << "A"; }
CA( const CA& ){ std::cout << "B"; }
CA& operator=(const CA& ){ std::cout << "C";return *this; }
};
CA foo(){
return CA();
}
int main(){
CA a = foo();
}
Run Code Online (Sandbox Code Playgroud) 我通过DbContext生成器生成了我的实体,并将其添加到使用我的实体上下文模型的API控制器中.以下方法无法编译:
public IEnumerable<casino> Getcasinos()
{
var casinos = db.casinos.Include(c => c.city).Include(c => c.state);
return casinos.AsEnumerable();
}
Run Code Online (Sandbox Code Playgroud)
编译器说:
Cannot Convert Lambda Expression to Type 'String' Because It Is Not A Delegate Type
Run Code Online (Sandbox Code Playgroud)
有什么想法为什么这么说?我System.Linq导入了名称空间.