error C2338: YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES
使用Eigen时报以下错误:
error C2338: YOU_MIXED_MATRICES_OF_DIFFERENT_SIZES
参考https://blog.csdn.net/Charles_ke/article/details/89067150得知应该是Eigen矩阵维度不相同导致的问题
通过注释相关代码定位到报错的位置:
for (int i = 0; i < loop_size; i++) {Vector3d pos = current_V.row(mainLoop[i]);new_vertices.row(i) = pos + expansionDirections.row(i);}
由于expansionDirections.row(i)既可以代表行向量又可以代表列向量,使其与列向量pos相加会出现维度不兼容的情况
解决办法如下,将expansionDirections.row(i)赋值为与pos一样的列向量,再与pos进行运算,不再报错
for (int i = 0; i < loop_size; i++) {Vector3d pos = current_V.row(mainLoop[i]);Vector3d dir = expansionDirections.row(i);new_vertices.row(i) = pos + dir;}