[Jderobot] Modificaciones en Geometry

Eduardo Perdices eperdices en gsyc.es
Lun Ago 5 12:51:23 CEST 2013


Por mi OK.

saludos.

El 05/08/13 12:10, Roberto Calvo escribió:
> El lun, 05-08-2013 a las 12:02 +0200, Eduardo Perdices escribió:
>> Hola,
>>
>> el Point2D y el Point3D permite abstraer todo lo de los puntos en
>> homogeneas, de forma que si no usas la H suponga que la H es 1.0.
>> También permite tener funciones del tipo point.distanceTo(point). Si no
>> tienes una clase vas a tener que hacer otra clase sólo para las
>> funciones con los puntos. Yo lo dejaría como está.
> Me parece genial. Pero entonces, ¿como ves si modifico Progeo para que
> use Point2D y Point3D en las funciones project y backproject?
>
>> Saludos.
>>
>> El 05/08/13 08:28, Roberto Calvo escribió:
>>> El vie, 02-08-2013 a las 16:07 +0200, Eduardo Perdices escribió:
>>>> Hola,
>>>>
>>>> ya está corregido, había un par de bugs en Progeo. Si hacéis update
>>>> cuidado con el CMakeLists que ha cambiado bastante.
>>> Genial! Lo he probado con lo que estoy haciendo y funciona todo
>>> perfecto!
>>>
>>> He cambiado el CMakeList porque la librería que generaba era
>>> libgeometry-shared, lo he dejado para que se cree como antes
>>> libgeometry.so
>>>
>>> La librería de progeo la he cambiado de nombre y borrado las anteriores
>>> versiones que teníamos en geometry, había ya muchos ficheros. Ahora
>>> queda así:
>>>
>>> progeo/
>>> |-- Progeo.cpp
>>> `-- Progeo.h
>>>
>>> Así, mientras convive con la anterior versión de progeo, no tenemos
>>> problemas de compatibilidades con lo snombres.
>>>
>>> Otra cosa Edu, ¿Tiene sentido utilizar Point3D y Point2D en vez de los
>>> vectores de Eigen a pelo?. Te lo digo, porque si finalmente queremos
>>> encapsular los vectores de Eigen con Point3D y Point2D, cambiaré progeo
>>> para que acepte justamente eso y así queda todo más compatible.
>>>
>>> ¿Cómo lo ves?
>>>
>>>
>>>> Saludos.
>>>>
>>>> El 02/08/13 14:13, Roberto Calvo escribió:
>>>>> Edu,
>>>>>
>>>>> He cambiado mi código para que tire con el nuevo progeo usando Eigen y
>>>>> falla (justo al hacer el project, o el backproject)
>>>>>
>>>>> rgbdCalibrator: /usr/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:394: typename Eigen::internal::traits<T>::Scalar& Eigen::DenseCoeffsBase<Derived, 1>::operator()(typename Eigen::internal::traits<T>::Index) [with Derived = Eigen::Matrix<double, 3, 1, 0, 3, 1>]: La declaración `index >= 0 && index < size()' no se cumple.
>>>>> Abortado
>>>>>
>>>>> Para que lo puedas probar te dejo en [1] el código que inicializa
>>>>> matrices y demás.
>>>>>
>>>>> Echale un ojo y me cuentas
>>>>>
>>>>> [1] http://pastebin.com/gqd1w4s5
>>>>>
>>>>>
>>>>> El vie, 02-08-2013 a las 12:50 +0200, Eduardo Perdices escribió:
>>>>>> Hola,
>>>>>>
>>>>>> estoy quitando ya las clases redundantes, he cambiado progeo para que
>>>>>> tire directamente de Eigen, pero todo lo de Collada sigue usando
>>>>>> Matrix3x3, Matrix4x4, etc, hasta que eso no esté cambiado no se pueden
>>>>>> eliminar esas clases.
>>>>>>
>>>>>> Como no tengo manera de probar el Collada de momento prefiero no
>>>>>> tocarlo, así que Alex cuando puedas cámbialo.
>>>>>>
>>>>>> Saludos.
>>>>>>
>>>>>> El 02/08/13 11:00, Roberto Calvo escribió:
>>>>>>> Me parece bien, porque la abstracción que tenemos con vector* o matriz*
>>>>>>> no es total. Si mañana cambiamos eigen por otra librería nos toca
>>>>>>> modificar código.
>>>>>>>
>>>>>>> Lo único es que habría que cambiar todo progeo.
>>>>>>>
>>>>>>> A ver que comenta Alex.
>>>>>>>
>>>>>>> El vie, 02-08-2013 a las 00:15 +0200, Eduardo Perdices escribió:
>>>>>>>> Hola,
>>>>>>>>
>>>>>>>> ¿hay alguna razón para que exista tanta cantidad de clases?, tenemos
>>>>>>>> vector2d, vector2h, vector3d, vector3h, matriz3x3, matrix3x4, etc.
>>>>>>>> Todas esas clases en realidad no aportan nada, ya que simplemente le
>>>>>>>> dan otro nombre a algo que ya existe en Eigen, y el propia Eigen te da
>>>>>>>> para ellos todo lo que quieras:
>>>>>>>>
>>>>>>>> http://eigen.tuxfamily.org/1/classEigen_1_1Vector.html
>>>>>>>> http://eigen.tuxfamily.org/1/classEigen_1_1Matrix.html
>>>>>>>>
>>>>>>>> operaciones, normalizado, y un montón de historias más.
>>>>>>>>
>>>>>>>> Luego, si lo que se quiere es una librería para geometría, con tener
>>>>>>>> clases de este tipo valdría: Plane, Line2D, Line3D, Segment2D,
>>>>>>>> Segment3D, Point2D, Point3D, y que todas ellas tiren directamente de
>>>>>>>> Eigen o de las clases inferiores, es decir, los constructores del
>>>>>>>> Line2D podrían ser:
>>>>>>>>
>>>>>>>> Line2D(double p1x, double p1y, double p2x, double p2y);
>>>>>>>> Line2D(Eigen::Vector2d p1, Eigen::Vector2d p2);
>>>>>>>> Line2D(Point2D p1, Point2D p2);
>>>>>>>> Line2D(double vx, double vy, double vz);
>>>>>>>> Line2D(Eigen::Vector3d v);
>>>>>>>>
>>>>>>>> Y el Point2D sería:
>>>>>>>>
>>>>>>>> Point2D(double x, double y, double h=1.0);
>>>>>>>> Point2D(Eigen::Vector2d p, double h=1.0);
>>>>>>>> Point2D(Eigen::Vector3d p);
>>>>>>>>
>>>>>>>> Con eso das la opción para que acepte cualquier cosa, con H o sin H.
>>>>>>>> Por cierto, a la hora de utilizar Eigen utilizad siempre que podáis
>>>>>>>> double, ya que hay problemas con los float entre la versión 32b y 64b
>>>>>>>> (ahora mismo está todo el float).
>>>>>>>>
>>>>>>>> Saludos.
>>>>>>>>
>>>>>>>> El 01/08/13 14:08, Roberto Calvo escribió:
>>>>>>>>
>>>>>>>>



More information about the Jde-developers mailing list