**3. Results and Discussion for Scattered Data Interpolation**

We tested the proposed scheme using two well-known test functions *F*1(*x*, *y*) and *F*2(*x*, *y*):

$$\begin{split} F\_1(\mathbf{x}, y) &= 0.75e^{(-(9\mathbf{x} - 2)^2 + (9y - 2)^2/4)} + 0.75e^{(-(9\mathbf{x} + 1)^2/49 - (9y + 1)^2/10)} \\ &+ 0.5e^{(-(9\mathbf{x} - 7)^2 + (9y - 3)^2/4)} - 0.2e^{(-(9\mathbf{x} - 4)^2 - (9y - 7)^2)} \end{split} \tag{21}$$

$$F\_2(x, y) = \frac{(1.25 + \cos \cos \,(5.4y))}{6 + 6(3x - 1)^2} \tag{22}$$

We implemented the proposed scheme using MATLAB 2017 version on Intel® Core ™ i5-8250U 1.60 GHz. MATLAB coding was developed based on Algorithm 1. About 25 MATLAB functions were used to obtain all the results.

We chose 36 data point samples in the domain [0, 1] × [0, 1], as shown in Table 1. Figure 8 shows the Delaunay triangulation for the data. Figure 6 shows examples of surface interpolation for both functions. Comparing Figures 9 and 10, the surfaces produced by the proposed scheme visually look smoother than the surfaces obtained from the quartic Bézier triangular of Saaban et al. [35] and Piah et al. [36]. Figure 10 shows an example of scattered data interpolation using quartic Bézier triangular patches.

To validate the proposed scheme, we calculated the maximum error (Max Error) and coefficient of determination (COD; i.e., R2) for both functions and compared them with those obtained for quartic Bézier triangular for three different numbers of points i.e., 100, 65, and 36 for both functions *F*1(*x*, *y*) and *F*2(*x*, *y*). Functions 1 and 2 represent *F*1(*x*, *y*) and *F*2(*x*, *y*), respectively.

Table 2 shows the error analysis for both tested functions by using (a) quartic Zhu and Han and (b) quartic Bézier triangular. Meanwhile, Table 3 shows CPU time in seconds. From Table 2, we can see that the proposed quartic triangular patches for scattered data interpolation gave smaller Max Error values than the quartic Bézier triangular. Additionally, the proposed scheme gave higher R2 values for all numbers of data points (100, 65, and 36). From Table 3, the proposed scheme required less CPU time than the quartic Bézier. For instance, for 100 data points, the proposed scheme only required 0.71 s for data from function *F*1(*x*, *y*) and 0.42 s for data from function *F*2(*x*, *y*), compared

with the quartic Bézier which requires 5.6 s and 3.57 s for 100 data points from functions *F*1(*x*, *y*) and *F*2(*x*, *y*), respectively. Thus, the proposed scheme in this study gave very good results, and was better at treating scattered data than using the quartic Bézier triangular proposed by Piah et al. [36], Saaban et al. [35], and Hussain et al. [37,38]. We conclude that the proposed scheme required less CPU time than the quartic Bézier triangular. This reduction of CPU time consumption is an advantage when the goal is to construct a surface with thousands of data points or big data.


**Table 1.** Data points.

**Figure 8.** Delaunay triangulation of data in Table 1.

**Figure 9.** Surface reconstruction using the proposed scheme. (**a**) For *F*1(*x*, *y*); (**b**) For *F*2(*x*, *y*).

(a)ȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱȱ (b)

**Figure 10.** Surface reconstruction using quartic Bézier triangular. (**a**) For *F*1(*x*, *y*); (**b**) For *F*2(*x*, *y*).



This can be seen clearly from Table 3. With the largest number of data points, the CPU time for the proposed scheme was approximately 12.5% that of the CPU time required for the quartic Bézier triangular based scheme. This is very significant, especially when the user wants to render and reconstruct surfaces obtained from very dense data sets. Many studies in scattered data interpolation usually involve the use of Shepard-type interpolants such as Shepard triangular schemes for scattered data interpolation [6,11–13]. We also implemented the Shepard triangular to the same data sets as listed in Table 1. Tables 4 and 5 show the error analysis for the schemes of Cavoretto et al. [6], Dell'Accio et al. [12,13], and Dell'Accio and Di Tommaso [11]. Based on CPU time, for all tested data sets, the proposed scheme was faster than the schemes in [6,11–13], except for the case with 100 data points for the data from function *F*1(*x*, *y*). Considering the Max Error, the proposed scheme was better than all four schemes except for the case with 100 data points from function *F*2(*x*, *y*). Therefore, we can conclude that the proposed scheme is better than quartic triangular patch and the Shepard triangular based schemes [6,11–13].


**Table 3.** CPU time (in seconds).

**Table 4.** Error analysis.


**Table 5.** CPU time (in seconds).

