我一直在使用chai-3d和opengl为触觉设备创建模拟。
我绘制了一个位于中心的球体和另一个位于中心球体周围的小球体,对于每个15度,将根据中心球体绘制一个球体。下面的一段代码将绘制中心球体。
cShapeSphere *sphere;
cShapeSphere* sphere2;
void sphere(void)
{
float r1=0.020;
float a=0.0;
float b=0.0;
float r2=r1/6;
float th=15;
double pi=3.14159265;
sphere =new cShapeSphere(r1);
world->addChild(sphere);
sphere->setPos(0,a,b);
//this will draw small sphere around the main sphere
for(int j=1;j<=24;j++)
{
sphere2 =new cShapeSphere(r2);
world->addChild(sphere2);
sphere2->setPos(0,a+(r1+r2)*cos(th*j*pi/180),b+(r1+r2)*sin(th*j*pi/180));
//this were i apply the force
double strength = pow((sphere2->getRadius() - length) * 8000,2);
force = (c_pos - spos) * strength;
//the calculated force is sent to haptic device
hapticDevice->setForce(force);
}
}
当我尝试对所有较小的球体施加力时,仅在位于15度的第一个较小球体上检测到力。不能对位于30度到360度的球体施加力。计算出的力被发送到阴蒂装置。问题在于球体,在中心球体周围绘制了24个较小的球体。我用来绘制24个球体的变量是sphere2。让我们考虑通过给出不同的变量名称1~24球来绘制球体,在那里我可以毫无问题地应用力,因为我使用不同的变量但是如果我使用相同的名称来绘制所有球体那么力仅在第一次迭代时应用。该力不适用于24中的其他23次迭代。我必须将力与球体位置一起迭代。