c# - 如何根据梯度计算/分配顶点的权重
问题描述
我有一个顶点列表,大小为 N,权重梯度(可以是任何长度)定义为:
float[] weight_distribution = { 0f, 1f, 0f };
这表示第一个和最后一个顶点的权重较小,而中间的顶点将满。就像一个黑白渐变,其键定义为数组。
这基于一个平面的 Y 轴,该平面包含许多段,该平面要根据梯度为程序绑定进行加权。该列表根据顶点的 Y 值进行排序,以便在列表的开头找到最低的顶点,最后找到最高的顶点。
我不知道如何用这种梯度计算给定顶点的权重。任何指针都会非常有帮助。
我尝试了一些不同的方法来查找有关当前顶点的值,但我不知道如何从该位置的渐变中提取权重。
这可能只是垃圾,但无论如何我都会把它放在这里以防万一。
// find unique Ys
List<float> ys = new List<float>();
for (int i = 0; i < list.Count; i++) {
if (!ys.Contains(list[i].y)) { ys.Add(list[i].y); }
}
float min = ys[0];
float max = ys[ys.Count - 1];
int levels = (ys.Count - 1);
float levelStep = (gradient.Length * 1f / levels * 1f);
float currentY = ys[0];
// set weights here
for (int i = 0; i < list.Count; i++)
{
// find current pos/value based on gradient somehow?
if(list[i].y > currentY ) { currentY = list[i].y; yindex++; }
float pos = ((yindex * levelStep) / levels * 1f);
float lerped = Mathf.Lerp(list[i].y, max, pos);
// ... calculate weight
}
解决方案
推荐阅读
- php-7 - 如何将 PHP5 代码修复为 PHP7
- javascript - FB.ui 未定义
- svn - git pull-remote 分支找不到远程参考 [尝试了许多解决方案但失败]
- python - selenium.common.exceptions.TimeoutException 同时通过 expected_conditions 在元素上调用 .click()
- java - 利用 spring kafka 在 kafka 消费者中手动提交偏移的方法
- python - 训练后的神经网络步骤
- python - 按索引访问枚举中的项目
- php - 在两个单词之间执行两个空格
- python - 表单中字段之间的Django间距
- mysql - 从每个组中获取除最大值之外的所有项目 - mysql