Ví dụ: Đoạn mã mô phỏng xuất hiện và biến mất ba điểm A, B, C tại ba tọa độ tương ứng.function main Chức năng: Mô phỏng việc vẽ điểm.. Ruler: Thước thẳng, thước đo Chức năng: Mô phỏng v
Trang 1BÀI 1: CÁC LỆNH XỬ LÝ ĐỐI TƯỢNG TRONG VIOLET SCRIPT
1 Lệnh appear
a Cấu trúc: appear đối tượng, x, y
b Chức năng: Xuất hiện đối tượng tại vị trí x, y
2 Lệnh disappear
a Cấu trúc: disappear đối tượng
b Chức năng: Làm cho đối tượng biến mất
c Ví dụ: Đoạn mã mô phỏng xuất hiện và biến mất ba điểm A, B, C tại ba tọa độ tương ứng.function main
Chức năng: Mô phỏng việc vẽ điểm
Ví dụ: Đoạn mã mô phỏng việc vẽ ba điểm bằng bút chì
Xem: Lệnh cơ bản - Pencil
Trang 2b Ruler: Thước thẳng, thước đo
Chức năng: Mô phỏng việc vẽ, đo một đoạn thẳng
Ví dụ: Đoạn mã mô phỏng việc đặt thước để vẽ, đo cạnh BC
Chức năng: Mô phỏng việc vẽ đoạn thẳng, dượng đường vuông góc
Ví dụ: Mô phỏng việc dùng Ê ke thay cho thước thẳng để vẽ cạnh BC:
Xem: Lệnh cơ bản - TSquare
d Protractor: Thước đo góc
Chức năng: Mô phỏng việc đo một góc
Ví dụ: Mô phỏng việc đặt thước để đo góc ABC
Tâm của thước đo góc ở điểm (9,4)
Xem: Lệnh cơ bản - Protrator
Trang 3e Burin: Dao cắt giấy
Chức năng: Mô phỏng việc cắt giấy trong các thao tác cắt, ghép hình
f Compa:
Chức năng: Mô phỏng việc vẽ cung, đường tròn
4 Lệnh move
a Cấu trúc: Move đối tượng, x, y, góc quay
b Chức năng: Di chuyển đối tượng đến vị trí mới và thực hiện quay đối tượng một góc bằng góc quay:
Ví dụ1: Đoạn mã mô phỏng việc vẽ ba điểm A,B,C bằng bút chì Sau khi vẽ xong điểm này thì di chuyển đến điểm kia
Xem: Lệnh cơ bản - Move Pencil
Ví dụ2: Đoạn mã mô phỏng việc đặt Ê ke để vẽ đường cao AH
Xem: Lệnh cơ bản - Move TSquare
Ê ke đã được quay một góc 180 độ để phù hợp với việc vẽ đường cao AH
Trang 4c Có thể có thêm tham số góc quay để xoay đối tượng ngay khi xuất hiện.
d Tên đối tượng do tên file hình ảnh của đối tượng qui định Vì thế bạn có thể dùng But_chi thay cho Pencil với điều kiện bạn phải đổi tên file Pencil Thành But_chi (file này nằm ở thư mục ) Tên các đối tượng phân biệt cả ở chữ hoa và chữ thường (Sẽ có lỗi nếu dùng pencil thay cho Pencil)
e Hệ trục tọa độ sử dụng VS :
Với (0,0) là điểm góc trên bên trái màn hình
0,12
Trang 5BÀI 2: CÁC LỆNH ĐỒ HỌA
1 Lệnh line
a Cấu trúc: Line x1,y1,x2,y2
b Chức năng: Vẽ đoạn thẳng có tọa độ hai điểm đầu mút là x1,y2 và x2,y2
c Ví dụ: Vẽ tam giác có ba đỉnh là A,B,C
a Cấu trúc: Poly_line x1, y1, x2, y2, x3, y3, x1, y1
b Chức năng: Vẽ đường gấp khúc đi qua các điểm có tọa độ x1, y1, x2, y2, x3, y3, x1, y1
3 Lệnh note_edge
a Cấu trúc: note_edge gt1, "value", x1, y1, x2, y2
b Chức năng: Đánh dấu và hiển thị độ dài một đoạn thẳng có tọa độ hai điểm dầu mút là x1,y1 và x2, y2
Với gt1 = 0: Một gạch
gt1 = 1: Hai gạch chéo
gt1 = 2: Hai gạch song song
gt1 = n: n gạch (song song)
gt1 = -1: Không đánh dấu, chỉ ghi giá trị độ dài đoạn thẳng
Thay “value” bằng “”: Không ghi số đo đoạn thẳng
c Ví dụ: Vẽ tam giác có ba đỉnh là A,B,C có đánh dấu các cạnh
Trang 64 Lệnh note_angle
a Cấu trúc: note_angle gt2,"value", x2,y2,x1,y1,x3,y3
b Chức năng: Đánh dấu và hiển thị độ lớn một góc có tọa độ hai điểm nằm trên cạnh thứ nhất là x2,y2; đỉnh là x1,y1 và điểm trên cạnh thứ hai là x3, y3
Với gt2 = 0: Gạch đơngt2 = 1: Gạch đơn + chéo gt2 = 2: Gạch đôi
gt2 = 3: Gạch đôi + chéo Thay “value” bằng “” : Không ghi số đo góc
gt2 = 4: Gạch ba gt2 = -1: Không kí hiệu, chỉ ghi giá trị số đo góc
c Ví dụ: Vẽ tam giác có ba đỉnh là A,B,C có đánh dấu các góc
a Cấu trúc: attach_pen đối tượng
set_pos đối tượng, x, y
b Chức năng: Gắn bút cho đối tượng Sau lệnh này, khi di chuyển đối tượng thì điểm gắn bút sẽ
để lại vị trí (dấu vết) đã đi qua
c Ví dụ: Mô phỏng việc vẽ cạnh BC của tam giác ABC
Xuất hiện và di chuyển bút chì đến B(9,4)Định trang vẽ
Gắn bút và đinh tọa độ điểm gắn
Di chuyển bút chì đến điểm C (14,4)(Khi bút chì di chuyển để lại vết vẽ là đoạn thẳng BC)
Xem: Lệnh đồ họa - attach_pen
Trang 76 Lệnh deattach_pen
a Cấu trúc: deattach_pen đối tượng
b Chức năng: Gỡ điểm gắn ra khỏi đối tượng (Khi di chuyển sẽ không để lại vết)
7 Lệnh circle
a Cấu trúc: circle x, y, r
b Chức năng: Vẽ đuờng tròn tâm (x,y) bán kính r
8 Lệnh erase
a Cấu trúc: erase đối tượng
b Chức năng: Xóa nội dung của đối tượng
b2: Nếu b > a (b < a nếu c < 0) thì thực hiện các lệnh ngược lại thoát khỏi vòng lặp.
b3: Cộng biến với c và quay lại bước b2
Ví dụ: Đoạn mã mô phỏng việc vẽ đồ thị hàm số y = (x-2)(x-1)x(x+1)(x+2)
Vòng lặp với bước nhảy 0.05 để xác định và tọa
độ và vẽ các điểm thuộc đồ thị hàm số trong đoạn -2.2 đến 2.4
Xem: Lệnh đồ họa - For next
Theo công thức biến đổi tọa độ từ hệ trục này sang hệ trục kia khi đổi gốc tọa độ
X = x - x0 => x = X + x0
Y = y - y0 => y = Y + y0
Trang 810 Kết luận:
a Lệnh set_paper Paper cho phép định màu nét vẽ và nhiều thứ khác Sau mỗi lệnh Set_paper tên trang ta đã tạo nên một trang mới Các trang này “trong suốt” và chồng lên nhau Khi thực hiện lệnh erase tên trang ta thực hiện xóa tất cả các đối tượng trên trang này.
b Chú ý rằng thứ tự ba điểm dùng để xác định góc cần đánh dấu là quan trọng Nếu không chú ý thứ tự, thay vì đánh dấu góc α sẽ đánh dấu góc 360 - α
c Có thể attach_pen các đối tượng Pencil, Compa hoặc bất kỳ đối tượng nào nhưng cần chỉ rõ điểm đặt bút bằng lệnh Set_pos Một điểm cũng có thể trở thành đối tượng để attach_pen sau khi
đã appear nó (xem bài 1)
Trang 9BÀI 3: CÁC LỆNH XỬ LÝ TƯƠNG TÁC (VỚI NGƯỜI DÙNG)
1 Lệnh input_line
a Cấu trúc: input_line &x1, &y1, &x2, &y2
b Chức năng: Cho phép nhập đoạn thẳng bằng cách nhấp (ở điểm đầu) và kéo chuột (đến điểm cuối)
Tọa độ điểm được lưu vào x1, y1, x2, y2 Đây là các tham biến nên phải dùng &x1, &y1, &x2,
&y2 Mỗi lần kéo, thả chuột thì x1, y1, x2, y2 thay dổi
c Ví dụ: Đoạn mã mô phỏng việc vẽ một đoạn thẳng bằng cách kéo chuột từ điểm A đến điểm Bfunction main
appear Text, 12, 1, "Kéo chuột để vẽ
một đoạn thẳng"
input_line &x1, &y1, &x2, &y2
appear Point, x1,y1, A
appear Point, x2,y2, B
line x1, y1, x2, y2
end
Xem: Các lệnh nhâp - input_line
2 Lệnh input_Point
a Cẩu trúc: Input_Point &x1, &y1
b Chức năng: Cho phép nhập một điểm bằng cách nhấp chuột
c Ví dụ: Đoạn mã sau cho phép bạn kích chuột để vẽ một tam giác
function main
appear Text, 12, 1, "Hãy kích chuột để chọn điểm thứ nhất", 4
Input_point &x1, &y1
appear Point, x1, y1, A
appear Text, 12, 1, "Hãy kích chuột để chọn điểm thứ hai", 4
Input_point &x2, &y2
appear Point, x2, y2, B
appear Text, 12, 1, "Hãy kích chuột để chọn điểm thứ ba", 4
Input_point &x3, &y3
appear Point, x3, y3, C
poly_line x1, y1, x2, y2,x3,y3,x1,y1
note_angle 0, "value", x2, y2,x1, y1,x3,y3
note_angle 1, "value", x1, y1,x3,y3, x2, y2
note_angle 2, "value",x3,y3, x2, y2, x1, y1
end
Trang 103 Lệnh input_data
a Cấu trúc: input_data tiêu đề chung, tiêu đề mục 1, tham số 1, tiêu đề mục n tham số n
b Chức năng: Cho phép nhập n mục số liệu vào n biến
c Ví dụ: Đoạn mã mô phỏng việc vẽ đoạn thẳng bằng cách nhập tọa độ hai điểm đầu mút.function main
input_data "Nhập toạ độ hai điểm đầu
mút", "HĐ điểm A",xa, "TĐ điểm A",ya, "HĐ
điểm B",xb,"TĐ điểm B",yb
appear Point, xa,ya, A, above
appear Point, xb,yb, B
creat_line xa,ya,xb,yb
end
4 Lệnh set_drag
a Cấu trúc: set_drag đối tượng, true/false
b Chức năng: Thiết lập đối tượng cho phép kéo thả (có/ không)
c Ví dụ:
Trang 11BÀI 4: CÁC LỆNH PHỤC VỤ TÍNH TOÁN
1 Lệnh get_point
a Cấu trúc: get_point &x2, &y2, x1,y1,α, r
b Chức năng: Cho tọa độ của điểm A(x2,y2) cách (x1,y1) một đoạn r và góc tạo bởi tia nằm ngang là angle
( Chuyển từ hệ tọa độ cực sang tọa độ Đề - các: Tính tọa độ điểm biết R và φ trong hệ tọa độ cực)
c Ví dụ: Mô phỏng việc vẽ tam giác khi biết hai cạnh và góc xen giữa
get_point &x2, &y2, x1,y1,0,BC
get_point &x3, &y3,
x1,y1,goc_ABC,AB
appear Point, x1,y1,B
appear Point, x2,y2,C
appear Point, x3,y3,A
poly_line x1,y1,x2,y2,x3,y3,x1,y1
note_edge 0, "value", x1,y1,x2,y2
note_edge 1, "value", x1,y1,x3,y3
Lấy điểm A dựa vào B, BA, góc ABC
Ví dụ 2: Mô phỏng việc vẽ tam giác khi biết độ dài ba cạnh
A(x2,y2)
(x1,y1)
r α
Trang 12appear Point, x1,y1, B
get_point &x2, &y2, x1, y1, 0, BC
appear Point, x2,y2,C
angleB = arccos((BC^2+AB^2-AC^2)/
(2*BC*AB))
get_point &x3,&y3,x1,y1,angleB,AB
appear Point, x3,y3,A
poly_line x1,y1, x2,y2, x3, y3, x1, y1
a Cấu trúc: get_angle &α, x1, y1, x2, y2
b Chức năng: Cho góc α tạo bởi đoạn thẳng x1, y1, x2, y2 với tia nằm ngang
Xuất hiện và chuyển thước đến B
Xuất hiện và di chuyển đến B
x2,y2
(x1,y1)
α
Trang 13Di chuyển bút chì để lấy BA.
input_line &x1, &y1, &x2, &y2
appear Point, x1,y1, A
appear Point, x2,y2, B
line x1, y1, x2, y2
xm =(x1+x2)/2
ym=(y1+y2)/2
get_angle &angle1, x1,y1,x2,y2
get_point &x, &y, xm,ym, 90+angle1, 2
appear Point, xm, ym, M
appear Point, x, y, H
line x,y,xm,ym
appear Text, 12, 1, "MH là trung trực
của đoạn thẳng AB"
end
Nhận hai điểm đầu mút và vẽ đoạn thẳng AB
Lấy tọa độ trung điểm M của ABLấy góc của AB so với tia nằm ngangLấy điểm thuộc đường vuông góc với AB (So với tia nằm ngang có góc là 90 + angle1)
Vẽ trung trực của AB
3 Lệnh: get_perpendicular
a Cấu trúc: get_perpendicular &x, &y,x1,y1,x2,y2,x3,y3
Trang 14b Chức năng: Tọa độ chân đường vuông góc hạ từ x1,y1 xuống đường thẳng xác định bởi hai điểm x2,y2,x3,y3.
c Ví dụ: Mô phỏng việc vẽ đường cao AH của tam giác ABC
function main
appear Text, 12, 1, "Hãy kích chuột để chọn điểm thứ
nhất", 4
Input_point &x1, &y1
appear Point, x1, y1, A
appear Text, 12, 1, "Hãy kích chuột để chọn điểm thứ
hai", 4
Input_point &x2, &y2
appear Point, x2, y2, B
appear Text, 12, 1, "Hãy kích chuột để chọn điểm thứ
ba", 4
input_point &x3, &y3
appear Point, x3, y3, C
appear Text, 12, 1, "Đây là tam giác cần vẽ", 4
poly_line x1, y1, x2, y2,x3,y3,x1,y1
get_perpendicular &x, &y,x1,y1,x2,y2,x3,y3
line x1,y1,x,y
appear Point, x, y, H
end
Vẽ tam giác ABC
Lấy chân đường vuông góc hạ từ A xuống BC
4 Lệnh get_intersection1:
a Cấu trúc: get_intersection1 &x5,&y5, x1,y1, x3,y3, x2,y2, x4,y4
b Chức năng: Cho tọa độ giao điểm (x5,y5) của hai đường thẳng x1,y1, x3,y3 và x2,y2, x4,y4
Ví dụ : Vẽ phân giác BD của tam giác ABC
function main
appear Text, 12, 1, "Hãy kích chuột để chọn
điểm thứ nhất", 4
Input_point &x1, &y1
appear Point, x1, y1, A
appear Text, 12, 1, "Hãy kích chuột để chọn
điểm thứ hai", 4
Input_point &x2, &y2
appear Point, x2, y2, B
appear Text, 12, 1, "Hãy kích chuột để chọn
điểm thứ ba", 4
Input_point &x3, &y3
Trang 15appear Point, x3, y3, C
appear Text, 12, 1, "Đây là tam giác cần vẽ", 4
poly_line x1, y1, x2, y2,x3,y3,x1,y1
get_angle &angleB1, x1,y1,x2,y2
get_angle &angleB3, x3,y3,x2,y2
angleB=(angleB1 - angleB3)/2 + angleB3
get_point &x4,&y4, x2,y2, angleB,1
get_intersection1 &x, &y, x2,y2,x4,y4,
x3,y3,x1,y1
appear Point, x,y, D
line x2,y2,x,y
note_angle 0, "value", x3,y3,x2,y2,x,y
note_angle 0, "value", x,y,x2,y2,x1,y1
end
Lấy góc tạo với tia nằm ngang của CBLấy góc tạo với tia nằm ngang của ABGóc tạo bởi phân giác và tia nằm ngang
Lấy một điểm nằm trên tia phân giácLấy giao điểm của tia phân giác góc B với CA
b Chức năng: Nếu điều kiện là đúng thì các lệnh được thực hiện Ngược lại bỏ qua lệnh này.
c.Ví dụ: Mô phỏng việc vẽ tam giác ABC khi biết cạnh BC và hai góc kề ABC và ACB Sau khi nhập hai góc nếu tổng hai góc >=180 thì báo lỗi và cho nhập lại số liệu
if goc_ABC + goc_ACB >180 then
appear Text, 4,1, " Hai góc không phù hợp"
goto start
end_if
get_point &x2, &y2, x1, y1, 0, BC
get_point &x3, &y3, x1, y1, goc_ABC, 1
get_point &x4, &y4, x2, y2, 180 - goc_ACB, 1
appear Point, x1,y1, B
appear Point, x2,y2,C
get_intersection1 &x5, &y5,x1, y1, x3, y3,
x2,y2,x4,y4
Nhãn
Lấy B có tọa độ x1, y1Kiểm tra tổng hai góc có > 180 khổng Nếu lớn hơn thì thông báo và nhảy về start để nhập lại
Xác định điểm C dựa vào điểm B và đoạn BC
Lấy một điểm nằm trên BALấy một điểm nằm trên CA
Trang 16appear Point, x5,y5,A,above
poly_line x1,y1, x2,y2, x5, y5, x1, y1
end
Lấy giao điểm hai đường thẳng chứa BA và
CA ( được A)
Vẽ điểm A
Vẽ tam giác ABC
Xem: Các lệnh tính toán - get_intersectoin1
6 Lệnh get_intersection2
a Cấu trúc: get_intersection2 &x1, &y1, &x2, &y2, xa,ya,xb,yb,xo,yo,r
b Chức năng: Cho tọa độ hai giao điểm (lưu ở x1,y1,x2,y2) của đường thẳng (xác định bởi xa,ya,
xb, yb) với đường tròn (xác định bởi tâm xo,yo, bán kính r)
c Ví dụ: Mô phỏng việc di chuyển một tam giác có hai cạnh qua hai điểm cố định A, B để dạy quỹ tích cung chứa góc
function main
set_paper Paper
appear Point, 0,0,M
attach_Pen PointM
appear Text, 5, 0,"Theo em điểm M chạy trên đường nào?"
get_intersection2 &x1,&y1, &x2,&y2 ,5,6,16,6, 8,4, 3
appear Point, x1,y1, A
appear Point, x2,y2, B
get_angle &goc1, 8,4, x2,y2
get_angle &goc2, x1,y1,8,4
for angle from goc1 to goc2+180 step 1
get_point &x, &y, 8,4,angle, 3
appear Point, x,y, M,above
get_angle &angle1, x,y, x1,y1
get_point &xp, &yp, x,y, angle1, 8
appear Point, xp,yp, Q
get_angle &angle2, x,y, x2,y2
get_point &xq, &yq, x,y, angle2, 7
appear Point, xq,yq, H
Cho điểm M chạy trên đường tròn từ
B đến A
Lấy đoạn MQ = 8
Lấy MH = 7Đặt giấy nháp để xóa sau này
Trang 17poly_line x,y,xp,yp,xq,yq,x,y
note_angle 0, "", x1,y1, x,y,x2,y2
delay 1
next
appear Text, 5,0, "Hãy xem dấu vết M để lại"
for angle from goc2+180 to goc1 step -1
get_point &x, &y, 8,4,angle, 3
appear Point, x,y, M,above
set_pos PointM, x, y
get_angle &angle1, x,y, x1,y1
get_point &xp, &yp, x,y, angle1, 8
appear Point, xp,yp, Q
get_angle &angle2, x,y, x2,y2
get_point &xq, &yq, x,y, angle2, 7
appear Point, xq,yq, H
get_angle &goc1, 8,8, x2,y2
get_angle &goc2, x1,y1,8,8
appear Text, 5, 0,"Theo em điểm M chạy trên đường nào?"
for angle from goc1 to goc2-180 step -1
get_point &x, &y, 8,8,angle, 3
appear Point, x,y, M,above
get_angle &angle1, x,y, x1,y1
get_point &xp, &yp, x,y, angle1, 8
appear Point, xp,yp, Q
get_angle &angle2, x,y, x2,y2
get_point &xq, &yq, x,y, angle2, 7
appear Point, xq,yq, H
Cho M chạy ngược lại
Cho M để lại vết
Cho M chạy từ B đến A trên đường tròn đối xứng với (O) qua AB để tìm phần quỹ tích còn lại
Trang 18poly_line x,y,xp,yp,xq,yq,x,y
note_angle 0, "", x2,y2, x,y,x1,y1
delay 1
next
appear Text, 5,0, "Hãy xem dấu vết M để lại"
for angle from goc2-180 to goc1 step 1
get_point &x, &y, 8,8,angle, 3
appear Point, x,y, M,below
set_pos PointM, x, y
get_angle &angle1, x,y, x1,y1
get_point &xp, &yp, x,y, angle1, 8
appear Point, xp,yp, Q
get_angle &angle2, x,y, x2,y2
get_point &xq, &yq, x,y, angle2, 7
appear Point, xq,yq, H
Xem các lệnh tính toán - get_intersection2
BÀI 5: CÁC LỆNH XỬ LÝ ĐA GIÁC
1 Lệnh Polygon
a Cấu trúc: Polygon dg, x0,y0 , xxxxxxxx, x1,y1, x2,y2, x3,y3 xn,yn