Teach

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ Teach ] in KIDS
글 쓴 이(By): choiyg (나~랑께롱!)
날 짜 (Date): 1996년04월19일(금) 18시23분16초 KST
제 목(Title): [Re] Digitizing Program !



다음의 베이직 프로그램은 저희 실험실에서 제작, 사용하고 있는 디지타이저용
프로그램입니다. 처음에는 다른 디지타이저용이었는데 제가 SummaSketch III에서
사용할 수 있게 수정한 겁니다. 45번 라인에 있는 UIOF.COM은 SummaSketch III를
사실 때 같이 오는 디스켓에 있는 화일입니다. 원래 SummaSketch III는 디폴트가
MM format이라서 이것을 UIOF format으로 바꿔주기 위한 프로그램이지요.
처음에는 이 베이직 프로그램만으로 수행될 수 있게 MM format에서 할려고 했었는데
open할 때 문제가 있어서 할 수 없이 UIOF format으로 할 수 밖에 없었습니다.
따라서 UIOF.COM과 이 프로그램을 적당한 디렉토리에 놓고 (지금 현재 이 프로그램은
C:\DIGITIZE\ 에 있는걸로 가정하고 있읍니다. 45번라인 참조) 실행하시면 됩니다.
pointing tool은 버튼 4개짜리로서 실행 중에 나타나는 Y, W, B, G는 각각 해당되는
색깔의 첫글자입니다. 사용법은 간단하므로 경험으로 터득해도 충분할 것입니다.
아울러 그 쪽에서 사용하려고 했던 프로그램은 어떤식으로 되어 있는지 궁금하군요.
어디가 문제인지 알려면 프로그램을 봐야하니까 제게 메일로 보내주셨으면합니다.
물론 제가 그 것을 고치겠다고 약속하는 것은 아니고요. 한 번 보고자 하는 겁니다.
간단한거면 고칠수도 있고요. 아무튼 아래프로그램이 도움이 되었으면 합니다.
저희 실험실에서는 별 문제없이 쓰고 있습니다. 그럼 이만....

저의 E-mail address는 cyg@sys712.kaist.ac.kr 입니다. kids ID는 choiyg이고요.

지금부터 아래줄은 베이직 프로그램이며 저는 Quick Basic을 사용했습니다.

=============================================================================

1  REM ==========================================================
2  REM ======= Digitizing Program Using a SummaSketch III =======
3  REM =======         Edited by Yong-Gie Choi            =======
4  REM =======                   Mech. Eng., KAIST        =======
5  REM ==========================================================
6  SHELL "CLS"
10 PRINT "PROGRAM DGTZ TO GET DITIZE DATA POINT USING SummaSketch III" 
20 REM BUTTON CODE (YELLOW="01", WHITE="02", BLUE="03", GREEN="04") 
30 Y$ = "01": W$ = "02": B$ = "03": G$ = "04" 
40 DIM X(1000), Y(1000)
44 INPUT "PORT NO. TO WHICH SummaSketch III IS CONNECTED (1/2) "; COM$
46 IF COM$ <> "1" AND COM$ <> "2" GOTO 44
45 SHELL "C:\DIGITIZE\UIOF.COM /" + COM$
50 OPEN "COM" + COM$ + ":9600,E,7,2" FOR RANDOM AS #1
51 PRINT #1, CHR$(27) + "M1" + CHR$(27) + "M5"
52 PRINT #1, CHR$(27) + "MA" + CHR$(27) + "MC"
60 COUNT = 0
70 CLS
80 PRINT 90 PRINT "***** DEFINE PICTURE COORD AND SCALE FACTORS *****"
100 INPUT "GIVE (X,Y) COORD OF ORIGIN "; RX0, RY0: PRINT RX0; RY0
110 INPUT "GIVE X-COORD OF X_AXIS END POINT "; RX1: PRINT RX1
120 INPUT "GIVE Y-COORD OF Y_AXIS END POINT "; RY1: PRINT RY1
130 PRINT ""
140 INPUT "ENTER OUTPUT FILE NAME >", F$
150 COUNT = COUNT + 1
160 OPEN F$ FOR OUTPUT AS #2
170 REM-------------GET SCALE FACTOR---------------------
180 IF COUNT = 1 GOTO 220
190 PRINT ""
200 INPUT " REPEAT SCALE FACTOR(ORIGIN, X-END, OR Y-END) (Y/n) ? "; SCALE$
210 IF SCALE$ = "N" OR SCALE$ = "n" GOTO 420
220 PRINT "GET SYSTEM COORD (COORD TILT ANGLE BE LESS THAN +/-90 DEGREE)"
230 PRINT "DIGITIZE THE ORIGIN OF THE COORDINATE ( W=DIGITIZE )"
240 LINE INPUT #1, A$: T$ = MID$(A$, 18, 2): IF T$ <> W$ GOTO 240
250 ORGX = VAL(MID$(A$, 2, 7)): ORGY = VAL(MID$(A$, 10, 7)): PRINT "", ORGX, 
ORGY
260 REM-------X-AXIS-----------
270 PRINT "DIGITIZE THE X-END OF THE COORDINATE ( W=DIGITIZE )"
280 LINE INPUT #1, A$: T$ = MID$(A$, 18, 2): IF T$ <> W$ GOTO 280
290 XX = VAL(MID$(A$, 2, 7)): XY = VAL(MID$(A$, 10, 7)): PRINT "", XX, XY
300 REM---------Y-AXIS-------------------------
310 PRINT "DIGITIZE THE Y-END OF THE COORDINATE ( W=DIGITIZE )"
320 LINE INPUT #1, A$: T$ = MID$(A$, 18, 2): IF T$ <> W$ GOTO 320
330 YX = VAL(MID$(A$, 2, 7)): YY = VAL(MID$(A$, 10, 7)): PRINT "", YX, YY
340 REM---------GET SCALES-------------------
350 XDX = XX - ORGX: XDY = XY - ORGY
360 ANG = ATN(XDY / XDX)
370 CA = COS(ANG): SA = SIN(ANG)
380 PRINT "TILTED ANGLE =", ANG * 180 / 3.14159
390 XF = (RX1 - RX0) / SQR(XDX ^ 2 + XDY ^ 2)
400 YDX = YX - ORGX: YDY = YY - ORGY
410 YF = (RY1 - RY0) / SQR(YDX ^ 2 + YDY ^ 2)
420 REM-------------DIGITIZE-----------------
430 PRINT ""
440 INPUT " STARTING POINT NUMBER = "; NS%
450 N% = 0
460 PRINT " DIGITIZE POINTS ( W=DIGITIZE, Y=END, G=REDO )"
470 LINE INPUT #1, A$: T$ = MID$(A$, 18, 2)
480 IF T$ = Y$ GOTO 560 ELSE IF T$ <> W$ AND T$ <> G$ GOTO 470
490 IF T$ = G$ THEN PRINT "RE-DIGITIZE "; N% + NS% - 1: N% = N% - 1: GOTO 470
500 PRINT "";
510 N% = N% + 1: XN = VAL(MID$(A$, 2, 7)): YN = VAL(MID$(A$, 10, 7))
520 X(N%) = (CA * (XN - ORGX) + SA * (YN - ORGY)) * XF + RX0
530 Y(N%) = (-SA * (XN - ORGX) + CA * (YN - ORGY)) * YF + RY0
540 PRINT N% + NS% - 1; X(N%); Y(N%); " ( W=DIGITIZE, Y=END, G=REDO )"
550 GOTO 470
560 PRINT #2, N%, "3"
570 FOR K% = 1 TO N%: PRINT #2, K% + NS% - 1, X(K%), Y(K%): NEXT K%
580 PRINT N%; " POINTS ARE SAVED ON FILE "; F$
590 CLOSE #2
600 PRINT ""
610 INPUT " CONTINUE (y/N) ? = "; CON$
620 IF CON$ = "Y" OR CON$ = "y" GOTO 140
630 STOP
640 END

 
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.