Articles of geometría

Dibujar una línea dado el ángulo y un punto en la línea.

En mi imagen tengo un triángulo (que representa una flecha). Esta flecha define la dirección y el área en consideración para una búsqueda adicional en la misma imagen. Por ejemplo, si tengo un triángulo girado a 30 grados del eje X y su punta está ubicada en (250,150) en la imagen. Me gustaría encontrar y […]

Detección de rectángulo (cuadrilátero) por ConvexHull

Quiero detectar el rectángulo de una imagen. cv2.findContours() con cv2.convexHull() para filtrar el polígono irregular. Luego, usaré la longitud del casco para determinar si el contorno es un rectángulo o no. hull = cv2.convexHull(contour,returnPoints = True) if len(hull) ==4: return True Sin embargo, a veces, el convexHull() devolverá una matriz con longitud 5 . Si […]

Calcular la distancia a la costa o la costa de un barco

Para un conjunto de datos de 200M GPS (lon, lat) coordenadas de embarcaciones, quiero calcular una distancia aproximada a la tierra o costa más cercana, como una función llamada distance_to_shore, que devolverá la distancia y el país de esa costa. Estoy usando un archivo de formas de los límites de los países y las líneas […]

Python cómo calcular un perímetro de polígono utilizando un objeto osgeo.ogr.Geometry

En primer lugar, me disculpo por publicar esta pregunta fácil. Necesito calcular una cierta cantidad de atributos gemotrical (área, perímetros, Roundess, eje mayor y menor, etc.). Estoy usando GDAL / OGR para leer un formato de shapefile de mi polígono. Lo que quiero preguntar es: ¿Existe un método para calcular el perímetro usando osgeo.ogr.Geometry? ¿Existe […]

Cortando un círculo en segmentos iguales, Python

Tengo un set de cerca de 10,000 puntos en el cielo. Se trazan utilizando la RA (ascensión recta) y DEC (declinación) en el cielo. Cuando se trazan, toman la forma de un círculo. Lo que me gustaría hacer es cortar el círculo en 8 partes iguales y eliminar cada parte una a la vez y […]

Plano en una nube de puntos 3d

Estoy tratando de encontrar planos en una nube de puntos 3d, usando la fórmula de regresión Z = a X + b Y + C Implementé soluciones de mínimos cuadrados y ransac, pero la ecuación de 3 parámetros limita el ajuste del plano a 2.5D; la fórmula no se puede aplicar en planos paralelos al […]

Casco convexo y ciencia

Estoy tratando de usar scipy (0.10.1) para un truco rápido para visualizar el casco convexo. Puedo obtener el casco convexo usando el siguiente código: vecs = [[-0.094218, 51.478927], [-0.09348, 51.479364], [-0.094218, 51.478927], … [-0.094218, 51.478927], [-0.094321, 51.479918], [-0.094218, 51.478927], [-0.094222, 51.478837], [-0.094241, 51.478388], [-0.094108, 51.478116], [-0.09445, 51.480279], [-0.094256, 51.478028], [-0.094326, 51.500511]] hull = scipy.spatial.Delaunay(vecs).convex_hull la […]

Área creciente de casco convexo.

Quiero usar un casco convexo para dibujar una línea alrededor de una lista de puntos. Sin embargo, me gustaría que el área fuera más grande que el casco convexo mínimo. ¿Cómo logro eso? PS Estoy usando la implementación scipy.spatial de ConvexHull, sin embargo, solo encuentra el área mínima alrededor de la lista de puntos.

¿Cuál es la mejor manera de calcular un centroide 3D (o nD)?

Como parte de un proyecto en el trabajo, tengo que calcular el centroide de un conjunto de puntos en el espacio 3D. En este momento, lo estoy haciendo de una manera que parece simple pero ingenua, tomando el promedio de cada conjunto de puntos, como en: centroid = average(x), average(y), average(z) donde x , y […]

Determinar el casco no convexo de la colección de segmentos de línea

Tengo un problema de geometría computacional que creo que debería tener una solución relativamente simple, pero no puedo resolverlo del todo. Necesito determinar el contorno no convexo de una región definida por varios segmentos de línea. Soy consciente de varios algoritmos de casco no convexo (por ejemplo, formas alfa), pero no necesito un algoritmo completamente […]