Trong bài viết này chúng tôi dùng Mswlogo để vẽ bông hoa 6 cánh như hình dưới đây:

Hình mẫu bông hoa 6 cánh 5 lớp

Kết quả là như thế này :D, nhìn nó không giống với phiên bản gốc cho lắm nhưng ở trong đó có rất nhiều điều thú vị, các bạn có thể xem lại tại đây

Vẽ bông hoa 6 cánh 5 lớp

Trong bài này tôi viết một chương trình tên là a, (do lười nên trong page toàn đặt là aa zz xx thôi) chương trình này vẽ và tô màu 1 cụm 5 cánh hoa, để cho việc chọn màu vẽ và tô màu được ngắn ngọn chúng tôi sử dụng kiểu tập hợp, bạn có thể thấy khai báo đó ở dòng:

Make “mau {[251 229 127][221 93 181][132 137 203][58 78 131][161 182 125]}

Màu là tập hợp gồm 5 màu tính từ cánh nhỏ ra tới cánh lớn, khi vẽ thì vẽ ở ngoài vào trong, tô màu thì tô từ trong ra ngoài. Để lấy mã màu của hình mẫu tôi sử dụng addon PickColor dành cho Firefox.

Trong chương trình con tôi sử dụng 2 biến temp và HD mục đích là lưu lại vị trí của rùa (temp) và hướng (HD) hiện tại của nó, sau khi vẽ và tô màu xong 5 cánh hoa thì nó thay đổi đi chỗ khác, hướng khác, nên tôi dùng 2 biến đó mục đích là cho nó về vị trí, hướng ban đầu:

Make “temp Pos
Make “HD Heading

…..

SetH :HD
Setpos :temp

Code vẽ bông hoa 6 cánh 5 lớp

To a
    PD
    Make "mau {[251 229 127][221 93 181][132 137 203][58 78 131][161 182 125]}
    SetPC [161 182 125]
    For[i 5 1 -1][Repeat 2[Arc2 80 :i*40 Rt 100] Setpc Item :i :mau]
    Make "temp Pos
    Make "HD Heading PU RT 40 
    For [i 1 5 1][FD 45 SetFC Item :i :mau Fill]
    SetH :HD
    Setpos :temp
End ;CT con
To Hoa
    CS 
    Repeat 6 [a Rt 360/6]End ;Ket thuc chuong trinh chinh

Kết quả nguyên quá trình vẽ là như thế này đây ?

BongHoa.gif

bông hoa 6 cánh 5 lớp

Code vẽ bông hoa do thầy Lộc và cô Thủy hoàn thiện, chân thành cảm ơn 2 thầy cô ?

To BongHoa
    cs
    make "mau1 {3 1 5 6 4 12}
    make "mau2 {6 14 4 13 1 2}
    for [i 6 1 -1][
         setpc item :i :mau1 setfc item :i :mau1 circle 50*:i fill]
    for [i 6 1 -1][
         repeat 6[canhhoa3 50*:i item :i :mau2 rt 60]]
END

To canhhoa3 :r :m
    setpc :m
    setfc :m
    make "bk sqrt :r/6*:r/6 +:r/2*:r/2 ;Tính nửa bán kính
    make "goc arccos (2*:bk*:bk-:r/2*:r/2)/(2*:bk*:bk) ;Tính góc chứa cung
    repeat 2[arc2 :goc :bk*2 rt 180-:goc]
    pu rt 30 fd :r/12
    repeat 6[fill fd :r/6]bk :r+:r/12 lt 30 pd
END

No automatic alt text available.