我糊涂了.好吧不要混淆,不要想做6个测试程序,看看哪个算法最好.所以我想我会问我在这里的专家朋友给我带来他们经验的好处.
该场景是一个3d场景,与其内部对象的大小相比,可能面积相当大.场景中可能存在数千个对象.物体的大小从十分之一到大约10个单位不等,但不大(或更小).对象倾向于聚集在一起,但这些聚类可能会出现在场景中的任何位置.所有物体都是动态的,动人的.集群倾向于一起移动,但是当它们发生时,它们的速度可能不会一直相同.还需要考虑静态几何.虽然有大量的动态对象,但场景中也有一些静态对象(静态对象往往比动态对象大一到两个数量级).
现在,我想要的是一个空间数据结构,用于有效地对场景中的所有项目执行碰撞检测.如果算法也支持可见性查询,那么对于渲染管道来说会很棒.为简单起见,假设此处的碰撞检测是宽相的(即所有动态对象都是完美的球体).
所以,在我的研究中,我可以使用以下方法之一:
(1)八叉树(2)松散八叉树(3)线性八叉树(+松散)(4)KD树(5)BSP树(6)哈希
到目前为止(6)是我尝试过的唯一一个.它实际上是在速度方面完全高超(8192项碰撞下1ms的检查我的系统上),如果场景中的对象是平均均匀地分布.如果所有物体都被卷入一个较小的区域,这不是一个好的算法,我想这是可能的.
有没有人对使用哪一个有所了解,或者我可以用来加快速度的任何技巧?我想无论发生什么,我都可以使用单独的BSP树作为静态几何体.我想动态的"领域"是我最关心的问题.注意:没有CUDA,这只是CPU:p.
谢谢
编辑:好的,多亏了Floris,我发现了更多关于AABB Trees的信息.这里有关于GameDev的旧讨论:http://www.gamedev.net/topic/308665-aabb-tree---wheres-the-poly-o_o/ .看起来是一个很好的妥协.
最终编辑:决定不重新发明轮子.子弹物理库可能会为我做所有这些(它有AABB树,也可能非常优化).
在尝试使用java.util.zip我压缩存档时,遇到了很多问题,我解决了大部分问题.现在我终于得到了一些输出,我很难获得"正确"的输出.我有一个提取的ODT文件(目录将更符合描述)我做了一些修改.现在我想压缩该目录以重新创建ODT文件结构.压缩目录并将其重命名为.odt结束工作正常,所以应该没有问题.
主要问题是我丢失了目录的内部结构.一切都变得"平坦",我似乎找不到保留原始多层结构的方法.我希望得到一些帮助,因为我似乎无法找到问题.
以下是相关的代码段:
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
FILEPATH.substring(0, FILEPATH.lastIndexOf(SEPARATOR) + 1).concat("test.zip")));
compressDirectory(TEMPARCH, out);
Run Code Online (Sandbox Code Playgroud)
这SEPARATOR是系统文件分隔符,FILEPATH是原始ODT的文件路径,我将覆盖但尚未在此处进行测试.我只是写入同一目录中的test.zip文件.
private void compressDirectory(String directory, ZipOutputStream out) throws IOException
{
File fileToCompress = new File(directory);
// list contents.
String[] contents = fileToCompress.list();
// iterate through directory and compress files.
for(int i = 0; i < contents.length; i++)
{
File f = new File(directory, contents[i]);
// testing type. directories and files have to be treated separately.
if(f.isDirectory())
{
// add …Run Code Online (Sandbox Code Playgroud) 实用功能应该放在哪里Django?自定义加密/解密数字,发送推文,发送电子邮件,验证对象所有权,自定义输入验证等功能.我在我的应用程序中的许多地方使用的重复和自定义的东西.我现在肯定会打破DRY.
我看到了一些在models.py中定义函数的演示,虽然这在概念上对我来说似乎并不合适.他们应该进入导入我项目的"实用程序"应用程序吗?如果是这样,他们在实用程序应用程序中的位置?那里的models.py文件?
感谢您帮助这个n00b.
更新:让我更具体一点.假设我需要一个函数"light_encrypt(number)",它取param"number",乘以7,加10并返回结果,另一个函数"light_decrypt(encr_number)取param"encr_number",减去10,除以7并返回结果.在我的Django树中我会把它放在哪里?这不是中间件,对吧?正如Felix建议的那样,我是否创建了一个python包并将其导入我需要这些函数的视图中?
我有一些包含许多软件包,子软件包,子子软件包.etc的巨大NetBeans项目,看到NetBeans显示的平面布局中的所有这些软件包文件夹会让人感到非常困惑.. egabcdefg,abcddefh .etc .etc
是否可以有一个分层目录(树?)视图,就像在IntelliJ IDEA中一样?
谢谢,何塞
这是一个面试问题.直到现在,我曾经认为这些问题纯粹依赖于编译器,不应该担心我,但现在,我对它很好奇.
假设您有两种结构:
struct A {
int* a;
char b;
}
Run Code Online (Sandbox Code Playgroud)
而且,
struct B {
char a;
int* b;
}
Run Code Online (Sandbox Code Playgroud)
那么你更喜欢哪一个?为什么?我的回答是这样的(虽然我有点在黑暗中拍摄)第一个结构应该是首选的,因为编译器为字大小的一些倍数(这是指针的大小 - 在32上的4个字节)分配结构的空间位机和64位的8字节).因此,对于这两种结构,编译器将分配8个字节(假设它是32位机器).但是,在第一种情况下,填充将在所有变量之后(即在a和b之后)完成.因此,即使有一些机会,b得到一些溢出的值并破坏我的下一个填充字节,但我的a仍然是安全的.
他似乎并不高兴,并要求第一个结构在第二个结构上的一个缺点.我没有太多话要说.:d
请帮我解答.
我有两个共享大量代码的JSF项目 - java类,xhtml文件,标记库,css和javascript文件等.我的开发环境/平台主要包括Eclipse,Ant,Perforce和Tomcat.
有没有人找到一种方法来创建和组织共享代码,以便公共代码可以保留在一组文件夹中?
Eclipse可以很容易地为java源添加外部文件夹,但不能满足其他文件类型.我很欣赏任何想法.
在我看来,C的箭头操作符( - >)是不必要的.点运算符(.)应该足够了.请使用以下代码:
typedef struct {
int member;
} my_type;
my_type foo;
my_type * bar;
int val;
val = foo.member;
val = bar->member;
Run Code Online (Sandbox Code Playgroud)
我们看到箭头操作符必须用于取消引用栏.但是,我更愿意写
val = bar.member;
Run Code Online (Sandbox Code Playgroud)
关于我是否试图从结构或指针结构中拉出"成员",没有任何歧义.但是使用错误的运算符很容易,尤其是在重构代码时.(例如,也许我正在foo上做一些复杂的操作,所以我将代码移动到一个新函数并将指针传递给foo).我认为我不需要关心foo是否是指针; 编译器可以担心细节.
所以问题是:从C语言中消除 - >不是更简单吗?
我是一个完整的ROOKIE,所以我需要一些帮助.
您将如何使用参数创建uml类图和构造函数.
默认情况下(无参数)
用于图表和伪代码的policyholder()
对于参数你会做同样的事情
保险单(policynumber,服务类和客户年龄)用于类图和伪代码.
它还要求将每个属性初始化为可以实例化此类型的对象的值,如果策略编号不在1000和999之间,则将策略编号设置为0.(策略编号是属性)
我目前正在开发一个新的Vue.js应用程序.它在很大程度上取决于对我的后端数据库的api调用.
对于很多事情,我使用Vuex商店,因为它管理我的组件之间的共享数据.在github上查看其他Vue项目时,我看到一个特殊的vuex目录,其中包含处理所有操作,状态等的文件.因此,当组件必须调用API时,它包含来自vuex目录的actions文件.
但是,对于消息,例如,我不想使用Vuex,因为这些数据仅对一个特定视图很重要.我想在这里使用组件特定数据.但这是我的问题:我仍然需要查询我的api.但我不应该包含Vuex动作文件.因此,我应该创建一个新的动作文件.这样我就有一个特定的文件,其中包含针对vuex和单个组件的api操作.
我应该如何构建这个?创建一个新目录'api'来处理vuex数据和特定于组件的数据的操作?还是把它分开?