ccraohng 最近的时间轴更新
ccraohng

ccraohng

V2EX 第 292214 号会员,加入于 2018-02-16 01:41:28 +08:00
ccraohng 最近回复了
全站加速。
就一个键盘,尽量不要用库。
图片用 secset 用 webp 。
加快后端响应
成都冬天雾霾还大吗
function convert() {
const levels = ['province', 'city', 'district'];
const result = {
children: {},
};

data.forEach((item) => {
levels.reduce((map, level) => {
const current = item[level];

if (!map.children) {
map.children = {};
}

map.children[current] = map.children[current] || {
data: {
label: current,
value: level === 'district' ? item.adcode : current,
},
};

return map.children[current];
}, result);
});

const format = (item) => {
if (item.children) {
const children = Object.values(item.children).map((child) => {
return format(child);
});

item.children = children;
}

return item;
};

const root = format(result).children;
console.log(root);
}
convert();
@sillydaddy 没有 “转成”这个概念,我错了。是你发的链接中的 不同解释,老哥可以的话加我 v cmhkaWFuamk=
@sillydaddy

什么行列优先。

我是奇怪 gl-matrix 的写法为何“反着”的,
在 shader 里是
[
1, 0, 0, tx,
0, 1, 0, ty
0, 0, 1, tz,
0, 0, 0, 1
] *
[x,
y,
z,
1]

MDN 上说了 uniformMatrix 是以列优先录入值,即坐标 0 - 3 会被转成 m[0] ( m[0] is the left column of m )

[
1, 0, 0, 0,
0, 1, 0, 0
0, 0, 1, 0,
tz, ty, tz, 1
] 刚好被 转成

[
1, 0, 0, tx,
0, 1, 0, ty
0, 0, 1, tz,
0, 0, 0, 1
]
https://developer.mozilla.org/zh-CN/docs/Web/API/WebGLRenderingContext/uniformMatrix

这个方法假定矩阵是列优先。

[
1, 0, 0, tx,
0, 1, 0, ty
0, 0, 1, tz,
0, 0, 0, 1
]

会变成

[
1, 0, 0, 0,
0, 1, 0, 0
0, 0, 1, 0,
tz, ty, tz, 1
]
与正确结果相反,所以 gl-matrix 使用的是

[
1, 0, 0, 0,
0, 1, 0, 0
0, 0, 1, 0,
tz, ty, tz, 1
]
@3dwelcome 抱歉是我举得例子有问题
@3dwelcome 你看下 https://github.com/toji/gl-matrix/blob/master/src/mat4.js#L829 fromTranslation 函数, 变换值是写在 12 13 14 索引上的
@ccraohng 说错了,不是转置矩阵。gl-matrix 的写法使用行优先,位置调换一下?
@3dwelcome

是我的表述问题。
上面手册里定点向量实际为

[x,
y,
z,
1]

它的平移变换矩阵,按照 `uModelMatrix * aVertexPosition` 的写法应该(我的理解)为

```
[
1, 0, 0, tx,
0, 1, 0, ty
0, 0, 1, tz,
0, 0, 0, 1
]
```

但是 gl-matrix 是这样的

```
[
1, 0, 0, 0,
0, 1, 0, 0
0, 0, 1, 0,
tz, ty, tz, 1
]
```


gl-matrix 写法是 T(tx, ty, tz) 的转置矩阵,按照我的理解在 shader 里位置应该调换一下

```
gl_Position = aVertexPosition * uModelMatrix
```

为啥
关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1947 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 11:44 · PVG 19:44 · LAX 04:44 · JFK 07:44
♥ Do have faith in what you're doing.