String转QString,线段相交,四点共面,git相关操作,截图,扩展工具,string乱码,矩阵相乘
20220513-20220608.QT
- String转QString
- 两线段是否相交
- 四个点是否共面,两个直线是否相交
- git相关操作
- 截图快捷键 shift+win+s
- VS2013扩展工具不能联网
- memset初始化带有vector的结构体
- 中文string乱码问题
- 字母矩阵相乘
- 数据库验证加弹窗消息
String转QString
string test = "dx:" + to_string(dx) + " dy:" + to_string(dy) + " dz:" + to_string(dz);Show_Werld_Msg(QString::fromStdString(test));string test = "部分保存成功,其余焊缝 ";for (int j = 0; j < m_weldlineparas.size(); j++){if (saveSuc[j][1] == 0){test = test + " "+ to_string(saveSuc[j][0]) + ",";}}test += "因缺少相关数据,保存失败!";QMessageBox::information(NULL, QStringLiteral("提示"), QString::fromLocal8Bit(test.data()), QMessageBox::Yes);
原本QStringLiteral(“xxxxx”)用不了,原因解释QStringLiteral
两线段是否相交
bool ifinter = false;//默认不相交//input a1, a2, a3 and all the other components here//define all constants required for solving t and s//(a1, a2, a3)________________(b1, b2, b3)//Pa Pb//and second line//(c1, c2, c3)________________(d1, d2, d3)//Pc PdWSPosParas Pa,Pb,Pc,Pd;Pa = line1.at(0);Pb = line1.at(line1.size() - 1);Pa = line2.at(0);Pb = line2.at(line2.size() - 1);int a1 = Pa.pt[0], a2 = Pa.pt[1], a3 = Pa.pt[2];int b1 = Pb.pt[0], b2 = Pb.pt[1], b3 = Pb.pt[2];int c1 = Pc.pt[0], c2 = Pc.pt[1], c3 = Pc.pt[2];int d1 = Pd.pt[0], d2 = Pd.pt[1], d3 = Pd.pt[2];int A = b1 - a1;int B = c1 - d1;int C = c1 - a1;int D = b2 - a2;int E = c2 - d2;int F = c2 - a2;//#find t and s using formulaint t = (C*E - F*B) / (E*A - B*D);int s = (D*C - A*F) / (D*B - A*E);//#check if third equation is also satisfied(we have 3 equations and 2 variableif ((t*(b3 - a3) + s*(c3 - d3)) == c3 - a3) {if (0 <= t <= 1 && 0 <= s <= 1) {ifinter = true;}}
四个点是否共面,两个直线是否相交
WSPosParas Pa,Pb,Pc,Pd;Pa = line1.at(0);Pb = line1.at(line1.size() - 1);Pc = line2.at(0);Pd = line2.at(line2.size() - 1);int x1 = Pa.pt[0], y1 = Pa.pt[1], z1 = Pa.pt[2];int x2 = Pb.pt[0], y2 = Pb.pt[1], z2 = Pb.pt[2];int x3 = Pc.pt[0], y3 = Pc.pt[1], z3 = Pc.pt[2];int x4 = Pd.pt[0], y4 = Pd.pt[1], z4 = Pd.pt[2];int r1 = x1 - x2, r2 = y1 - y2, r3 = z1 - z2;int r4 = x1 - x3, r5 = y1 - y3, r6 = z1 - z3;int r7 = x1 - x4, r8 = y1 - y4, r9 = z1 - z4;if (r1*r5*r9 + r2*r6*r7 + r3*r4*r8 - r3*r5*r7 - r2*r4*r9 - r1*r6*r8 == 0)ifinter = true;if (ifinter) Show_Werld_Msg(QStringLiteral("共面"));else Show_Werld_Msg(QStringLiteral("异面"));if (ifinter == FALSE)//不共面报错 return false;
git相关操作
右键选git bush啥啥啥,打开一个命令行一样的窗口
git log //查看所有日志
修改没有push的日志
git commit --amend
i //进去以后按,然后编辑完
:wq //退出就好了
push冲突时,先pull下来,手动改代码后,再上传
截图快捷键 shift+win+s
VS2013扩展工具不能联网
打开 nuget 控制台,输入下面代码,按回车,亲测有效,但是有个问题,就是关闭VS后,重新打开就会失去效果,需要再次输入代码,按回车才能生效。
[Net.ServicePointManager]::SecurityProtocol=[Net.ServicePointManager]::SecurityProtocol-bOR [Net.SecurityProtocolType]::Tls12
原博文:Vs2013 NuGet 无法联网解决方法
indent guides缩进标尺安装包
VS官方下载应用渠道
https://marketplace.visualstudio.com/search?target=VS&category=Tools&vsVersion=&subCategory=All&sortBy=Installs
memset初始化带有vector的结构体
struct Condition{bool tmall;long sales;long min_price;vector<wstring> filt_word_list;//默认初始化Condition(){tmall=false;sales=0;min_price=0;}
};
定义初始化函数
最后包含一个调用
中文string乱码问题
方法二:VS菜单栏中选择工具—扩展和更新—联机—搜索插件“ForceUTF8”,有两个,选择 (with BOM)的并安装,以后VS所有源文件和头文件都会保存为“UTF-8+BOM”编码。
原博客
字母矩阵相乘
#include <iostream>//导入输入和输出的代码
#include <string>//能够写字符串的
#include <vector>//能够写字符串的
using namespace std;//应用命名空间 cout为输出 cin为输入vector<vector<string>> mult(vector<vector<string>> &A, vector<vector<string>> &B,int order,bool islast){vector<vector<string>> ans(order, vector<string>(order, ""));for (int i = 0; i < order; i++){ //行数for (int j = 0; j < order; j++){ //列数//ans[行][列]//if (ans[i][j] != "" && ans[i][j].length()>1) ans[i][j] = "(" + ans[i][j];//if (ans[i][j][0] != '(' && ans[i][j].back() != ')') ans[i][j] = "(" + ans[i][j];for (int z = 0; z < order; z++){if (A[i][z] == "0" || A[i][z] == "" || B[z][j] == "0" || B[z][j] == "") continue;if (ans[i][j] != "") ans[i][j] += "+";if (A[i][z] == "1" && B[z][j] == "1") ans[i][j] = ans[i][j] + A[i][z];else{if (A[i][z] == "1") ans[i][j] += B[z][j];else if (B[z][j] == "1") ans[i][j] += A[i][z];else ans[i][j] = ans[i][j] + A[i][z] + "*" + B[z][j];}}if (!islast && ans[i][j] != "" && ans[i][j].back() != ')'){if (ans[i][j] != "" && ans[i][j].length()>3) ans[i][j] = "(" + ans[i][j];if (ans[i][j] != "" && ans[i][j].length()>3) ans[i][j] += ")";}//if (ans[i][j] != "" && ans[i][j].back() != ')' && ans[i][j].length()>1) ans[i][j] += ")";}}return ans;
}int main()
{int matrixNum = 8;int order = 4;vector<vector<string>> test1(3, vector<string>(3, ""));vector<vector<string>> test2(3, vector<string>(3, ""));vector<vector<string>> test(3, vector<string>(3, ""));test1 = { { "1", "1", "1" }, { "1", "1", "1" }, { "1", "1", "1" } };test2 = { { "1", "a", "1" }, { "1", "b", "1" }, { "1", "c", "1" } };test = mult(test1, test2, 3,true);//for (int i = 0; i < 3; i++){// for (int j = 0; j < 3; j++){// cout << test[i][j] << " " << endl;// }// cout << endl;//}vector<vector<vector<string>>> matall(matrixNum, vector<vector<string>>(order, vector<string>(4, "")));vector<vector<string>> matans(order, vector<string>(order, ""));matall[0] = { { "1", "0", "0", "0" }, { "0", "0", "1", "d1" }, { "0", "1", "0", "0" }, { "0", "0", "0", "1" } };matall[1] = { { "0", "0", "1", "B" }, { "0", "1", "0", "A" }, { "1", "0", "0", "0" }, { "0", "0", "0", "1" } };matall[2] = { { "1", "0", "0", "0" }, { "0", "0", "-1", "-L3" }, { "0", "1", "0", "R3" }, { "0", "0", "0", "1" } };matall[3] = { { "c4", "0", "s4", "R4c4" }, { "s4", "0", "-c4", "R4s4" }, { "0", "1", "0", "L4" }, { "0", "0", "0", "1" } };matall[4] = { { "c5", "s5", "0", "R5c5" }, { "s5", "-c5", "0", "R5s5" }, { "0", "0", "1", "L5" }, { "0", "0", "0", "1" } };matall[5] = { { "c6", "0", "-s6", "R6c6" }, { "s6", "0", "c6", "R6s6" }, { "0", "1", "1", "-L6" }, { "0", "0", "0", "1" } };matall[6] = { { "c7", "-s7", "0", "0" }, { "s7", "c7", "0", "0" }, { "0", "0", "1", "L7" }, { "0", "0", "0", "1" } };matall[7] = { { "c8", "-s8", "0", "0" }, { "s8", "c8", "0", "0" }, { "0", "0", "1", "L8" }, { "0", "0", "0", "1" } };matans = matall[0];for (int i = 1; i < matrixNum; i++){if (i == matrixNum-1) matans = mult(matans, matall[i], order, true);else matans = mult(matans, matall[i], order,false);} //cout << matans[0][0];for (int i = 0; i < order; i++){for (int j = 0; j < order; j++){cout << "T" << i+1<<j+1<<": ";if (matans[i][j] == "") cout << "0" << endl;else cout << matans[i][j] << " " << endl;}cout << endl;cout << endl;//cout << endl;//cout << endl;}return 0;
}
数据库验证加弹窗消息
调用
SaveTechParaMes(IsSaveTechParaSuc()); //20220607LYT#bug052
实现
void IFWRobotDemo::SaveTechParaMes(vector<vector<int>> & saveState){//右下角弹窗提示消息,20220607LYT#bug052int len = saveState.size();bool saveExist = false;bool lostExist = false;for (int i = 0; i < len; i++){ //两个标志位防止空消息if (saveState[i][1] == 1) saveExist = true;if (saveState[i][1] == 0) lostExist = true;}string test = "";test = "焊缝" + MesSelectSecN(1, saveState) + "保存成功! ";if(saveExist) Show_Werld_Msg(QString::fromLocal8Bit(test.data()));test = "焊缝" + MesSelectSecN(0, saveState) + "工艺数据缺失,保存失败! ";if(lostExist) Show_Werld_Msg(QString::fromLocal8Bit(test.data()));//test = "焊缝" + MesSelectSecN(2, saveState) + "无工作面,不做处理";//Show_Werld_Msg(QString::fromLocal8Bit(test.data()));
}vector<vector<int>> IFWRobotDemo::IsSaveTechParaSuc(){ //判断数据库是否写入工艺数据,一次判断一条id,20220607LYT#bug052vector<vector<int>> State(m_weldlineparas.size(), { 100, 0 });QSqlQuery query;for (int i = 0; i < m_weldlineparas.size(); i++){int weldseam_id = m_weldlineparas.at(i).weld_num;//焊缝编号State[i][0] = weldseam_id;QString sql;if (0 == m_weldlineparas.at(i).tech.WorkFace | 0 == m_weldlineparas.at(i).tech.WeldArea) //2缺少作业面,肯定没保存,不用访问数据库{State[i][1] = 2;} else{ //有作业面,访问数据库判断有没有保存sql = QString("select * from Task_TechPara where workpiece_name='%1' and weld_seam_id = %2").arg(m_strWName).arg(weldseam_id);query.exec(sql);if (query.next()){State[i][1] = 1;}}}return State;
}string IFWRobotDemo::MesBeginToEnd(int begin, int end){ //实现连号输出,1,2,3变成1-3, LYT20220526#bug052-----string Mes = "";//if (begin > end) return Mes;if (begin == end){Mes = to_string(end); //1-1就写成1}else if (begin == end-1){Mes = to_string(begin) + "、" + to_string(end) ;}else{Mes = to_string(begin) + "-" + to_string(end); //1-2}return Mes;
}string IFWRobotDemo::MesSelectSecN(int SecN, vector<vector<int>> & vec){ //筛选二维vector指定1位置值的所有0位置的值, LYT20220526#bug052-----int startnum = -2, lastnum = -2;//实现连号输出,1,2,3变成1-3int veclen = vec.size();string Mes = "";if (veclen == 0) return Mes;for (int j = 0; j < veclen; j++){if (vec[j][1] == SecN){ //筛选if (startnum == -2){ //第1个异常,赋值startnum = vec[j][0];lastnum = startnum;}else{ //第2-n个异常,更新或输出if (vec[j][0] == lastnum + 1){ //可以连号lastnum++; //更新末端}else{ //不能连号,需要输出,更新首末端Mes = Mes + MesBeginToEnd(startnum, lastnum) + "、";startnum = vec[j][0];lastnum = startnum;}}}if (j == veclen - 1){//如果当前是最后一个,需要输出Mes += MesBeginToEnd(startnum, lastnum);}}return Mes;
}
String转QString,线段相交,四点共面,git相关操作,截图,扩展工具,string乱码,矩阵相乘相关推荐
- git pull远程master_github与Git实用操作图解之一
1. git和github工具的联系 2. github创建Git 仓库 New repository -> repository name(仓库名称) ->Public(免费) -> ...
- Git扩展工具--GitExtension的安装和配置--2021-8-22
Git-Extension安装和配置 Git是一种非常好的版本管理工具,但是用命令行使用起来多少有些不方便,所以使用图形界面的git Extension软件会方便很多 前言 git Extension ...
- Git入门与使用 (三) 使用GitHub进行代码托管的相关操作
文章目录 一.前言 二.使用GitHub进行代码托管的相关操作 1.推送本地仓库内容至远程仓库 2.克隆远程仓库内容至本地仓库 3.邀请他人加入项目团队 4.拉取远程仓库修改的内容 5.解决协同开发时 ...
- 简单几何(线段相交+最短路) POJ 1556 The Doors
题目传送门 题意:从(0, 5)走到(10, 5),中间有一些门,走的路是直线,问最短的距离 分析:关键是建图,可以保存所有的点,两点连通的条件是线段和中间的线段都不相交,建立有向图,然后用Dijks ...
- POJ 2653 Pick-up sticks (线段相交)
题意:给你n条线段依次放到二维平面上,问最后有哪些没与前面的线段相交,即它是顶上的线段 题解:数据弱,正向纯模拟可过 但是有一个陷阱:如果我们从后面向前枚举,找与前面哪些相交,再删除前面那些相交的线段 ...
- Pipe HDU - 2150(判断线段相交+向量叉乘线代详解)
题目: 经过激烈的争夺,Lele终于把那块地从Yueyue的手里抢了回来.接下来,Lele要开始建造他的灌溉系统. 通过咨询Lele的好友--化学系的TT,Lele决定在田里挖出N条沟渠,每条沟渠输送 ...
- 【POJ - 1556】The Doors (计算几何,线段相交)
题干: You are to find the length of the shortest path through a chamber containing obstructing walls. ...
- NYOJ 1016 德莱联盟(计算几何 线段相交判定)
判断两条线段是否相交. 在判断两条线段是否相交时,我们常用快速排斥实验跟跨立实验这两种方法,快速排斥实验能很快的排除掉线段不相交的情况,但并没法成为线段相交的充要条件,在快速排斥实验之后接上跨立实验就 ...
- 德莱联盟 计算几何 线段相交
难度:1 描述 欢迎来到德莱联盟.... 德莱文... 德莱文在逃跑,卡兹克在追.... 我们知道德莱文的起点和终点坐标,我们也知道卡兹克的起点和 终点坐标,问:卡兹克有可能和德莱文相遇吗?,并且保证 ...
最新文章
- ## 应用Python爬虫、Flask框架、Echarts、WordCloud等技术实现豆瓣Top250数据分析
- bzoj 4237 稻草人
- 基于Springboot实现医院HIS信息管理系统
- apache tomcat下32还是64_linux平台下Tomcat的安装与优化
- [置顶] Mybatis技术(二) MyBatis-Spring
- SAP Cloud for Customer和SAP CRM的行业解决方案列表
- java常用jar_常用jar包含义
- 指针%p输出的一些认识
- mongodb学习笔记之增删改查作指令
- 数据驱动测试之——CSV+TestNG
- 【Hive】Hive的数据类型
- 寒冬中的一次优雅起舞
- Android Studio 使用Method trace,查看某进程的所有线程trace的方法
- 【bzoj 2541】 [Ctsc2000]冰原探险(BFS)
- Zoj 3511 线段树
- html字体溢出问题,CSS教程:关于文字溢出问题的研究
- linux查看内存条pn,内存条,详细教您怎么查看内存条的型号。
- 阿里CEO张勇:“亲亲节”预示未来年轻人生活方式
- Atom配置markdown
- win7建WLAN热点