Ⅰ. JavaMAL 들어가기

JavaMAL을 이용하여 여러 가지 도형을 그릴 수 있다.

예를 들어 다음의 그림을 보자.

이 그림은

① 세 점을 찍고

② 그 세점으로 이루어지는 삼각형의 외심을 찾고

③ 그 외심을 중심으로 하고 세 점을 지나는 원(외접원)을 그리는 과정이다.

JavaMAL을 잘 살펴보면 이러한 과정을 마우스 조작을 통해 간단히 해 낼 수 있다. JavaMAl.DGS 와 JavaMAL을 비교해 보면 다음 [표-1]과 같다. 여기서의 내용을 비교해 보면서 알 수 있듯이 JavaMAL.DGS에서 개선시킬 수 있는 여지는 많이 남아 있다. 다음 시간에는 이 부분에 대해 집중적으로 다루게 될 것이다. 그리고 [표-2]를 통해 JavaMAL에서 쓸 수 있는 간단한 명령을 JavaMAL.DGS 의 체계와 비교하여 보자.

[표-1]

내용	JavaMAL	JavaMAL.DGS
세 점 찍기	세 점을 마우스로 찍어서 입력할 수 있다.(마우스 조작 가능)	점 A{자유점; 10,50} 과 같이 중괄호를 이용해 체계적으로 명령을 내려야 한다.
외심 찾기	중심점 이름,점_1,점_2,점_3 과 같이 간단한 명령을 이용할 수 있다.	점 B{circumcent;점_1,점_2,점_3} 와 같은 형태로 명령을 입력해야 한다.
이름	이름을 지정하지 않으면 자동으로 지정이 된다.	이름이 자동 지정되지 않으므로 명령문 입력시 지정해 주어야 한다.
원 만들기	원의 중심이 되는 점에 마우스를 클릭하고 shift key를 누르면서 원 위의 점까지 드래그해 주면 원이 만들어진다.	원 C{반지름;B,점_1} 과 같은 형태로 입력해야 한다.
명령	명령을 직접 명령입력창에 입력할 수도 있고, □명령□ 이라는 메뉴를 선택하면 마우스로 조작한 내용이 명령문으로 바뀌어 명령 입력창에 보여진다.	중괄호를 이용하여 명령문을 입력해 주어야 하며 이때 영어의 경우, 대문자, 소문자를 구분해야 한다.
에러 발생시	창 위에 에러 발생을 알리고 그 내용을 볼 수 있다.	어떤 부분에서 에러가 발생했는지 찾기 어렵다.

[표-2]

내용	JavaMAL	JavaMAL.DGS
점 P와 점 Q의 중점	중점 이름,P,Q	점 R{중점;P,Q}
선분 PQ를 그 길이만큼 Q 방향으로 연장	연장점 이름,P,Q	점 R{연장점;P,Q}
각 PQR의 이등분점	각의이등분점 이름,P,Q,R	점 S{각의이등분점;P,Q,R}
점 P,Q,R의 중심점	중심점 이름,P,Q,R	점 S{circumcent;P,Q,R}
점 P에서 선분 QR에 내린 수선의발	수선의발 이름,P,Q,R	점 S{수선의발;P,Q,R}
선분 PQ에 수직이고 길이가 RS가 되는, 점 P에서 시작하는 수직선의 끝점	수직점 이름,P,Q,R,S	점 S{수직점:P,Q,R,S}

Ⅱ. JavaMAL.DGS 기본 명령 익히기

JavaMAL.DGS 의 기본 명령어의 구조는 다음과 같은 모양이다.

자바말DGS명령	다각형 ABC {triangle ; A,B,C ; blue ; none ; 0 ; red}
명령어문법구조	클래스 이름 {성질 ; 데이터 ; 이름 정보 ; 점 정보 ; 선 정보 ; 면 정보}

① 클래스 이름

- 작도하는 모양의 기본 범주에 해당하는 것으로 점, 선, 원, 다각형, 부채꼴, 면, 구 등이 있다. 앞의 다섯 가지는 평면기하에 해당하며 나머지는 입체기하에 쓰인다.

② 성질

- 클래스의 범주 안에서, 제시되는 데이터의 성질을 말해준다.

: 고정점, 자유점, 교점, 중점, 원위점, 선위점, 수선의발, 연장점, 작도점 등

선 : 선분, 각의이등분선, 수선 등

원 : 반지름, 교점 등

다각형 : 삼각형, 사각형 등

면 : 3points 등

구 : 반지름 등

위의 정보를 이용해 다음과 같은 완전한 명령문을 만들 수 있다.

▷ 점 A{자유점;100,180}

- 점의 이름 : A 로 지정

- 점의 성질 : 자유롭게 조작할 수 있는 자유점

- 점의 위치 : 100, 180 지점

▷ 점 B{고정점;0,10;0;0}

- 점의 이름 : B 로 지정

- 점의 성질 : 그림의 구조를 변형할 수 없는 고정된 점

- 점의 위치 : 0, 10 지점

- 이름 정보 : 0으로 지정하여 점 이름이 나타나지 않는다.

- 점 정보 : 0으로 지정하여 점이 보이지 않는다.

▷ 점 D{중점;A,B;;blue}

- 점의 이름 : D 로 지정

- 점의 성질 : 점 A와 B의 중점

- 이름 정보 : default로 점 이름이 검은색으로 보인다.

- 점 정보 : blue 로 지정하여 파란 점으로 보인다.

▷ 선 AB{선분;A,B}

- 선의 이름 : AB로 지정

- 선의 성질 : 두 점 A,B를 잇는 선분

▷ 선 AD{각의이등분선;C,A,B;0;0;blue}

- 선의 이름 : AD로 지정

- 선의 성질 : 각 CAB를 이등분하는 각의 이등분선

- 이름 정보 : 0으로 지정하여 점이름이 나타나지 않는다.

- 점 정보 : 0으로 지정하여 점이 보이지 않는다.

- 선 정보 : blue 로 지정하여 파란 점으로 보인다.

▷ 점 D{끝점;AD;0;0}

- 점의 이름 : D로 지정

- 점의 성질 : 점 A를 하나의 끝점이 되도록 만든 선분 AD의 다른 끝점

- 이름 정보 : 0으로 지정하여 점이름이 나타나지 않는다.

- 점 정보 : 0으로 지정하여 점이 보이지 않는다.

▷ 점 C{수선의발;O,B,C;;blue}

- 점의 이름 : C로 지정

- 점의 성질 : 점 O에서 B와 C를 잇는 선분에 내린 수선의 발

- 이름 정보 : default로 지정하여 검은 색으로 보인다.

- 점 정보 : blue로 지정하여 파란색 점으로 보인다.

▷ 점 O{교점;A,D,B,E;;red}

- 점의 이름 : O로 지정

- 점의 성질: 점 A와 점 D를 잇는 선분과 점 B와 점 E를 잇는 선분의 교점

- 이름 정보 : default로 지정하여 검은 색으로 보인다.

- 점 정보 : red 로 지정하여 붉은색 점으로 보인다.

▷ 원 circle{반지름;O,G;0;0;red}

- 원의 이름 : circle로 지정

- 원의 성질 : 점 O 를 중심으로 하고 점 O와 점 G 사이의 거리를 반지름으로 하는 원

- 이름 정보 : 보이지 않는다.

- 점 정보 : 보이지 않는다.

- 선 정보 : 붉은색으로 선에 해당하는 원의 둘레가 보인다.

▷ 다각형 L{사각형;A,H,O,I;0;0;0;random}

- 다각형의 이름 : L 로 지정

- 사각형의 성질 : 점 A, H, O, I를  네 꼭지점으로 하는 사각형

- 이름 정보 : 보이지 않는다.

- 점 정보 : 보이지 않는다.

- 선 정보 : 보이지 않는다.

- 면 정보 : 사각형의 내부가 random한 색으로 보인다.

▷ 선 dd'{연장선;d',D,a,b;0;0;blue}

- 선의 이름 : dd' 로 지정

- 선의 성질 : d' 와 D를 잇는 선분에 D쪽 방향으로, a와 b를 잇는 선분의 길이만큼 연장하는 선분

- 이름 정보 : 보이지 않는다.

- 점 정보: 보이지 않는다.

- 선 정보 : 파란색의 선이 보인다.

▷ 선 FC{수직선;F,C;0;0;blue}

- 선의 이름: FC 로 지정

- 선의 성질 : 점 A와 점 B를 이어서 만들어지는 선분에 수직이 되도록, 그리고 그 길이와 같은 길이를 갖는 선분

- 이름 정보 : 보이지 않는다.

- 점 정보 : 보이지 않는다.

- 선 정보 : 파란색으로 보인다.

▷ 선 l{수선;O,B,H;0;0;red}

- 선의 이름 : l로 지정

- 선의 성질 : 점 B와 점 H를 이은 선분에 수직이 되도록 점 O를 끝점으로 그은 선분

- 이름 정보 : 보이지 않는다.

- 점 정보 : 보이지 않는다.

- 선 정보 : 붉은 색으로 보인다.

▷ 면 yzplane{수직면;origin,x;0;0;0;0}

- 면의 이름 : yzplane으로 지정

- 면의 정보 : 점 origin을 지나고, 점 origin 과 점 x를 이은 선분과 수직인 평면

- 이름 정보 : 보이지 않는다.

- 점 정보 : 보이지 않는다.

- 선 정보 : 보이지 않는다.

- 면 정보 : 보이지 않는다.

▷ 면 xyplane{3points;origin,x,y;0;0;lightGray}

- 면의 이름: xyplane 으로 지정

- 면의 정보 : 세 점, origin, x, y를 지나는 평면

- 이름 정보 : 보이지 않는다.

- 점 정보 : 보이지 않는다.

- 선 정보 : 연한 회색

▷ 구 sphere{반지름;C,A;0;0;black;random}

- 구의 이름 : sphere로 지정

- 구의 정보 : 점 C를 중심으로, 점 C와 점 A를 이은 선분의 길이를 반지름으로 하는 구

- 이름 정보: 보이지 않는다.

- 점 정보 : 보이지 않는다.

- 선 정보 : 구의 표면에 해당하는 선이 검은색으로 표시된다.

- 면 정보 : 구의 내부가 random 하게 보인다.

□ 명령문 사이에 빈 공간이 있으면 에러가 날 수 있다.

□ 명령문에 사용되는 명령어는 원하는 대로 바꿀 수도 있다.

□ JavaMAL에서는 이름을 따로 지정하지 않으면 컴퓨터의 내장 목록에 의해 자동으로 이름이 부여도지만 JavaMAL.DGS 에서는 이름을 지정해 주어야 한다.

Ⅲ. 명령어를 익혀 간단한 DGS 프로그램 연습해 보기

▷ 탈레스 정리 탐구

▷ 현의 길이와 중심에서의 거리 (Euclid's Elements Book Ⅲ. Def 4,5)

Ⅳ.  JavaMAL.DGS를 이용한 기본 도형 작도  -삼각형의 오심-

1. 내심

- 내심의 뜻 : 삼각형의 세 각에 대해 내각의 이등분선의 교점

- 작도 그림 :

- 작도 절차 sketch :

① 삼각형을 그리기 위해 점 세 개를 그린다.

② 점을 이어 삼각형을 만든다.

③ 한 각에 대해 이등분선을 그린다.

④ 또 하나의 각에 대해 이등분선을 그린다.

⑤ 두 선의 교점이 생긴다. (내심)

⑥ 내심을 중심으로 내접원을 그린다.

- 작도 명령 :

- 성질 탐구 :

· 각의 이등분선 두개에서 이미 교점이 생겼다.

그렇다면 나머지 하나의 각이 이등분선 역시 그 점을 통과할까? 이유는?

· 내심을 중심으로 원을 그릴 때 내접원을 반드시 그릴 수 있는가?

반지름은 어떻게 잡아야 하는가? 이유는?

· 내심을 그린 후 삼각형에서 알아낼 수 있는 성질들을 찾아보자.

(내심에서 변에 수선을 내려서 생각해보자.)

2. 외심

- 외심의 뜻 : 삼각형의 세 변에 대해 변의 수직 이등분선의 교점

- 작도 그림 :

- 작도 절차 sketch :

- 작도 명령 :

- 성질 탐구 :

· 변의 수직이등분선 두개에서 이미 교점이 생겼다.

그렇다면 나머지 하나의 변의 수직 이등분선 역시 그 점을 통과할까? 이유는?

· 외심을 중심으로 원을 그릴 때 외접원을 반드시 그릴 수 있는가?

반지름은 어떻게 잡아야 하는가? 이유는?

· 외심을 그린 후 삼각형에서 알아낼 수 있는 성질들을 찾아보자.

(외심과 세 꼭지점을 잇는 선을 그어 생각해보자.)

3. 수심

- 수심의 뜻 : 삼각형의 세 각에서 대변에 내린 수선의 교점

- 작도 그림 :

- 작도 절차 sketch :

- 작도 명령 :

- 성질 탐구 :

· 수선 두개에서 이미 교점이 생겼다.

그렇다면 나머지 하나의 수선 역시 그 점을 통과할까? 이유는?

· 수심을 그린 후 삼각형에서 알아낼 수 있는 성질들을 찾아보자.

(외심과 세 꼭지점을 잇는 선을 그어 생각해보자.)

4. 무게 중심

- 무게 중심의 뜻 : 삼각형의 세 꼭지점에서 대변에 내린 중선

- 작도 그림 :

- 작도 절차 sketch :

- 작도 명령 :

- 성질 탐구 :

· 중선 두개에서 이미 교점이 생겼다.

그렇다면 나머지 하나의 중선 역시 그 점을 통과할까? 이유는?

· 무게중심을 그린 후 삼각형에서 알아낼 수 있는 성질들을 찾아보자.

5. 방심

- 방심의 뜻 : 삼각형의 한 내각의 이등분선과 다른 두 외각의 이등분선의 교점

- 작도 그림 :

- 작도 절차 sketch :

- 작도 명령 :

- 성질 탐구 :

· 두 개의 직선을 그어 이미 교점이 생겼다.

그렇다면 나머지 하나의 선 역시 그 점을 통과할까? 이유는?

· 방심을 중심으로 원을 그릴 때 방접원을 반드시 그릴 수 있는가?

반지름은 어떻게 잡아야 하는가? 이유는?

· 방심을 그린 후 삼각형에서 알아낼 수 있는 성질들을 찾아보자.

(삼각형에서 그릴 수 있는 방심을 모두 찾아보자.)

Ⅴ. JavMAL.DGS를 활용한 입체 도형 탐구

- http://aleph0.clarku.edu/~djoyce/java/elements/elements.html 참고 -

▷ 구 안에 내접하는 정 사면체 만들기

- 작도 그림 :

- 명령문 분석 :

<PARAM NAME="e[1]" VALUE="A0;point;free;30,-1000;0;0">

<PARAM NAME="e[2]" VALUE="A3;point;free;30,1000;0;0">

<PARAM NAME="e[3]" VALUE="A;point;lineSlider;A0,A3,0,40">

<PARAM NAME="e[4]" VALUE="B;point;lineSlider;A0,A3,0,240">

<PARAM NAME="e[5]" VALUE="AB;line;connect;A,B">

<PARAM NAME="e[6]" VALUE="ABmid;point;midpoint;A,B;0;0">

<PARAM NAME="e[7]" VALUE="ABcirc;circle;radius;ABmid,B;0;0;0;0">

<PARAM NAME="e[8]" VALUE="semi;sector;sector;ABmid,B,A;0;0;black;random">

<PARAM NAME="e[9]" VALUE="A1;point;perpendicular;A,B;0;0">

<PARAM NAME="e[10]" VALUE="A2;point;extend;A,A1,A,A1;0;0">

<PARAM NAME="e[11]" VALUE="B1;point;perpendicular;B,A;0;0">

<PARAM NAME="e[12]" VALUE="C;point;intersection;A,B,A2,B1">

<PARAM NAME="e[13]" VALUE="D';point;perpendicular;C,A;0;0">

<PARAM NAME="e[14]" VALUE="Dch;line;chord;C,D',ABcirc;0;0;0">

<PARAM NAME="e[15]" VALUE="D;point;last;Dch">

<PARAM NAME="e[16]" VALUE="CD;line;connect;C,D">

<PARAM NAME="e[17]" VALUE="BD;line;connect;B,D;0;0;red">

<PARAM NAME="e[18]" VALUE="AD;line;connect;A,D;0;0;blue">

<PARAM NAME="e[19]" VALUE="P;point;free;280,140;0">

<PARAM NAME="e[20]" VALUE="Psphere;sphere;radius;P,A,ABmid;0;0;lightGray">

<PARAM NAME="e[21]" VALUE="E;point;sphereSlider;Psphere,240,100,-40">

<PARAM NAME="e[22]" VALUE="M;point;extend;E,P,P,E">

<PARAM NAME="e[23]" VALUE="Esphere;sphere;radius;E,D,B;0;0;0;0">

<PARAM NAME="e[24]" VALUE="Fcircle;circle;intersection;Esphere,Psphere;0;0;0;0">

<PARAM NAME="e[25]" VALUE="F;point;circleSlider;Fcircle,330,200,30">

<PARAM NAME="e[26]" VALUE="N;point;extend;F,P,P,E">

<PARAM NAME="e[27]" VALUE="ENplane;plane;perpendicular;E,F;0;0;0;0">

<PARAM NAME="e[28]" VALUE="Q;point;midpoint;E,N;0;0">

<PARAM NAME="e[29]" VALUE="H;point;perpendicular;Q,E,ENplane">

<PARAM NAME="e[30]" VALUE="K;point;parallelogram;E,H,N">

<PARAM NAME="e[31]" VALUE="L;point;extend;H,P,P,E">

<PARAM NAME="e[32]" VALUE="G;point;extend;K,P,P,E">

<PARAM NAME="e[33]" VALUE="cube;polyhedron;parallelepiped;E,F,H,K;0;0;red;0">

<PARAM NAME="e[34]" VALUE="tet;polyhedron;tetrahedron;E,N,L,G;0;0;blue;random">

- 작도 과정 sketch 및 명령문 변환