【C++学习笔记】CAD中环的偏移学习

最近一直在研究CAD中偏移命令的实现,奈何自己没有技术,就上网找了一个[1]作为记录。


#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <cmath>
#include <string.h>
#include <algorithm>
#include <fstream>
#include <iomanip>
struct Point2D
{float x;
float y;
Point2D(){};Point2D(float x, float y)
{this->x=x;this->y=y;}friend Point2D operator +(Point2D a, Point2D b)
{Point2D p;p.x=a.x+b.x;p.y=a.y+b.y;return p;}
friend Point2D operator -(Point2D a, Point2D b)
{Point2D p;p.x=a.x-b.x;p.y=a.y-b.y;return p;}
friend float operator *(Point2D a, Point2D b)
{float p=a.x*b.x+a.y*b.y;return p;}
friend Point2D operator *(Point2D a, float value)
{Point2D p;p.x=a.x*value;p.y=a.y*value;return p;}
friend float xlJi(Point2D a, Point2D b)
{float p=((a.x)*(b.y))-((a.y)*(b.x));return p;}
};std::ostream& operator <<(std::ostream &s, const Point2D &p)
{s << p.x << "," << p.y ;return s;
}int main()
{using std::cout;using std::endl;std::ofstream write;write.open("D:\\MY C++ STUDY\\Point data.txt");
std::vector<Point2D> pList;
std::vector<Point2D> DpList;
std::vector<Point2D> nDpList;
std::vector<Point2D> newList;
Point2D p2d,p2;
p2d.x=0;p2d.y=0;pList.push_back(p2d);
p2d.x=100;p2d.y=0;pList.push_back(p2d);
p2d.x=50;p2d.y=50;pList.push_back(p2d);
p2d.x=100;p2d.y=100;pList.push_back(p2d);
p2d.x=0;p2d.y=100;pList.push_back(p2d);
int i,index,count;
count=pList.size();
for(i=0;i<count;i++)
{index=(i+1)%count;
p2d=pList[index]-pList[i];
DpList.push_back(p2d);
}
// 初始化ndpList,单位化两顶点向量差
float r;
for(i=0;i<count;i++)
{r=sqrt(DpList[i]*DpList[i]);
r=1/r;
p2d=DpList[i]*r;
nDpList.push_back(p2d);
}
// 计算新顶点, 注意参数dist为负是向内收缩, 为正是向外扩张
//上述说法只是对于顺时针而言
//我把数据改为逆时针,结论刚好相反
float lenth;
float dist=5;
int startindex,endindex;
for(i=0;i<count;i++)
{startindex= i==0?count-1:i-1;
endindex=i;
float sina=xlJi(nDpList[startindex],nDpList[endindex]);
lenth=dist/sina;
p2d=nDpList[endindex]-nDpList[startindex];
p2=pList[i]+p2d*lenth;
newList.push_back(p2);
cout<<p2<<endl;
write<<p2<<endl;
}
return 0;
}

【C++学习笔记】CAD中环的偏移学习相关推荐

  1. 深度学习笔记(18) 迁移学习

    深度学习笔记(18) 迁移学习 1. 迁移学习理念 2. 图像识别的迁移学习 3. 语音识别的迁移学习 4. 使用迁移学习的场合 1. 迁移学习理念 深度学习中最强大的理念之一就是: 神经网络可以从一 ...

  2. 深度学习笔记(1) 深度学习简介

    深度学习笔记(1) 深度学习简介 1. 引言 2. 神经网络 3. 兴起 1. 引言 在机器学习的历史上,一共出现了两种定义: 1956 年,开发了西洋跳棋 AI 程序的 Arthur Samuel ...

  3. 《南溪的目标检测学习笔记》——模型预处理的学习笔记

    1 介绍 在目标检测任务中,模型预处理分为两个步骤: 图像预处理:基于图像处理算法 数值预处理:基于机器学习理论 关于图像预处理,请参考<南溪的目标检测学习笔记>--图像预处理的学习笔记 ...

  4. 深入浅出图神经网络|GNN原理解析☄学习笔记(四)表示学习

    深入浅出图神经网络|GNN原理解析☄学习笔记(四)表示学习 文章目录 深入浅出图神经网络|GNN原理解析☄学习笔记(四)表示学习 表示学习 表示学习的意义 离散表示与分布式表示 端到端学习 基于重构损 ...

  5. homeassistant mysql_学习笔记 篇三:HomeAssistant学习笔记docker安装的ha更换数据库

    学习笔记 篇三:HomeAssistant学习笔记docker安装的ha更换数据库 2018-11-15 12:06:58 4点赞 18收藏 3评论 是返乡过年?还是就地过年?最新一届#双面过节指南# ...

  6. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  7. AI Studio 飞桨 零基础入门深度学习笔记4-飞桨开源深度学习平台介绍

    AI Studio 飞桨 零基础入门深度学习笔记4-飞桨开源深度学习平台介绍 深度学习框架 深度学习框架优势 深度学习框架设计思路 飞桨开源深度学习平台 飞桨开源深度学习平台全景 框架和全流程工具 模 ...

  8. GNN学习笔记(二)表征学习基本介绍

    GNN学习笔记(二)表征学习基本介绍 一.表征学习(Representation Learning) 1.什么是表征学习 2.传统表征学习(特征工程)的局限性 3.表征学习的分类 4.如何判断表征学习 ...

  9. 机器学习处理信号分离_[学习笔记]使用机器学习和深度学习处理信号基础知识...

    参考学习:Signal Generation and Preprocessing 本人只是为了了解信号处理的基础知识而做的学习笔记,涉及深度可能不够,有理解错误的地方请大胆指出,感激不尽 一.信号生成 ...

最新文章

  1. 放大器非线性失真研究装置设计报告_我校信息学院学子再次斩获大学生电子设计竞赛大奖...
  2. MySQL 5.6 中的 TIMESTAMP 和 explicit_defaults_for_timestamp 参数
  3. 三种方法实现Linux系统调用方法分享
  4. 产品生涯,十大好用但不为人知的APP
  5. 系列(九)—TCP/UDP协议
  6. ajax处理返回的xml数据,使用AJAX调用WebService返回xml不返回json原因以及解决办法...
  7. 花书+吴恩达深度学习(三)反向传播算法 Back Propagation
  8. html5结构 客户端缓存,Javascript--离线应用与客户端储存
  9. buck电路matlab,matlab buck电路仿真
  10. 软件工程(3)微信抢票应用个人总结
  11. 问题 B: 结构体---职工信息结构体
  12. 10年回顾:世界各地开发高手谈Java
  13. typec耳机知识介绍
  14. QOS中 PQ,CQ.RR,WFQ,CBWFQ,LLQ区分(上)
  15. 项目经理的知识和技能,学会这些你就是合格的PM
  16. “三次握手,四次挥手”这么讲,保证你忘不了
  17. (二)Linux ALSA 音频系统:逻辑设备篇
  18. swift中代码生成纯色图片
  19. 测试打呼噜的软件,打呼噜人群福音!这款app能检测鼾声并提供一站式止鼾方案...
  20. 8g内存和16g内存区别 mac_苹果电脑内存8g和16g的区别 电脑内存8G和16G的差别大吗...

热门文章

  1. SQL Server 批量转换指定字段类型为另一种类型
  2. 墨菲定律、彼得定律、 帕金森定律
  3. 微信小程序错误:Expecting 'EOF','}',':',',',']', got INVALID
  4. python微信红包提醒_用Python写个了红包提醒,再不怕错过一个亿了
  5. 【IDEA 教程系列第 16 篇】idea 打开终端 Terminal 的快捷键
  6. 虚拟服务器cpu算法,一种灵活高效的虚拟CPU调度算法
  7. 蘑菇街2017校园招聘笔试题
  8. 基于GEC6818开发板的视频播放
  9. 2014年新千元机之战 国产手机厂商的得与失
  10. 快手引流效果怎么样?快手广告引流效果好吗?