我糊涂了.好吧不要混淆,不要想做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 PreparedStatment对象来构造一系列批量INSERT查询.查询语句的格式是......
String strQuery = "INSERT INTO ? (col1, col2, col3, col4, col5) VALUES (?,?,?,?,?,?);";
Run Code Online (Sandbox Code Playgroud)
...所以字段值和表名都是变量(即,我有多个具有相同列格式的表,其中每个插入将指向不同的一个).如果删除"?",我可以让执行工作 tablename变量和硬代码,但每个预处理语句将被插入到不同的表中,因此需要保留一个变量,我在执行批处理查询之前立即填充...
stmt.setString(1, "tableName1");
Run Code Online (Sandbox Code Playgroud)
我怎么能让这个变成动态变量呢?
在我的一个项目中,我尝试在表格中显示Angular Components(如自动完成下拉搜索).由于我的要求(比如用ctrl+点击多选不同的单元格),我决定给它一个动手的去.
我使用了handontable渲染器并动态添加组件.
代码看起来像这样
matrix.component.ts
this.hot = new Handsontable(this.handsontable.nativeElement, {
data: this.tableData,
colWidths: [80, 300],
colHeaders: ['Id', 'Custom Component'],
columns: [
{
data: 'id',
},
{
data: 'id',
renderer: (instance: any, td: any, row: any, col: any, prop: any, value: any, cellProperties: any) => {
if (cellProperties.hasOwnProperty('ref')) {
(cellProperties.ref as ComponentRef<CellContainerComponent>).instance.value = row;
} else {
cellProperties.ref = this.loadComponentAtDom(
CellContainerComponent,
td,
((component: any) => {
component.template = this.button4Matrix;
component.value = row;
}));
}
return …Run Code Online (Sandbox Code Playgroud) 尝试使用 import.meta 时,我不断收到“仅当 '--module' 选项为 'es2020'、'esnext' 或 'system'.ts(1343) 时才允许使用 'import.meta' 元属性” .url(如Parcel 文档中所示)。是的,我已经按照消息中的建议配置了 tsconfig(尝试了所有 3 个选项)。
我正在尝试使用 React、Typescript 和 Parcel 2 从资产文件夹动态加载图像。我在互联网上搜索解决方案,并且阅读了有关 Typescript 中合并和增强类型的内容,但我似乎无法做到这一点工作。
什么使编程语言被称为动态语言?我应该使用动态编程语言来解决哪些问题?静态编程语言和动态编程语言之间的主要区别是什么?
在C#中,有人可以这样做:
MyClass myInstance = new MyClass();
dynamic mydynamicInstance = myInstance;
Run Code Online (Sandbox Code Playgroud)
然后,调用一个方法,如:
//This method takes a MyClass argument and does something.
Caller.InvokeMethod(myDynamicInstance);
Run Code Online (Sandbox Code Playgroud)
现在,这将导致在运行时确定myInstance类型,如果它有效,Caller.InvokeMethod将正常调用.
现在,我的问题是,如果这被认为是一种不好的做法dynamic,特别是在以下情况下:
1)InvokeMethod使用内部反射实例化myDynamicInstance类型的另一个实例.
2)有一个抽象基类MyBaseClass和它的许多子类,包括MyBaseClass.如果我们InvokeMethod为所有这些派生类提供了许多重载方法,我们是否可以使用它来在运行时允许类型确定,然后通过方法重载(或对该类方法调用的后期绑定)进行适当的调用)?:
public abstract class MyBaseClass {/*...*/}
public class MyClass : MyBaseClass {/*...*/}
public class MyAnotherClass : MyBaseClass {/*...*/}
MyBaseClass myBaseClassRef = new MyClass();
dynamic myDynamicInstance = myBaseClassRef;
Caller.InvokeMethod(myDynamicInstance);
Run Code Online (Sandbox Code Playgroud) c#3.0中的匿名类型(var)和c#4.0中的动态类型(动态)之间的真正区别是什么?
我想用以下代码将Imageview数组的重力,ImageIcons [i]设置到中心,
ImageIcons[i] = new ImageView(this);
ImageIcons[i].setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
layout.addView(ImageIcons[i]);
Run Code Online (Sandbox Code Playgroud)
在设定引力时我被困住了.我要求SO人员指导我.
谢谢
在使用方面,动态编程和贪婪方法之间的主要区别是什么?
据我所知,贪婪的方法有时会提供最佳解决方案; 在其他情况下,动态编程方法提供了最佳解决方案.
为了使用一种方法(或另一种方法)获得最佳解决方案,是否必须满足任何特定条件?
我希望能够通过将字符串变量传递给函数来实例化特定的ES6类.根据变量的值,将创建一个不同的类.
示例 - 我有2个类ClassOne,ClassTwo.我希望能够将变量传递给函数并返回一个新类.类的名称将与变量相关 - 例如.传球'Two'将创造ClassTwo.
我不希望只用一个switch条款是这样的:
function createRelevantClass( desiredSubclassName )
{
let args = [],
newClass;
switch( desiredSubclassName )
{
case 'One' :
newClass = new ClassOne(args);
break;
case 'Two' :
newClass = new ClassTwo(args);
break;
}
return newClass;
}
Run Code Online (Sandbox Code Playgroud)
相反,我想以某种方式能够使用变量名创建构造函数调用.那可能吗?
function createRelevantClass( desiredSubclassName )
{
// desiredSubclassName would be string 'One' or 'Two'
// how to use the 'new' operator or Reflect here to create the …Run Code Online (Sandbox Code Playgroud) dynamic ×10
c# ×2
typescript ×2
.net ×1
algorithm ×1
android ×1
angular ×1
center ×1
class ×1
dom ×1
ecmascript-6 ×1
graph ×1
gravity ×1
greedy ×1
handsontable ×1
image ×1
java ×1
javascript ×1
parceljs ×1
reactjs ×1
reflection ×1
sql ×1
static ×1
structure ×1
variables ×1