GlobalFunctions.cpp
上传用户:ynjin1970
上传日期:2014-10-13
资源大小:6438k
文件大小:2k
源码类别:

中间件编程

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. #include "Triangulate.h"
  3. #include "globalfunctions.h"
  4. /*
  5. 快速排序
  6. */
  7. /*
  8. 快速排序法对于大量数据的排序特别有用。其基本原理是:首先检查数据列表中的数
  9. 据数,如果小于两个,则直接退出程序。如果有超过两个以上的数据,就选择一个分
  10. 割点将数据分成两个部分,小于分割点的数据放在一组,其余的放在另一组,然后分
  11. 别对两组数据排序。 
  12. 通常分割点的数据是随机选取的。这样无论你的数据是否已被排列过,你所分割成的
  13. 两个字列表的大小是差不多的。而只要两个子列表的大小差不多,该算法所需的步骤
  14. 就是N * log(N) 步。对于使用比较法进行排序的算法来讲这是最快的方法。
  15. 注意:C++中提供了一个快速排序函数qsort()
  16. */
  17. /*
  18. void quicksort(int src[],int low,int high)
  19. {
  20. int i,j;
  21. int tmp;
  22. if(low<high)
  23. {
  24. i=low;
  25. j=high;
  26. tmp=src[low]; //选第一个值
  27. while(i<j)
  28. {
  29. while(i<j && src[j]>tmp)
  30. j--;
  31. if(i<j)
  32. src[i++]=src[j];
  33. while(i<j&&src[i]<=tmp)
  34. i++;
  35. if(i<j)
  36. src[j--]=src[i];
  37. }
  38. src[i]=tmp;
  39. quicksort(src,low,i-1);
  40. quicksort(src,i+1,high);
  41. }
  42. }
  43. */
  44. // 供C++快速排序函数qsort调用
  45. int compare( const void *elem1, const void *elem2 )
  46. {
  47. /* Compare all of both */
  48. XYZ e1 = *(XYZ *)elem1;
  49. XYZ e2 = *(XYZ *)elem2;
  50. if ( e1.x < e2.x ) 
  51. return -1;
  52. else if( e1.x == e2.x ) 
  53. return 0;
  54. else
  55. return 1;
  56. }
  57. XYZ::XYZ(double x0, double y0, double z0)
  58. {
  59. x = x0;
  60. y = y0;
  61. z = z0;
  62. }
  63. XYZ::XYZ()
  64. {
  65. }
  66. TRIANGLE::TRIANGLE()
  67. {
  68. p1 = -1;
  69. p2 = -1;
  70. p3 = -1;
  71. t1 = NEIGHBOR_UNKNOWN;
  72. t2 = NEIGHBOR_UNKNOWN;
  73. t3 = NEIGHBOR_UNKNOWN;
  74. }