所以我有一个由3个矢量描述的3D平面:
P:位于平面
N 上的点:平面的表面法线
我有一个非常大的扁平方形多边形,我想渲染它来代表这个平面.我可以很容易地将多边形转换为给定的点,但是我需要找到适当的旋转来使表面法线实际上是表面法线.
我尝试了一个其他提到的方法,其中:
1)将任何非平行向量(V)取正常值(N),取十字积(W1)
2)取(W1)和(N)的叉积(W2),即矢量(V) ')位于飞机上
然后我生成一个基于(V')放置在平面上的旋转矩阵,这样我的多边形就会与(V')对齐.虽然有效,但很明显这种方法整体上工作不正常.多边形与表面法线不完全垂直.
关于如何产生正确旋转的任何想法?
因此,我编写了一个面向新程序员的基于四元数的3D相机,因此它们非常容易集成并开始使用.
在我开发它时,首先我将用户输入作为欧拉角,然后根据该帧的输入生成一个四元数.然后,我将拍摄相机的四元数并将其乘以我们为输入生成的四元数,理论上应该简单地将输入旋转添加到相机旋转的当前状态,事情就会变得既肥胖又快乐.让我们称之为:积累四元数,因为我们只存储和添加四元数.
但是我注意到这个方法存在问题.我使用的越多,即使我只是在一个欧拉角上旋转,比如Yaw,在一些迭代中,它会开始流血到另一个,Pitch说.这很轻微,但相当不可接受.
所以我做了一些更多的研究,并发现一篇文章说明积累欧拉角更好,所以相机将它的当前旋转存储为欧拉角,并且输入只是每帧添加到它们.然后我从每个帧生成一个四元数,然后用它来生成我的旋转矩阵.这解决了旋转出血问题进入不正确的轴.
那么任何Stackoverflow成员都能对这个问题有所了解吗?这是一种正确的做事方式吗?
所以我试图通过PHP脚本提供大型文件,它们不在Web可访问的目录中,所以这是我能够提供访问它们的最佳方式.
我能想到用来提供这个文件的唯一方法是将它加载到内存(fopen,fread等),将头数据设置为正确的MIME类型,然后只回显文件的全部内容.
这个问题是,我必须同时将这些~700MB的文件加载到内存中,并保留整个内容直到下载完成.如果我可以在他们下载的时候输入我需要的部分,那将是很好的.
有任何想法吗?
我正在寻找一种算法来找到3个球体之间的公共交叉点.
在完整算法的基础上,对数学的全面/详细描述将非常有帮助.
这是迄今为止我发现的唯一有用的资源:http: //mathforum.org/library/drmath/view/63138.html
但是这里描述的方法都不够详细,我可以写一个算法.
我更喜欢第二篇文章中描述的纯粹代数方法,但有什么用.
我最近升级到GCC 4.4(MinGW TDM版本),现在跟随代码产生这些警告:
在成员函数'void Console :: print(const std :: string&)'中:
警告:数组下标在数组边界之上
这是代码:
void Console::print( const std::string& str ) {
std::string newLine( str );
if( newLine.size() > MAX_LINE_LENGTH ) {
sf::Uint32 stringSize = newLine.size();
for( sf::Uint32 insertPos = MAX_LINE_LENGTH;
insertPos < stringSize; insertPos += MAX_LINE_LENGTH ) {
newLine.insert( insertPos, "\n" );
}
}
StringList tokens;
boost::split( tokens, newLine, boost::is_any_of("\n") );
for( StringList::iterator it = tokens.begin();
it != tokens.end(); ++it ) {
addLine( *it );
}
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
这是优化正在做...
它似乎是这条线导致它:
boost::split( tokens, …Run Code Online (Sandbox Code Playgroud) 我知道,例如,当Chrome下载Javascript文件时,它会被解释并进行JIT.
我的问题是,当IE6,7,8首先下载一个Javascript文件时,整个事情是解析和解释的吗?
我的理解是,只有顶级函数签名和在全局范围内执行的任何内容都在加载时进行了解析.然后在执行时解析函数体和其余部分.
如果它们在加载时被完全解析,您认为延迟下载和解析函数体的时间节省了多少?
我有一些OpenGL ES代码已经渲染到了GLSurfaceView,我正在修改它以使用SurfaceView和TextureView.
我在本机代码中需要的共同元素是:ANativeWindow.
因为SurfaceView我通过传递Surface到:
m_jwindow = ANativeWindow_fromSurface(env, surface);
Run Code Online (Sandbox Code Playgroud)
对于TextureView,我接受SurfaceTexture,在API 14中,我可以使用:
m_jwindow = ANativeWindow_fromSurfaceTexture(env, surface);
Run Code Online (Sandbox Code Playgroud)
但是,在Jellybean中删除了该功能.我想留下,我怎样才能ANativeWindow从SurfaceTexture在API 16+?
我有一个顶级元素,我保存到数据库,它有几个外来元素,如下所示:
@DatabaseTable
public class Parent {
@DatabaseField(id = true, index = true)
public Integer id;
@DatabaseField(foreign = true)
public ChildA a;
}
@DatabaseTable
public class ChildA {
DatabaseField(generatedId = true, index = true)
public Integer id;
@DatabaseField
public boolean something;
}
Run Code Online (Sandbox Code Playgroud)
假设已经在数据库中创建了这些.现在我想更新它们.将呼叫parentDao.update(parent)更新两者?或者我是否还需要手动更新孩子?
所以我遇到过几次这个问题:
我的 3D 场景图中有一些对象,它是其他对象的子对象。让我们称它们为 c (Child) 和 p (Parent)。
c 的位置是相对于 p 定义的。因此 c 可能有一个位置 (1,0,0) 但当然,由于 p 有一些其他位置,比如 (1,2,3),它实际上不是在我们世界的原始位置渲染的,而是在 (2 ,2,3)。
现在让我们说出于某种原因我们想知道 c 在世界坐标中的绝对位置(或旋转,问题是一样的),这通常是如何完成的?
c 是否应该知道它的父级并能够查询该位置并将其添加到它自己的位置,最终返回一个绝对位置?
3d ×3
math ×3
android ×2
android-ndk ×1
apache ×1
boost ×1
c++ ×1
euler-angles ×1
gcc ×1
java ×1
javascript ×1
ormlite ×1
performance ×1
php ×1
quaternions ×1
scenegraph ×1
tdm-mingw ×1