- 博客(49)
- 收藏
- 关注
原创 QFileInfo/QString类中的一些方法记录
记录一下 //用来保存截取的字符串 QString temp = NULL; QFileInfo fi(modelFn); temp = fi.completeBaseName().right(2);QFileInf为qt的文件信息类,其中一些功能能够对字符串进行操作。如 这里的BaseName()方法和completeBaseName()方法。qt中对于 BaseName() 的例子是:QFileInfo fi("/tmp/archive.tar.gz");
2020-12-09 13:07:12
1407
原创 应对osg导入模型初始朝向不一致导致多模型运动动画计算姿态出错问题
1.问题从3DMax中制作完成的模型,导出后的姿态各不相同,比如osg中自带的 .osg 格式模型,模型翻滚轴为x轴,俯仰轴为y轴,偏航轴为z轴。实际在osgEarth上使用的时候,如令模型初始方向为向北,即设置y轴为翻滚轴、x为俯仰轴、z轴为偏航轴。而系统交付使用的时候,使用方导入的模型坐标轴不一定按上面的来。2.解决思路及控制要求因此需要在对模型姿态进行控制与调整。思路:通过对名字末尾的字符串进行判断,判断出模型当前轴向信息,然后进行调整。要求:让模型制作方控制模型的正向仅在xoy平面,z轴控
2020-12-09 10:18:44
789
原创 求岛屿的周长(详细注释,新手上路)
力扣每日一练:class Solution {public: int islandPerimeter(vector<vector<int>>& grid) { //每一对相连的方块都有两条公共的边,算出有多少对方块相连,就能算出有多少条公共边(公共边数量为对数*2) //然后用4*方块个数-公共边数量,即可得到外轮廓周长 //1.陆地方块数量 int earthNumber = 0; //2.相邻方块的对数 int
2020-10-30 14:34:04
390
原创 c++的this指针使用详解及套娃(链式程序)示例
this指针概念我们知道在C++中成员变量和成员函数是分开存储的每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码那么问题是:这一块代码是如何区分那个对象调用自己的呢?c++通过提供特殊的对象指针,this指针,解决上述问题。this指针指向被调用的成员函数所属的对象this指针是隐含每一个非静态成员函数内的一种指针this指针不需要定义,直接使用即可this指针的用途:当形参和成员变量同名时,可用this指针来区分在类的非静态成员函数中返回对象本身,可使用
2020-09-19 12:22:37
454
原创 for/do while实现水仙花数
//使用for循环求水仙花数void test(){ //百位 for(int a = 0; a < 10; a++) { //十位 for(int b = 0; b < 10; b++) { //个位 for(int c = 0; c < 10; c++) { if(a == 0 && b ==
2020-09-17 10:21:08
1039
原创 Unity的c#脚本在vs中没法智能联想的问题
尝试了很多方法,都没用,什么设置默认vs版本,重启之类的当时用的是unity2020和vs2015,将vs更新为2019后,把unity开发组件也加进去就行了,直接在2015里面下工具可能也行,但是下载速度巨慢。...
2020-08-27 22:29:09
1039
原创 一篇看懂链表增删改查(文末附完整文件可直接cv大法调试)
链表创建及功能实现QT旧版本没搞明白怎么支持输出中文所以只能拿出散装英语了= =语法错误勿怪哈~ps:关于尾指针的一些心得在头指针创建后,尾指针也创建了(其实都是一个节点指针的变量,只是头指针分配了内存,尾指针没有分配,只是一个指针变量),并指向头指针,这时候只有一个头指针,所以尾指针将指针域设置为NULL,也就是头指针的指针域设置为NULL,当要执行添加操作时,尾指针就像一个帽子,趴在目前最近的节点头上,看到NEW了一个新的节点,就将身下的节点的指针域由NULL改为NEW的节点的地址,然后喊NE
2020-08-25 09:59:48
255
原创 QT出现“查找/添加槽错误”解决方法之一
出现The class containing "Ui::MainWindow" could not be found in E:\QTproject\osgProjects\2020_810_DEMO\mainwindow.hE:\QTproject\osgProjects\2020_810_DEMO\Function.h.Please verify the #include-directives.类似错误,重启qt Creator可解决。
2020-08-12 15:36:44
3127
4
原创 一篇看懂osg矩阵父子关系与绝对/相对坐标系问题
MatrixTransform父子节点坐标系问题任意MartixTransform节点可以通过调用getMatrix()方法获得从参考点变换到目前MartixTransform节点所在位置的矩阵Matrix。每个模型都有自己的坐标系,比如有些飞机做成osg类型的文件时机头方向可能是z轴,有些机头方向却是x轴。这可以在外部软件如3dmax等进行修改,再打包模型。打包好的模型加载进osg中后,模型坐标系与模型保持相对静止,在模型加入到osg中时,模型的轴与世界坐标轴重合,原点相同。如果对模型进行旋转操作,
2020-08-11 13:45:36
1584
原创 osg/osgEarth绘制几何体
绘制几何体所需要的类如下:osg::Geode、osg::Geometry、osg::Vec3Array、osg::DrawArrays、osg::PrimitiveSet四个类包含的过程为 osg::ref_ptr<osg::Geode> pGeode = new osg::Geode; osg::ref_ptr<osg::Geometry> pGeometry = new osg::Geometry; osg::ref_ptr<osg::Vec3Arr
2020-08-10 14:48:11
2377
原创 osgEarth使用经纬度定义视点/设置相机跟随移动的节点
设置相机视点位置#include <osgEarthUtil/EarthManipulator>//---------------------------------------------------------------------------------------------//定义视点类对象osgEarth::Viewpoint vp;//设置视点参数,focalPoint()函数返回的是一个点_point,然后调用set()函数进行设置,第一个参数是空间参考参数,第二个
2020-08-10 14:37:29
4503
原创 osgEarth世界坐标和经纬度坐标相互转换
经纬度转世界坐标函数包含osg::EllipsoidModel的头文件为#include <osg/CoordinateSystemNode>osg::Vec3d LonLatAltToWorld(const osg::Vec3d lonLatAlt){ osg::Vec3d world; osg::EllipsoidModel* em = new osg::EllipsoidModel(); //Lat纬度Long经度 em->convertLatLongHeightT
2020-08-10 14:31:46
4956
原创 osgEarth设置文本颜色和大小
颜色设置void setTextColor(const osg::Vec4& clr){ m_textColor = clr; for(unsigned int i = 0;i < m_pTextGroup->getNumChildren();++i) { osgEarth::Annotation::LabelNode* pLabel = dynamic_cast< osgEarth::Annotation::LabelNode* >(m_pTextGroup
2020-08-10 14:27:33
1260
原创 osg/osgEarth设置节点显隐状态
设置节点显隐往上追溯,继承于Node的类的对象都可以设置显隐bool if_visible//如果是trueif (if_visible){ //可见 node->setNodeMask(0xFFFFFFFF);}else{ //不可见 node->setNodeMask(0x0);}
2020-08-10 14:21:18
1293
原创 在osgEarth上画同心圆
一.绘制流程首先申明一个几何体,这个几何体需要加入顶点数组,也就是组成这个几何体的点的集合,然后确定点的组织形式,然后申明feature、featureNode,一步步包含然后将featureNode加入到场景根节点中这里选择的是线状要素组织,共有三种组织形式,分别是PointSet、LineString和Ring,这三个都公有继承于Geometry类PS(以下来自百度): 在公有派生的情况下,派生类的指针可以直接赋值给基类指针。但即便基类指针指向的是一个派生类的对象,也不能通过基类指针访问基类没有而
2020-08-10 14:18:02
2002
2
原创 程序无代码错误但是运行报错:xx不是类的函数
这种情况多出现在修改了所使用的库中的源码(添加了新的注释或修改了注释)如果一个函数明明没错,但是一直提示不是类的函数,或者其中调用找不到标识符,可能是注释的问题,把注释去掉再编译试试,尤其是这种形式的注释:/** */ 这种注释是蓝色的适用于复制了源码的注释符号过来或是对源码添加了新的注释后出现不明原因报错的情形。解决问题:回忆一下修改了哪里的注释,把注释删掉,把中文的标点改成英文的...
2020-08-10 14:04:26
351
原创 osgEarth要素贴地问题
贴地使用两种标签,分别是clamping和techniqueclamping之下含有CLAMP_TO_TERRAIN和CLAMP_ABSOLUTEtechnique之下含有TECHNIQUE_MAP、TECHNIQUE_SCENE、TECHNIQUE_GPU、和TECHNIQUE_DRAPE自由组合,多多试试,总有一个组合能实现贴地格式为:osgEarth::Style style;style.getOrCreateosgEarth::Symbology::AltitudeSymbol()
2020-08-10 14:01:01
2735
原创 osg控制台程序使用自定义大小窗口启动
使用自定义大小的窗口启动程序的代码viewer->setUpViewInWindow(100,100,800,600);
2020-08-10 13:56:49
489
原创 osg::TessellationHints类的头文件
osg::TessellationHints类的头文件#include <osg/ShapeDrawable>这个头文件里面包含了精度类 osg::TessellationHints
2020-08-10 13:54:57
737
原创 关于构造函数不能有返回类型的错误
检查出问题的类定义是是否有封号 ;在.h中如下定义,则cpp文件构造函数处会报不能有返回值类型的错误class A{public:}应为class A{public:};
2020-01-08 10:50:11
469
原创 QT界面QMenuBar()、QMenu()和QAction()的使用
QMenuBar: 就是所有窗口的菜单栏,在此基础上添加不同的QMenu和QActionQMenu: 菜单栏里面菜单,可以显示文本和图标,但是并不负责执行操作,有点类似label的作用QAction: Qt 将用户与界面进行交互的元素抽象为一种“动作”,使用QAction类表示。QAction才是真正负责执行操作的部件。建立一个菜单栏,基本上要三步:MainWindow.h文件publ...
2020-01-07 21:25:55
6222
原创 osg::MatrixTransform节点花式父子关系设置及矩阵节点相对坐标系实例解析(这怕是本博最干的一篇文了哈哈)
前几天总结了一下节点的父子关系,本以为以后就能一路顺风了~没想到啊,今天出了一个问题浪费了一下午,下面是出问题的效果:因为父子节点的问题,导致检查了非常多边本该顺利实现的效果(如下图)无法实现,并且以为是坐标的问题,还去捡起高数知识做了个函数,费了老大的力气最后却是白费功夫,调整节点关系后效果如下:(张宇说,解决问题要抓主要矛盾)所以先来整理一下原先的父子节点的关系图不管叶子节点有多...
2019-12-27 23:34:08
1762
1
原创 const变量怎么在类构造函数初始化列表初始化的问题
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。const变量不能再成员变量那里声明,然后再在构造函数初始化,那样会报错,只能在构造函数体运行前完成初始化赋值工作,就是在构造函数初始化列表。如下:class FindNode : public osg::NodeVisitor{public: FindNode(cons...
2019-12-26 19:37:22
671
原创 OSG的节点访问类NodeVisitor应用
应用场景:在类A的函数中中定义了数个osg::MatrixTransform类的对象,想要在类B中得到这几个对象的接口指针,就捡起了NodeVisitor类的用法。使用节点访问类的几个要注意的点1.需要被遍历的节点调用 accept方法,将遍历器加入自身,然后该节点会反过来调用该遍历器中的apply方法,开始遍历,在每一次遍历前会选择合适的apply重载函数进行遍历,需要实现一些功能可以在a...
2019-12-26 19:30:25
1092
1
原创 外部调用自定义类方法时显示“无法识别的外部符号”问题思路
这里只讨论结构问题,排除lib库没加之类的因为最近干了挺多类中内容转移的事情,碰见这个报错次数太多啦,因此记录一下。1.先看,报这个错的是在哪个文件,错误信息提示最右边,如果是显示在main中被引用,可能是在头文件里或者cpp中对参数列表或者返回值修改过,但是忘记同步更新到调用处或者转移内容时,没有在类的cpp文件中给函数加上类的命名空间 如本应该是 A::forget(); 而写成了for...
2019-12-25 20:14:17
1185
原创 关于EllipsoidModel类在哪个头文件得问题
猛的一下子要找这个类,可是找不到在哪个头文件里,追源码后找到在#include <osg/CoordinateSystemNode>里面,特此记录。
2019-12-25 14:16:31
367
原创 osg坐标经过矩阵缩放后的影响
今天碰到一个很鬼畜的问题:在osgEarth上通过经纬度选取两个点,转为世界坐标后求差得到出发点指向目的点的相对位置向量,将该位置向量作为出发点子节点的translate参数进行一个简单的回调动画,得到的结果与预期大相径庭。如下图:得到的结果是模型飞到天边去了,位置相差巨大。经检查坐标转换函数没有问题,最后发现是矩阵缩放、osg::Matrix::scale方法惹的祸,因为模型不符合预期...
2019-12-24 16:43:26
590
原创 osg中父子节点关系对坐标系的影响(相对坐标&绝对坐标%矩阵变换)
从头梳理一下碰到的坐标问题。osgEarth中坐标系有很多,如世界坐标系,地理坐标系,相机坐标系等等,然后根据形式又分为相对坐标系和绝对坐标系。这里先记录一下绝对坐标系和相对坐标系当你构建场景的时候,定义一个视景器viewer和根节点root,然后将根节点设置进环境数据viewer->setSceneData(root);之后,这里根节点没有别的父节点,没有先天坐标系的约束,这时...
2019-12-24 15:09:23
1046
原创 关于osgEarth地球上加载地模型如何设置法向量让模型垂直于地面站立
这个问题早在本科毕设的时候就困扰了好久,一直没有明白过了一年多代码能力长进了点再回头看这个问题尝试了下竟然解决了,留存一下方法在椭球体类中class EllipsoidModel : public Object有着这样一个函数inline osg::Vec3d EllipsoidModel::computeLocalUpVector(double X, double Y, doubl...
2019-12-23 15:41:10
2039
原创 关于osgEarth坐标转换
使用现成的椭球类EllipsoidModel的坐标转换函数可以实现inline void EllipsoidModel::convertLatLongHeightToXYZ(double latitude, double longitude, double height, double& X, double&am...
2019-12-23 15:10:32
1247
原创 osg坐标转换(可直接使用
原文链接:https://blog.youkuaiyun.com/yang_sen_/article/details/84564583// 屏幕坐标转世界坐标osg::Vec3d ScreenToWorld(const osg::Vec3d screen){ osg::Camera* camera = _global->Viewer->getCamera(); osg::Matrix V...
2019-12-22 21:01:00
1827
1
原创 osgearth自带例子简介
留着以后查看用osgEarth_Clamp种树,碰撞检测,定位器locator,地形更新回调terrian callbackosgEarth_clipplane裁剪,使用osg :: ClipNode和osg :: ClipPlane对象基于可见范围进行裁剪。 当您要在禁用深度测试的情况下绘制几何图形,但又不想在地球上显示几何图形时,此技术很有用。水平剪辑平面,关闭深度测试,关闭深度测试...
2019-12-10 10:58:03
2822
翻译 仅供翻译
<event name="Terminate"><description>When the aircraft arrives back at EllingtonField (fifth waypoint) then terminate the simulation.</description><condition>fcs/wp-dista...
2019-06-10 14:27:29
591
原创 VS编译的时候怎么切换生成的是debug还是release
在工具栏下方,第一个框框中选择release,然后选中项目-右键-生成,看输出第一行,是显示 ”配置:Release Win XX” 就对了。
2019-05-24 10:28:19
4264
原创 VS编译 出现 无法解析外部符号__imp__fprintf和__imp____iob_func
__imp__fp-rintf 解决方法选中项目-右键-属性-链接器-附加依赖项添加一个liblegacy_stdio_definitions.lib__imp____iob_func 解决方法因为VS2015中函数定义和之前版本不同方法一是用2015重新编译出错的第三方库方法二是在出错的项目的源文件头自己定义这个函数内容为extern “C” { FILE __iob_func...
2019-05-23 16:54:30
1892
2
原创 VS编译遇到无法解析的外部符号 该怎么办
比如碰到Plibd.lib(ulError.obj) : error LNK2019: 无法解析的外部符号 __imp____iob_func则去搜索 无法解析的外部符号 后面的内容去百度 __imp____iob_func ,就会有解决方案了...
2019-05-23 16:34:58
2395
原创 error C2039: “back_inserter”: 不是“std”的成员
原帖https://blog.youkuaiyun.com/dongzhe8/article/details/81839174VS编译出现error C2039: “back_inserter”: 不是“std”的成员双击错误提示找到错误的项目,在最上面添加#include <iterator> ...
2019-05-23 15:53:16
2131
1
原创 VS编译关于 zlib.lib(match686.obj) : error LNK2026: 模块对于 SAFESEH 映像是不安全的。
解决办法:选中出问题的项目-右键-属性-配置属性-链接器-命令行-在“其他选项(D)”中把原来的内容去掉,替换成 /SAFESEH:NO 点击应用,重新生成。...
2019-05-23 15:16:49
1477
原创 关于vs2015编译返回 fatal error C1083: 无法打开包括文件: “XXX.h”: No such file or directory
编译FlightGear的时候遇到了海量的编译错误,大多数是找不到头文件,遇到上面的error C1083: 无法打开包括文件: “XXX.h”: No such file or directory类似的错误解决办法:1.查看是哪个项目启动生成的过程中发生的2.选中该项目-右键-属性®-配置属性-VC++目录-包含目录在包含目录里面添加头文件地址即可,需要注意的是,注意看错误提示是找不到什...
2019-05-23 14:27:34
29187
7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人