首页 > 解决方案 > 如何将c ++中的重心坐标计算转换为python?

问题描述

我正在寻求帮助来转换这段 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 新手。

感谢任何帮助!:)

标签: pythonc++python-3.xpandas

解决方案


使用 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 数组


推荐阅读