Tacview数据导出C&C++库使用
为了方便TacView数据导出,避免一个项目写一份,写了个方便的库以便调用。
具体实现代码存在自建gitea上
注意:tacview官方坐标系为正北为0,顺时针旋转增加,0~360度。
本项目自带坐标转换。如果坐标系与它不一样,需要使用TacviewRender::config()(C++)或tacview_render_config()(C语言)来配置坐标系,详细使用见下文
TacviewRender
用于渲染Tacview文件或日志log(两用)的库项目。
C与C++代码均可使用
用法
下载库文件和头文件,设置引用库文件和头文件。
C++用法:
TacviewRender::init(std::string 路径);用来创建文件,如果路径不填写则默认创建output.txt.acmiTacviewRender::config(int beginAngle, RotionalDirection)配置坐标系,beginAngle为相对于tacview标准坐标系的开始角度(正东为90,正南为180,正西为270),顺时针方向为RotionalDirection::CLOCKWISE,逆时针为RotionalDirection::COUNTER_CLOCKWISETacviewRender::createTacview();写入tacview格式的相关信息,也可以不加,就单纯当做日志文件使用。TacviewRender::recordTime();记录飞行时间,每次调用记录0.2s,用在每次大循环的开始。static void recordPlane(std::string id,double lon, double lat, double alt, double roll, double pitch, double yaw,std::string name = "F16", std::string color = "Red");记录一次飞机的位置,id需要为一个字母+多个数字组合,如"A01,A10001",颜色为Red或Blue首字母大写,后续小写.etc.static void recordMissile(std::string id,double lon, double lat, double alt, double roll, double pitch, double yaw,std::string name = "AM", std::string color = "Red");记录导弹的位置信息,同飞机
示例
#include "TacviewRender.h"
#include <iostream>
#include <pplinterface.h>
int main(int argc, char** argv) {
TacviewRender::init();
TacviewRender::createTacview();
TacviewRender::config(90, RotionalDirection::CLOCKWISE);
for(int i =0; i< 9 ; ++i) {
TacviewRender::recordTime();
//TacviewRender::recordPlane();
TacviewRender::recordPlane("A001", 36, 100, 30, 10, 15, 50.11, "F16", "Red");
TacviewRender::recordPlane("B001", 35, 101, 30, 10, 15, 50.11, "F16", "Blue");
}
return 0;
}
C用法
int tacview_render_init(const char* path);,用来创建文件,如果路径为NULL则默认创建output.txt.acmivoid tacview_render_config(int beginAngle, int rotional_direction);配置坐标系,beginAngle为相对于tacview标准坐标系的开始角度(正东为90,正南为180,正西为270),顺时针方向为0,逆时针为1void tacview_render_create(void);写入tacview格式的相关信息,也可以不加,就单纯当做日志文件使用。void tacview_render_record_time(void);记录飞行时间,每次调用记录0.2s,用在每次大循环的开始。
void tacview_render_record_plane(
const char* id,
double lon,
double lat,
double alt,
double roll,
double pitch,
double yaw,
const char* name,
const char* color
);
记录一次飞机的位置,id需要为一个字母+多个数字组合,如"A01,A10001",颜色为Red或Blue首字母大写,后续小写.etc. 6.
void tacview_render_record_missile(
const char* id,
double lon,
double lat,
double alt,
double roll,
double pitch,
double yaw,
const char* name,
const char* color
);
记录导弹的位置信息,同飞机
示例
#include <stdio.h>
#include "TacviewRenderC.h"
int main() {
printf("hello");
tacview_render_init(NULL); //初始化文件
tacview_render_create(); //初始化tacview格式,如果不加这句可以当做普通日志文件
//初始化坐标系,默认坐标系为正北为0,顺时针,0~360度;后面的角度方向0为顺时针,1为逆时针
//此处为以90度(正东)为新0度,逆时针方向
tacview_render_config(90, 1);
for(int i = 0; i <= 10; ++i){
//记录当前仿真时间,每个大循环需要带一个
tacview_render_record_time();
//记录飞机位置(内部会进行角度坐标系的转换)
tacview_render_record_plane("A01", 0, 0, 0, 0, 0, 0, NULL, "Blue");
}
return 0;
}
- 感谢你赐予我前进的力量
