我的问题可能有点奇怪.我已经"开发"了一种算法,并且不知道是否已经存在类似的算法.
情况:我有一个由跟踪点(2D)定义的轨道.例如,轨迹点代表转弯.在跟踪点之间只有直线.现在我在这个2D空间中给出了一组坐标.我计算从第一个跟踪点到新坐标的距离以及前两个跟踪点的间隔距离.如果到测量坐标的距离比从第一个到第二个轨迹点的距离短,我假设这个点位于这个间隔之间.然后我对它进行线性插值.如果它更大,我将检查下一个间隔.
所以它基本上采用间隔距离并试图将它们放在那里.我正试图跟踪一个大致沿着这条轨道移动的物体.
这对某人来说听起来很熟悉吗?有人可以提出类似现有算法的建议吗?
编辑:从我到目前为止所说的,我想澄清一个位置与跟踪点没有多少关联.考虑Jonathan制作的精细ASCII绘图:
发现X位置在段1和2内(S12).现在下一个位置是Y,不能认为它足够接近S12.我将继续前进到S23,并检查它是否存在.
如果它在,我将不会检查S12的任何其他值,因为我已经在下一个段中找到了一个.该算法"不回头".
但是如果它没有从那里找到正确的段,因为它发生在远离第一段,但仍然远离任何其他段无论如何,我将删除该值,下一个位置将被寻找又回到了S12.
循环仍然是一个问题.考虑我为S23得到Y然后跳过两三个位置(因为它们太远了),我可能会失去赛道.我可以在S34确定一个位置,它已经在S56中了.
也许我可以拿出一些平均速度来判断应该在哪个部分.
看起来细分市场越大,做出正确决策的机会就越大.
对C++不太熟悉,我有以下几点:
void read_image(vector<unsigned char>* buffer) {
buffer = new vector<unsigned char>(2048);
}
int main(int argc, char ** argv) {
vector< unsigned char > *buffer;
read_image(buffer);
delete buffer; // gives invalid pointer at run-time
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这仅仅是代码的相关部分,基本上我要初始化的指针buffer在read_image().在运行时我试图释放堆时得到这个:
*** glibc detected *** ./main: free(): invalid pointer: 0x00007fff0648556c ***
Run Code Online (Sandbox Code Playgroud)
我的做法有什么问题?
我只是尝试ILMerge将我的应用程序和所需的库合并到一个可执行文件中.我正在使用命令行进行一些测试.我做了一个示例项目:
ilmerge /out:ProgramMerged.exe Program.exe Lib1.dll Lib2.dll
Run Code Online (Sandbox Code Playgroud)
这似乎按预期工作.但是,如果我有一个Program.exe.config?它仍适用吗?
有人怎么做到这一点?
我是Scala的新手,来自基本的Java背景.我研究了如何实现类构造函数以及如何在setter中为该类的字段提供一些逻辑.
class SetterTest(private var _x: Int) {
def x: Int = _x
def x_=(x: Int) {
if (x < 0) this._x = x * (-1)
}
}
Run Code Online (Sandbox Code Playgroud)
构造函数参数已分配给字段_x,因此不使用setter.如果我想使用setter的逻辑怎么办?
object Test {
def main(args: Array[String]) {
val b = new SetterTest(-10)
println(b.x) // -10
b.x = -10
println(b.x) // 10
}
}
Run Code Online (Sandbox Code Playgroud)
在Java中,我可以使用构造函数中的setter来强制使用这个逻辑示例.
我如何在scala中实现这一点?
我读到了在不同的值类类型之间进行的隐式转换."Scala编程"一书指出:
[...]类
scala.Int的实例scala.Long在需要时自动扩展(通过隐式转换)到类的实例.(Ch.11.1 - Scala的层次结构)
在这种情况下,"必需"是什么意思?怎么能让这个"可见"?我以为:
scala> var i = Int.MaxValue
i: Int = 2147483647
Run Code Online (Sandbox Code Playgroud)
我期待i: Long = 2147483648如果加1.
scala> i = i + 1
i: Int = -2147483648
Run Code Online (Sandbox Code Playgroud)
我没想到会看到溢出.
编辑:按照建议,我将纹理目标更改为GL_TEXTURE_2D. 所以初始化现在看起来像这样:
void initTexture( int width, int height )
{
glGenTextures(1, &tex);
glBindTexture(GL_TEXTURE_2D, tex);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width,
height, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL );
glGenerateMipmap(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, 0);
}
Run Code Online (Sandbox Code Playgroud)
由于它是 a GL_TEXTURE_2D,因此需要定义 mipmap。这应该如何反映在 OpenCL Image2D 的初始化上?
texMems.push_back(Image2DGL(clw->context, CL_MEM_READ_ONLY, GL_TEXTURE_2D, 0, tex, &err));
Run Code Online (Sandbox Code Playgroud)
不过我还是收到了CL_INVALID_GL_OBJECT。所以问题仍然是:如何在初始化 OpenCL Image2D 时检查纹理完整性?
以前的方法:
我正在使用avcodec解码视频文件。结果是一个AVFrame. 我可以在GL_TEXTURE_RECTANGLE_ARB.
这是我的纹理初始化的摘录,在 gl (glew) 上下文初始化之后:
GLuint tex = 0; …Run Code Online (Sandbox Code Playgroud) 我不知道,我怎么可以利用包的像FSharp.Data在在线REPLs如repl.it.通常#r或#load不充分,也许我对这些环境如何运作缺乏了解.
那么有人知道如何启用它们吗?
我似乎无法获得适合我的自定义格式TimeSpan.ParseExact():
预期的时间样本:
1:23:45.6
23:45.6
23:45
1:23:45
Run Code Online (Sandbox Code Playgroud)
我正在使用的字符串格式:
string withTenthFormat = @"[%h\:]mm\:ss[\.%f]";
Run Code Online (Sandbox Code Playgroud)
试着有时间和几分之一秒.然而,使用这种格式和CultureInfo.InvariantCulture确实导致a FormatException.我错过了什么?