Algorithm

【Algorithm】基础算法之排序、递归、二分查找

选择排序 选择排序是一种简单、低效的排序方法。 他每次都从序列中按顺序搜索寻找最值,所以总的查找次数为n,n-1, n-2, n-3, ……, 1 大O表示法:O(n^2) 注意:大O表示法忽略常数1/2. def findSmallest( arr ): smallest_index = 0 for i in range(1, len(arr)): if( arr[i] < arr[smallest_index] ): smallest_index = i return smallest_index def selectSort( arr ): Read more…

By theArcticOcean, ago
Editor

【vim】正则表达式

自己有些写过关于正则表达式的文章: https://blog.csdn.net/theArcticOcean/article/details/78634095 现在写一写正则表达式在vim中的应用情景。 文本替换 我们知道全文本的替换是:%s/old_text/new_text/g 那么特定行的是,比如3-7行:3,7s/old_text/new_text/g 当前行到文末的替换:.,$s/old_text/new_text/g 文本删除 删除多余的空行 情景:从windows中复制过来的文字,想要用vim删除空行。 命令:%s/\n\n/^M/g 删除 [ ] 内容. 命令:%s/\[[0-9.]*\]//g vim多行变一行 以逗号为分隔符 命令:%s/\n/,/g 每行增添内容 情景:markdown文档书写,每一行行首增加 <li> 命令:%s/^/<li>/g 清除每行最后的数字 %s/[0-9]$//g 正则表达增加换行 原本想在23前增加换行符,所以用了:%s/23/\n23/g 结果在23前加上了^@特殊字符,在vim下输入help digraph-table查看特殊的输入字符: char digraph hex dec official name Read more…

By theArcticOcean, ago
Editor

【vim】多文件编辑

打开多个文件: 横向打开多个文件:vim -o file1 file2 file3 … 切换:ctrl + ww 一次性关闭所有:qa 纵向打开多个文件:vim -O file1 file2 file3 … -o后面加一个数字n,预分配窗口的形式打开文件 (多了几个闲置窗口) 新增分割窗口 split 新增水平分割窗口 vsplit新增竖直分割窗口 多个窗体之间移动光标 ctrl + w + 方向键, 方向键是指h, j, k, l, 他们对应左下上右。 查看帮助还可以得知,set Read more…

By theArcticOcean, ago
C plus plus

【Mac】Library not loaded: ‘Image not found’

shell环境 设置DYLD_LIBRARY_PATH,将libxxx.dylib所在的路径加入其中。 有多种方法设置,我们可以将其写入/etc/profile,然后source /etc/profile DYLD_LIBRARY_PATH="/Users/weiyang/Downloads/Qt5.11.2/5.11.2/clang_64/lib" export DYLD_LIBRARY_PATH="/Users/weiyang/Downloads/OpenCTM-1.0.3/lib":$DYLD_LIBRARY_PATH IDE(如Qt Creator)环境 设置Qt Creator的build Environment, 增添DYLD_LIBRARY_PATH键值对。 比如: 简单粗暴法 直接将libxxx.dylib`拷贝到可执行文件的同级目录下。 不过这种方法没能将dylib的优势(减少内存的占用)体现出来。

By theArcticOcean, ago
C plus plus

Unit Test Based On QT

The first example comes from Qt Creator Help Document: Qt 5.11 > Qt Test 创建简单的Unit test。 新建unit test工程 在private Q_SLOTS中写入自己的测试函数: cpp文件 #include <QString> #include <QtTest> class String : public QObject { Q_OBJECT public: String(); private Read more…

By theArcticOcean, ago
C plus plus

【CPP】valarray

valarray支持对整个数组的各类数学计算以及一些间接访问。 比如对所有元素进行模运算,和另一个数组做swap操作,对所有的元素apply一个function。比较经典的是slice selector class。 slice( std::size_t start, std::size_t size, std::size_t stride ); 它代表了下列位置的元素子集: start + 0 * stride start + 1 * stride … start + (size-1) * stride 下面的代码是我在dash上看到的例子,非常优雅的例子: #include <iostream> #include <valarray> class Read more…

By theArcticOcean, ago
C plus plus

【CPP】局部排序算法

partial_sort 例子: 找出10个随机数中最大的5个数字 #include <iostream> #include <vector> #include <cstdlib> #include <ctime> #include <algorithm> using namespace std; int main() { vector<int> values; std::srand(std::time(nullptr)); // create 10 number which in [0, 100] for( int i = 0; Read more…

By theArcticOcean, ago
Python

【VTK】Clip Volume

本文学习自样例: https://lorensen.github.io/VTKExamples/site/Cxx/ImageData/ClipVolume/ 知识预备: RGB: 三原色之红,绿,蓝 (0 – 255) RGBA:在RGB的基础上加上不透明度(0 – 1.0) 物体的原始状态: 放大了看里面: python code: import vtk IMAGE_SIZE = 64 CUBE_SIZE = 20.0 image = vtk.vtkImageData() image.SetDimensions( IMAGE_SIZE, IMAGE_SIZE, IMAGE_SIZE ) image.AllocateScalars( vtk.VTK_UNSIGNED_CHAR, 1 ) Read more…

By theArcticOcean, ago
C plus plus

【VTK】clip polyData的两类方法

对于此类拖动滑动条切割物体的案例,我发现有两种思路可以达到该效果。 vtkClipPolyData 使用vtkClipPolyData来处理原始的polydata,利用ClipFunction切割polydata,生成切割后的new polydata。 每一次滑动,通过改变ClipFunction,间接改变了actor的polydata。所以就有了动态切割的效果。 python code: #!/usr/bin/env python import vtk cone = vtk.vtkConeSource() cone.Update() ren1= vtk.vtkRenderer() ren1.SetBackground( 0, 0, 0 ) renWin = vtk.vtkRenderWindow() renWin.AddRenderer( ren1 ) # selection part - green color part Read more…

By theArcticOcean, ago
C plus plus

【VTK】vtkPolyDataNormals example

vtkPolyDataNormals可以用于计算poly data中points和cell的法向量,下面的例子显示了vtkPolyDataNormals作用在正方体和球体的效果。 正方体 人为构造6个面的正方体,每一个cell是一个正方形。数据存储在polydata中,之后使用vtkPolyDataNormals 进行处理。 分别输出point的在mesh的normal和cell的normal。 #include <vtkVersion.h> #include <vtkSmartPointer.h> #include <vtkSurfaceReconstructionFilter.h> #include <vtkProgrammableSource.h> #include <vtkContourFilter.h> #include <vtkReverseSense.h> #include <vtkPolyDataMapper.h> #include <vtkProperty.h> #include <vtkPolyData.h> #include <vtkCamera.h> #include <vtkRenderer.h> #include <vtkRenderWindow.h> #include <vtkRenderWindowInteractor.h> #include <vtkSphereSource.h> #include Read more…

By theArcticOcean, ago