130 likes | 371 Views
Chương V: Ứ NG DỤNG ĐỊNH HƯỚNG ĐỊA ĐIỂM VÀ HIỂN THỊ THÔNG TIN KHÔNG GIAN THỰC (Augmented Reality) TRÊN MÀN HÌNH ĐIỆN THOẠI IPHONE. Ý TƯỞNG THỰC HIỆN B. HIỆN THỰC ỨNG DỤNG C. DEMO ỨNG DỤNG VÀ HƯỚNG DẪN SỬ DỤNG BẰNG HÌNH ẢNH:. A. Ý TƯỞNG THỰC HIỆN.
E N D
Chương V: ỨNG DỤNG ĐỊNH HƯỚNG ĐỊA ĐIỂM VÀ HIỂN THỊ THÔNG TIN KHÔNG GIAN THỰC (Augmented Reality) TRÊN MÀN HÌNH ĐIỆN THOẠI IPHONE Ý TƯỞNG THỰC HIỆN B. HIỆN THỰC ỨNG DỤNG C. DEMO ỨNG DỤNG VÀ HƯỚNG DẪN SỬ DỤNG BẰNG HÌNH ẢNH:
A. Ý TƯỞNG THỰC HIỆN • Tìmkiếm, xácđịnhphươnghướngđếnđịađiểmkhókhăn? • Cầnbiếtthông tin trựcquanmôitrườngbênngoàixungquanh ta? • Ýtưởngkếthợpcácchứcnăng: La bànsố, camera, bộthunhậntínhiệu GPS đểgiảiquyếtvầnđềtrên. Augmented Reality (viết tắt AR)
B. HIỆN THỰC ỨNG DỤNG 1. Định hướng (Bearing). 2. Hướng la bàn và hướng hiển thị trên màn hình. 3. Góc quay của Camera vàcáchhiểnthịtrênmànhình. 4. Hiệnthựcbằng Objective-C.
1. Định hướng (Bearing) • Công thức định góc hướng đi mặt phỏng cầu: Công thức địa lý xác định phương hướng trong mặt phỏng cầu: β = atan2(sin(Δlong).cos(lat2), cos(lat1).sin(lat2)−sin(lat1).cos(lat2).cos(Δlong)) • lat1: Vĩđộ điểm khởi hành. • lat2: Vĩđộ điểm đích đến. • Δlong: Hiệukinhđộgiữađiểm khởi hành và đích đến. • β:Góc Beta (phương hướng) từ điểm khởi hành đến đích đến. • atan2: Hàm ngược của hàm lượng giác Kết quả góc β(Beta) trong khoảng -180o đến +180o. Theo qui ước góc lệch của la bàn trong khoảng 0o đến 360o. (Hướng 0o là hướng Bắc của la bàn). Do đó ta sẽ điều chỉnh lại công thức như sau: β = (β +360o) % 360o
2. Hướng la bàn và hướng hiển thị trên màn hình a. Hướng la bàn và hướng hiển thị trên màn hình: • Hướngmànhình: La hướngkhi ta nhìnvàomànhìnhđiệnthoại. • Hướng la bàn: Chỉphươnghướngđịalýmôitrườngbênngoài. Do đótùytheocáchđặtđiệnthoại ta cócácgiátrịhướng la bànkhácnhau: Hướng la bàn mũi tên màu đỏ, hướng của màn hình mũi tên màu xanh
2. Hướng la bàn và hướng hiển thị trên màn hình b. Xác định hướng hướng của màn hình. Do ứng dụng của ta dùng màn hình để quan sát do đó hướng ta cần quan tâm là hướng màn hình. Và để xác định hướng màn hình ta cần xác định được hướng la bàn và độ lệch so với phường thẳng đứng của điện thoại. • Hướng của la bàn γ: • Sử dụng thư viện “CoreLocation“ • và phương thức didUpdateHeadingđểcậpnhậtgóc la bàn • Góc lệch α so với phương thẳng đứng • Ta sử dụng tính năng gia tốc kế để xác định gia tốc trên các trục x,y,z.
2. Hướng la bàn và hướng hiển thị trên màn hình • Công thức: • Vậy α = atan2(Y,-X). • Ta điều chỉnh giá trị α, để được giá trị như hình bên: Góclệchδ Delta giữahướngcủamànhìnhθvàhướngđi β. Xácđịnhđộlệchgiữahướnghiệntạivàhướngcầnđi, δtiếnđến 0 cónghĩ ta điđúngvóihướngcầnđi : δ = β - θ
3. Góc quay của Camera vàcáchhiểnthịtrênmànhình. a. Góc quay của Camera( Angel of View) Làvùngmà Camera củađiệnthoạicóthểthunhậnhìnhảnhđược. α: làgóc quay của Camera. f: làtiêucựcủathấukínhcủa Camera. d: kíchthướcvùngthunhậnánhsáng • Vídụ: ĐốivớicácdòngiPhone,iPhone 3G, iPhone 3GS theochuẩn CCD 1/4: • Kínhcótiêucự f = 3,85mm kíchthướccảmbiến 3,56mm x 2,68mm • AOV portrait = 2*arctan(2,68/ (2*3,85)) = 38,4o • AOV landscape = 2*arctan(3.56/ (2*3,85)) = 49,6o
ScreenX 3. Góc quay của Camera vàcáchhiểnthịtrênmànhình. Côngthứcxácđịnhảnhcủavậttrênmànhình. X = tan(δ) / h Vớih = L/(2*Tan(AOV/2) • Nếuvậtnằmtrongvùng quay của camera thì ta cóthểhiểnthịtrênmànhình. Ta chọnảnhđạidiệnbấtkìđểhiểnthịtươngứngtrênmànhình. • Hệtọađộđiểmảnhcủamànhình iPhone ScreenY
ScreenX 3. Góc quay của Camera vàcáchhiểnthịtrênmànhình. Hệtọađộtrungtâm: • Cóphươngtrục Y luôncùngphươngvớigiatốctrọngtrường g (phươngthẳngđứnghướnglên), và X, Y đi qua điểmtrungtâmcủamànhìnhtọađộ X0, Y0. • X0 = Chiềurộngmànhình/2 • Y0 = Chiềucaomànhình /2 Đểcóthểvẽchínhxácảnhtượngtrưngtrênmànhinh ta dùngphươngphápbiếnđổihệtrụctọađộtrungtâmvềhệtrụctọađộcủamànhìnhtưngứngbằngcácphépbiếnđổihệtrụctọađộ: Phép quay, vàphépdờitịnhtiến. + Phépdờitịnhtiếntrụctọađộ. + Phép quay trụctọađộ.
Hiệnthựcbằng Objective-C: • Ta sửdụngđốitượng:UIImagePickerControllerđểkíchhoạttínhnăngvàtươngtácvới Camera iPhone. • Hiệnthựclớpmànđểhiểnthịvẽtrênmànhình iPhone • OverlayView.h • OverlayView.m Ta sửdụngcácsựkiệnsau: • Khởitạo:- (id)initWithFrame:(CGRect)frame {} • Sựkiệncậpnhậtgóc la bàn:- (void)locationManager:(CLLocationManager *)manager didUpdateHeading{} • Cậpnhậtđộlệchcủađiệnthoại:- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate{}
C. DEMO ỨNG DỤNG VÀ HƯỚNG DẪN SỬ DỤNG BẰNG HÌNH ẢNH: • Chọndanhsáchđịađiểm, vàđịađiểmcầnđịnhhướng:
C. DEMO ỨNG DỤNG VÀ HƯỚNG DẪN SỬ DỤNG BẰNG HÌNH ẢNH: • Chọnchứcnăngđịnhhướng (Bearing). • Xoayđiệnthoạiđểxácđịnhđượcphươnghướngvàcácthông tin khác.