python - 如何将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 新手。
感谢任何帮助!:)
解决方案
使用 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 数组
推荐阅读
- html - flexbox 中图像和滑块之间不需要的空间。如何删除它?
- reactjs - 检查存储是否在 Apollo 客户端中重置
- django - 如何阻止 Django 使用响应 csrf 令牌进行下一个请求
- android - dumpsys 活动 | grep -i run 不列出活动
- xslt - 如何在 xslt3.0 中循环当前组并打印每个值
- sql - 'Key' 是 SQL Server 中的保留关键字吗?
- firebase-realtime-database - 如何在android项目中使用firebase阻止和取消阻止用户
- reactjs - @firebase/firestore:Firestore (8.6.2):无法访问 Cloud Firestore 后端(React Js)
- laravel - laravel 解码分页链接
- time-series - 是否可以一次将多个列传递给 Croston 方法?