- 博客(44)
- 资源 (4)
- 收藏
- 关注
原创 windows 高精度计时器QueryPerformanceFrequency用法
【代码】windows 高精度计时器QueryPerformanceFrequency用法。
2024-09-24 10:35:58 111
原创 std::weak_ptr的说明与使用
借助 weak_ptr 类型指针可以获取 shared_ptr 指针的一些状态信息,比如有多少指向相同的 shared_ptr 指针、通过expired()判断shared_ptr 指针指向的堆内存是否已经被释放等等,还可以解决shared_ptr 循环引用的问题。可以看到由于AA和BB内部的shared_ptr各自保存了对方的一次引用,所以导致了ptr_a和ptr_b销毁的时候都认为内部保存的指针计数没有变成0,所以AA和BB的析构函数不会被调用。三、std::weak_ptr用法。
2024-07-02 17:36:07 842
原创 osgEarth加载在线数据
lyrs=s@189&gl=cn&x={x}&y={y}&z={z}(或者http://mt1.google.cn/vt/lyrs=s&x={x}&y={y}&z={z})lys参数可选值包括:h(街道图)、m(街道图)、p(街道图)、r(街道图)、s(影像无注记)、y(影像含注记)、t(地形图)Y-瓦片行号,从北向南(有些也可能是从南向北),依次0,1,2,……X-瓦片列号,从西向东(0->360),依次0,1,2,街道:(z>=3才有数据)矢量底图:(z>=1)影像图:(z>=1)
2023-08-25 15:49:26 857
原创 【无标题】
cessna->addChild( osgDB::readNodeFile("cessna.osg.0,0,90.rot") );加载模型并旋转。 代码中为沿Z轴旋转90度
2022-03-31 14:28:35 132
原创 C++ 生成随机数
#include <vector>#include <iostream>#include <random>#include <ctime>int main(){ std::default_random_engine e(time(0)); std::uniform_real_distribution<double> u(0, 1); //std::uniform_int_distribution<double> u(0
2022-03-21 15:29:05 1038
原创 OsgEarth节点跟随
osgEarth::Viewpoint vp;//设置视点参数,focalPoint()函数返回的是一个点_point,然后调用set()函数进行设置,第一个参数是空间参考参数,第二个是经度,第三个是纬度,第四个是Z值//最后一个参数用来描述Z是怎么解释的,有两种,ALTMODE_ABSOLUTE是绝对高程,从椭球体(?)开始算的,ALTMODE_RELATIVE是相对高程,从地形的标高以上开始算的,就是基准点在那个经纬度对应的点的最高处vp.focalPoint()->set(mapNode-
2022-01-14 11:02:50 681
原创 Python拼图
import PIL.Image as Imageimport os IMAGES_PATH = '王者荣耀图片爬取\\' # 图片集地址IMAGES_FORMAT = ['.jpg', '.JPG'] # 图片格式IMAGE_WIDTH = 882 # 每张小图片的大小IMAGE_HEIGHT = 1920 # 每张小图片的大小IMAGE_ROW = 21 # 图片间隔,也就是合并成一张图后,一共有几行IMAGE_COLUMN = 21 # 图片间隔,也就是合并成一张图后,一共
2022-01-07 17:34:58 941
原创 Python使用openCV生成素描图
import cv2, numpy img = cv2.imread('1.jpg', 1 )cv2.imshow('img', img)height = img.shape[0]width = img.shape[1]gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#首先我们需要用opencv将图片读取,生成图片的灰度图并反色。dst = 255 - gray dst_gauss = cv2.GaussianBlur(dst, (9, 9), 0
2022-01-07 10:46:26 3193
原创 osgEarth根据MatrixTransform获取经纬度、欧拉值
//根据matrixTransform获取经纬度osg::Vec3d getModelPosition(osg::ref_ptr<osg::MatrixTransform> m_pModelNode){ osg::Vec3d posXYZ = osg::Vec3d(); osg::Vec3d currentPosition = osg::Vec3d(); if (m_pModelNode) { osg::Matrix mat = m_pModelNode->getMatri
2022-01-06 15:58:08 1795
原创 python读取不同编码的文本
with open(filePath,"r",encoding='gb18030', errors='ignore') as fr:
2022-01-06 10:08:22 388
原创 osgEarth 局部坐标系用法
//节点osg::ref_ptr<osg::Node> nd = new osg::Node;//全局geometryosg::ref_ptr<osg::Geometry> geometry = new osg::Geometry;//矩阵相关osg::Matrix _BasePointMat;osg::Matrixd _BasePointInverseMat;osg::ref_ptr<osg::MatrixTransform> matTrans1 =
2022-01-06 10:01:36 688
原创 Python 图片处理
-- coding: utf-8 --from PIL import Imageimport matplotlib.pyplot as pltfrom matplotlib.font_manager import FontProperties#引入本地字体文件,用于下面title的打印,不然中文会有乱码font_set = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=12)#打开图片(这里替换成你自己电脑本地的图片)img
2021-12-31 14:48:33 1487
原创 C++ 遍历文件夹下所有文件,包括子目录
#include <iostream> #include <io.h> #include <string> #include <vector> using namespace std;void getFiles(const std::string & path, std::vector<std::string> & files){ //文件句柄 intptr_t hFile = 0; //文件信息,
2021-12-20 09:58:29 1686
原创 C++ 数据写入char*
class DataConverter{public: DataConverter(unsigned int numBytes) : _startPtr(0), _endPtr(0), _swapBytes(false), _currentPtr(0) { _currentPtr = _startPtr = new char[numBytes]; _endPtr = _startPtr + numBytes; _numBytes = numBytes; } c
2021-12-06 14:28:43 1864
原创 double转std::string 保留小数点
template < class T>std::string ConvertToString(T value){ std::stringstream ss; ss << setiosflags(ios::fixed)<< setprecision(4) << value; //保留4位小数点 避免科学计数 return ss.str();}
2021-12-01 14:57:07 1000
原创 osgEarth::Util::Controls::LabelControl 显示汉字
//记得加上头文件#include <Windows.h>//转换为中文字符进行显示void gb2312ToUnicode(const string& src, wstring& result){int n = MultiByteToWideChar(CP_ACP, 0, src.c_str(), -1, NULL, 0);result.resize(n);::MultiByteToWideChar(CP_ACP, 0, src.c_str(), -1, (LPW
2021-11-30 17:58:27 492
原创 编码。。。。。。。。。
英文字母和中文汉字在不同字符集编码下的字节数英文字母:字节数 : 1;编码:GB2312字节数 : 1;编码:GBK字节数 : 1;编码:GB18030字节数 : 1;编码:ISO-8859-1字节数 : 1;编码:UTF-8字节数 : 4;编码:UTF-16字节数 : 2;编码:UTF-16BE字节数 : 2;编码:UTF-16LE中文汉字:字节数 : 2;编码:GB2312字节数 : 2;编码:GBK字节数 : 2;编码:GB18030字节数 : 1;编码:ISO-8859-
2021-11-12 17:37:29 89
原创 齐次坐标记录
由 August Ferdinand Möbius(不错,就是那个莫比乌斯圈的那位) 提出的齐次坐标,使图形和几何学的计算在投影空间中成为可能。齐次坐标是用N+1个数来表示N维坐标的一种方式。要制作二维齐次坐标,我们只需在现有坐标中增加一个额外的变量w。因此,笛卡尔坐标中的一点,(X,Y)在齐次坐标中就变成了(x,y,w)。而笛卡儿坐标中的X和Y在齐次坐标中的x、y和w则重新表达为X = x/wY = y/w齐次坐标在计算机图形学中是非常有用的基本概念,通过增加一个额外的维度W后,可以用来对几何体进
2021-11-12 14:23:16 389
原创 QT5 OSG汉字显示
OSG中的汉字显示需要传入宽字符,调试的时候看到的变量值如下图所示的时候才是对的:注意字符串值前面的L。Qt5转宽字符的方法:QString name = QString::fromLocal8Bit("123321我");std::wstring sfs = name.toStdWString();const wchar_t* wText = sfs.c_str();将wText传入OSG的Text即可...
2021-10-27 14:28:40 252
原创 osgEarth坐标转换
```cpp// 屏幕坐标转世界坐标osg::Vec3d ScreenToWorld(const osg::Vec3d screen){ osg::Camera* camera = _global->Viewer->getCamera(); osg::Matrix VPW = camera->getViewMatrix() * camera->getProjectionMatrix() * camera->getViewport()->computeWindo.
2021-08-09 14:09:40 625
原创 高程生成TMS切片
高程生成TMS切片osgearth_package out.earth --tms --max-level 12 --out d:/tms out.earth的内容<map name="xinjiangdem" version="2"> <heightfield name = "xindem" driver = "gdal"> <url>D:/dev/gctest/gc2.tif</url> <ti
2021-08-05 11:07:25 426
原创 osgEarth 生成并加载mbtiles
osgEarth 生成并加载mbtiles生成mbtiles命令:osgearth_conv --in driver gdal --in url 1.tif --out driver mbtiles --out filename world.db --out format png注意:末尾处若用jpg格式会有奇怪的问题,png正常加载mbtiles<image name="影像图" driver="mbtiles" base="true" group="影像图"> <file
2021-08-05 10:21:37 1295 3
原创 OSG eye center up说明
auto eye = osg::Vec3d(50.0, 0.0, 0.0);auto center = osg::Vec3d(0.0, 0.0, 0.0);auto up = osg::Vec3d(0.0, 1.0, 1.0);viewer.getCamera()->setViewMatrixAsLookAt(eye, center, up);while (!viewer.done())//这里不能写成return viewer.run()这个函数会对场景中是否有漫游器进行判断,如果没有,就会
2021-07-26 10:51:19 938
转载 SQLite3 编译
概述 “最新版GDAL源码下载 ”一文中,我们为大家分享了最新版本的GDAL源码,而GDAL是需要依赖PROJ投影转换库的。 因此,在最新版投影转换工具PROJ源码 ”一文中,我们又为大家分享了PROJ的源码,如果你对PROJ源码进行编译,会发现它会需要SQLite的支持。 这里,我们再为大家分享SQLite的源码下载与编译的方法,你可以通过关注微信公众号“水经注GIS”...
2021-07-22 17:04:24 3268 1
原创 osg物体绕自身轴旋转
如果一个模型不在场景的中心点,这时候使用 osg::Matrix::rotate旋转的话,这个对象会围绕场景的中心点进行旋转,会转一个大圈,那么怎么做才能让他在任何位置的时候,围绕自己的轴心进行旋转?可以使用osg::PositionAttitudeTransform这个类来实现。 代码如下: #include <windows.h>#include <osgViewer/Viewer>#include <osgViewer/ViewerE...
2021-07-21 15:17:16 1390
转载 2021-07-21
如果一个模型不在场景的中心点,这时候使用 osg::Matrix::rotate在这里插入代码片旋转的话,这个对象会围绕场景的中心点进行旋转,会转一个大圈,那么怎么做才能让他在任何位置的时候,围绕自己的轴心进行旋转?解决思路如下:先保存物体在世界坐标系下的坐标,即物体在世界坐标系下的中心点坐标再将物体移动到世界坐标系的原点。在世界坐标系的原点旋转好后,再移动回原来的位置,即步骤1中的提到的坐标。const osg::BoundingSphere& loaded_bs = m_spTran
2021-07-21 13:45:58 54
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人