C# 在两个网格中查找差异的最快方法

C# 在两个网格中查找差异的最快方法,c#,wpf,3d,C#,Wpf,3d,所以我有一个项目,通过变形网格来制作头部动画 我有一个叫做“current”的网格,它被操作并最终显示在屏幕上。然后我有一堆变形目标,它们可以部分生效,也可以根据它们的重量相互结合 在我的代码中,我必须找到当前网格中的3D点与变形到的任何点之间的差异 我通过在两个网格中的位置上循环来找到点的差异。因此,我对X、Y和Z点差异的计算如下: double xDif = morphMesh.Positions[loop].X - currentMesh.Positions[loop].X; double

所以我有一个项目,通过变形网格来制作头部动画

我有一个叫做“current”的网格,它被操作并最终显示在屏幕上。然后我有一堆变形目标,它们可以部分生效,也可以根据它们的重量相互结合

在我的代码中,我必须找到当前网格中的3D点与变形到的任何点之间的差异

我通过在两个网格中的位置上循环来找到点的差异。因此,我对X、Y和Z点差异的计算如下:

double xDif = morphMesh.Positions[loop].X - currentMesh.Positions[loop].X;
double yDif = morphMesh.Positions[loop].Y - currentMesh.Positions[loop].Y;
double zDif = morphMesh.Positions[loop].Z - currentMesh.Positions[loop].Z;
假设网格有1000个位置,这是我目前使用最多的位置。这意味着1000次计算x 3。我的问题是,是否有更好的方法来执行该计算

例如,在psuedocode中是否有这样做的方法:

myDifferences = morphMesh.Positions - currentMesh.Positions
换句话说,在使用WPF的C语言中有什么东西可以更快地做到这一点吗

我也在看OpenCL,但还没有让它正常工作


非常感谢

.NET在删除公共子表达式方面并不总是做得最好。将morphMesh.Positions[loop]和currentMesh.Positions[loop]放入变量可能会有所帮助,尤其是在紧循环中。谢谢,我将尝试一下。你认为如果我把数学移到DLL中,它会更快吗?应该可以只计算一个差值作为点之间的距离。。。diff=morpMesh.Positions[loop]-currentMesh.Positions[loop].length;它将在这两个点之间创建一个向量,并返回其长度,它可能比您正在做的要快,也可能不快。谢谢您的回复。我不能让它工作。它返回一个双精度值,而不是我需要的Point3D:/实际上,经过一些尝试,我得到了一个双精度值,可以像您所说的那样使用:Vector3D foo=morphMesh-currentMesh。不幸的是,我不得不报告,这需要同样的时间。哦,谢谢你的想法: