a. Cấu trúc: cut_polygon dg, x1,y1, x2,y2
b. Chức năng: Mô phỏng việc cắt đa giác bằng dao cắt giấy.Kết quả hoàn toàn giống lệnh clip. c. Ví dụ 2: Cắt ghép tam giác để chứng minh tổng ba góc trong tam giác bằng 1800.
function main
polygon Tamgiac, 8,6,0x7F7FFF,-1,-3,3,1,-3,1 appear Point, 7,3, "A", above
appear Point, 11,7, "B" appear Point, 5,7, "C"
cut_polygon px1, py1, px2, py2
Move_polygon Tamgiac2,-180,-3,1,7,3 input_line &px1, &py1, &px2, &py2 clip px1, py1, px2, py2
Move_polygon Tamgiac12, 180,3,1,7,3 end
Cắt Tamgiac bằng cut_polygon Di chuyển Tamgiac2 sao cho C về A và quay -1800.
Cắt Tamgiac1 bằng clip
Di chuyển Tamgiac12 sao cho B về A và quay 1800.
Xem Chương trình con - cut_polygon
Trong Violet cũng có một chương trình demo có cùng chức năng cắt, ghép tam giác. Tuy nhiên nếu xem mã bạn sẽ thấy sự khác nhau cơ bản là lệnh move được thay bằng move_polypon. Với move, việc tính vị trí mới cho đa giác là rất khó khăn. Với move_polypon cần nhiều hơn một tham số nhưng không phải tính toán gì cho vị trí chuyển đến.
6. Bài toán tổng hợp:
Chức năng: Dựng phân giác của một góc bất kỳ. function main
set_paper Paper
appear Text, 2,0, " Kích chuột để định góc" input_point &xa, &ya
appear Point, xa, ya, A input_point &xb, &yb appear Point, xb, yb, B input_point &xc, &yc appear Point, xc, yc, C disappear Text
get_angle &angle, xb,yb, xa, ya get_point &x, &y, xb,yb, angle, 8 get_point &x1, &y1, xb,yb, angle, 4 line xb, yb, x, y
get_angle &angle, xb,yb, xc, yc get_point &x, &y, xb,yb, angle, 8 get_point &x2, &y2, xb,yb, angle, 4 line xb, yb, x, y
set_paper Draft
create_arc xb, yb, 4, 0, 360 appear Point, x1, y1, E appear Point, x2, y2, F
r = sqrt((x2-x1)^2 + (y2-y1)^2)/2 + 0.1 create_arc x1, y1, r, 0, 360
create_arc x2,y2, r, 0, 360
Hãy đọc, hiểu để giải thích mã lệnh cho bài tập cuối cùng này.
Khác với bản demo là có thể dựng phân giác của một góc bất kỳ nhưng vẫn còn một số bất ổn ( Vẽ cạnh có độ dài cố định, vẽ cả đường tròn thay vì chỉ vẽ cung tròn...). Hãy điều chỉnh cho tối ưu.
get_intersection3 &x3, &y3, &x4, &y4, x1,y1, r, x2, y2, r
appear Point, x3, y3, G appear Point, x4, y4, H
get_angle &angle, xb, yb, x3, y3 get_point &x,&y, xb, yb, angle, 8 set_paper Paper
drag_along Ruler, Pencil, xb,yb, x, y,4 erase Draft parallel disappear PointG disappear PointH disappear PointE disappear PointF sequence end
Để học lập trình nói chung, học VS nói riêng, cách học hiệu quả nhất là bắt tay ngay vào thực hành. Qua thực hành lập trình giải các bài toán trong thực tế bạn sẽ gặp các tình huống,
Hi vọng tập tài liệu cùng với ... ít nhiều giúp bạn trong việc tìm hiểu VS. Chúc bạn thành công trong việc đưa VS vào các tiết dạy của bạn.