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

分形几何

开发平台:

Visual C++

  1. // dtriangulationDoc.cpp : CdtriangulationDoc 类的实现
  2. //
  3. #include "stdafx.h"
  4. #include "dtriangulation.h"
  5. #include "dtriangulationDoc.h"
  6. #include <cassert>
  7. #include <stdio.h>
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #endif
  11. // CdtriangulationDoc
  12. IMPLEMENT_DYNCREATE(CdtriangulationDoc, CDocument)
  13. BEGIN_MESSAGE_MAP(CdtriangulationDoc, CDocument)
  14. END_MESSAGE_MAP()
  15. // CdtriangulationDoc 构造/析构
  16. CdtriangulationDoc::CdtriangulationDoc()
  17. {
  18. nPoints = 0;
  19.     points = NULL;
  20. }
  21. CdtriangulationDoc::~CdtriangulationDoc()
  22. {
  23.     if (points != NULL)
  24.         delete[] points;
  25. myDT.destroy();
  26. }
  27. BOOL CdtriangulationDoc::OnNewDocument()
  28. {
  29. if (!CDocument::OnNewDocument())
  30. return FALSE;
  31. // TODO: 在此添加重新初始化代码
  32. // (SDI 文档将重用该文档)
  33. return TRUE;
  34. }
  35. // CdtriangulationDoc 序列化
  36. void CdtriangulationDoc::Serialize(CArchive& ar)
  37. {
  38. if (ar.IsStoring())
  39. {
  40. // TODO: 在此添加存储代码
  41. }
  42. else
  43. {
  44. // TODO: 在此添加加载代码
  45. }
  46. }
  47. Point2d* CdtriangulationDoc::point(int pos) const
  48. {
  49.     assert(pos >= 0 && pos < nPoints);
  50.     return (points + pos);
  51. }
  52. bool CdtriangulationDoc::load(const char* filename)
  53. {
  54.     FILE* fp;
  55.     fp = fopen(filename, "r");
  56.     if (fp == NULL)
  57.         return false;
  58.     myDT.destroy();
  59.     delete[] points;
  60.     fscanf_s(fp, "%d", &nPoints);
  61.     if (nPoints <= 1)
  62.     {
  63.         points = NULL;
  64.         nPoints = 0;
  65.         fclose(fp);
  66.         return false;
  67.     }
  68.     points = new Point2d[nPoints];
  69.     for (int i = 0; i < nPoints; ++i)
  70.     {
  71.         double x;
  72.         double y;
  73.         fscanf_s(fp, "%lf", &x);
  74.         fscanf_s(fp, "%lf", &y);
  75.         points[i].x = x;
  76.         points[i].y = y;
  77.     }
  78.     fclose(fp);
  79.     return true;
  80. }
  81. bool CdtriangulationDoc::save(const char* filename)
  82. {
  83.     FILE* fp;
  84.     fp = fopen(filename, "w");
  85.     if (fp == NULL)
  86.         return false;
  87.     fprintf(fp, "%dn", nPoints);
  88.     for (int i = 0; i < nPoints; ++i)
  89.     {
  90.         fprintf(fp, "%.15f", points[i].x);
  91.         fprintf(fp, " ");
  92.         fprintf(fp, "%.15f", points[i].y);
  93.         fprintf(fp, "n");
  94.     }
  95.     fclose(fp);
  96.     return true;
  97. }
  98. // CdtriangulationDoc 诊断
  99. #ifdef _DEBUG
  100. void CdtriangulationDoc::AssertValid() const
  101. {
  102. CDocument::AssertValid();
  103. }
  104. void CdtriangulationDoc::Dump(CDumpContext& dc) const
  105. {
  106. CDocument::Dump(dc);
  107. }
  108. #endif //_DEBUG
  109. // CdtriangulationDoc 命令