@ -105,78 +105,78 @@
@@ -105,78 +105,78 @@
# include "AP_GeodesicGrid.h"
AP_GeodesicGrid : : AP_GeodesicGrid ( )
: _neighbor_umbrellas {
{ { 9 , 8 , 7 , 12 , 14 } , 1 , 2 , 0 , 0 , 2 } ,
{ { 1 , 2 , 4 , 5 , 3 } , 0 , 0 , 2 , 2 , 0 } ,
{ { 16 , 15 , 13 , 18 , 17 } , 2 , 2 , 0 , 2 , 1 } ,
}
, _inverses {
{ { - 0.309017f , 0.500000f , 0.190983f } ,
{ 0.000000f , 0.000000f , - 0.618034 f } ,
{ - 0.309017f , - 0.500000f , 0.190983f } } ,
{ { - 0.190983f , 0.309017f , - 0.500000f } ,
{ - 0.500000f , - 0.190983f , 0.309017 f } ,
{ 0.309017f , - 0.500000f , - 0.190983f } } ,
{ { - 0.618034f , 0.000000f , 0.000000f } ,
{ 0.190983f , - 0.309017f , - 0.5 00000f } ,
{ 0.190983f , - 0.309017f , 0.500000f } } ,
{ { - 0.500000f , 0.190983f , - 0.309017f } ,
{ 0.000000f , - 0.618034f , 0.000000 f } ,
{ 0.500000f , 0.190983f , - 0.309017f } } ,
{ { - 0.190983f , - 0.309017f , - 0.500000f } ,
{ - 0.190983f , - 0.309017f , 0.500000f } ,
{ 0.618034f , 0.000000f , 0.000000f } } ,
{ { - 0.309017f , - 0.500000f , - 0.190983f } ,
{ 0.190983f , 0.309017f , - 0.500000f } ,
{ 0.500000f , - 0.190983f , 0.309017f } } ,
{ { 0.309017f , - 0.500000f , 0.190983f } ,
{ 0.000000f , 0.000000f , - 0.618034 f } ,
{ 0.309017f , 0.500000f , 0.190983f } } ,
{ { 0.190983f , - 0.309017f , - 0.500000f } ,
{ 0.500000f , 0.190983f , 0.309017 f } ,
{ - 0.309017f , 0.500000f , - 0.190983f } } ,
{ { 0.500000f , - 0.190983f , - 0.309017f } ,
{ 0.000000f , 0.618034f , 0.000000 f } ,
{ - 0.500000f , - 0.190983f , - 0.309017f } } ,
{ { 0.309017f , 0.500000f , - 0.190983f } ,
{ - 0.500000f , 0.190983f , 0.309017 f } ,
{ - 0.190983f , - 0.309017f , - 0.500000f } } ,
}
, _mid_inverses {
{ { - 0.000000f , 1.000000f , - 0.618034f } ,
{ 0.000000f , - 1.000000f , - 0.618034f } ,
{ - 0.618034f , 0.000000f , 1.000000f } } ,
{ { - 1.000000f , 0.618034f , - 0.000000 f } ,
{ - 0.000000f , - 1.000000f , 0.618034f } ,
{ 0.618034f , - 0.000000f , - 1.000000f } } ,
{ { - 0.618034f , - 0.000000f , - 1.000000 f } ,
{ 1.0000 00f, - 0.618034f , - 0.000000f } ,
{ - 0.618034f , 0.000000f , 1.000000f } } ,
{ { - 1.000000f , - 0.618034f , - 0.000000f } ,
{ 1.000000f , - 0.618034f , 0.000000f } ,
{ - 0.000000f , 1.000000f , - 0.618034f } } ,
{ { - 1.000000f , - 0.618034f , 0.000000f } ,
{ 0.618034f , 0.000000f , 1.000000f } ,
{ 0.618034f , 0.000000f , - 1.000000f } } ,
{ { - 0.618034f , - 0.000000f , - 1.000000f } ,
{ 1.000000f , 0.618034f , - 0.000000f } ,
{ 0.000000f , - 1.000000f , 0.618034f } } ,
{ { 0.000000f , - 1.000000f , - 0.618034 f } ,
{ 0.000000f , 1.000000f , - 0.618034f } ,
{ 0.618034f , - 0.000000f , 1.000000f } } ,
{ { 1.000000f , - 0.618034f , - 0.000000 f } ,
{ 0.000000f , 1.000000f , 0.618034f } ,
{ - 0.618034f , 0.000000f , - 1.000000f } } ,
{ { 1.000000f , 0.618034f , - 0.000000 f } ,
{ - 1.000000f , 0.618034f , 0.000000f } ,
{ 0.000000f , - 1.000000f , - 0.618034f } } ,
{ { - 0.000000f , 1.000000f , 0.618034f } ,
{ - 1.000000f , - 0.618034f , - 0.000000f } ,
{ 0.618034f , 0.000000f , - 1.000000f } } ,
}
{
}
const struct AP_GeodesicGrid : : neighbor_umbrella
AP_GeodesicGrid : : _neighbor_umbrellas [ 3 ] {
{ { 9 , 8 , 7 , 12 , 14 } , 1 , 2 , 0 , 0 , 2 } ,
{ { 1 , 2 , 4 , 5 , 3 } , 0 , 0 , 2 , 2 , 0 } ,
{ { 16 , 15 , 13 , 18 , 17 } , 2 , 2 , 0 , 2 , 1 } ,
} ;
const Matrix3f AP_GeodesicGrid : : _inverses [ 10 ] {
{ { - 0.309017f , 0.500000f , 0.190983 f} ,
{ 0.000000f , 0.000000f , - 0.618034f } ,
{ - 0.309017f , - 0.500000f , 0.190983f } } ,
{ { - 0.190983f , 0.309017f , - 0.500000 f} ,
{ - 0.500000f , - 0.190983f , 0.309017f } ,
{ 0.309017f , - 0.500000f , - 0.190983f } } ,
{ { - 0.618034f , 0.000000f , 0.0 00000f} ,
{ 0.190983f , - 0.309017f , - 0.500000f } ,
{ 0.190983f , - 0.309017f , 0.500000f } } ,
{ { - 0.500000f , 0.190983f , - 0.309017 f} ,
{ 0.000000f , - 0.618034f , 0.000000f } ,
{ 0.500000f , 0.190983f , - 0.309017f } } ,
{ { - 0.190983f , - 0.309017f , - 0.500000f } ,
{ - 0.190983f , - 0.309017f , 0.500000f } ,
{ 0.618034f , 0.000000f , 0.000000f } } ,
{ { - 0.309017f , - 0.500000f , - 0.190983 f } ,
{ 0.190983f , 0.309017f , - 0.500000f } ,
{ 0.500000f , - 0.190983f , 0.309017f } } ,
{ { 0.309017f , - 0.500000f , 0.190983 f} ,
{ 0.000000f , 0.000000f , - 0.618034f } ,
{ 0.309017f , 0.500000f , 0.190983f } } ,
{ { 0.190983f , - 0.309017f , - 0.500000 f} ,
{ 0.500000f , 0.190983f , 0.309017f } ,
{ - 0.309017f , 0.500000f , - 0.190983f } } ,
{ { 0.500000f , - 0.190983f , - 0.309017 f} ,
{ 0.000000f , 0.618034f , 0.000000f } ,
{ - 0.500000f , - 0.190983f , - 0.309017f } } ,
{ { 0.309017f , 0.500000f , - 0.190983 f} ,
{ - 0.500000f , 0.190983f , 0.309017f } ,
{ - 0.190983f , - 0.309017f , - 0.500000f } } ,
} ;
const Matrix3f AP_GeodesicGrid : : _mid_inverses [ 10 ] {
{ { - 0.000000f , 1.000000f , - 0.618034f } ,
{ 0.000000f , - 1.000000f , - 0.618034 f} ,
{ - 0.618034f , 0.000000f , 1.000000f } } ,
{ { - 1.000000f , 0.618034f , - 0.000000f } ,
{ - 0.000000f , - 1.000000f , 0.618034 f } ,
{ 0.618 034 f , - 0.000000f , - 1.000000f } } ,
{ { - 0.618034f , - 0.000000f , - 1.000000f } ,
{ 1.000000f , - 0.618034f , - 0.000000f } ,
{ - 0.618034f , 0.000000f , 1.000000f } } ,
{ { - 1.000000f , - 0.618034f , - 0.000000f } ,
{ 1.000000f , - 0.618034f , 0.000000f } ,
{ - 0.000000f , 1.000000f , - 0.618034f } } ,
{ { - 1.000000f , - 0.618034f , 0.000000f } ,
{ 0.618034f , 0.000000f , 1.000000f } ,
{ 0.618034f , 0.000000f , - 1.000000f } } ,
{ { - 0.618034f , - 0.000000f , - 1.000000f } ,
{ 1.000000f , 0.618034f , - 0.000000 f} ,
{ 0.000000f , - 1.000000f , 0.618034f } } ,
{ { 0.000000f , - 1.000000f , - 0.618034f } ,
{ 0.000000f , 1.000000f , - 0.618034 f} ,
{ 0.618034f , - 0.000000f , 1.000000f } } ,
{ { 1.000000f , - 0.618034f , - 0.000000f } ,
{ 0.000000f , 1.000000f , 0.618034 f} ,
{ - 0.618034f , 0.000000f , - 1.000000f } } ,
{ { 1.000000f , 0.618034f , - 0.000000f } ,
{ - 1.000000f , 0.618034f , 0.000000 f } ,
{ 0.000000f , - 1.000000f , - 0.618034f } } ,
{ { - 0.000000f , 1.000000f , 0.618034f } ,
{ - 1.000000f , - 0.618034f , - 0.000000f } ,
{ 0.618034f , 0.000000f , - 1.000000f } } ,
} ;
int AP_GeodesicGrid : : section ( const Vector3f & v ,
const bool inclusive ) const