- 博客(91)
- 资源 (5)
- 收藏
- 关注
原创 C++中的跳转语句
• break:跳出循环或switch。• continue:跳过本次循环,进入下一轮。• goto:无条件跳转到指定标签,慎用。
2025-06-10 22:57:35
223
原创 循环结构使用
循环结构先判断条件至少执行一次适用场景for是否已知次数while是否条件驱动do while否是至少执行一次的场景选择循环结构时,根据循环次数是否已知、是否至少执行一次等实际需求选择合适的语句。注意避免死循环和遗漏循环变量的更新。
2025-06-10 22:27:23
671
原创 if 选择结构
• 单行if适合简单判断。• 多行if用大括号包裹多条语句。• 多条件if适合多个分支选择。• 嵌套if适合需要多层条件判断的场景。
2025-06-09 11:33:24
158
原创 逻辑运算符
• 逻辑运算符常用于条件判断和复合条件表达式。• 逻辑运算符的结果类型为bool。• 逻辑运算符具有短路特性:&&左边为false时右边不再计算,||左边为true时右边不再计算。
2025-06-09 11:01:08
210
原创 比较运算符
可以在自定义类中重载比较运算符,实现对象间的比较。• 比较运算符用于判断两个值或对象的关系,结果为true或false。• 标准类型和常用库类型(如std::string)都支持这些运算符。• 可以通过重载运算符,实现自定义类型的比较逻辑。
2025-06-09 10:44:03
275
原创 赋值运算符
• 这些运算符大多数可以被自定义类型(如类)重载,实现特定的赋值逻辑。• 复合赋值运算符通常返回对自身的引用(*this),支持链式操作。• 例如,std::string重载了+=,用于字符串拼接。
2025-06-09 10:30:44
370
原创 算数运算符
递增/递减运算符常用于循环、计数等场景。前置和后置的区别在于变量值变化的时机。• 前置递增/递减:++a 或 --a,先加/减1再使用变量。• 后置递增/递减:a++ 或 a–,先使用变量再加/减1。• / 用于整数时结果为整数(小数部分被舍弃)。• % 只能用于整数类型,表示取余数。
2025-06-08 20:04:32
221
原创 数据类型 -- 布尔
• 任何非零整数赋值给 bool 都会被转换为 true,只有 0 会被转换为 false。用于表示逻辑上的“真”或“假”。• bool 类型变量在内存中通常占1字节。布尔类型常用于条件判断、循环等控制结构。布尔类型(bool)• false(假)
2025-06-08 19:37:17
179
原创 数据类型 -- 字符串
• 简单字符串用 std::string。• 需要支持多语言或特殊字符时用 std::wstring 或 wchar_t 数组。• C风格字符串历史悠久,但操作复杂,容易出错。推荐用 std::string。
2025-06-08 16:31:30
288
原创 数据类型 -- 字符
在C++中,字符型(char)用于存储单个字符,如字母、数字、符号等。字符型是最基本的数据类型之一,常用于处理文本、字符数组(字符串)等场景。
2025-06-07 23:36:02
308
原创 数据类型--实型
C++中的实型用于存储带小数的数值,常用的有float(单精度)、double(双精度)、long double(扩展精度)。选择时根据精度和内存需求权衡。
2025-06-07 23:03:46
259
原创 常量与变量
• 变量用于存储可以变化的数据。• 常量用于存储不会变化的数据,使用const修饰,防止被意外修改。• 养成合理使用常量的习惯,有助于代码安全和可读性。
2025-06-07 15:48:26
188
原创 Opencascade三维环境搭建
https://download.csdn.net/download/ha0ha0xuexi/90031722
2024-11-24 15:51:25
280
原创 opencascade实现一些刀具路径规划方法
学习opencascade,通过输入零件的内、外边界轮廓环(红色标出),实现一些常见刀具加工路径算法(绿色标出)。
2022-06-12 12:03:46
2345
6
原创 基于opencascade+qt开发简易的加工刀具轨迹
借鉴基于opencascade开发的开源CAD/CAM/CAE软件FreeCAD,HeeksCAM等尝试生成三轴零件的加工刀具轨迹。偏置刀具轨迹生成:zigzag刀具轨迹生成:螺旋刀具轨迹生成:轮廓刀具轨迹生成:在此基础上,后续需要结合加工参数,生成连接刀具轨迹,以及细节处理。...
2022-06-08 18:12:56
2595
9
原创 opencascade建立回转实体
opencascade建立回转实体以球刀刀具为例,通过线->环->面->体,一步步建立刀具实体。 Standard_Real radius=5; Standard_Real length=75; gp_Pnt oPnt(0, 0, 0); //回转环的关键点 gp_Vec v(1, 0, 0); gp_Pnt ePnt(radius, 0, radius); gp_Pnt linPnt1(radius, 0, length); gp_Pnt linPnt2(
2021-07-12 21:42:46
528
3
原创 MFC绘制任意B样条曲面
MFC绘制任意B样条曲面黑色为控制点形成的控制点网,红色为绘制的3*2次B样条曲面参考《计算几何算法与实现》–孔令德给定,u、v方向的控制点数与坐标及次数,根据Hartely-Judd法计算控制节点,根据de-Boor递推公式绘制曲面;完整的绘制类代码如下#pragma once#include"P3.h"class CBSplineSurface{public: CBSplineSurface(void); ~CBSplineSurface(void); void Initia
2021-06-19 16:52:42
1090
原创 创建二维动态数组
创建二维动态数组创建n*m的动态二维数组: int** P2=new int* [n]; //行定义 for(int i=0; i<n; i++) P2[i]=new int[m]; //列定义使用完后需要释放内存 //释放动态数组P2 if(P2!=NULL) { for(int i=0; i<n; i++) { delete[]P2[i]; P2[i]=NULL; } delete[]P2; P2=NULL; }...
2021-06-18 20:51:59
501
原创 B样条插入节点
B样条插入节点插入节点前插入非重复节点插入重复节点通过插入新节点,可以提高B样条的局部修改性。插入一个节点后,需要重新计算节点分布及新控制点,以三次样条绘制为例,绘制上述形状:#pragma once#include"P2.h"class Knot_Insertion_BSpline{public: Knot_Insertion_BSpline(void); ~Knot_Insertion_BSpline(void);public: //计算基函数 double Ba
2021-06-18 15:37:40
1420
1
原创 MFC绘制高次B样条曲线
MFC绘制高次B样条曲线随着B样条的绘制次数越高,曲线连续性越高,光滑性越好,但是逼近程度变差,局部性质变差,工程中一般使用2、3次B样条。图示为1-8次的B样条曲线,红色依次加深,次数依次升高。参考《计算几何算法与实现》–孔令德实现代码:#pragma once#include"P2.h"class High_Level_BSpline{public: High_Level_BSpline(void); ~High_Level_BSpline(void);public: /
2021-06-17 17:25:44
975
2
原创 重节点对B样条曲线的影响
重节点对B样条曲线的影响左图为均匀B样条曲线;中图为端节点K+1次重复,中间节点均匀,曲线过端点;右图为端节点K+1次重复,中间节点k次重复,为分段bezier曲线。参考《计算几何算法与实现》–孔令德节点矢量与控制点分别设置如下,进行绘制:/*----------------------------------------------------input : function: 初始化节点与控制点-------------------------------------------
2021-06-17 16:33:09
1770
3
原创 Hartley-Judd计算非均匀B样条节点矢量
Hartley-Judd计算非均匀B样条节点矢量在前面的文章介绍了用里森菲尔德法分别计算奇次和偶次B样条节点矢量,但是这种方法与实际情况存在出入,Hartley-Judd计算法与曲线的次数无关,可以采用统一的计算公式。理论公式、代码参考《计算几何算法与实现》–孔令德其代码实现为:/*----------------------------------------------------input : function:哈特利-贾德法计算非均匀节点----------------------
2021-06-17 15:43:46
1864
原创 MFC绘制非均匀B样条
MFC绘制非均匀B样条非均匀二次样条非均匀五次样条B样条曲线一共有四种类型,分别为,均匀、准均匀、分段Bezier和非均匀,前面三种均是非均匀的特例,在绘制非均匀B样条时,需要首先计算节点,有里森菲尔德法和哈德利-贾德法。下面介绍里森菲尔德法绘制B样条曲线,该方法根据次数的奇偶,分开来对待计算节点矢量,实现代码如下:/*----------------------------------------------------input : function:里森菲尔德法计算奇次非均匀节点
2021-06-16 16:12:58
660
1
原创 MFC用B样条绘制分段Bezier曲线
MFC用B样条绘制分段Bezier曲线将几何连续的分段多项式曲线统一采用B样条表示,是实现数据的统一管理。实现方式为将端节点重复度设置为K+1,内节点重复度设置为K,且控制点点个数减1的值为K的整数倍。修改绘制代码的控制点与节点为:n=6, k=3; //节点初始化 knot[0]=0.0, knot[1]=0.0, knot[2]=0.0; knot[3]=0.0, knot[4]=0.5, knot[5]=0.5; knot[6]=0.5, knot[7]=1.0, knot[8]=1
2021-06-16 11:07:05
927
原创 MFC绘制二次、三次准均匀B样条曲线
MFC绘制二次、三次准均匀B样条曲线二次准均匀B样条曲线三次准均匀B样条曲线节点矢量在两端K+1次重复,即可以使得B样条的端点具有Bezier曲线端点的性质。参考之前的文章,将控制点与节点分别修改为:n=5, k=2; //节点初始化 knot[0]=0, knot[1]=0, knot[2]=0; knot[3]=1/4.0, knot[4]=2/4.0, knot[5]=3/4.0; knot[6]=1, knot[7]=1, knot[8]=1;
2021-06-16 10:32:25
1620
原创 重控制点绘制特殊形状的曲线
重控制点绘制特殊形状的曲线三控制点共线,曲线切于直线四控制点共线,曲线包含一段直线非端点控制点K次重复,曲线出现尖角端点控制点K次重复,曲线通过端点可以通过重控制点或者重节点来生成特殊形状的,其中重控制点会破坏B样条的统一性,使用较少,下面通过修改控制点的重复度,来生成特殊的形状。参考上一篇文章,将控制点与节点分别修改如下,即可生成上图的曲线 n=5, k=3; //节点初始化 knot[0]=-3/3.0, knot[1]=-2/3.0, knot[2]=-1/3.0;
2021-06-15 23:52:03
291
原创 MFC绘制三次均匀B样条曲线
MFC绘制三次均匀B样条曲线基于de-Boor-Cox公式,实现B样条的绘制。参考《计算几何算法与实现》–孔令德节点矢量与控制点设置为://节点初始化 knot[0]=-3/3.0, knot[1]=-2/3.0, knot[2]=-1/3.0; knot[3]=0.0, knot[4]=1/3.0, knot[5]=2/3.0; knot[6]=1.0, knot[7]= 4/3.0, knot[8]= 5/3.0; knot[9]=6/3.0; //控制点初始化 P
2021-06-15 22:41:43
1678
1
原创 MFC绘制二次均匀B样条曲线
MFC绘制二次均匀B样条曲线B样条具有比Bezier更好的局部修改性与凸包性,引入了节点与控制点一起控制曲线的生成,下面以二次均匀B样条的绘制为例,进行代码实现。参考《计算几何算法与实现》–孔令德新建MFC单文档程序,添加类Quadratic_BSpline,用来绘制曲线;#pragma once#include"P2.h"class Quadratic_BSpline{public: Quadratic_BSpline(void); ~Quadratic_BSpline(void)
2021-06-15 21:56:24
1545
1
原创 opencascade绘制实体消影线
opencascade绘制实体消影线如图,利用opencascade绘制出给定视角的齿轮的消隐线;OCC提供了两种算法,来绘制消隐线,帮助文档介绍如下:算法建立过程:给出实现代码:void occInitialize::getOutLine(){ //获取鼠标选中模型的那个对象 TopoDS_Shape detectShape = m_context->DetectedShape(); //进行模型网格离散化 BRepMesh_IncrementalMesh aMesh
2021-06-11 15:01:07
1387
1
原创 (opencascade中)C++命名、编程规范
C++命名、编程规范一、通用命名规则1、驼峰命名法2、函数的命名3、变量的命名4、函数的参数命名5、类的成员变量命名6、全局变量的命名7、局部变量的命名8、避免使用虚拟名称9、参考代码规范二、格式规范1、符号之间的“空格”运用2、指针的声明和引用3、单独代码块的注释4、函数体分隔5、代码块分布6、与常量的比较表达式7、语句对齐8、代码的注释9、return的时机10、头文件的包含三、文档规范1、在for()之前声明变量2、避免在if()语句中使用非0条件3、成员变量初始化顺序4、代码示例良好的代码编程命名
2021-06-10 16:38:48
702
2
Opencascade三维环境搭建
2024-11-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人