• 検索結果がありません。

資料 プログラムソース 1ine. c

/*一 TT−L.m−F一一一 一一一一一 tt一一一.T 一一一T一一rr一一一一一一一一Ui

*/

/* 垂直二等分線の表示

f

./*tT一一一一一一一一一一一一u7一一一m一一一一一一一一一一一一一一一一一tT. 一一一一

*f

void perpendmbisect−disp(double xl,double yl,dou ble x2,double y2)

   double mx,my,hxl,hyl,hx2,hy2,k,b;

   rnx= (x 1+x2) f2;my= (y 1+y2)/21

    if((yl−y2)==O){hxl=mx;hyl=60;hx2=rnx;hy2=320;

goto disp;}

   k=(x2−xl)/(yl−y2);b=my−k*mx;

   hxl=40;hyl=k*40+b;

    if (hyl>320) {hyl=320;hxl=(320−b)/k;}

    if (hyl〈60) {hyl=60;hxl=(60−b)/k;}

   hx2=410;hy2=k*410+b;

    if (hy2>32e) {hy2=320;hx2=(320−b)! k;}

    if (hy2く60)  {hy2=60;hx2=(60−b)!k;}

disp:

   rnouse offO;

   setcolor(BLACK);

   pset(mx,rny,BLACK);

   pset(hxl,hyl,BLACK);

   pset(hx2,hy2,BLACK);

   setlinestyle(SOLID−LINE,O,1);

   setviewport(7,30,435,392,1);

    line(hxl+DX,hyl+DY,hx2+DX,hy2+DY);

   setviewport(O,O,639,399,1)1    save−cp(mx,my)i

   save−cp(hxl,hyl);

   save−cp(hx2,hy2);

   job[job−nurn]=PERPENDuBISECT;

    rireki−touroku(PERPEND−BISECT);

   job−nurn++;

   rnotise onO;

/***********************************************

〆*  角の二等分線      * 1

/***********************************************

void angle−bisectO

   double xl,yl,x2,y2,x3,y3;

    int btn,p;

   message(450,28,630,46,LIGHTRED,8,BLACK,msg[1

4]);

   mouse−window(4,28,438,394);

   rnouseTc ross−csr(200, 150) ;

p1:/*1点目の取得*/

   message(450,52,630,70,LIGHTRED,8,BLACK,rnsg[6])

   get−point(&xl,&yl,&btn,&p);

    if(btn==R)geto exiti    piOi

p2:/*2点目の取得*/

   message(450,52,630,70,LIGHTRED,8,BLACK,msg[7])

   9et_Point(&x2,&y2,&btn,&p);

    if(btn==R){

      ロ       の       Ip_nurn一 .       gotO P1;

       }

piO;

p3:/*3点目の取得*/

   rnessage(450,52,630,70,LIGHTRED,8.BLACK,rnsg[8])

   get−peint(&x3,&y3,&btn,&P);

    if(btn==R){

       ワ       1P_nurn一一,

      goto P2;

      }    pio;

angle−bisect−disp(xl,yl,x2,y2,x3,y3);

exit:

   clear−rnessageO;

   1ine−menuO;

/*一一一 .=TT 一一一一一一一一.TT一一一一一一一一L.一丁 一m一一一一一一.t...

串/

/* 角の二等分線の表示

*/

/ * 一T一一一一一一一u =n一一一一一一一u 7T一一一一一一.一一一u」r−r一一T

*!

void .angle−bisectmdisp(double xl,double yl,doubl e x2,double y2,double x3,double y3)

   double b,c,midx,midy;

   b=distance(xl,yl,x2,y2);

   c=distance(x3,y3,x2,y2);

   rnidx=(c*xl+b*x3)/(b+c);

   rnidy=(c*yl+b*y3)!(b+c);

/*二等分線の表示*/

   rnouse−off O ;

   setlinestyle(SOLIDfiLINE,O,1);

   setcolor(BLACK);

   pset(rnidx,rnidy,BLACK);

   setviewport(7,30,435,392,1)i     line(x2+DX,y2+DY,rnidx+DX,midy+DY);

   setviewport(O,O.639,399,1);

   save−cp(midx,midy);

   job[job−num]=ANGLEBISECT;

   rireki.touroku(ANGLE−BISECT);

   job−nurn++;

   rnouse−on O 1

/*********************************************s一/

/*  平行線      */

/**********************************************/

veid paratleLlineO

   double xl,yl,x2,y2,x3,y31     int btn,p;

   mouse.wt dow(4,28,438,394);

   rnouse=cross−csr(200,150);

p1:/*1点目の取得*/

   tuessage(450,28,630,46,LIGHTRED,8,BLACK,msg[1

9]);

   message(450,52,630,70,LIGHTRED,8,BLACK,msg[2コ)

   get−point(&xl,&yl,&btn,&p);

    if(btn==R)goto exit;

   piO;

p2:/*2点目の取得*/

   message(450,28,630,46,LIGHTRED,8,BLACK,msg[2

0]);

   rnessage(450,52,630,70,LIGHTRED,8,BLACK,msg[6])

一 187 一

資料 プログラムソース 1ine. c

9et_Point(&x2,&y2,&btn,&p);

if(btn==R){

       ロ      の

       lp_num一一,

       gotO P1;

       }

piO;

p3;/*3点目の取得*/

   message(450,52,630,70,LIGHTRED,8,BLACK,msg[7])

   9et_Point(&x3,&y3,&btn,&p);

    if(btn==R){

      コ       Ip_num一 ,       gotO P2;

       }    pio;

parallel−disp(xl,yl,x2,y2,x3,y3);

exit:

   c learTmessage O ;     1 ine−rnenu O ;

f* 一 一一一一一一一一一一 一一一一一 一 T 一 一一 一 一J一

*f

/* 平行線の表示

*/

f*T−J一一一ir一一 一 一一一 一一一 一一J 一一一 TT 一一

*l

void parallel−disp(double xl,double yl,double x2,

double y2,double x3,double y3)

   double lx,ly,rx,ry;

    lx=xl一(x3−x2);ly=yl一(y3−y2);

   rx=xl+(x3−x2);ry=yl+(y3−y2);

disp:

   mouse−off O ;    setcolor(BLACK);

   setlinestyle(SOLID−LINE,O,1);

   setviewport(7,30,435,392,1);

    line(lx+DX,ly+DY,rx+DX,ry+DY);

   setviewport(O,O,639,399,1);

   pset(lx,ly,BLACK)i    pset(rx,ry,BLACK);

   saveucp(lx,ly);

   save cp(rx,ry);

   job[job−nurn]=PARALLEL−LINE;

   rireki.touroku(PARALLEL一.LINE);

   job−nurn++ ;    rnouse.onO ;

一 188 一

資料 プログラムソース sankaku. c

#include  geo.h

#include gconio.h>

#include <math.h>

#include <stdlib,h>

#include <graphics.h>

extern double px[52].py[52];

extern char p−label[100];

extern int job−nurn;

extern int job[50];

extern int ip−num;

extern int p.num[10e];

extern char *point−label[52];

extern char *job−cinrnd[48] ; extern char *msg[34];

extern int cp.num;

extern struct ver hen[100];

extern struct ang kaku[100];

extern int h num;

extern int k num;

!***********************************************

*/

/* 三角形の作図メニュー

*ノ

/***********************************************

*/

void tri−rnenuO

    int n;

   皿essage(450,28,630,46,LIGHTRED,8,BLACK, どん な三角形ですか? );

   message(450,52,630,70,LIGHTRED,8,BLACK, (右 ボタン→前のメニュー) );

   n=menu(TRI.2,26);

   clrscrO;

   switch(n){

      case O:draw−rnenu O; br eak;

      case 1:sankakuOi br

eak;

      case 2:seisankakuO; br

eak;

      case 3:nitouhenOi br

eak;

      case 4:chokkakusankakukeiOi br eakl

      case 5:chokkakunitouhenO; br eak;

       }

/**********************************************f

/* 任意の三角形の作図       */

ノ**********************************************/

void sankakuO

   double x,y;

   double xl,yl,x2,y2,x3,y3;

   double 01dx2,01dy2,01dx3,01dy3;

   char a,b,c;

   piO;

   mouse−off O ;

   message(450.28,630,46,LIGHTRED,8,BLACK,rnsg[2

1]);

   mouse−onO ;

   rnouse−window(4,28,438,394);

   rnouse−cross−csr(200, 150) ;

/*1点目の取得*/

pL正00P:

   message(450,52,630,70,LIGHTRED,8,BLACK,rnsg[6])

   piOl

   setcolor(GREEN);

   mouse.on O ;        do{

      get−mouse−position(&x,&y>;

      xl=x;yl=y;

      position(xl,yl);

      if(mouse−right−buttonO==CLICK) go to exit;

      }whi le(rnouse−left−buttonO !=CLICK) ;        rnouse−offO;

       se twr i ternode (O) ;        pset(xl,yl,BLACK);

       save−cp(xl,yl);

       piO;

/*2点目の取得*/

P2_1{}op:

   01dx2=x1;oldy2=y1;

   message(450,52,630,70,LIGHTRED,8,BLACK,.msg[7])

   a=*point_label[cp_m】m−1];b;*Point_label[cp_n um];

   gotoxy(59,9):cprintf( %c%c= ,a,b);

   do{

       do{

         9et_mouse_Position(&x,&y);

         x2=x;y2≡y;

         Position(x2,y2);

         90toxy(62,9);cprintf( %5.lf ,distance

(x1,y1,x2,y2));

         if(rnouse_right_buttonO==CLICK>{

      rnouse_offO;

             cp_num 一,

      setwritemode(1);

      setcolor(GREEN);

      line(xl,yl,oldx2,01dy2);

      setw「itemode(0):

      pset(x1,y1,WHITE);

      setcolor(WHITE);

      outtextxy(x1,y1,poini〔一labe上[cp_n um]);

      ClrscrO;

      pio二

      set_mouse_Position(xl,y1);

      mouse on();

      goto pl_IOOP;

       }

       }while((x2==oldx2) && (y2;;oldy2> && (mo use_left_buttonO!=CLICK));

       setcolor(GREEN);

       setwritemode(1);

       line(x1,yl,x2,y2);

       1ine(x1,y1,01dx2,01dy2);

       oldx2=x2:01dy2=y2;

   }while(皿ouse_left buttonO!≡CLICK);

       setwriternode(1):

       setcolor(WHITE);

       1ine(x1,y1,x2,y2);

       pset(x2,y2,BLACK);

       save_cp(x2,y2);

       setwritemode(0);

       pio;

〆*3点目の取得*/

p37100p:

   oldx3=x2;oldy3=y2;

   message(450,52,630,70,LIGHTRED,8,BLACK,rnsg[8])

   c=*peint一.label[cp_numユ;

   gotoxy(59,10);cprintf( %c%c= ,b,c);

   gotoxy(59,11);cprintf( %c%c= ,c,a);

   gotoxy(59,13);cprintf( Z%c%c%c= ,a,b,c);

一 189 一

資料 プログラムソース sankaku. c

   gotoxy(59,14);cprintf( ∠%c%c%c= ,b,c,a);

   gotoxy(59,15);cprintf( ∠%c%c%c= ,c,a,b);

   do{

       do{

        get_mouse_Position(&x,&y);

        x3=x二y3=y;

        position(x3,y3);

        gotoxy(62,10);cprintf( %5.lf ,distance

(x2,y2,x3,y3));

        gotoxy(62,11);cprintfC %5.lf ㍉distance

(x3,y3,x1,y1));

        gotoxy(65,13);cprintf( %5.1fり ,angle(x1,

yl,x2,y2,x3,y3));

        gotoxy(65,14);cprintf( %5.1fコ ,an91e(x2,

y2,x3,y3,x1,yl));

        gotoxy(65,15);cprintf( %5.1f  ,angle(x3,

y3,xl,y1,x2,y2));

        if(mouse_right_button()==(=LICK){

      mouse_QffO;

      setwritemode(1);

      setcolor(GREEN);

      line(x1,y1,01dx3,01dy3);

       1ine(x2,y2,01dx3,0且dy3);

      setcolor(WHITE);

      line(x1,y1,x2,y2);

      ロ       cp_num一一,

      setwritemode(0):

      pset(x2,y2,WHITE);

      setcolor(WHITE);

      outtextxy(x2,y2,point_1abel[cp_n um]);

      piO;

      C正rscrO;

      mouse_on O;

      set_皿ouse_position(x2,y2>;

      gotO P2_loOP;

      }

       }while((x3==oldx3) && (y3==oldy3) &&mou se_left_buttonO!;CLICK);

setcolor(GREEN);

setwritemode(1);

line(xl,yl,oldx3,01dy3);

line(x2,y2,01dx3,01dy3);

正ine(x1,y1,x3,y3);

1ine(x2,y2,x3,y3);

oldx3=x3;oldy3=y3;

}while(rnouse−left−buttonO!=CLICK);

rnouse−off O ; setwritemode(O);

setcolor(BLACK);

line(xl,yl,x3,y3);

1ine(x2,y2,x3,y3);

line(xl,yl,x2,y2);

pset(xl,yl,BLACK);

pset(x2,y2,BLACK);

setcolor(RED);

outtextxy(xl,yl,point−label[cp−nurn−2]);

outtextxy(x2,y2,point−label[cp−nurn−1]);

pset(x3,y3,BLACK);

savemcp(x3,y3);

tri−info(cp−num−3,cp−nurn−2,cp−num−1,SANKAKU)

rireki−touroku(SANKAKU);

job[job num]=SANKAKU;

job−num++;

mouse.onO ;

f**********************************************!

/*  正三角形の作図       */

**********************************************f

void seisankakuO

   double xl,yl,x2,y2;

   int btn,pl,p2,p;

   rnessage(450,28,630,46,LIGHTRED,8,BLACK,rnsg[2

2])i

   mouse−window(4,28,438,394);

   rnouseTcross−csr(200, 150) i

p1:1*1点目の取得*1

   message(450,52,630,70,LIGHTRED,8,BLACK,rnsg[6])

   getTpoint(&xl,&yl,&btn,&pl);

   i f(btn==R) geto exit;

   piO;

p2:/*2点目の取得*!

   message(450,52,630,70,LIGHTRED,8,BLACK,msg[7])

   9et_Point(&x2,&y2,&btn,&p2):

   if(btn==R){

       ロ      コ

       1P_num一一,

      goto P1;

       }    pio;

if (pl>p2)  {p p1; pl=p2; p2=p;}

btn=Seisankaku disp(p1,p2);

if(btn==R){

       ロ      コ

       lp_num■一,

       gotO P2;

   }

exit:

   clear−rnessageO;

   tri−menll O ;

./*一一..TF一一一一一 一一一一..一一一一一一m一一一一一一一一一一一u.T一一一一一一*

/* 正三角形の表示      *

./*一m一一一一 一n一一一一一 一一一一一.T 一一一一一一一一一.一一一一一一一一一一*

int seisankaku−disp(int pl,int p2)

   double x,y,xl,yl,x2,y2,x3,y3,01dx,oldy,oldx3,

eldy3,m,t;

    int flag=Li

   xl=px[p1コ: yl=py[p1]; x2=px[p2]: y2=py[p2];

   oldx=x2;oldy=y2;oldx3=x2;oldy3=y2;

    if(xl>x2) {x=xl;y=yl;xl=x2;yl=y2;x2=x;y2;yl}

   message(45e,28,63e,46,LIGHTRED,8,BLACK,msg[2

3])i

   rnessage(450,52,630,70,LIGHTRED,8,BLACK,msg[2])

   setviewport(7,30,435,392,1);

   gotoxy(59,9);cprintf( マウスの位置が );

   gotoxy(59,10);cprintf( 線分のどちら側 );

   gotoxy(59,11);cprintf( にあるかによb );

   gotGxy(59,12);cprin七f( 三角形の位置が );

   gotoxy(59,13>;cprintf( 変わります );

exit:

   piO;

   clear−rnessage O;

   tri−menuO;

do{

rnouse−on O ; do {

   get−mousemposition(&x,&y);

一 190 一

資料 プログラムソース sankaku. c

       if(rnouse.right−buttonO==CLICK){

      flag=R;

      line(xl+DX,yl+DY,x2+DX,y2+DY)

      line(xl+DX,yl+DY,x3+DX,y3+DY)

      Iine(x2+DX,y2+DY,x3+DX,y3+DY)

      setwritemode(O);

      setviewport(O,O,639,399,1);

      setwriternode(O);

      clrscrO;

      goto exit;

      }

       }while(((x−oldx)==O && (y−oldy)==O)

&& mouse left buttonO!=CLICK );

       position(x,y);

       if(xl==x2) {

      if(x〈x1) t=}i_PI/3;

       else t=一l11 PI/3;

      }        else{

      m=(y2−yl)/(x2uxl);

      if (y>(rn*(x−xl)+yl)) t=1{.PI/

3;

      else t=一M PI

!3i       }

       rotation(x1,y1,x2,y2,t,&x3,&y3);

       setwritemode(1);

       setcolor(GREEN);

       line(xl+DX,yl+DY,x3+DX,y3+DY);

       1ine(x2+DX,y2+DY,x3+DX,y3+DY);

       line(xl+DX,yl+DY,oldx3+DX,oldy3+DY)

       line(x2+DX,y2+DY,oldx3+DX,oldy3+DY)

       otdx=x;oldy=y;

       oldx3=x3;oldy3=y3;

   }while(rnouse−leftTbuttonO!=CLICK);

setwritemode(O);

setcolor(BLACK);

line(xl+DX,yl+DY,x3+DX,y3+DY);

line(x2+DX,y2+DY,x3+DX,y3+DY)l lineCxl+DX.yl+DY,x2+DX,y2+DY)I pset(x3.y3,BLACK);

setviewport(O,O,639,399.1);

save−cp(x3,y3);

tri−info(pl,p2,cp nurn−1,SEISANKAKU);

job[job−nurn]=SEISANKAKU;

rirekiLtouroku(SEISANKAKU);

job−num++;

rnouse.onO ;

exit:

   retura (ftag) ;

/**********************************************/

/* 二等辺三角形の作図      */

/**********************************************/

void nitouhenO

   double xl,yl,x2,y2;

    int btn,pl,p2,p;

   message(45e,28,63e,46,LIGHTRED,8,BLACK,msg[2

2]);

   rnouse window(4,28,438,394);

   rnouse−cross.csr(200, 150) ;

p1:/*1点目の取得*/

   rnessage(450,52,630,70,LIGHTRED,8,BLACK,rnsg[6])

   get−point(&xl,&yl,&btn,&pl);

if(btn==R)goto exit;

piO;

p2:/*2点目の取得*/

   message(450,52,630,70,LIGHTRED,8,BLACK,msg[7])

   get_point(&x2,&y2,&btn,&p2);

   if(btn;;R){

       の      し

       工P_num一一,

      gotO pl;

       }    pio;

if (p1>p2)  {p=pl: p1≡p2: p2=p;}

btn=nitouhen_disp(P1,P2):

if(btn=;R){

       の       ワ

       1P_num一一,

       gotO P2;

   }

exit:

   clear rnessageO;

   triLmenuOl

ノ*一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一*

ノ*  二等辺三角形の表示      *

/*一一L.一一一一一一一 一一一一一L.n一一一一一丁一t一一一一一一一一一一一一t 一一一*

.ノ

int nitouhen−disp(int pl,int p2)

   double x,y,xl,yl,x2,y2,x3,y3,01dx,oldy,cx,cy,

k;

    int flag=L;

   char a,b,c;

   xl=px[p1コ; yl=py[p1]; x2=px[p2コ; y2=py[p2];

   cx=(x1+x2)/2: cy;(y1+y2)/2;

   01dx=cx;01dy=cy;

   rnessage(450,28,630,46,LIGHTRED,8,BLACK,msg[2

3]);

   message(450,52,630,70,LIGHTRED,8,BLACK,msg[21)

   setviewport(7,30,435,392,1);

   a=p=label[ip num−2];b=p−label[ip−nurn−1];c=*p oint−label[cp num];

   gotoxy(59,g); cprintf( %c%c=%5.lf ,a,b,dista nce(x1,yl,x2,y2));

   gotoxy(59,10);cprintf( %c%c= ,a,c);

   gotoxy(59,11);cPrintf(:t%c%c= ,b.c)二    gotoxy(59,13);cprintf( Z%c%c%c= ,a,b,c);

   gotoxy(5g,14);cprintf( Z%c%c%c= ,a,c,b)l    getoxy(59,15);cprintf( Z%c%c%c= ,b,a,c);

   setwriternode(1)l    setcolor(GREEN);

   rnouse−on O i

   setLmouse−position(cx,cy);

   do{

       do {

      ge七_mOUSe_POSitiOn(&X,&y);

      if(mouse..right−buttonO==CLICK)

      {        flag=R;

       line(xl+DX,yl+DY,x2+DX,y 2+DY);

       line(xl+DX,yl+DY,x3+DX,y 3+DY)l

       line(x2+DX,y2+DY,x3+DX,y 3+DY);

       setviewport(O,O,639,399,

1) ;

一 191 一

資料 プログラムソース sankaku. c

setwritemode(O);

clrscrOl

goto exit;

      }

       }while((x==01dx) &&

use teft buttonO!一一CLICK);

  一 if(y1−y2){

       x3=cx;

       y3=y;

      }        else{

       k=

       x3=x;

       y3−k       if

(y==oldy) && mo

一 (x2−xl) ! (y2−yl) ;

       *(x−cx)+cy;

      (y3〈=30) {        y3=30;

       x3=(y3−cy)/k+cx;

       }

      tf cy3>=392) {        y3=392;

       x3=(y3−cy)/k+cx;

       }       }

       set−mouseuposition(x3,y3);

       position(x3,y3);

       line(xl+DX,yl+DY,oldx+DX,oldy+DY);

       line(x2+DX,y2+DY,oldx+DX,oldy+DY);

       line(xl+DX,yl+DY,x3+DX,y3+DY);

       line(x2+DX,y2+DY,x3+BX,y3+DY);

       gotoxy(62,10); cprintf( %5.lf , distance

(xl,y1,x3,y3));

       gotoxy(62,11); cprintf( %5.lf , distance

(x2,y2,x3,y3))l

       gotoxy(65,13); cprintf( %5.lf ,angle(xl,

yl,x2,y2,x3.y3));

       gotoxy(65,14); cprintf( %5.1f ,angle(x2,

y2,x3,y3,xl,yl));

       go七〇xy(65,15); cprintf( %5.If ,angle(x3,

y3,xl,yl,x2,y2));

       oldx=(double)(int)x3;oldy=(double)(int)y

3;

       ! *otdx=(do ble)(int)x3;Qldy=(deuble)(tnt)

y3i*/

   }while(rnouse.IeftLbuttonO!=CLICK)i rnouse−offOl

setwr i ternode (O) ;

setcolor(BLACK);

line(xl+DX,yl+DY,x3+DX,y3+DY);

line(x2+DX,y2+DY,x3+DX,y3+DY);

line(xl+DX,yl+DY,x2+DX,y2+DY);

pset(x3,y3,BLACK);

save=cp(x3,y3);

setviewport(O,e,639,399,1);

tri−info(pl,p2,cp−num−1,NITOUHEN);

job[job−nurn]=NITOUHEN;

rirekimtouroku(NITOUHEN)i

job−nurn++;

mouseTonO ; exit:

   return(flag);

/**********************************************!

/*  直角三角形の作図       .*/

/**********************************************/

void chokkakusankakukeiO

   double xl,yl,x2,y2;

    int btn,pl,p2,p;

   rnessage(450,28,630,46,LIGHTRED,8,BLACK,msg[2

2]);

rnouse−window(4,28,438,394);

mouse.cross−csr(200,150);

pl:/*1点目の取得*/

   rnessage(450,52,630,70,LIGHTRED,8,BLACK,rnsg[6])

get−point(&xl,&yl,&btn,&pl);

if(btn==R)goto exit;

piO;

p2:/*2月目の取得*/

   message(450,52,630,70,LIGHTREI〕,8,BLACK,msg[7])

   9et_Point(&x2,&y2,&btn,&p2):

    if(btn==R){

       ロ       コ

       1P_num一一,

      gotO P正:

       }    pio;

if (p1>p2)  {pコp1; p1=p2; p2=p;}

btnニchokkakusan1{akukei disp(P.1,P2);

if(btn;三R){

       コ       の

       1P_num一一,

       clrscrO;

       gotO P2;

   }

exi七l

   clearLmessageO;

   tri一.rnenu.O ;

/*一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一*

/*. 直角三角形の表示  .         *

/*一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一*

int chokkakusankakukei_disp(int p1,int p2)

   double x,y,xl,yl,x2,y2,x3,y3,01dx,oldy,da,db,

      CX,cy,

   char a,b,c;

    int flag=L;

   x1=px[pl]; y1;py[p1]; x2=px[p2]; y2;py[p2];.

   o正dx=x2;oldy;y2;

    if(x1>x2) {       x=x1;y=yl;

      xl;x2:y1=y2;

      x2=x;y2=y;

      a=P_label[iP_num−1];

      b;p_正abel[ip_num−2];

       }        else{

      a;P_label[ip_nu皿一2];

      b=p−label[ip_num−1ユ;

       };

   c=*point_1abe正[cp_num];

   cx=(x1+x2)/2; cy=(yl÷y2)/2;

   message(450,28,630,46,LIGHTRED,8,BLACK,msg[2

3]);

   rnessage(450,52,630,70,LIGHTRED,8,BLACK,rnsg[2])

   setviewport(7,30,435,392,1):

   gotoxy(59,9); cprintf( %c%c=%5、1f ,a,b,dista nce(x1,y1.x2,y2));

   gotoxy(59,10);cprintfC,%c%c=,「Ja,c);

   gotoxy(59,11);cprintf( %c%c= ,b,c):

   90toxy(59,13);cprintf( ∠%c%c%c= ,a,b,c);

   gotoxy(59,14);cprintfC ∠%c%c%c; ,a,c,b);

   gotoxy(59,15);cprintf( ∠%c%c%c; ,b,a,c):