小编mmc*_*ole的帖子

什么是嵌套循环的Big-O,其中内循环中的迭代次数由外循环的当前迭代确定?

以下嵌套循环的Big-O时间复杂度是多少:

for(int i = 0; i < N; i++) 
{
    for(int j = i + 1; j < N; j++)
    {
        System.out.println("i = " + i + " j = " + j);
    }

}
Run Code Online (Sandbox Code Playgroud)

它还是O(N ^ 2)吗?

big-o nested-loops

40
推荐指数
5
解决办法
4万
查看次数

你怎么画像蜡笔?

Crayon Physics Deluxe是最近推出的商业游戏.观看主链接上的视频,了解我在说什么.

它允许您绘制形状并让它们与适当的物理反应.目标是使用您构建的装置和形状将球移动到屏幕上的星形.

虽然游戏基本上是流行的Box2D物理引擎的包装器,但它确实有一个功能,我很好奇它是如何实现的.

它的绘图看起来非常像蜡笔.你可以看到蜡笔的质地,因为它绘制的厚度和暗度各不相同,就像真正的蜡笔画一样.

替代文字
(来源:kloonigames.com) 替代文字
(来源:kloonigames.com)

背景纹理在这里免费提供.

alt text http://img267.imageshack.us/img267/1488/crayonmh7.png
关闭蜡笔画 - 注意不同的黑暗

将使用什么样的算法以看起来像蜡笔的方式渲染这些线?这是一个简单的纹理应用随机厚度和黑暗还是还有更多的东西?

graphics

39
推荐指数
3
解决办法
4571
查看次数

如何让我的C#应用​​程序检查更新?

我正在构建一个C#windows应用程序.我想要它,所以每当我点击我的表单中的更新按钮时,应用程序将开始查找我的服务器上是否有新版本可用.

如果有,则继续更新软件.

这通常如何处理?

c#

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

什么是C#最好的拼写检查库?

什么是C#/ .net最好的拼写检查库?

(这将是基于Web的,因此WPF的内置拼写检查将不起作用.)

.net c# asp.net spell-checking

34
推荐指数
2
解决办法
3万
查看次数

为什么_ViewStart.cshtml无法访问ViewBag对象?

我的/ Views文件夹中有默认的_ViewStart.cshtml.我希望能够访问我的ViewBag对象,以便为所有视图设置默认标题.

但是,有:

@{
    Layout = "~/Views/Shared/SiteLayout.cshtml";
    ViewBag.Title = "bytecourse - Online Courses in Technology";
}
Run Code Online (Sandbox Code Playgroud)

我得到"名称'ViewBag'在当前上下文中不存在"作为运行时错误.

我需要做什么?

razor asp.net-mvc-3

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

使用中央存储库是否违反GIT的目的?

如果您处于公司环境中,并且有许多人在处理特定应用程序,那么它是否会与分布式版本控制系统相悖以拥有官方中央存储库?

有时我很难在公司环境中理解分布式版本控制系统(如GIT)的概念.如果您没有中央存储库,那么PITA是否可以确定谁拥有最新的更新版本,谁拥有每个人都需要抓取的功能x或错误修复等等等.

它是否违背了GIT以与SVN类似的方式使用它的目的,还有一个每个人都推/拉的中央存储库?每次我想到这样做,我都觉得我错过了一切.

有人可以开导我吗?

svn git dvcs

33
推荐指数
4
解决办法
5361
查看次数

33
推荐指数
3
解决办法
3万
查看次数

如何优化我的基本物理模拟器?

我写了一个简单的物理建模器,它允许我在屏幕周围弹跳球.您可以单击并拖动以启动球,或者您可以一次生成数百个球并观察它们彼此交互.

alt text http://i41.tinypic.com/2zr0oic.png
[链接到更大的版本]

这是一个很有趣的小程序,如果可以的话,我想进一步研究它.我知道他们说早熟优化是所有邪恶的根源,但我开始遇到实际的性能障碍,我想知道是否有任何有游戏/模拟器开发经验的人可以帮助我.

问题:

现在,如果你添加太多球(我的机器上似乎无法处理超过800个),我的程序就会窒息.如果这样做,模拟不再现实,并且所有球在底部彼此重叠.

问题在于碰撞检测.在最天真的情况下,碰撞检测是O(N ^ 2)问题.每个球都会检查每一个球.这很快就会导致性能下降(即使在100个球之后,你也会在每个循环周期进行10k次碰撞检查).

如果你看这里,你可以看到我添加了几百个球的截图.模拟器无法跟上,它们开始相互重叠.

alt text http://i41.tinypic.com/2nsnuqd.png
[链接到更大的版本]

目前,我通过寻找重叠球来检测碰撞.如果我找到两个重叠的球,我将它们按最小平移距离(MTD)分开,或将它们分开.然后,我使用一个简单的物理方程来调整它们的脉冲矢量,然后在碰撞后它们向不同的方向移动.

它的效果很好,除非有太多的球,最小的平移距离变得明显.它们开始大量重叠并且不断地在底部互相挤压.我越是"增加"引力就越糟糕.它们上的压力增加,它们被压缩/相互重叠的量增加.

再说一次,我没有问题,直到我击中了相当数量的N球.

当前优化方法:

碰撞检测 -
扫描和修剪 - (又称排序和扫描)

我在我的球上使用插入排序,每个循环沿x轴循环.由于插入排序的性质,我可以利用我的模拟器的时间一致性.框架到框架,球的位置只是稍微改变,因此排序没有太多工作要做.这使得线性分类分摊运行时间为O(N)或线性而不是其平均运行时间O(N ^ 2).

由于球是排序的,我在检查碰撞之前在第二个循环中做了几次预检查.现在我只需要检查彼此附近的球(因为它们沿着x轴排序),并且当我检查球与另一个球的xmin大于当前球的xmax时,我会突破第二个循环.所以它跳过了成千上万的支票.

当我实现这一点时,它带来了巨大的速度提升.但是,我仍然希望能够处理超过600-800个球.我已经阅读过物理引擎,可以轻松地同时处理10k个物体之间的碰撞检测,所以我想我可以通过一点点工作达到1-2k.

在运行了一个分析器之后,碰巧检测器占用了大约55%的时间,而渲染器占用了大约45%.所以,这是我最昂贵的两个成本.


题:

你能想到任何更好的算法或技术,让我的模拟器能够处理更多的球吗?


相关守则:

整个项目:

svn checkout http://simucal-projects.googlecode.com/svn/ballbounce/trunk/

或者,单击此处在浏览器中手动浏览文件.

感兴趣的部分:

optimization physics collision-detection

33
推荐指数
2
解决办法
3107
查看次数

C#中的Scanner类是否等同于字符串?

在Java中,我可以通过一个扫描一个字符串,然后我可以做的得心应手之类的东西,scanner.hasNext()或者scanner.nextInt(),scanner.nextDouble()等.

这允许一些非常干净的代码来解析包含数字行的字符串.

这是如何在C#中完成的?

如果你有一个字符串说:

"0 0 1 22 39 0 0 1 2 33 33"
Run Code Online (Sandbox Code Playgroud)

在Java中,我会将其传递给扫描仪并执行操作

while(scanner.hasNext()) 
    myArray[i++] = scanner.nextInt();
Run Code Online (Sandbox Code Playgroud)

或者非常相似的东西.什么是C#'这样做的方法?

c# java string java.util.scanner

32
推荐指数
3
解决办法
4万
查看次数

编写自己的自动更新程序

在编写自己的自动更新程序时,是否有一个我应该遵循的通用框架?

前一段时间我正在阅读如何创建一个"引导过滤器",它将在主应用程序之前首先加载(因为由于文件锁定而无法更新正在运行的应用程序等)

那么任何提示/最佳实践呢?

.net updating auto-update

28
推荐指数
3
解决办法
1万
查看次数