2014년 5월 30일 금요일

install VTK at OSX 10.9.3

The goal is setup python environment of VTK.
Main idea was came from the document http://www.it.uu.se/edu/course/homepage/vetvis/ht10/vtk/instructions_vtk_OSX.pdf

ccmake must be installed already. But tk/tcl is not (at least as for me).


  1. Download source code.
    • Use Google to find the URL
    • Move the downloaded folder to target path where you want to install VTK. After compile, you cannot move the folder. If you move that, python would not find the VTK module.
  2. ccmake
    • If your VTK folder is /Users/me/VTK
      > mkdir build
      > cd build
      > ccmake ..
    • An old-fashioned screen appears. Then, hit 'c' until you can see 'g' option.
      Maybe after two hit of 'c', you would see 'g' option.
    • Hit 'g'.
  3. make
    • After ccmake screen disappears,
      > make
    • This takes about 30 minutes for me.
  4. export some environment variables and run
    • > export PYTHONPATH=$PYTHONPATH:/Users/me/VTK/build/bin:/Users/me/VTK/build/Wrapping/Python:/Users/me/VTK/build/lib
    • run python and test some examples.
    • If python complains about import vtk, export some more environment variables.
      eg. LD_LIBRARY_PATH , DYDL_FALLBACK_LIBRARY_PATH
      (for more information, refer the pdf mentioned above.)
  5. A test program

    import vtk

    # create a rendering window and renderer
    ren = vtk.vtkRenderer()
    renWin = vtk.vtkRenderWindow()
    renWin.AddRenderer(ren)

    # create a renderwindowinteractor
    iren = vtk.vtkRenderWindowInteractor()
    iren.SetRenderWindow(renWin)

    # create cube
    cube = vtk.vtkCubeSource()

    # mapper
    cubeMapper = vtk.vtkPolyDataMapper()
    #cubeMapper.SetInput(cube.GetOutput())
    if vtk.VTK_MAJOR_VERSION <= 5:
        cubeMapper.SetInput(cube.GetOutput())
    else:
        cubeMapper.SetInputConnection(cube.GetOutputPort())  

    # actor
    cubeActor = vtk.vtkActor()
    cubeActor.SetMapper(cubeMapper)

    # assign actor to the renderer
    ren.AddActor(cubeActor)

    # enable user interface interactor
    iren.Initialize()
    renWin.Render()
    iren.Start()

    You can find many more examples by googling.

2014년 3월 18일 화요일

R integer factorization code

# simple but ineffective.

factor =function (x) {
  limit = ceiling(sqrt(x))
  g = x/(1:limit)
  k = x/g[g%%1==0]
  c(k, rev(x/k))
}