YiMiTuMi

使我进步的不是谦虚,而是别人羡慕我时我的那份骄傲!

SVG图片操作

QT

SVG图片操作 SVG图片本质的格式是一个xml文件,里面记录了图片的大小、颜色等信息。QT中可以将SVG文件读到内存中,然后用 Painter 绘制到 Pixmap 上就可以当图片显示了,同时修改这个xml可以修改图片的颜色大小等各项数据。 QT中使用SVG跟XML需要添加: QT += svg QT += xml 读取SVG到Pixmap上 //绘制的图片大小 #define...

微秒级延时函数

c++

微秒级延时函数 正常用的延时函数精准度太低了,现在提供两种延时,一种是c++ chrono新特性来实现的,一种是windows时钟实现的。 chrono实现 #include <chrono> void timeUsC(int iTimeUs) { auto start = std::chrono::system_clock::now(); while (true) ...

获取线段上的等分点

数据结构与算法

获取线段上的等分点 获取线段上的等分点可以用:定比分点公式 有向线段的起点和终点的坐标分别为x1和x2,分点M分此有向线段的比为λ,那么,分点M的坐标 x = (l - λ) * xl + λ * x2 y = (l - λ) * yl + λ * y2 代码: typedef struct { int x, y; } Point; //接受一个线段的起点和终点坐标,要...

在坐标系中从一个角度旋转到另一个角度所经过的象限

c++

在坐标系中从一个角度旋转到另一个角度所经过的象限 (直接看简洁版) 数学基本还给老师了所以基本全都是用逻辑实现的。旋转分为顺时针和逆时针旋转。 顺时针旋转 int GetAngleQuadrantClockwise(float fAngle) { int iQuadrant = 0; if (fAngle == 0) { iQuadrant = 4; } else if...

圆形是否与多边形重叠

c++

圆形是否与多边形重叠 只需要计算多边形的每个顶点,和每个顶点的连线是否小于圆的半径就可以了。 注意:判断点到每条边的最短距离用的线是线段而不是直线。 typedef struct { int x, y; } Point; //点到点的距离 double distanceT(Point p1, Point p2) { return sqrt(pow(p2.x - p1.x, 2)...

以一个点为原点计算另一个点所在原点的哪个象限

c++

以一个点为原点计算另一个点所在原点的哪个象限 //坐标 typedef struct { int x, y; } Point; //目标点坐标,原点坐标,返回在哪个象限 int get_quadrant(Point pTarget, Point pOrigin) { Point p; p.x = pTarget.x - pOrigin.x; p.y = pTa...

多边形在一个原点的哪个象限

c++

多边形在一个原点的哪个象限 只需要判断当前的多边形的每一个顶点在原点的哪个象限就可以了。 代码 typedef struct { int x, y; } Point; int get_quadrant(Point pTarget, Point pOrigin) { Point p; p.x = pTarget.x - pOrigin.x; p.y = pT...

函数指针

c++

函数指针 一个成员函数指针包括成员函数的返回类型,后随::操作符类名,指针名和函数的参数。 格式是:函数返回类型,类名,::操作符,指针星号,指针名,函数参数。 外部函数指针 例子: int FunctionPointer(int a, int b) { return a + b; } int main() { //定义函数指针 int (*pFunctionPoint...

lamda表达式与find_if

c++

lamda表达式 lamda语法 [捕获列表](参数){ 逻辑语句 } 如: int a = 6; [a](int x, int y){ return x + y + a; } lamda表达式与find_if find_if函数 带条件的查找元素,可以通过find_if函数来实现查找满足特定条件的元素,将lamda表达式作为查找条件。 例:用find_if去查找vecto...

智能指针赋值给Void*问题

c++

智能指针赋值给Void* 在线程函数传递参数的时候,多半传递的都是 Void* 类型,当我们把一个 shared_ptr(智能指针)创建线程传递参数的时候,会导致 shared_ptr的计数器并不会 +1,就会导致后续使用的时候,发现 shared_ptr 被提前释放了。 例子: class SharedTemp { public: SharedTemp(int x); ~Shar...