我要发帖 回复

正式会员

6

主题

50

积分

0

专家分

:

私信
发表时间 : 2006-9-8 11:58:08 | 浏览 : 2900    评论 : 10
我在Vega里想实现物体绕自身中心旋转的功能
观察者的视点固定为(0,-3000,0);
朝向固定位置(0,0,0)
目标物体为一圆球,中心在(0,0,0)处,半径为1000
对象的属性设的动态坐标系
相应鼠标事件调用以下代码
vgPosition  *position= vgNewPos();
dofObj=vgFindObj("nameOfDofObj");
vgGetPs( dofObj, position);
……
vgPosVec( position, 0.0f, 0.0f, 0.0f, h, p, r);
vgPos( dofObj, position );

让左右转更改h的值就可以了

上下转就不知道怎么设置p,r值了
论坛上有很多人都问过这样的问题,最后都没有解决
请vrchina上的高人,为大家谋福利啊!
谢过了先!@

最近VR访客

vrer 评论于2006-9-8 12:46:42
上下转调整p值就可以啊,与h的调整类似,不知楼主有什么不能理解的地方
Patrick 评论于2006-9-8 13:49:58
当h=90时, 然后增加p值, 会发现对象是顺时针转,而不是向上转
当h=180,然后增加p值, 会发现对象是向下转,而不是向上转
当h=15时,就更难实现向上转了,
当h变化时,改变p值的结果难以预料
斑竹多帮忙啊!
obuil 评论于2006-9-8 19:55:01
原帖由 Patrick 于 2006-9-8 01:49 PM 发表
当h=90时, 然后增加p值, 会发现对象是顺时针转,而不是向上转
当h=180,然后增加p值, 会发现对象是向下转,而不是向上转
当h=15时,就更难实现向上转了,
当h变化时,改变p值的结果难以预料
斑竹多帮忙啊!


原来是这样啊

呵呵
obuil 评论于2006-9-8 19:56:31
这其实就是一个 h 、p、r值之间关系的问题,
我来替你把这个公式想出来
稍等






先放上图:

[ 本帖最后由 obuil 于 2006-9-8 08:25 PM 编辑 ]
1.JPG
obuil 评论于2006-9-8 20:32:23
我每次遇到这种三角转换的问题,总是先拿上笔和纸,
然后 在纸上画上一个坐标系,画 h方向偏角为任意角度,(一般在草图上画在0 到90度之间)


条件和问题:
已知 h值,根据变量 deltP(正Y方向的上下仰俯角),求 真实的 p值和r值。

步骤:

1。由 A和deltP可以求出D 和B长度   (A是假设值)
2。由A和 h 就可以确定E 和 C长度

3。由D 和E 就可以求出角度p
4。由 D和C 就可以求出 角度r

写出h值在0 到90度 之间的公式:

p=
r=

再做h在0---360之间的全局检查,看公式 全面是否
superdemo 评论于2006-9-9 01:53:38
不是太明白, 我觉得最好用矩阵,  供参考:


bool RotateObj(vgObject *pObj, const float dh, const float dp, const float dr)
{

if(pObj== NULL)
  return false;

vgMat mat;
vgMatStack *matStack;
:
:
matStack = vgNewMatStack();
:
:
vgGetPos( Obj, pos );
float x0,y0,z0,h0,p0,r0;
vgGetPosVec( pos, &x0, &y0, &z0, &h0, &p0, &r0 );   
   
vgGetPosMat( pos, mat );
vgLoadMat( matStack, mat );

vgRotMat(matStack,h0 + dh,'z');
vgRotMat(matStack,p0 + dp,'x');
vgRotMat(matStack,r0 + dr,'y');

vgGetMat( matStack, mat );

vgPosMat( pos, mat );
vgPos( Obj, pos );


return true;

}
obuil 评论于2006-9-9 12:35:53
物体的位置没有发生变化,应用矩阵应该没有什么省力的地方,关键在于,object上仰不是按照object的 p方向,而是从+y轴到+z轴
Patrick 评论于2006-9-10 23:31:48
谢谢大家的热心回帖,从中受益匪浅。

不过我还有一个问题
假设物体的初始方位为0,0,0
左右转动10度,改变h即可,此时方位为,10,0,0
然后上下转动10度,假设p增加8度,r增加2度,此时方位为10,8,2
然后我在左右转动10度,奇怪的是仅需改变h即可,方位变为20,8,2
然后就完全把握不了上下转动的规律了。
反正就是左右转动仅需改变和h即可。
有没有对规律比较熟悉的大虾,指点一二。
谢过先
wscsw 评论于2007-1-27 21:46:48
唉,可惜看不了附件……
nitily 评论于2007-3-22 09:48:27
我也是看不了的人 唉!

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2021-3-4 04:46 PM

返回顶部