【问题标题】:Calculating tangent pointing in a specific 2D Direction计算指向特定二维方向的切线
【发布时间】:2016-06-02 19:48:26
【问题描述】:

我需要计算与给定法线的二维向量指向相同 (x,y) 方向的切线。 这是一个可视化:

Directed Tangent From Normal Viz

带有青色光线的红色平面是表面,它是正常的, 绿色“箭头”表示 2D 方向,蓝色表示法线与绿色箭头的 (x,y) 方向的切线。 因此,当从顶部(在对象空间,而不是表面空间)查看投影到 2D 时,绿色和蓝色是相同的方向。

所以如果这太抽象了,这里是上下文: 我正在进行 GPU 侵蚀模拟,为了计算溶解,我需要 3D 水速矢量来测试与地形法线的碰撞。但是模拟是二维的,所以我只有一个二维速度矢量。 我引用的论文只指出程序应该从地形表面切线和 2D 速度向量计算这个 3D 向量。

鉴于这些信息,法线和二维向量,计算所述匹配切线的数学是什么?

【问题讨论】:

    标签: vector 3d normals


    【解决方案1】:

    要计算表面切线,首先将向量投影到法线上。

    然后只需添加即可得到未归一化的切线。

    要重建反射速度,请执行

    其中e 是恢复系数(假设粒子)。

    【讨论】:

    • 好了,现在好像看懂了上图了。那么,其他“单词”的第一步:d = -dot (v, n),对吧?在那之后我不能完全跟随......但你似乎是我想要的对齐切线。最后一点不适用于我的情况,因为我不使用基于粒子的模拟,而是使用浅水模型。为了获得碰撞“硬度”,它使用了一个简化的公式,如下所示:长度 (-n * u);无论如何,我很感激:)
    • 哦,等等,明白了;)毕竟不难得到你:)非常感谢,期待看看它是否有效!
    • 注意规范化n,否则你的距离会出错;建议你先预先计算这些以避免一直做 invsqrt
    • 这不是问题,n 和 t 都应该归一化,它们仅用于确定碰撞的“方向”(我猜),或者更确切地说它是多么“直接”。然后将其乘以水流速度。所得到的标量毕竟仅用于确定沉积物的溶解,而不是对碰撞作出反应。我想这在身体上并不准确,但它有效:) 谢谢!
    • 没问题;出于好奇,您是否使用例如模拟流体?拉普拉斯方程还是完整的 Navier-Stokes?还是只是某种密集的 VdW 气体云?
    猜你喜欢
    • 2017-05-18
    • 1970-01-01
    • 2019-11-15
    • 2012-06-02
    • 2010-09-19
    • 2016-04-22
    • 2013-09-22
    • 2015-09-07
    • 1970-01-01
    相关资源
    最近更新 更多