Bài toỏn tỡm ảnh của vật qua thấu kỡnh hội tụ.

Một phần của tài liệu Báo cáo tham luận hội nghị ứng dụng công nghệ Multimedia tong giáo dục đào tạo (Trang 49 - 53)

- CÁC PHẦN MỀM TẠO RA DỮ LIỆU MULTIMEDIA Cỏc phần mềm tạo ảnh.

2.3Bài toỏn tỡm ảnh của vật qua thấu kỡnh hội tụ.

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.3Bà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, (adsbygoogle = window.adsbygoogle || []).push({});

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 (adsbygoogle = window.adsbygoogle || []).push({});

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.

Một phần của tài liệu Báo cáo tham luận hội nghị ứng dụng công nghệ Multimedia tong giáo dục đào tạo (Trang 49 - 53)