借助localPoints实现网格运动控制的问题
-
各位foamer大家好,最近在做一个翼型的运动控制的算例,想实现一个翼型柔性运动与俯仰运动的耦合。现在在编写俯仰运动时遇到了问题。首先我用localPoints函数分别读取了翼型的x,y坐标,命令如下:
scalarField x = patch().localPoints().component(vector::X); scalarField y = patch().localPoints().component(vector::Y);
然后在operator里面乘以旋转矩阵,这里减去x,y是因为要求位移增量:
amplitudex_*((x)*cos(theta)-(y)*sin(theta)-x) + amplitudey_*((x)*sin(theta)+(y)*cos(theta)-y)
这个theta是一个时间变化的角度,例如:
scalar theta = 20*sin(20*t.value());
现在出现的问题是翼型在旋转过程中会边转边向旋转中心缩短,这个是什么原因?我个人感觉是我对localPoints函数读取点坐标理解有问题,不知道有没有人试过。