edge.cpp
上传用户:chinasdcnc
上传日期:2022-07-02
资源大小:2702k
文件大小:1k
源码类别:

分形几何

开发平台:

Visual C++

  1. //
  2. // Delaunay Triangulation
  3. //
  4. // Homework of CG lesson (Fall 2009) in Tsinghua University.
  5. // All rights reserved.
  6. //
  7. // temp include, delete later if necessary
  8. #include "stdafx.h"
  9. #include "edge.h"
  10. Edge::Edge(void)
  11.     :oData(NULL), eNext(NULL), ePrev(NULL), num(-1)
  12. {
  13. }
  14. Edge* Edge::twin(void)
  15. {
  16.     return (num > 0) ? this - 1 : this + 1;
  17. }
  18. Edge* Edge::next(void)
  19. {
  20.     return eNext;
  21. }
  22. Edge* Edge::prev(void)
  23. {
  24.     return ePrev;
  25. }
  26. Edge* Edge::sym(void)
  27. {
  28.     return (num > 0) ? this - 1 : this + 1;
  29. }
  30. Edge* Edge::oNext(void)
  31. {
  32.     return ePrev->twin();
  33. }
  34. Edge* Edge::oPrev(void)
  35. {
  36.     return twin()->next();
  37. }
  38. Edge* Edge::dNext(void)
  39. {
  40.     return twin()->prev();
  41. }
  42. Edge* Edge::dPrev(void)
  43. {
  44.     return eNext->twin();
  45. }
  46. Edge* Edge::lNext(void)
  47. {
  48.     return eNext;
  49. }
  50. Edge* Edge::lPrev(void)
  51. {
  52.     return ePrev;
  53. }
  54. Edge* Edge::rNext(void)
  55. {
  56.     return twin()->next()->twin();
  57. }
  58. Edge* Edge::rPrev(void)
  59. {
  60.     return twin()->prev()->twin();
  61. }
  62. Point2d* Edge::org(void)
  63. {
  64.     return oData;
  65. }
  66. Point2d* Edge::dest(void)
  67. {
  68.     return twin()->oData;
  69. }
  70. const Point2d& Edge::org2d(void) const
  71. {
  72.     return *oData;
  73. }
  74. const Point2d& Edge::dest2d(void) const
  75. {
  76.     return (num > 0) ? *((this - 1)->oData) : *((this + 1)->oData);
  77. }
  78. void Edge::endPoints(Point2d *org, Point2d *des)
  79. {
  80.     oData = org;
  81.     twin()->oData = des;
  82. }
  83. void* Edge::qEdge(void)
  84. {
  85.     return (void*)(this - num);
  86. }