c++ - 在 C/C++ 中使用 GSL 将多边形投影到平面上

标签 c++ math linear-algebra gsl

将多边形投影到平面上的一般问题已得到广泛解决,但我想知道是否有人可以针对我的特殊情况提出一些建议。

我在 3 维空间中有一个平面多边形 P,我想通过与单位 vector u 正交的原点将它投影到平面上。 P 的顶点和 u 的坐标是我仅有的数据(所有 w.r.t. R^3 的标准基础)。

但是,我不只是想要投影坐标。我实际上想找到与 u 正交的平面的正交基,然后在这个新基中找到投影顶点的坐标。

基本身并不重要,只要它是正交的即可。所以我真的需要在 GNU 科学图书馆的框架内做两件事:

(1) 求与单位 vector u正交的齐次平面的两个正交基 vector 。

(2) 在此基础上求P的顶点在平面上的投影坐标。

关于如何使用 gsl 执行此操作的任何想法?

最佳答案

我没用过GSL,不过你只需要用点积、叉积、归一化就可以得到结果。

(1) 选择任何不是u 倍数的 vector r。设 v = ru 的归一化叉积。设 w = uv 的叉积。您的正交基 vector 是 vw

(2) 投影一个顶点a到这个平面,它是(av) * v + (aw) * w。 (v坐标是avw坐标是aw)

为了帮助思考这是如何工作的,请选择 u = <1,0,0> 和 r = <3,0,5> 开始,然后可视化3-d vector 。

关于c++ - 在 C/C++ 中使用 GSL 将多边形投影到平面上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3383105/

相关文章:

c++ - 使用 Stroustrup 示例的 condition_vairable::wait_for() 问题

c++ - SFML 中的程序纹理

c++ - Windows 如何处理加载两个不同版本的 DLL?

c++ - 如何返回std::pair的内容?

javascript - Javascript 中的 gluProject 等效项

c++ - 如何包装对象,使它们成为无法交互的独立类型?

linear-algebra - LAPACK 正交化函数

Javascript (Math.pow(2,31) | 0) 产生负数

java - 为什么我的 double 数学结果是错误的?

opengl - 将 OpenGL 4 矩阵转换为 VRML T*R*S