Below you will find some of my research papers and articles in the area of
computational geometry and computer aided design. If you have any question or comment,
please drop me an email. Thanks for your visit.
- Polynomial Evaluation
- Basis Conversion
- Curve Offsetting
- Curve offsetting based on Legendre series
Curve offsetting is one of the most important geometric operations in CAD/CAM
systems due to its immediate applications to NC machining. Based on the use of
the Legendre series, we present a stable and efficient method for offsetting
planar B-spline curves. Our approach provides users with easy control of
approximation accuracy and flexibility to determine the degree of an offset curve.
- Curve Characterisation
As a veteran developer and technical manager, I have been giving numerous trainings to developers. In this site,
I would like to share some of non-restrictive training materials with you. I hope that you find these materials
informative and useful.
- What Every Developer Should Know about Floating-point Computing
We all know that infinite numbers such 1/3 and p cannot be represented exactly in
computer memory. It may surprise most programmers that most finite numbers cannot be represented exactly
either due to floating-point representation used in computing. Floating-point arithmetic is a very important
subject, and a rudimentary understanding of it is a pre-requisite for programmers, operating system designers,
programming language and compiler writers. However, it is one of the most confusing areas for most developers.
- Parallel Programming via OpenMP (Part I)
The major CPU vendors have shifted their attention away from ramping up clock speeds to adding parallelism
support with multi-core processors that can handle different tasks simultaneously. The reason is that increasing
performance through parallel processing can be far more energy-efficient than increasing microprocessor clock
frequencies. In a world that is increasingly mobile and energy conscious, this has become essential. This seems
like pretty good news. Yet, for most tasks, it is not. That is because the majority of software is traditionally
designed to run on a single-core chip; in other words, it is designed to do only one thing at a time. This training
course was designed to familiarize you with parallel programming via OpenMP. It gives an overview of parallel
models and how to construct parallelism. Common problems such as race condition and workload balance will
be discussed in this training course.
- Parallel Programming via OpenMP (Part II)
In the second seminar, we will further discuss data synchronization, non-loop parallelism, and explicit task
parallelism. Two real world application examples will also be reviewed in this presentation.
- Web-based 2D Sketch Viewer
This demo programs shows how to implement a web-based 2D viewer (a kind of cloud computation). Users can press the left mouse button to drag the sketch around, or use the mouse wheel to perform zoon-in and zoom-out operations. Users can also click one of the three command icons to perfrom locating, area-zooming, or fitting to the window operations. It works well on Google Chrome.
Users can create their own JSON-like text files to render their own sketches on this web page. To do so, write the x-y coordinates of the diagonal points of the bounding box inside R[ ], and the stroking points from each curve inside V[ ] as shown below, and save it as a text file. Then, users can drag and drop the text file onto this web page to render their 2D sketch.