123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- #include "StdAfx.h"
- #include "Card.h"
- CCard::CCard(void)
- {
- }
- CCard::~CCard(void)
- {
- }
- void CCard::getCordinate()
- {
- //#include "stdio.h"
- #include "stdlib.h"
- #include <math.h>
- //坐标
- double ax,ay,bx,by,cx,cy,zx,zy;
- //距离
- double la,lb,lc;
- double cx1,cy1,cx2,cy2,cx3,cy3,cx4,cy4;
- int main(void)
- {
- int i = 0,j = 0,n = 0;
- int okflag = 0;
- int err = 0;
- int aberr = 0;
- int acerr = 0;
- int abcerr = 0;
- int len;
- int abrequery = 0;
- int acrequery = 0;
- int requery1 = 0;
- int loopnum = 1;
- int option = 0;
- double cax,cay,cbx,cby,ccx,ccy;
- double cax_abeyance1[6000],cay_abeyance1[6000];
- double cbx_abeyance1[6000],cby_abeyance1[6000];
- double ccx_abeyance1[6000],ccy_abeyance1[6000];
- double cabx_abeyance1[10],caby_abeyance1[10],cabx_abeyance2[10],caby_abeyance2[10];
- double cacx_abeyance1[10],cacy_abeyance1[10],cacx_abeyance2[10],cacy_abeyance2[10];
- //遍历圆周上所有点
- printf("use 'Enter' to divide x y\n");
- printf("input A coordinate:\n");
- scanf("%lf%lf",&ax,&ay);
- if((ax > 1000)||(bx > 1000))
- {
- printf("figure is too big! input A coordinate again:\n");
- scanf("%lf%lf",&ax,&ay);
- }
- printf("input B coordinate:\n");
- scanf("%lf%lf",&bx,&by);
- if((bx > 1000)||(bx > 1000))
- {
- printf("figure is too big! input B coordinate again:\n");
- scanf("%lf,%lf",&bx,&by);
- }
- printf("input C coordinate:\n");
- scanf("%lf%lf",&cx,&cy);
- if((cx > 1000)||(cx > 1000))
- {
- printf("figure is too big! input C coordinate again:\n");
- scanf("%lf%lf",&cx,&cy);
- }
- printf("input distance from A to Z:\n");
- scanf("%lf",&la);
- if(la > 1000)
- {
- printf("figure is too big! inputdistance from A to Z again:\n");
- scanf("%lf",&la);
- }
- printf("input distance from B to Z:\n");
- scanf("%lf",&lb);
- if(lb > 1000)
- {
- printf("figure is too big! inputdistance from B to Z again:\n");
- scanf("%lf",&lb);
- }
- printf("input distance from C to Z:\n");
- scanf("%lf",&lc);
- if(lc > 1000)
- {
- printf("figure is too big! inputdistance from C to Z again:\n");
- scanf("%lf",&lc);
- }
- printf("\n");
- printf("A(%lf,%lf)\n",ax,ay);
- printf("B(%lf,%lf)\n",bx,by);
- printf("C(%lf,%lf)\n",cx,cy);
- printf("AZ = %lf\n",la);
- printf("BZ = %lf\n",lb);
- printf("CZ = %lf\n",lc);
- //INPUT:
- for(zx = ax -la;zx <= ax + la;zx++)
- {
- do
- {
- for(zy = ay -la;zy <= ay + la;zy++)
- {
- cax = zx - ax;
- cax = fabs(cax);
- cax = pow(cax,2);
- cay = zy - ay;
- cay = fabs(cay);
- cay = pow(cay,2);
- if(((cax + cay) > (la*la - err))&&((cax + cay) < (la*la + err)))
- {
- okflag = 1;
- cax_abeyance1[i] = zx;
- cay_abeyance1[i] = zy;
- n++;
- }
- }
- if(!okflag)err++;
- } while (okflag == 0);
- i++;
- err = 0;
- okflag = 0;
- }
- printf("query...\n");
- i = 0;
- for(zx = bx -lb;zx <= bx + lb;zx++)
- {
- do
- {
- for(zy = by -lb;zy <= by + lb;zy++)
- {
- cbx = zx - bx;
- cbx = fabs(cbx);
- cbx = pow(cbx,2);
- cby = zy - by;
- cby = fabs(cby);
- cby = pow(cby,2);
- if(((cbx + cby) > (lb*lb - err))&&((cbx + cby) < (lb*lb + err)))
- {
- okflag = 1;
- cbx_abeyance1[i] = zx;
- cby_abeyance1[i] = zy;
- }
- }
- if(!okflag)err++;
- } while (okflag == 0);
- i++;
- err = 0;
- okflag = 0;
- }
- printf("query...\n");
- getchar();
- i = 0;
- for(zx = cx -lc;zx <= cx + lc;zx++)
- {
- do
- {
- for(zy = cy -lc;zy <= cy + lc;zy++)
- {
- ccx = zx - cx;
- ccx = fabs(ccx);
- ccx = pow(ccx,2);
- ccy = zy - cy;
- ccy = fabs(ccy);
- ccy = pow(ccy,2);
- if(((ccx + ccy) > (lc*lc - err))&&((ccx + ccy) < (lc*lc + err)))
- {
- okflag = 1;
- ccx_abeyance1[i] = zx;
- ccy_abeyance1[i] = zy;
- n++;
- }
- }
- if(!okflag)err++;
- } while (okflag == 0);
- i++;
- err = 0;
- okflag = 0;
- }
- printf("query a b c over!\n");
- printf("press Enter to continue!\n");
- //必须加不然运行出错,但不会停止
- getchar();
- do
- {
- //找ab 交点,因为距离的偏差,所以坐标会有偏差
- aberr =0;
- do
- {
- for(i = 0;i <= 2*la;i++)
- {
- for(j = 0;j <= 2*lb;j++)
- {
- if(cax_abeyance1[i] == cbx_abeyance1[j])
- {
- if((cay_abeyance1[i] > (cby_abeyance1[j] - aberr - abcerr))&&(cay_abeyance1[i] < (cby_abeyance1[j] + aberr + abcerr)))
- {
- cabx_abeyance1[abrequery] = cax_abeyance1[i];
- caby_abeyance1[abrequery] = cay_abeyance1[i];
- printf("cabx_abeyance1[%d]=%f",abrequery,cabx_abeyance1[abrequery]);
- printf("caby_abeyance1[%d]=%f\n\n",abrequery,caby_abeyance1[abrequery]);
- abrequery++;
- }
- }
- }
- }
- if(abrequery < loopnum)aberr++;
- }while(abrequery < loopnum);
- acerr =0;
- //找ac 交点
- do
- {
- for(i = 0;i <= 2*la;i++)
- {
- for(j = 0;j <= 2*lc;j++)
- {
- if(cax_abeyance1[i] == ccx_abeyance1[j])
- {
- if((cay_abeyance1[i] > (ccy_abeyance1[j] - acerr - abcerr))&&(cay_abeyance1[i] < (ccy_abeyance1[j] + acerr + abcerr)))
- {
- cacx_abeyance1[acrequery] = cax_abeyance1[i];
- cacy_abeyance1[acrequery] = cay_abeyance1[i];
- acrequery++;
- }
- }
- }
- }
- if(acrequery < loopnum)acerr++;
- }while(acrequery < loopnum);
- //找交点的交点
- for(i = 0;i < abrequery;i++)
- {
- for(j = 0;j < acrequery;j++)
- {
- if(cabx_abeyance1[i] == cacx_abeyance1[j])
- {
- requery1 = 1;
- printf("final result is (%f,%f)\n",cabx_abeyance1[i],caby_abeyance1[i]);
- }
- }
- }
- if(requery1 == 0)
- {
- loopnum++;
- abcerr++;
- }
- if(loopnum == 10)
- {
- printf("chech input figure is right\n");
- }
- }while(requery1 ==0);
- printf("finish!\n");
- getchar();
- return 0;
- }
- }
- int CCard::addReader( READERINFO* pReader )
- {
- }
|