2017-01-19 19 views
1

我有一个平面网格与分割,我想指定每个角落应该定位的坐标。移动和更新网格顶点可以达到我想要做的,只要该平面只有没有内部分段。如果添加了内部分段,那么我有更多的顶点比我手动放置的更多,所以这些需要自动根据外部边缘的变换进行。基于角坐标转换和转换平面几何

我最初的想法是,我可以创建一个只有四个顶点的几何体,重新定位它们,然后增加我的飞机上的段数,显然,这不是Three.js支持的,正在寻找解决方法。

任何想法将不胜感激。

回答

2

我不认为这种转换可以表示为一个单一的矩阵,然后你就可以应用到你的平面网格。我认为你确实需要手动计算细分平面的每个顶点的坐标。

有不同的方法来做这个计算。 Bilinear interpolation是这种情况似乎做的工作。这是你如何做到的。如果你有四个点A,B,C,D,那么对于每个内部点,其位置可以作为(A和B的加权平均值以及C和D的加权平均值)的加权平均值。平均值的权重来自细分顶点在一个方向上的索引(例如,X)和内部平均值的另一个方向(例如Y)。您的索引从0运行到该方向的细分数量(包括),权重应该从0到1,因此weight = index/number of subdivisions

Example courtesy of @prisoner849

+0

斯蒂芬,谢谢你的见解。我会尽我所能来实现这个解决方案,并让你知道我的表现。 –

+0

我认为你的建议绝对正确。我最终找到了一个替代解决方案,消除了我需要做这种复杂的翻译。尽管非常感谢你的建议。 –

+1

有趣的问题和答案。 Upvoted两个(欢呼!)。我的方法是在这里:[jsfiddle](https://jsfiddle.net/prisoner849/311z5ceo/) – prisoner849