00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef GEOPRIMITIVESCOMPARE_H_
00011 #define GEOPRIMITIVESCOMPARE_H_
00012
00013 #include "GeoPrimitives/GeoPrimitives.h"
00014
00015 namespace Amg {
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 struct Vector3DComparer
00030 {
00031 bool operator()(Amg::Vector3D const &v1, Amg::Vector3D const &v2)
00032 {
00033 if ( v1.z() > v2.z() ) {
00034 return false;
00035 } else if ( v1.z() < v2.z() ) {
00036 return true;
00037 } else if ( v1.y() > v2.y() ) {
00038 return false;
00039 } else if ( v1.y() < v2.y() ) {
00040 return true;
00041 } else if ( v1.x() > v2.x() ) {
00042 return false;
00043 } else if ( v1.x() < v2.x() ) {
00044 return true;
00045 } else {
00046 return false;
00047 }
00048 }
00049 };
00050
00051
00052 struct VectorVector3DComparer
00053 {
00054 bool operator()(std::vector<Amg::Vector3D> const &vv1, std::vector<Amg::Vector3D> const &vv2)
00055 {
00056 std::vector<Amg::Vector3D>::const_iterator v1;
00057 std::vector<Amg::Vector3D>::const_iterator v2;
00058
00059 for (v1 = vv1.begin(); v1 != vv1.end(); ++v1) {
00060 for (v2 = vv2.begin(); v2 != vv2.end(); ++v2) {
00061 if ( (*v1).z() > (*v2).z() ) {
00062 return false;
00063 } else if ( (*v1).z() < (*v2).z() ) {
00064 return true;
00065 } else if ( (*v1).y() > (*v2).y() ) {
00066 return false;
00067 } else if ( (*v1).y() < (*v2).y() ) {
00068 return true;
00069 } else if ( (*v1).x() > (*v2).x() ) {
00070 return false;
00071 } else if ( (*v1).x() < (*v2).x() ) {
00072 return true;
00073 } else {
00074 return false;
00075 }
00076 }
00077 }
00078 return false;
00079 }
00080 };
00081
00082
00083
00084
00085
00086 }
00087
00088 #endif