Card.cpp 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  1. #include "StdAfx.h"
  2. #include "Card.h"
  3. CCard::CCard(void)
  4. {
  5. }
  6. CCard::~CCard(void)
  7. {
  8. }
  9. void CCard::getCordinate()
  10. {
  11. //#include "stdio.h"
  12. #include "stdlib.h"
  13. #include <math.h>
  14. //坐标
  15. double ax,ay,bx,by,cx,cy,zx,zy;
  16. //距离
  17. double la,lb,lc;
  18. double cx1,cy1,cx2,cy2,cx3,cy3,cx4,cy4;
  19. int main(void)
  20. {
  21. int i = 0,j = 0,n = 0;
  22. int okflag = 0;
  23. int err = 0;
  24. int aberr = 0;
  25. int acerr = 0;
  26. int abcerr = 0;
  27. int len;
  28. int abrequery = 0;
  29. int acrequery = 0;
  30. int requery1 = 0;
  31. int loopnum = 1;
  32. int option = 0;
  33. double cax,cay,cbx,cby,ccx,ccy;
  34. double cax_abeyance1[6000],cay_abeyance1[6000];
  35. double cbx_abeyance1[6000],cby_abeyance1[6000];
  36. double ccx_abeyance1[6000],ccy_abeyance1[6000];
  37. double cabx_abeyance1[10],caby_abeyance1[10],cabx_abeyance2[10],caby_abeyance2[10];
  38. double cacx_abeyance1[10],cacy_abeyance1[10],cacx_abeyance2[10],cacy_abeyance2[10];
  39. //遍历圆周上所有点
  40. printf("use 'Enter' to divide x y\n");
  41. printf("input A coordinate:\n");
  42. scanf("%lf%lf",&ax,&ay);
  43. if((ax > 1000)||(bx > 1000))
  44. {
  45. printf("figure is too big! input A coordinate again:\n");
  46. scanf("%lf%lf",&ax,&ay);
  47. }
  48. printf("input B coordinate:\n");
  49. scanf("%lf%lf",&bx,&by);
  50. if((bx > 1000)||(bx > 1000))
  51. {
  52. printf("figure is too big! input B coordinate again:\n");
  53. scanf("%lf,%lf",&bx,&by);
  54. }
  55. printf("input C coordinate:\n");
  56. scanf("%lf%lf",&cx,&cy);
  57. if((cx > 1000)||(cx > 1000))
  58. {
  59. printf("figure is too big! input C coordinate again:\n");
  60. scanf("%lf%lf",&cx,&cy);
  61. }
  62. printf("input distance from A to Z:\n");
  63. scanf("%lf",&la);
  64. if(la > 1000)
  65. {
  66. printf("figure is too big! inputdistance from A to Z again:\n");
  67. scanf("%lf",&la);
  68. }
  69. printf("input distance from B to Z:\n");
  70. scanf("%lf",&lb);
  71. if(lb > 1000)
  72. {
  73. printf("figure is too big! inputdistance from B to Z again:\n");
  74. scanf("%lf",&lb);
  75. }
  76. printf("input distance from C to Z:\n");
  77. scanf("%lf",&lc);
  78. if(lc > 1000)
  79. {
  80. printf("figure is too big! inputdistance from C to Z again:\n");
  81. scanf("%lf",&lc);
  82. }
  83. printf("\n");
  84. printf("A(%lf,%lf)\n",ax,ay);
  85. printf("B(%lf,%lf)\n",bx,by);
  86. printf("C(%lf,%lf)\n",cx,cy);
  87. printf("AZ = %lf\n",la);
  88. printf("BZ = %lf\n",lb);
  89. printf("CZ = %lf\n",lc);
  90. //INPUT:
  91. for(zx = ax -la;zx <= ax + la;zx++)
  92. {
  93. do
  94. {
  95. for(zy = ay -la;zy <= ay + la;zy++)
  96. {
  97. cax = zx - ax;
  98. cax = fabs(cax);
  99. cax = pow(cax,2);
  100. cay = zy - ay;
  101. cay = fabs(cay);
  102. cay = pow(cay,2);
  103. if(((cax + cay) > (la*la - err))&&((cax + cay) < (la*la + err)))
  104. {
  105. okflag = 1;
  106. cax_abeyance1[i] = zx;
  107. cay_abeyance1[i] = zy;
  108. n++;
  109. }
  110. }
  111. if(!okflag)err++;
  112. } while (okflag == 0);
  113. i++;
  114. err = 0;
  115. okflag = 0;
  116. }
  117. printf("query...\n");
  118. i = 0;
  119. for(zx = bx -lb;zx <= bx + lb;zx++)
  120. {
  121. do
  122. {
  123. for(zy = by -lb;zy <= by + lb;zy++)
  124. {
  125. cbx = zx - bx;
  126. cbx = fabs(cbx);
  127. cbx = pow(cbx,2);
  128. cby = zy - by;
  129. cby = fabs(cby);
  130. cby = pow(cby,2);
  131. if(((cbx + cby) > (lb*lb - err))&&((cbx + cby) < (lb*lb + err)))
  132. {
  133. okflag = 1;
  134. cbx_abeyance1[i] = zx;
  135. cby_abeyance1[i] = zy;
  136. }
  137. }
  138. if(!okflag)err++;
  139. } while (okflag == 0);
  140. i++;
  141. err = 0;
  142. okflag = 0;
  143. }
  144. printf("query...\n");
  145. getchar();
  146. i = 0;
  147. for(zx = cx -lc;zx <= cx + lc;zx++)
  148. {
  149. do
  150. {
  151. for(zy = cy -lc;zy <= cy + lc;zy++)
  152. {
  153. ccx = zx - cx;
  154. ccx = fabs(ccx);
  155. ccx = pow(ccx,2);
  156. ccy = zy - cy;
  157. ccy = fabs(ccy);
  158. ccy = pow(ccy,2);
  159. if(((ccx + ccy) > (lc*lc - err))&&((ccx + ccy) < (lc*lc + err)))
  160. {
  161. okflag = 1;
  162. ccx_abeyance1[i] = zx;
  163. ccy_abeyance1[i] = zy;
  164. n++;
  165. }
  166. }
  167. if(!okflag)err++;
  168. } while (okflag == 0);
  169. i++;
  170. err = 0;
  171. okflag = 0;
  172. }
  173. printf("query a b c over!\n");
  174. printf("press Enter to continue!\n");
  175. //必须加不然运行出错,但不会停止
  176. getchar();
  177. do
  178. {
  179. //找ab 交点,因为距离的偏差,所以坐标会有偏差
  180. aberr =0;
  181. do
  182. {
  183. for(i = 0;i <= 2*la;i++)
  184. {
  185. for(j = 0;j <= 2*lb;j++)
  186. {
  187. if(cax_abeyance1[i] == cbx_abeyance1[j])
  188. {
  189. if((cay_abeyance1[i] > (cby_abeyance1[j] - aberr - abcerr))&&(cay_abeyance1[i] < (cby_abeyance1[j] + aberr + abcerr)))
  190. {
  191. cabx_abeyance1[abrequery] = cax_abeyance1[i];
  192. caby_abeyance1[abrequery] = cay_abeyance1[i];
  193. printf("cabx_abeyance1[%d]=%f",abrequery,cabx_abeyance1[abrequery]);
  194. printf("caby_abeyance1[%d]=%f\n\n",abrequery,caby_abeyance1[abrequery]);
  195. abrequery++;
  196. }
  197. }
  198. }
  199. }
  200. if(abrequery < loopnum)aberr++;
  201. }while(abrequery < loopnum);
  202. acerr =0;
  203. //找ac 交点
  204. do
  205. {
  206. for(i = 0;i <= 2*la;i++)
  207. {
  208. for(j = 0;j <= 2*lc;j++)
  209. {
  210. if(cax_abeyance1[i] == ccx_abeyance1[j])
  211. {
  212. if((cay_abeyance1[i] > (ccy_abeyance1[j] - acerr - abcerr))&&(cay_abeyance1[i] < (ccy_abeyance1[j] + acerr + abcerr)))
  213. {
  214. cacx_abeyance1[acrequery] = cax_abeyance1[i];
  215. cacy_abeyance1[acrequery] = cay_abeyance1[i];
  216. acrequery++;
  217. }
  218. }
  219. }
  220. }
  221. if(acrequery < loopnum)acerr++;
  222. }while(acrequery < loopnum);
  223. //找交点的交点
  224. for(i = 0;i < abrequery;i++)
  225. {
  226. for(j = 0;j < acrequery;j++)
  227. {
  228. if(cabx_abeyance1[i] == cacx_abeyance1[j])
  229. {
  230. requery1 = 1;
  231. printf("final result is (%f,%f)\n",cabx_abeyance1[i],caby_abeyance1[i]);
  232. }
  233. }
  234. }
  235. if(requery1 == 0)
  236. {
  237. loopnum++;
  238. abcerr++;
  239. }
  240. if(loopnum == 10)
  241. {
  242. printf("chech input figure is right\n");
  243. }
  244. }while(requery1 ==0);
  245. printf("finish!\n");
  246. getchar();
  247. return 0;
  248. }
  249. }
  250. int CCard::addReader( READERINFO* pReader )
  251. {
  252. }