- CÁC PHẦN MỀM TẠO RA DỮ LIỆU MULTIMEDIA Cỏc phần mềm tạo ảnh.
2. Xõy dựng module điều khiển tương tỏc bằng Lingo trong Director: 1 Tổng quan chung về lập trỡnh Lingo
2.3 Bài toỏn tỡm ảnh của vật qua thấu kỡnh hội tụ.
Bài toỏn 2: Cho một vật AB đặt trước một thấu kớnh hội tụ. Xỏc định vị trớ và kớch thước của ảnh tạo bởi thấu kớnh khi người dựng thay đổi vị trớ của vật AB.
Phõn tớch:
Tương tự như bài toỏn 1, ở đõy ta sử dụng cỏc đối tượng ảnh sau: vật AB, ảnh A’B’, thấu kớnh.
Đường đi của tia sỏng và tia khỳc xạ của nú sinh ra khi cựng thao tỏc di chuyển vật AB của người dựng.
Chỳ ý: cú thể biểu diễn mỗi tia sỏng bằng một đối tượng ảnh, xong việc này cú thể tạo ra hiệu quả hỡnh ảnh khụng như mong muốn: khi vị trớ vật thay đổi, kộo theo gúc lệch của tia sỏng cũng nhưđộ dài của chỳng thay đổi theo, việc một đối tượng ảnh bị co dón hoặc búp mộo sẽ làm vỡ hỡnh.
Như vậy, ta qui bài toỏn ban đầu về bài toỏn: vẽ cỏc đoạn thẳng mà cỏc điểm đầu mỳt của chỳng được cho như hỡnh vẽ. Giỏ trị tọa độ của cỏc đầu mỳt này được xỏc định qua cỏc thụng số và cụng thức về thấu kớnh.
Xõy dựng:
i.
global f, d, d1, h, thaukinhH, diem, diem1, diem2
property obj, img, tiass, tiatam, tiaF, thaukinh, gh, x, nen
property pmove
on beginsprite me
gh=sprite(25) obj=sprite(23)
nen= sprite(20).member.image
obj.constraint=gh img= sprite(24) thaukinh=sprite(22) obj.moveablesprite=true
end on mousedown me pmove=1 end on mouseup me pmove=0 end on mouseupoutside me pmove=0 end on exitframe
if the mousedown then
if pmove then
t= the mouseh
if t< gh.left then t=gh.left
if t> gh.right then t=gh.right
obj.loch=t objh= obj.loch
d=thaukinhH-objh
if d<> f then
d1= integer((d*f).float/(d-f))
x=integer((h*f)/abs(d-f))
--lay khoang cach tu right, left thau kinh den tam
a= thaukinh.right-thaukinhH b=thaukinhH-thaukinh.left
x1=h*a/d
x2=(h*(a-f)).float/f
diem[3]= sprite(22).loc +point(0,
x)
diem1[2]= sprite(22).loc + point(a, x1)
diem1[3]= sprite(22).loc
+point(a,x)
if d1>0 then
img.member=member("image") ve1()
else
img.member=member("image1") ve2() end if end if end if end if end on ve1
t=obj.loc-point(0,obj.height/2) nen.fill( nen.rect, rgb(255,255,255))
repeat with i=1 to 2
member("nenve").image.draw(t, diem[i],[#shapeType:#line, #lineSize:1,
#color: rgb(255,255,0)])
member("nenve").image.draw( diem[i], diem1[i],[#shapeType:#line,
#lineSize:1, #color: rgb(255,255,0)])
end repeat
if diem[3][2]<= thaukinh.bottom-7
then
member("nenve").image.draw(t, diem[3],[#shapeType:#line, #lineSize:1,
#color: rgb(255,255,0)])
member("nenve").image.draw( diem[3], diem1[3],[#shapeType:#line,
#lineSize:1, #color: rgb(255,255,0)])
end if
sprite(24).loch= sprite(22).loch+d1
sprite(24).locv= thaukinh.locv+x/2 sprite(24).height = x
sprite(24). width =
i.
end on ve2
sprite(24).loch= sprite(22).loch+d1
sprite(24).locv= thaukinh.locv-x/2 sprite(24).height = abs(x)
sprite(24). width =
sprite(23).width*abs((d1).float/d) t=obj.loc-point(0,h/2) --point(0,h)
t1=sprite(22).loc
t2=t1+ point(f, 0)
nen.fill( nen.rect, rgb(255,255,255))
repeat with i=1 to 2
member("nenve").image.draw(t, diem[i],[#shapeType:#line, #lineSize:1,
#color: rgb(255,255,0)])
member("nenve").image.draw( diem[i], diem1[i],[#shapeType:#line,
#lineSize:1, #color: rgb(255,255,0)])
end repeat
t= thaukinh.loc+point((d1).integer, - (x).integer)
member("nenve").image.draw( diem[1], t,[#shapeType:#line,
#lineSize:1, #color: rgb(0,0,255)])
member("nenve").image.draw( obj.loc-
point(0,h/2), t,[#shapeType:#line,
#lineSize:1, #color: rgb(0,0,255)])
end
Việc chủ yếu phải làm ở đõy là xỏc định tọa độ của cỏc đầu mỳt đoạn thẳng và lưu chỳng vào 2 mảng tuyến tớnh diem() và diem1(). Việc vẽđường đi của tia sỏng khụng cú gỡ khú khăn sau khi chỳng ta đó xỏc định được cỏc tọa độ trờn.
Một điều cần lưu ý ởđõy là: do sự thay đổi cỏc thụng số vừa phụ thuộc liờn tục vào thời gian, vừa liờn quan đến sự kiện người dựng nhấn chuột nờn nhất thiết cỏc lệnh tớnh tọa độ phải đặt trong hàm sự kiện ExitFrame, và điều kiện kiểm tra là the mousedown.
KẾT LUẬN
Trong bỏo cỏo này chỳng ta đó tỡm hiểu một số lệnh, hàm chủ yếu của ngụn ngữ lập trỡnh Lingo nhằm tạo cỏc tương tỏc với cỏc đối tượng đồ họa. Những module này đó được cài đặt và kiểm thử, kết quả là hiệu ứng được tạo ra rất tốt.
Ngày nay, việc ứng dụng cụng nghệ multimedia để xõy dựng cỏc bài giảng điện tử
ngày càng trở nờn phổ biến, việc thờm cỏc tương tỏc vào bài giảng là rất cần thiết đểđảm bảo chất lượng cho cỏc bài giảng . Lingo là một ngụn ngữđủ mạnh và khụng quỏ khú để
tạo những tương tỏc như thế.
Bờn cạnh Lingo và Director cũn cú rất nhiều cụng cụ cú hỗ trợ chức năng tạo script nhằm nõng cao hiệu quả của chương trỡnh và giảm thiểu cỏc thao tỏc thủ cụng như Flash, 3DMax, Authorware, …Tựy theo yờu cầu cụ thể của bài toỏn đặt ra mà ta lựa chọn cụng cụ tạo tương tỏc phự hợp, tuy nhiờn chỳng ta vẫn nờn sử dụng Director để tớch hợp cỏc dữ
i.