- 博客(86)
- 资源 (2)
- 收藏
- 关注
原创 C++实现四叉树索引
它将已知范围的空间划分为四个相等的子空间,如此递归下去,直至树的层次达到一定深度或者满足某种要求后停止分割。这里介绍的四叉树结构中,所有的点位置信息都存储在叶子节点上,中间节点以及根结点不存储点信息。3.四叉树结点数据结构:四叉树结点是四叉树结构的主要组成部分,主要用于存储点的最小外包矩形,深度,子节点指针等,也是四叉树算法操作的主要部分。(1)判断结点是否已经分裂,已分裂的选择合适的子节点,进行插入;(2)未分裂的查看是否过载,过载的分裂结点,重新插入;(1)通过父节点获取子节点的深度和范围;...
2022-08-10 14:48:23
1606
1
原创 判断三维空间中三点是否共线
海伦公式 S=sqrt(p(p-a)(p-b)(p-c))利用海伦公式计算三角形面积,从而判断三点是否共线。其中a,b,c为三角形三边长度。
2022-08-04 11:39:03
3002
原创 QString转枚举类型
Qstring转枚举类型(RenderFeatureActorActorType)最后的Item即为转换的枚举类型。
2022-07-30 18:44:27
1020
1
原创 vtkCookieCutter测试
vtkCookieCutter用一个或多个多边形切割二维平面上定义的vtkPolyData。这里只设置了一个多边形进行切割。
2022-07-16 14:11:16
184
转载 VTK修炼之道52:图形基本操作进阶_多分辨率策略(模型抽取的三种方法)
原文链接:https://blog.csdn.net/shenziheng1/article/details/54850678vtkDecimatePro接收一个单元为三角网格的vtkPolyData数据,其中函数SetTargetReduction()用于设置变量TargetReduction的大小,将网格面片抽取的比例控制在0~1.这里设置为0.6,说明有60%的三角面片单元将被移除。使用这个函数可以得到不同程度的简化网格模型,不过,为确保函数效果,一般需要满足下面四个条件:在满足这四个条件情况下,可
2022-07-14 18:08:47
274
转载 vtkpolydata
调用函数SetVerts将vtkCellArray按照离散点拓扑结构处理; 调用vtkPointSet类提供的SetPoints函数,设置几何数据点的坐标通过InsertNextCell(int)指定点的个数count,然后使用InsertCellPoint()方法一次添加一个点来创建单元。如果最初不知道计数,使用UpdateCellCount()方法更新单元个数,返回单元的单元id。调用函数SetLines将vtkCellArray按照线拓扑结构处理; 调用vtkPointSet类提供的Set
2022-06-21 16:42:03
340
转载 OpenGL——VAO与VBO
转载自链接: 这里注: VAO和VBO都是用来存储顶点信息的,并把这些信息送入顶点着色器。至于什么是顶点和顶点着色器,这里就不多说了,不了解的读者可自行CSDN。VBO的B为Buffer之意,用来存储顶点数据;VAO的A为Array,但我认为理解为 Attribute(属性) 之意更好,意思是 Buffer(VBO)的属性。即,我们用VBO来存储数据,而用VAO来告诉计算机这些数据分别有什么属性、起什么作用。VBO是 CPU 和 GPU 之间传递信息的桥梁,我们把数据存入VBO(这一步在CPU执行),然后V
2022-05-31 21:32:08
2825
原创 矩阵变换(位移、缩放、旋转)
下载glm将glm解压到指定位置在VS进行配置进行位移变换:#include<iostream>#include <glm/glm.hpp>#include <glm/gtc/matrix_transform.hpp>#include <glm/gtc/type_ptr.hpp>using namespace std;int main(){ glm::vec4 vec(1.0f, 0.0f, 0.0f, 1.0f); .
2021-08-24 22:40:14
815
原创 OpenGL颜色插值
绘制四边形的时候,实际上是绘制两个三角形,即6个点,但是实际上有两个点重复存储了,解决点重复存储的方法是使用EBO,详细见代码部分。Shader.h#pragma once#include<string>#define GLEW_STATIC //glew32s.lib#include<GL\glew.h>#include<GLFW\glfw3.h>class Shader{public: Shader(const char* vertexPath
2021-08-11 13:01:58
643
原创 OpenGL画三角形
步骤1:VERTEX SHADER处理顶点,专门对顶点进行操作步骤2: SHAPE ASSEMBLY将图1输进来的顶点组成线、面,哪些点连成线,哪些点连成面,哪些点单独存在步骤3:GEOMETRY SHADER在图2的基础上可以插入点,补点进去步骤4:RASTERIZATION光栅化:(矢量转栅格)步骤5:FRAGMENT SHADER着色:给格子上色步骤6:TESTS AND BLENDING深度测试和混合#include<iostream>//opengl调.
2021-08-09 17:38:53
249
原创 用C++写VTK程序
用C++写VTK程序主要使用的是VTKprefix文件夹里面的文件.(F:\VTK\VTKprefix)在C++程序中,将VTKprefix->bin文件夹中的所有.dll文件都复制到新建的C++项目目录下;然后再新建的项目中设置“附加包含目录”:F:\ VTKprefix \ include \ vtk-8.2然后再“链接器”下找到 ‘输入’,“附加依赖库”:F:\ VTK \ VTKprefix \ lib \ *.lib......
2021-08-09 10:42:20
1453
原创 OpenGL创建空白窗口
OpenGL创建一个窗口#include<iostream>//opengl调用的glew分为动态库和静态库,当你在链接器中添加的是glew32s.lib时,说明你编译的是静态库。//此时你要在#include <GL/glew.h>前添加 #define GLEW_STATIC#define GLEW_STATIC //glew32s.lib#include<GL\glew.h>#include<GLFW\glfw3.h>int
2021-08-08 21:30:38
224
原创 pi的任意精度求解 C++
用线性表实现 pi 的任意精度求解(内存域内)先来看一下 pi 的普通求解方法,即根据下面的公式进行求解:pi/2 = 1+1/3+1/3*2/5 + 1/3*2/5*3/7 + 1/3*2/5*3/7*4/9+...... ,进而得出pi=2*(1+1/3+1/3*2/5 + 1/3*2/5*3/7 + 1/3*2/5*3/7*4/9+...... )实现代码如下:#include<iostream>using namespace std;// pi的计算公式: pi/2
2020-10-25 17:02:10
3649
原创 栈
1.3 栈栈是一种 先进后出 的数据结构。栈是限定仅在表尾进行插入和删除操作的线性表栈的读结点数据 读结点数据也就是读取栈结构中结点的数据。由于栈结构只能在一段进行操作,因此这里的读操作其实就是读栈顶的数据。 需要注意的是,读结点数据的操作和出栈不同。读结点数据的操作仅是显示栈顶结点数据的内容,而出栈操作则将栈顶数据弹出,该数据将不再存在。下面是使用栈结构实现学生数据操作的代码(结构体实现):#include<iostream>using namespace std;#i
2020-10-15 16:39:11
272
原创 单链表
单链表的代码分两个文件来写SingleLinkList.h头文件#pragma once#include<iostream>using namespace std;//结点类class Node{public: //构造函数 -> 对结点初始化 Node(int data) { this->m_data = data; this->m_next = NULL; } int m_data; //数据域 -> 存放数据 No
2020-10-12 10:48:16
211
原创 顺序表
1.1 顺序表插入操作思路:如果插入位置不合理,抛出异常;如果线性表长度大于等于数组长度,则抛出异常或动态增加容量;从最后一个元素开始向前遍历到第 i 个位置,分别将它们都向后移动一个位置;将要插入元素填入位置 i 处;表长+1;删除操作思路: 从后往前覆盖以实现删除如果删除位置不合理,抛出异常;取出删除元素;从删除元素位置开始遍历到最后一个元素位置,分别将它们都向前移动一个位置;表长+1;下面是顺序表的实现:采用动态数组来实现顺序表的操作DynamicArray.
2020-10-11 19:17:11
1557
原创 学习笔记
结构体1.结构体例子1. 例1设计一个学生类型的结构体,该结构体包含student1和student2;学生信息包括学号、姓名、分数,要求输出分数高的学生的所有信息。#include<iostream>using namespace std;#include<string>//定义学生结构体struct Student{ string num; string name; int score;};int main(){ Student studen
2020-10-07 10:01:34
1954
原创 通讯录管理系统
通讯录管理统统功能实现添加联系人显示联系人删除联系人查找联系人修改联系人退出系统添加联系人功能描述:实现添加联系人功能,联系人上限为1000人,联系人信息包括(姓名、性别、年龄、联系电话、家庭住址)添加联系人实现步骤:设计联系人结构体设计通讯录结构体main函数中创建通讯录封装添加联系人函数测试添加联系人功能#include<iostream>using namespace std;#include<string>#define MAX
2020-09-24 09:08:22
488
原创 结构体笔记
结构体数组#include<iostream>using namespace std;#include<string>//1.定义结构体数组struct Student{ string name; int age; int score;};int main(){ //2.创建结构体数组并初始化 struct Student stuArray[3]= { {"张三",18,100}, {"李四",20,90}, {"王五",30,84}
2020-09-22 21:11:27
194
原创 指针和结构体
结构体的定义#include<iostream>using namespace std;#include<string>//结构体:创建学生数据类型,学生包括(姓名,年龄,分数)//自定义数据类型:一些类型集合组成的一个类型//语法 struct 类型名称 { 成员列表 }struct Student{ //成员列表 //姓名 string name; //年龄 int age; //分数 int score;}s3; //定义结构体时顺便
2020-09-21 21:24:33
128
原创 冒泡排序
//冒泡排序函数void bubbleSort(int * arr, int len) //int * arr 也可以写为int arr[]{ for (int i = 0; i < len - 1; i++) { for (int j = 0; j < len - 1 - i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j
2020-09-21 19:52:23
154
原创 2020-09-21
1.数组元素倒置#include<iostream>using namespace std;int main(){ //实现数组元素倒置 //1.创建数组 int arr[5] = { 1,3,2,5,4 }; cout << "原数组:"<< endl; for (int i = 0; i < 5; i++) { cout << arr[i] << endl; } //2.数组元素倒置 int start
2020-09-21 11:29:46
240
原创 数组名用途
/*练习案例:水仙花数案例描述:水仙花数是指一个3位数,它的每个位上的数字的三次幂之和等于它本身例如:1^3+5^3+3^3=153*/#include<iostream>using namespace std;int main() { //1.获取所有的三位数 int num = 100; do { //2.从所有的三位数中找到水仙花数 int a; //个位 int b; //十位 int c; //百位 a = num % 10; //获
2020-09-20 17:08:06
345
原创 案例
#include<iostream>using namespace std;//time系统时间头文件#include<ctime>int main() { //添加随机数种子,作用是利用当前系统生成随机数,防止每次随机数都一样 srand((unsigned int)time(NULL)); //1.系统生成随机数 int num = rand() % 100 + 1; //rand() % 100 + 1: 生成0+1 ~ 99+1随机数 //2.玩
2020-09-20 16:28:53
146
原创 迭代器的作用
迭代器1:import timeclass Classmates(object): def __init__(self): self.names = list() def add(self, name): self.names.append(name) def __iter__(self): """如果想要一个对象成为一个可以迭代的对象,即可以使用for,那么必须实现__iter__方法""" return
2020-09-05 19:09:58
965
使用C#和vtk裁剪点云
2024-06-27
VTK9.2的Release和Debug库
2024-06-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人