Я уже спрашивал по этому поводу,
вот здесь. Но тогда не получилось задать вполне конкретный вопрос. Так вот, повторюсь. Есть набор точек, 3D:
x | y | z |
---|
0.8316467632710912 | 3.9125904029352112 | 4.2460486461065035e+009 |
1.1025494232680673 | 3.8450467837532551 | 4.2460486461065035e+009 |
1.6269465723033014 | 3.6541818305703586 | 4.2460486461065035e+009 |
... | ... | ... |
0.8370776849271087 | -11.9707686031180580 | 4.2380933897388258e+009 |
-0.0000000000024552 | -12.0000000000000000 | 4.2359237743658228e+009 |
-0.8370776849320072 | -11.9707686031177150 | 4.2337541589928198e+009 |
... | ... | ... |
Это какая-то нерегулярная поверхность. Нужно отобразить её. Используется С++.
Чтобы наглядно показать, что нужно, вот примерчик на Python(язык не знаю):
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from scipy.interpolate import griddata
fig = plt.figure(figsize=plt.figaspect(0.5))
ax = fig.gca(projection='3d')
my_data = np.genfromtxt('data.csv', delimiter=',',skiprows=0)
X = my_data[:,0]
Y = my_data[:,1]
Z = my_data[:,2]
xi = np.linspace(X.min(),X.max(),1000)
yi = np.linspace(Y.min(),Y.max(),1000)
zi = griddata((X, Y), Z, (xi[None,:], yi[:,None]), method='cubic')
xig, yig = np.meshgrid(xi, yi)
surf = ax.plot_surface(xig, yig, zi,linewidth=0.5,color='DarkKhaki',alpha=0.50)
plt.show()
И несколько поверхностей:
Подскажите библиотеку на С/С++(?). Или метод, для его реализации. Количество точек может достигать 10000, но в среднем — до 5000 точек.
P.S: а это случайно не
Nearest neighbour weighted interpolation?