Skip to content

Sample code for vtk to display thousands of spheres with different radius

Sample code for vtk to display thousands of spheres with different radius published on No Comments on Sample code for vtk to display thousands of spheres with different radius

https://stackoverflow.com/questions/29840144/display-thousand-of-different-sphere

int main(int, char *[])
{
    srand(time(NULL));

    // create points
    vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();

    // setup scales
    vtkSmartPointer<vtkFloatArray> scales = vtkSmartPointer<vtkFloatArray>::New();
    scales->SetName("scales");

     // setup color label
    vtkSmartPointer<vtkFloatArray> col = vtkSmartPointer<vtkFloatArray>::New();
    col->SetName("col");

    // setup lookupTable and add some colors
    vtkSmartPointer<vtkLookupTable> colors = vtkSmartPointer<vtkLookupTable>::New();
    colors->SetNumberOfTableValues(4);
    colors->SetTableValue(0 ,1.0 ,0.0 ,0.0 ,1.0); // red
    colors->SetTableValue(1 ,0.0 ,1.0 ,0.0 ,1.0); // green
    colors->SetTableValue(2 ,0.0 ,0.0 ,1.0 ,1.0); // blue
    colors->SetTableValue(3 ,1.0 ,1.0 ,0.0 ,1.0); // yellow
    // the last double value is for opacity (1->max, 0->min)

    for(int i=0; i<100; i++)
    {
        points->InsertNextPoint(15*cos(i*PI/50), 15*sin(i*PI/50), 0); // sphere in circle
        scales->InsertNextValue((rand()% 100)/double(100)); // random radius between 0 and 0.99
        col->InsertNextValue((rand()% 4)); // random color label
    }

    // grid structured to append center, radius and color label
    vtkSmartPointer<vtkUnstructuredGrid> grid = vtkSmartPointer<vtkUnstructuredGrid>::New();
    grid->SetPoints(points);
    grid->GetPointData()->AddArray(scales);    
    grid->GetPointData()->SetActiveScalars("scales"); // !!!to set radius first
    grid->GetPointData()->AddArray(col);

    // create anything you want here, we will use a sphere for the demo
    vtkSmartPointer<vtkSphereSource> sphereSource = vtkSmartPointer<vtkSphereSource>::New();

    // object to group sphere and grid and keep smooth interaction
    vtkSmartPointer<vtkGlyph3D> glyph3D = vtkSmartPointer<vtkGlyph3D>::New();
    glyph3D->SetInputData(grid);
    glyph3D->SetSourceConnection(sphereSource->GetOutputPort());

    // create a mapper and actor
    vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
    mapper->SetInputConnection(glyph3D->GetOutputPort());

    mapper->SetScalarModeToUsePointFieldData(); // without, color are displayed regarding radius and not color label
    mapper->SetScalarRange(0, 3); // to scale color label (without, col should be between 0 and 1)
    mapper->SelectColorArray("col"); // !!!to set color (nevertheless you will have nothing)
    mapper->SetLookupTable(colors);

    vtkActor *actor = vtkActor::New();
    actor->SetMapper(mapper);

    // create a renderer, render window, and interactor
    vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
    vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
    renderWindow->AddRenderer(renderer);
    vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
    renderWindowInteractor->SetRenderWindow(renderWindow);
    // add the actor to the scene
    renderer->AddActor(actor);
    renderer->SetBackground(0, 0, 0);
    // render and interact
    renderWindow->Render();
    renderWindowInteractor->Start();
    return EXIT_SUCCESS;

Install paraFOAM in any OpenFOAM version

Install paraFOAM in any OpenFOAM version published on No Comments on Install paraFOAM in any OpenFOAM version

Modify etc/config.csh/paraview

change
setenv ParaView_DIR $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$paraviewArchName
to
setenv ParaView_DIR YOUR_PARAVIEW_PATH

also remember to check ParaView_VERSION and ParaView_MAJOR

Office Word 2013 无法自动加载 Endnote X5/6 的解决方案

Office Word 2013 无法自动加载 Endnote X5/6 的解决方案 published on No Comments on Office Word 2013 无法自动加载 Endnote X5/6 的解决方案

参考链接:http://www.plob.org/2013/04/17/5932.html

其实原因可能有很多了,我没有在win7上装过office 2013,所以也不知道会是什么情况,不过如果有人和我一样用的是win8.1 64bit + Office 2013 64bit + Endnote X5/6,那么这个解决方案应该适合你。

1. 安装插件Microsoft Visual C++ 2008 Redistributable
链接: http://pan.baidu.com/s/1eQGaoRC 密码: p7ae

2. 按win+x键弹出快捷菜单,选择命令行(管理员),
输入regsvr32.exe "C:\Program Files (x86)\EndNote X5\Product-Support\CWYW\x64\EndNote Cwyw.dll"

应该就可以了

再说virtualbox虚拟机下的文件共享,还有字体

再说virtualbox虚拟机下的文件共享,还有字体 published on No Comments on 再说virtualbox虚拟机下的文件共享,还有字体

之前的一篇帖子讲到之前是怎么操作virtualbox共享的,需要每次运行一个脚本挂载一下,其实用它自动挂载的也可以,不过要设置一下权限

sudo adduser xxxxxxx vboxsf

如果是centos
sudo usermod -a -G vboxsf
然后会自动挂到/media/sf_******下面,如果需要放在home文件夹里面,ln -s一下就可以了,之前vmware也是这样做的。
额,也没说的可说的了,差不多就是这样了。vmware下不知道怎么就是共享不了了,原来还好好的,算了,还是用vb吧。

还有,之前一直用的consola字体在gvim下不知道怎么就是设置不好,还是支持免费的fonts-consolata吧,安装也方便,就是字体看起来比consola稍微硬一些,还是蛮漂亮的。关于其它一些编程字体可以参考:
http://hivelogic.com/articles/top-10-programming-fonts/

ubuntu 12.04下安装日文输入法

ubuntu 12.04下安装日文输入法 published on No Comments on ubuntu 12.04下安装日文输入法

原来一直以为linux下装日文输入法很麻烦,需要自己配置好多东西,想想也没必要,就一直没去搞。后来发现虚拟机里面的ubuntu13.04,可以直接通过安装fcitx-mozc来使用日语输入法。然后现在想在这台12.04里面装,结果发现没有这个包。查了一下说ubuntu12.04源里面的fcitx只到4.2.0,而mozc需要4.2.1的支持,殘念……然后找到了这个网站:
http://share.korepwx.com/blog/2012-03/09/fcitx+google+cloud+mozc.html
里面讲了怎么自己编译fcitx。想到自己编译就头痛,查查看有没有偷懒的办法。其实可以通过添加fcitx的ppa的办法,见该网站:https://code.launchpad.net/~fcitx-team/+archive/nightly

具体操作方法:

1. 先彻底删除本机的fcitx(据说不删彻底会有很严重的后果)

killall fcitx
sudo apt-get purge fcitx fcitx-*

2. 添加fcitx的ppa,并安装

sudo apt-add-repository ppa:fcitx-team/nightly
sudo apt-get update
sudo apt-get install fcitx fcitx-table-wbpy fcitx-table-mozc
fcitx -r
im-switch

这样就可以得到最新版本的fcitx了,漂亮大气多了。装好后启动一下fcitx,中文输入就可以用了,日文似乎还要在设置里面添加一个日文输入法什么的,我也不知道怎么调了一下就出来了。すごい!

话说现在fcitx真的是越做越好了,很漂亮,也很方便,原来没有的五笔拼音现在也加上了,和windows下用着已经感觉不出来什么差别了,而且切换中/日输入法比windows底下还方便。

Ubuntu桌面相关

Ubuntu桌面相关 published on No Comments on Ubuntu桌面相关

老板给了一台x230的电脑,那边的管理员居然没给我的账号设置管理员权限,我也懒得跟那些人纠缠,按老张说的办法,把C:\Windows\System32\Config\SAM拷出来做好备份,然后上WinPE清密码,加权限,分区装linux。不管怎么说这台电脑还是用的超级爽的,特别是这个键盘的手感,我太喜欢了~~

扯远了。本来装的是Linux Mint 15,界面是越来越好看了,不过怎么都感觉卡卡的,然后开一个浏览器要半天,都不知道为什么。mint的源也没有新加坡这边的,下载速度好慢,于是还是换回ubuntu,也不想追新了,就想找个稳定点的系统。一直对unity界面挺不喜欢的,这两天逼自己一直在用,也习惯了不少,装了个compizconfig-settings-manager,实现了我最需要的鼠标滚轮切换workspace,感觉如果日常使用unity还是个挺不错的选择。可是写程序的时候,窗口一开多,找个窗口都得半天,很影响自己的思路和心情。于是安装gnome-shell,发现新和gnome-shell界面和unity差不多。。。。。。汗,是我适应能力太低了吗。还好它还提供了gnome classic (no effect) ,试了一下,正是我需要的。结果发现鼠标滚轮切换workspace不能用了。。。。。。

于是上网搜到了这个帖子: https://bugs.launchpad.net/ubuntu/+source/libwnck3/+bug/958392. 世界上总是有大神的,具体原理我也不懂,大概就是libwnck-3这个库有点bug,于是有人放出了补丁,见链接:https://launchpad.net/~quirky/+archive/libwnck3。具体做法

sudo apt-add-repository ppa:quirky/libwnck3
sudo apt-update
sudo apt-get install libwnck-3-0

重新登录桌面就可以了。

解决Thinkpad X201i或类似机型在linux下无法连接wpa2 Enterprise的问题

解决Thinkpad X201i或类似机型在linux下无法连接wpa2 Enterprise的问题 published on No Comments on 解决Thinkpad X201i或类似机型在linux下无法连接wpa2 Enterprise的问题

血泪史啊!前后断断续续的折腾了一个月,终于把问题给解决了!玩linux玩的就是这个感觉啊,虽然花时间,但解决问题以后的成就感也是很高的(虽然对我专业没什么用就是了。。。。),废话不多说,进入正题。

症状:
无法连接上学校的无线网(WPA & WPA2 Enterprise),也无法连上新加坡的Wireless SG(同为WPA2),不断跳出让我重新输入用户名和密码的对话框,普通WEP方式能正常连接。在Win7下任何加密方式可以无压力连接。

最初:
其实很容易就可以想到是驱动问题,按理说intel芯片的网卡linux不会支持不好,所以想尝试不同的发行版。Linux mint, Ubuntu, OpenSUSU, Federal, CentOS......市面上主流发行版几乎试了一圈,全部是一样的问题。然后静下心来开始上网搜问题解决方法,绝大部分回答都是“你去找个类似芯片的开源网卡编译一下就行了”......我知道大神们也没有义务来照顾我们这些新手,所以也没什么好抱怨的,问题还要自己解决。首先看自己网卡的型号(不知道是不是这样看)

$ lspci | grep -i wireless

02:00.0 Network controller: Intel Corporation Centrino Wireless-N 1000
然后在网上搜驱动,很容易找到这个网站:http://wireless.kernel.org/
然后下载相应的驱动,把ucode丢进/lib/firmware里面,当然可以想象的是,没用,不然也不会有这篇文章了。

放弃:
实在没办法了,换回win7用了一段时间,心里总觉得不爽,某天手贱,又换回了linux,问题依旧。这次想去找学校IT care了,在这里我不得不吐槽一下学校IT care的技术员,我可以理解你没办法给我把网络弄好,但我无法理解你的那话“我只会用ubuntu,对linux mint不熟”......把电脑放那边放了一晚,可想而知没有任何作用。最后回复我,是你电脑的问题,我问,是不是驱动问题,他说,可能吧......

重来:
算了,问题还要自己解决。找张师兄借了个usb无线网卡,虽然可以用,但总觉得心里别扭,明明很正常的一个笔记本和网卡,我每次上网还得多插一个usb,不行,一定要解决。

本来对于内核和模块我一向是敬而远之的,看来不得不认真老老实实的去了解了。具体的也不详细说了,差点就重新编译内核了。
还是先看看关于无线网加载了哪些模块

$ lsmod | grep iw

iwlwifi 386826 0
mac80211 539908 1 iwlwifi
cfg80211 206566 2 iwlwifi,mac80211

可以看出这是用的是iwlwifi模块,然后查看iwlwifi加载了哪些模块

$ modinfo iwlwifi | grep ucode

firmware: iwlwifi-5150-2.ucode
firmware: iwlwifi-5000-5.ucode
firmware: iwlwifi-6000g2b-6.ucode
firmware: iwlwifi-6000g2a-5.ucode
firmware: iwlwifi-6050-5.ucode
firmware: iwlwifi-6000-4.ucode
firmware: iwlwifi-100-5.ucode
firmware: iwlwifi-1000-5.ucode
firmware: iwlwifi-135-6.ucode
firmware: iwlwifi-105-6.ucode
firmware: iwlwifi-2030-6.ucode
firmware: iwlwifi-2000-6.ucode

上网站http://wireless.kernel.org/,发现Intel® Centrino® Wireless-N 1000有两个版本,当然下载最新的那个,解压,把iwlwifi-1000-3.ucode拷到/lib/firmware下,然后把该目录下其它.ucode文件全部备份再删掉。Readme里面说要重新设置iwlwifi,本来以为要重新编译模块的,抱着估且一试的心情,运行

$ sudo modprobe -r iwlwifi
$ sudo modprobe iwlwifi

搞定!正常连接校园网。

PS: 不用把/lib/firmware下所有.ucode删除,只用删除iwlwifi-1000-5.ucode就行了,但有个问题就是每次更新系统这些文件又会被装上,应该有办法通过编译或设置iwlwifi模块来指定加载,算了懒得弄了

Latex中多行公式的输入

Latex中多行公式的输入 published on No Comments on Latex中多行公式的输入

之前一直是mathtype直接拷过来的,它用array,所以我也一直用array。最近写thesis的时候才觉得有些问题。array是为矩阵准备的,出来的公式是行内公式,显的非常小。上网查了一下,问题得到完美解决,就是用split。

1. 多行公式左对齐,一个编号。

\begin{equation}\label{equ:1}
\begin{split}
& Equation1 \\
& Equation2 \\
\end{split}
\end{equation}

2. 多行公式左对齐,无编号。

\begin{align*}
& Equation1 \\
& Equation2 \\
\end{split}
\end{align*}

3. 多行公式左对齐,每个都有编号

\begin{align}
& Equation1 \label{equ:1} \\
& Equation2 \label{equ:2} 
\end{align}