Professional Documents
Culture Documents
trong caùc öùng duïng caàn veõ caùc ñoaïn thaúng lieân tieáp nhau.
p2
Line(p1, p2);
Line(p2, p3);
p1 p3
ª LineTo(p : point): veõ ñoaïn thaúng (ñaõ ñöôïc xeùn) töø CP ñeán p
ª Line( ) caàn toïa ñoä “tuyeät ñoái” cuûa caùc ñieåm bieân.
– baát tieän khi veõ cuøng moät ñoái töôïng taïi nhieàu vò trí khaùc nhau
ª Caùc caùch khaùc ñeå veõ ñoaïn thaúng ñöôïc tieän lôïi khi veõ taïi nhieàu vò trí
khaùc nhau
ª Höôùng hieän thôøi CD (current direction): moâ hình bôûi moät con ruøa.
Bieán CD laø goùc ño (ñôn vò laø ñoä) töø truïc x ngöôïc chieàu kim ñoàng hoà.
Bieán CD laø toaøn cuïc.
CD
x
– LineForward(dist : real): veõ ñoaïn thaúng töø vò trí hieän thôøi CP
theo höôùng hieän thôøi CD moät khoaûng caùch dist, sau ñoù caäp nhaät
CP thaønh vò trí môùi.
– MoveForward(dist : real): khoâng veõ gì caû, chæ caäp nhaät CP gioáng
nhö trong LineForward( )
– Right(angle : real): neáu angle > 0 thì quay con ruøa moät goùc angle
theo chieàu kim ñoàng hoà, neáu angle < 0 thì quay con ruøa ngöôïc
chieàu kim ñoàng hoà moät goùc |angle|. Khoâng veõ, chæ coäng theâm
angle vaøo CD.
21.9.2003 Chöông 4: Böôùc ñaàu xaây döïng hình 6
aûnh
Ví duï öùng duïng ñoà hoïa con ruøa
ª Duøng kyõ thuaät ñoà hoïa con ruøa ñeå veõ hình phöùc taïp
for i := 1 to 6 do
begin
Turtle_House;
Right(60.0)
end;
ª Hình xoaén oác (Polyspiral) laø hình coù daïng xoaén oác:
type
sequence = record
num : 0..maxnum;
values : array[1..maxnum] of real
end;
ª Phöông phaùp bieåu dieãn: chuoãi ñieåm (1, y1), (2, y2),...,(n, yn) trong maët
phaúng x-y
begin
if data.num > 1 then {ít nhaát 2 ñieåm} begin
Extremes(data, ymin, ymax); {tìm caùc cöïc trò cuûa caùc trò cuûa y}
SetRect(1 - bord, ymax + bord, data.num + bord, ymin - bord, W);
.
. {ngöôøi duøng choïn vuøng nhìn V}
.
MapRects(W, V, sx, tx, sy, ty)); {caøi aùnh xaïtöø cöûa soå ñeán vuøng nhìn}
with data do begin {veõ polyline}
MoveTo_(1.0, values[1]);
for i := 2 to num do LineTo_(i + 0.0, values[i])
end;
Line_(1.0, ymin, 1.0, ymax); {veõ truïc ñöùng }
Line_(1.0, 0.0, data.num, 0.0) {veõ truïc ngang }
end
end;
21.9.2003 Chöông 4: Böôùc ñaàu xaây döïng hình 15
aûnh
width
ª 1. Tham soá hoùa thuû tuïc Turtle_House. Haõy vieát thuû tuïc
Turtle_House(size : real), trong ñoù size xaùc ñònh ngoâi nhaø caàn ñöôïc
veõ lôùn bao nhieâu.
ª 2. Ñònh nghóa cuûa MoveTo( ) chæ thay ñoåi giaù trò cuûa moät soá bieán beân
trong chöông trình, chöù khoâng thöïc söï göûi meänh leänh naøo ñeán thieát
bò. Thaønh ra neáu thieát bò laø moät pen plotter thì caây vieát seõ khoâng di
chuyeån khi MoveTo( ) ñöôïc goïi. Ñaây coù laø vaán ñeà hay khoâng: plotter
coù hoaït ñoäng nhö mong muoán khoâng khi laàn tôùi LineTo( ) ñöôïc goïi?
ª 3. Theâm vaøi thuû tuïc con ruøa. Hieän thöïc caùc thuû tuïc con ruøa sau
– Left(angle : real)
– LineBackward(dist : real)
– TurnTo(angle : real): gaùn vaøo CD trò angle