C/C++ Geometria

Imagen de kadux
0 puntos

Hola alguien sabe donde puedo econtrar una pequeña libreria de Geometria ( c/c++) o en el mejor de los casos ejemplos ya que lo que estoy buscando es algo pequeño y liviano, esto es principalmente para trabajar con planos en 3D,

- una funcion por ejemplo seria a travez de una "N" normal y un "P" punto del plano me encuentre otro punto del plano.

-otra funcion podria ser determinar la distancia entre un punto y un plano.

 

Gracias..!

 

 

Imagen de raulrm75
+1
0
-1

En la dirección http://www.wykobi.com/features.html encontrarás las características que, según he interpretado, pides en tu entrada.

 Aunque creo que si tienes los conocimientos suficientes para necistar una libreria de este tipo, igual te resultaba más fácil desarrollar una que haga exactamente lo que tu necesitas.

Con objetos y sobrecarga de operadores en C++ (y algunos apuntes de geometría euclidea en 3 dimensiones) no debería costarte mucho trabajo.

 Como te resulte más comodo, a mi en particular me cuesta menos trabajo hacerlo a mano que aprendiendo una API nueva.

Espero haberte ayudado. 

+1
0
-1
Imagen de kadux
+1
0
-1

gracias por tu respuesta raulrm75, es cierto me resulto mas facil desarrollar un par de de funciones que hagan algunas tareas de geometria. Bueno lo que queria preguntarte es talvez tu conoces algun algoritmo optimizado de "Circulo minimo" o "Minimum enclosing circle" es decir que dado un conjunto de puntos te encuentre el circulo minimo.

 

Gracias

+1
0
-1

Alguna vez intente escribir software libre...

Imagen de Martin2222
+1
0
-1

No se si ya lo resolviste, pero si te conformas con algo menos riguroso podes intentar esto:

Con esto se obtiene una buena aproximación , pero no el mínimo circulo posible

Dado un conjunto de puntos del tipo (X1 Y1, X2 Y2 ..... Xn,Yn)

  1. calculas la distancia entre todos los pares de puntos.

  2. Encuentras el par de puntos de mayor distancia entre si (D)

  3. Calculas el punto medio de ese par de puntos. por ejemplo si los puntos son X1Y1 , X4 Y4                     Xm=(X4-X1)/2 +X1 Ym=(Y4-Y1)/2 +Y1

  4. El circulo centrado en Xm Ym de radio 3/4D incluye a todos los posibles puntos del conjunto

  5. Puedes minimizar el circulo calculando las distancias de todos los puntos con respecto a Xm Ym y tomando la mayor como valor de radio optimizado (Ro

  6. Solo podes afirmar que se obtuvo el mejor circulo cuando Ro= D

saludos

+1
0
-1

 

 

_________________________________________________________

¡Lo que no entra como tornillo, entra como clavo!

_________________________________________________________

Imagen de kadux
+1
0
-1

ok, gracias, mañana comienzo resolver el problema, tomare encuenta tu seudo-code, y te aviso los resultados

Gracias 

 

+1
0
-1

Alguna vez intente escribir software libre...

Imagen de Martin2222
+1
0
-1

Encontré otra forma mas económica de hacerlo

Dado un conjunto de puntos del tipo (X1 Y1, X2 Y2 ..... Xn,Yn)

  1. calculas Xmax, Xmin , Ymax y Ymin

  2. Calculas el punto medio de ese par de puntos.

      Xm=(Xmax-Xmin)/2 +Xmin

      Ym=(Ymax-Ymin )/2 +Ymin

  3. Calculas las distancias entre Xm Ym y todos los puntos y te quedas con la mayor (D)

Ya tienes el circulo centrado en Xm Ym y de radio D

saludos

 

+1
0
-1

 

 

_________________________________________________________

¡Lo que no entra como tornillo, entra como clavo!

_________________________________________________________