【问题标题】:how to convert a barycentric coordinate calculation in c++ to python?如何将c ++中的重心坐标计算转换为python?
【发布时间】:2021-09-02 06:07:23
【问题描述】:

我正在寻求有关转换这段 C++ 代码的帮助,并且想知道它在 python 中的样子。

void Barycentric(Point p, Point a, Point b, Point c, float &u, float &v, float &w)
{
    Vector v0 = b - a, v1 = c - a, v2 = p - a;
    float d00 = Dot(v0, v0);
    float d01 = Dot(v0, v1);
    float d11 = Dot(v1, v1);
    float d20 = Dot(v2, v0);
    float d21 = Dot(v2, v1);
    float denom = d00 * d11 - d01 * d01;
    v = (d11 * d20 - d01 * d21) / denom;
    w = (d00 * d21 - d01 * d20) / denom;
    u = 1.0f - v - w;
}

我不确定这两种语言的黑白转换,因为我还是 python 新手。

感谢任何帮助! :)

【问题讨论】:

    标签: python c++ python-3.x pandas


    【解决方案1】:

    使用 numpy 你会得到一个非常相似的函数。

    import numpy as np
    def Barycentric(p, a, b, c, u, v, w):
        v0 = b - a
        v1 = c - a
        v2 = p - a
        d00 = np.dot(v0, v0)
        d01 = np.dot(v0, v1)
        d11 = np.dot(v1, v1)
        d20 = np.dot(v2, v0)
        d21 = np.dot(v2, v1)
        denom = d00 * d11 - d01 * d01
        v = (d11 * d20 - d01 * d21) / denom
        w = (d00 * d21 - d01 * d20) / denom
        u = 1.0f - v - w
    

    其中 p、a、b 和 c 只是坐标系维数大小的 numpy 数组

    【讨论】:

    • 你甚至可以v0, v1, v2 = b-a, c-a, p-a 复制原始的(丑陋的)第一行
    • "hideous" 这就是我改变它的原因。
    猜你喜欢
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多