小编ypn*_*nos的帖子

将法向量旋转到轴平面上

我在3D空间中有一组数据点,显然都落在特定的平面上.我使用PCA来计算平面参数.PCA的第三个组成部分给出了平面的法向矢量(最弱的分量).

我接下来要做的是将所有点转换到所述平面上并在2D中查看它.

我的想法是做以下事情:

  • 找到飞机上的中心点(平均点)
  • 从所有数据点中提取它以将它们排列在原点周围
  • 旋转法线使其变为(0,0,-1)
  • 将此旋转应用于所有数据点
  • 使用正交投影(基本上,跳过z轴)

现在我坚持找到正确的旋转操作.我尝试使用acos或atan并设置两个旋转矩阵.似乎这两种方法(使用acos,使用atan)给我错误的结果.也许你可以帮帮我吧!

Matlab代码如下:

b = atan(n(1) / n(2));
rotb = [cos(b) -sin(b) 0; sin(b) cos(b) 0; 0 0 1];
n2 = n * rotb;
a = atan(n(1) / n(3));
rota = [cos(a) 0 sin(a); 0 1 0; -sin(a) 0 cos(a)];
n3 = n2 * rotaows:
Run Code Online (Sandbox Code Playgroud)

我希望n2y分量为零.然而,对于向量(-0.6367,0.77697,0.0467)已经失败了.

geometry trigonometry vector rotation

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

如何禁用PHP会话cookie?

我正在编写PHP代码,我希望自己使用POST传递会话ID.我不希望cookie存储会话,因为它会在用户退出POST周期时丢失.

PHP会自动设置cookie.我了解到可以通过设置session.use_cookies为0 来改变这种行为php.ini.不幸的是,我无权访问该文件,我也不想破坏在同一服务器上运行的其他脚本的行为.

有没有办法在PHP脚本中禁用或取消会话cookie?

编辑:由于建议的解决方案不适合我,我在代码中的位置使用$ _SESSION = array(),我发现会话应该无效.

php session

9
推荐指数
2
解决办法
4万
查看次数

如何以编程方式证明"六度分离"概念?

我有一个拥有2000万用户的数据库以及这些人之间的联系.如何在编程中以最有效的方式证明"六度分离"概念的概念?

链接到关于六度分离的文章

algorithm networking graph-theory combinatorics

8
推荐指数
1
解决办法
3735
查看次数

我应该到处使用std ::和boost ::前缀吗?

在我的C++代码中,我不使用声明using namespace std;using namespace boost;.这使我的代码更长,意味着更多的输入.我正在考虑开始使用"使用"声明,但我记得有些人反对这一点.建议的做法是什么?标准和助力是如此常见,那应该没有太大的伤害?

c++

7
推荐指数
4
解决办法
1774
查看次数

当没有使用窗口管理器时,X11无法最大化应用程序

我们有一个基于Linux的系统,它不使用Window管理器.当我们从终端窗口(例如Firefox&)启动某些应用程序(例如Firefox)时,我们发现无论我们做什么,我们都无法让应用程序全屏显示.

如果我们运行xrandr,它会显示默认分辨率为1280x1024,但是当我们尝试最大化Firefox时(按F11),应用程序的大小仅为1203x650.

另一个似乎有同样问题的应用是evince PDF阅读器.

我们的应用程序没有配置为运行窗口管理器(我们不想添加一个),所以我想知道是否还有其他东西可以让这些应用程序全屏显示.

谢谢...

x11

7
推荐指数
2
解决办法
9420
查看次数

std::multimap::equal_range 的时间复杂度

下午好,我想知道 的时间复杂度std::multimap::equal_range是多少?是 Big-O(n) 还是 BIG-0(log n)。我记得读过std::multimap::erase“被删除的序列长度的对数加线性时间”的时间复杂度。< http://frank.mtsu.edu/~csjudy/STL/Multimap.html >

c++ complexity-theory stl

5
推荐指数
1
解决办法
2273
查看次数

使用ifstream在两个线程中处理相同的文件

我的应用程序中有一个包含大量信息的输入文件.按顺序读取它,并且一次只有一个文件偏移量对于我的应用程序的使用是不够的.理想情况下,我希望有两个线程,它们具有ifstream从同一文件的两个唯一文件偏移量中分离且不同的s读取.我不能只是启动一个ifstream,然后使用它的复制构造函数复制它(因为它是不可复制的).那么,我该如何处理呢?

我马上想到两种方式,

  1. ifstream为第二个线程构造一个新的,在同一个文件上打开它.
  2. ifstream跨两个线程共享一个开放的单个实例(例如使用boost::shared_ptr<>).当线程获得时间片时,寻求当前线程当前感兴趣的适当文件偏移量.

这两种方法中的一种是首选吗?

我还没有想到第三种(或第四种)选择吗?

显然我最终受限于硬盘驱动器必须来回旋转,但我感兴趣的是(如果可能的话),同时在两个文件偏移处都有一些操作系统级磁盘缓存.

谢谢.

c++ io multithreading fstream ifstream

5
推荐指数
2
解决办法
8116
查看次数

如何获取可靠的QGLWidget快照

在我的应用程序中,我将QGLWidget内容的快照用于两个目的:

  • 使用缓存的pixmap代替时,不会在仅重叠更改时重绘场景
  • 用户可以截取特定图表的截图(3D场景)

我尝试的第一件事是grabFrameBuffer().对于第一个应用程序使用此函数是很自然的,窗口小部件中当前可见的内容正是我想要缓存的内容. 问题:在某些硬件上(例如Intel integrade图形,带有GeForce图形的Mac OS X),获得的图像不包含当前屏幕内容,而是包含之前的内容.因此,如果场景将被绘制两次,则在屏幕上您会看到第二张图,在图像中您看到第一张图(应该是后备缓冲区的内容?).

我尝试的第二件事是renderToPixmap().这使用paintGL(),但不使用paint().我有我所有的东西paint(),因为我使用Qt的绘画功能,只有一小部分代码使用原生GL(beginNativePainting(),endNativePainting()).

我还尝试了常规QWidget的快照功能(QPixmap :: fromWidget(),或者它的名称),但GL帧缓冲区是黑色的.

有关如何解决问题并获得当前绘制场景的可靠描述的任何想法?

c++ opengl qt qglwidget

5
推荐指数
1
解决办法
3702
查看次数

Callgrind内联函数

我正在分析我的代码,我已经找到了最昂贵的部分.但它发生在内联函数中.为了衡量影响,我强迫函数不被内联.

现在我想报告准确的分析数据.没有内联,我们有一个巨大的开销(该函数基本上是一个单独的循环,但它经常被调用).

我想知道是否有可能指示valgrind处理代码的特定部分,因为它本身就是一个函数(如makros CALLGRIND_START_INSTRUMENTATION,CALLGRIND_STOP_INSTRUMENTATION),而不强制函数不被内联.

c++ gcc profiling valgrind callgrind

5
推荐指数
1
解决办法
1409
查看次数

使用带有斯堪的纳维亚字符的vim + LaTeX

我想在Ubuntu中使用LaTeX创建一个实验室文章,但是我的文本包含斯堪的纳维亚字符,目前我必须使用/"a和"/ o等键入它们.是否有可能让乳胶编译器读取这些特殊字符是什么时候输入的?另外,我希望vim"阅读"芬兰语:现在,当我打开包含斯堪的纳维亚字符的.tex文档时,它们根本不会显示在vim中.我怎么能纠正这个?

vim ubuntu latex

4
推荐指数
1
解决办法
2015
查看次数