我的问题

lyemail19791103 lyemail19791103 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#include<stdlib.h>/* 定义了exit()函数 */
#include<math.h>/* 定义了fmodf()函数 */
#include"vg.h"
/* 自定义运动模式回调函数声明 */
int my_motion_model(vgMotionCallbackStruct *mot_cb);
void toggleEnable(vgMotion* com);
/* 用户数据参数结构体声明 */
typedef struct
{
float x, y, z; /* 数据库单位的位置坐标 */
float h, p, r; /* 以角度为单位的姿态角 */
float velocity; /* 运动速度 */
vgPosition *pos; /* 临时位姿 */
}motion_model_data;
//struct PositionStruct g_Position;
void main( int argc , char *argv[ ] )
{
/* 定义必要的Vega 类实例指针 */
vgObserver *obs;
vgMotion *mot;
vgIsector *ise;
vgIDev *idev;
motion_model_data *my_data; /* 用户数据指针 */
int i;
if ( argc < 2 )
{
printf ( "Useage: %s \\n" , argv[0] );
exit ( -1 );
}
/* 初始化、定义、配置系统 */
vgInitSys();
vgDefineSys(argv[1]);
vgConfigSys();
obs = vgGetObserv( 0 );
/* 取消不必要的Isector 的限制 */
for(i=0;i<vgGetObservNumIsect(obs);i++)
{
ise = vgGetObservIsect( obs, i );
vgRemObservIsect( obs, ise );
}

mot = vgGetObservMot( obs );
/* 设置运动模式 */
if (!mot)
{
mot = vgNewMot();
vgName(mot, "My Motion Model");
vgObservMot(obs, mot);
vgProp(obs, VGOBS_TETHERSTATE, VGOBS_DYNAMIC);
}
/* 指定输入设备 */
idev = vgNewIDev();
vgName(idev, "Mouse");
vgIDevOpen(idev);
vgMotIDev(mot, idev);
/* 注册新的自定义运动模式 */
vgMotRegister(VGMOT_USER1, my_motion_model);
/* 为运动模式回调函数用户自定义数据分配内存空间并创建用户数据 */
my_data = vgCalloc(sizeof(motion_model_data), vgGetSharedArena());

// my_data = pfCalloc(1, sizeof(motion_model_data), vgGetSharedArena());


/* 指定回调函数所使用的用户数据参数 */
vgUserData(mot, my_data);
/* 指定使用自定义的运动模式 */
vgProp(mot, VGMOT_MODEL, VGMOT_USER1);
/* 主循环 */
while ( 1 )
{
vgSyncFrame ();
vgFrame ();
/* 键盘响应控制 */
switch(vgGetWinKey(vgGetWin(0)))
{
case 'x':
toggleEnable(mot);
break;
default:
break;
}
}
}
/* 控制Vega 类实例的启用或禁用 */
void toggleEnable(vgMotion* com)
{

if (vgGetProp(com, VGCOMMON_ENABLED))
vgProp(com, VGCOMMON_ENABLED, VG_OFF);
else
vgProp(com, VGCOMMON_ENABLED, VG_ON);
}
/* 自定义运动模式的实现函数 */
int my_motion_model(vgMotionCallbackStruct *mot_cb)
{
vgIDev *idev; /* 输入设备 */
int toggles[3]; /* 输入设备按键 */
int middlebutton, leftbutton, rightbutton;
float devicex, devicey, devicez; /* 输入设备坐标 */
float deviceh, devicep, devicer;
float sin_h, cos_h;
static vgPosition *device_pos = NULL; /* 设备坐标位姿 */
motion_model_data *data; /* 用户数据指针 */
data = (motion_model_data *)mot_cb->user_data;
if (!data)
{
printf("motion model callback data not available\\n");
return(-1);
}


idev=vgGetMotIDev(mot_cb->mot); /* 获取输入设备指针 */
if(!device_pos)
device_pos=vgNewPos(); /* 创建必需的设备坐标位姿 */
switch(mot_cb->reason)
{
/* 运动初始化 */
case VGMOT_INIT_EVENT:
if (!data->pos)
data->pos = vgNewPos();
vgGetPos(mot_cb->mot, data->pos);
vgGetPosVec(data->pos, &data->x, &data->y, &data->z,
&data->h, &data->p, &data->r);
/* 运动初始位置 */
data->x = 2500.0f;
data->y = 2500.0f;
data->z = 2.5f;
/* 运动初始姿态 */
data->h = 0.0f;
data->p = 0.0f;

data->r = 0.0f;
/* 运动初始速度 */
data->velocity = 1.0f;
break;
/* 更新运动模式 */
case VGMOT_UPDATE_EVENT:
/* 获取鼠标位置坐标 */
vgGetPos( idev, device_pos );
vgGetPosVec( device_pos, &devicex, &devicey, &devicez,
&deviceh, &devicep, &devicer );
/* 获取鼠标按键信息 */
vgIDevReadToggleData( idev, toggles, 3 );
leftbutton = toggles[0];
middlebutton = toggles[1];
rightbutton = toggles[2];
/* 速度控制 */
if (leftbutton)
{
if (data->velocity < 10.0f)
data->velocity += 1.0f;
}
if (rightbutton)
{
if ( data->velocity > 1.0f)
data->velocity -= 1.0f;
}
/* 视点高度控制 */
if (leftbutton && middlebutton)
data->z += 1;
if (rightbutton && middlebutton)
data->z -= 1;
/* 平转方向控制 */
data->h -= devicex;
if ((data->h < -360.0f) || (data->h > 360.0f))
{
data->h = fmod(data->h, 360.0f);
}
vgGetSinCos(data->h, &sin_h, &cos_h);
/* 视点位置控制 */
data->x -= data->velocity * sin_h * devicey;
data->y += data->velocity * cos_h * devicey;
/* 保存位姿矢量 */

vgPosVec(data->pos, data->x, data->y, data->z,
data->h, data->p, data->r);
/* 更新运动位姿 */
vgPos(mot_cb->mot, data->pos);
break;
/* 运动复位控制 */
case VGMOT_RESET_EVENT:
vgGetPos(mot_cb->mot, data->pos);
vgGetPosVec(data->pos, &data->x, &data->y, &data->z,&data->h, &data->p, &data->r);
/* 设置复位位姿 */
data->x = 2600.0f;
data->y = 2400.0f;
data->z = 3.0f;
data->h = 0.0f;
data->p = 0.0f;
data->r = 0.0f;
/* 设置复位速度 */
data->velocity = 1.0f;
break;
/* 运动停止 */
case VGMOT_STOP_EVENT:
data->velocity = 0.0f;
/* 退出运动模式 */
case VGMOT_EXIT_EVENT:
/* 清理位姿内存空间 */
vgDelPos(data->pos);
data->pos = NULL;
break;
/* 通常不会发生的事件 */
default:
vgNotify( VG_WARN, VG_APP, "My Motion Model: Invalid Callback event",
mot_cb->reason );
break;
}
return(0);
}
Compiling...
xl.cpp
C:\Documents and Settings\DZJS\桌面\xl\xl.cpp(59) : error C2440: '=' : cannot convert from 'void *' to 'motion_model_data *'
Conversion from 'void*' to pointer to non-'void' requires an explicit cast
Error executing cl.exe.

xl.exe - 1 error(s), 0 warning(s)
如何解决?
...全文

相关推荐

psutil-5.9.0-cp310-cp310-win_amd64.whl.rar

python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

科技小游侠

psutil-5.9.0-cp38-cp38-win_amd64.whl.rar

python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

科技小游侠

psutil-5.9.0-cp37-cp37m-win_amd64.whl.rar

python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

科技小游侠

psutil-5.9.0-cp311-cp311-win_amd64.whl.rar

python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

科技小游侠

psutil-5.8.0-cp36-cp36m-win_amd64.whl.rar

python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

科技小游侠
评论 2
收藏 已收藏
分享
返回顶部
lyemail19791103
VC/MFC 16,550 成员 421,606 内容