В Modern OpenGL (OpenGL 3.2 и выше) вы можете использовать Geometry Shader для этого:
#version 330
layout (triangles) in;
layout (line_strip /*for lines, use "points" for points*/, max_vertices=3) out;
in vec2 texcoords_pass[]; //Texcoords from Vertex Shader
in vec3 normals_pass[]; //Normals from Vertex Shader
out vec3 normals; //Normals for Fragment Shader
out vec2 texcoords; //Texcoords for Fragment Shader
void main(void)
{
int i;
for (i = 0; i < gl_in.length(); i++)
{
texcoords=texcoords_pass[i]; //Pass through
normals=normals_pass[i]; //Pass through
gl_Position = gl_in[i].gl_Position; //Pass through
EmitVertex();
}
EndPrimitive();
}
Замечания:
layout (line_strip, max_vertices=3) out;
to layout (points, max_vertices=3) out;
Помните, что широта и долгота изначально написаны в градусах, я думаю, что вам сначала нужно узнать, какое расстояние представляет 1º, в некоторых книгах и на сайтах говорится, что 1º составляет около 111 км, в зависимости от того, как близко находится пятно от линии экватора, Итак (более или менее):
1º - 111km, also 1º equals 60'
then 1' should be 1.85km, and 1' equals 60"
then 1" is more or less 0.03km
so 32.4324" is about 1km
Теперь ... в основном вам нужно теперь ограничить квадрат на основе начального местоположения, для этого просто добавьте / вычтите 32.4324 "к широте и долготе, поэтому попробуй .. давай поедем в Лас-Вегас (используй карты Google)
36.1699412,-115.1398296
Это месторасположение в шестнадцатеричной системе счисления, сын переводит 32,4324 "... это просто ... просто разделить его на 3600 и это 0,009009009, это значение, которое вы должны добавить / вычесть из / из широты / долготы
north bound, after add: 36.1789502
south bound, after substract: 36.1609322
east bound, after add: -115.1308206
west bound, after substract: -115.1488386
, теперь в gmaps попробуйте найти эти границы для ex (северная граница: 36.1789502, -115.1398296), которую вы увидите находится чуть выше исходного местоположения, вы также можете измерить расстояние от исходного местоположения до 1 км, которое более или менее близко к северной границе, которую вы только что рассчитали.
Так что теперь просто запросите вашу базу данных и отфильтруйте ее там, где широта находится между северной границей (36.1609322) и южной границей (36.1789502), а также долготой между западной границей (-115.1488386) и восточной границей (-115.1308206), и это должно выполнять работу. Таким образом, магия заключается в том, чтобы просто добавить / вычесть 0,009009009 в любую точку местоположения.
Это формула расстояний с использованием долготы и широты.
a = sin²(Δφ/2) + cos φ1 ⋅ cos φ2 ⋅ sin²(Δλ/2)
c = 2 * atan2( √a, √(1−a) )
d = R * c
//Where φ represent the latitudes, and λ represent the longitudes.
. Ссылка: https://www.sisense.com/blog/latitude-longitude-distance-calculation-explained/ [ 111]
Также вы можете проверить эту страницу для использования JavaScript. https://www.movable-type.co.uk/scripts/latlong.html