*
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.
*

**ARTICLES**

- Polynomial Evaluation
- Polynomial Evaluation Using Horner Method

This article tells you how to evaluate a canonical, Legendre, and Tchebyshev polynomial efficiently. - Efficient Computation of Binomial Coefficients
and Applications

Binomial coefficients can be computed very efficiently by the construction of Pascal triangle. Analogous to this construction, we shall derive efficient methods to compute b_{k}=ĺ_{i=0}^{k}C_{k}^{i}a_{i}etc. - B-spline Curve and Surface Evaluation

This article discusses how to evaluate B-spline curve and surface efficiently.

- Polynomial Evaluation Using Horner Method
- Basis Conversion
- Converting B-spline curve to Bézier spline curve

We discuss how to convert a B-spline curve to a Bézier spline curve using Boehm's knot insertion method. - Basis conversion among Bézier, Tchebyshev and
Legendre

This article discusses conversion of polynomial basis.

- Converting B-spline curve to Bézier spline curve
- Approximation
- Least Squares Approximation by B-spline Curves and Surfaces

This article discuss on how you can create a B-spline curve or surface to approximate a cloud of points. - Least Squares Approximation by Legendre Series

Given an analytic function*f(x,y),*, it discusses the best fit polynomial in a sense of least squares approximation.

- Least Squares Approximation by B-spline Curves and Surfaces
- 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 offsetting based on Legendre series
- Curve Characterisation
- Identification of Inflection Points and Cusps on
Rational Curves

A simple method to identify inflection points and cusps on 2-D and 3-D rational curves is proposed.

- Identification of Inflection Points and Cusps on
Rational Curves
- Miscellaneous
- Centroid, Area, and Moments of Inertia for Laminas

An efficient method to compute centroid, area, and moments of inertia for laminas accurately. - Learn C# by Examples

A few examples are presented here to help beginners to learn C#.

- Centroid, Area, and Moments of Inertia for Laminas

*
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.R[x1,y1,x2,y2,] V[x1,y1,x2,y2,...,xn,yn,] ...