Để giải quyết bài toán này luận văn sử dụng hƣớng tiếp cận là mô phỏng thật. Kỹ thuật mô phỏng nƣớc đƣợc dùng là kỹ thuật Particle-Based.
- Sử dụng ngôn ngữ Visual Studio để xây dựng chƣơng trình demo. Với việc mô tả hiệu ứng sóng khi chịu ngọai lực tác động, chúng ta cần giải quyết các việc sau:
Qua phân tích để xác định rõ yêu cầu của bài toán, luận văn đề cập đến giải bài toán bằng cách sử dụng kỹ thuật Particle-Based thể hiện những yêu cầu về hiệu ứng mặt nƣớc nhƣ đã đề ra.
Chia nhỏ bài toán mô phỏng mặt nƣớc thành những phần nhỏ để giải quyết yêu cầu của bài toán. Cụ thể nhƣ sau:
- Hiệu ứng in bóng nƣớc: dùng phép chiếu ảnh để lấy ảnh đối ngẫu với ảnh gốc ban đầu (mọi thao tác sẽ diễn ra trên ảnh đối ngẫu này).
- Mặt nƣớc dao động: chia mặt nƣớc(ảnh đối ngẫu) thành dãy các đƣờng kẻ ngang bức ảnh với bề rộng là rất nhỏ và chiều dài là chiều dài của ảnh. Sử dụng một vòng lặp để điều khiển việc vẽ lại các đƣờng kẻ từ ảnh gốc, vòng lặp sẽ chịu trách nhiệm tạo ra hiệu ứng sóng. Nó tạo ra sự thay đổi từ ảnh nguồn tới ảnh đích với hiệu ứng sóng đƣợc xây dựng bằng việc sao chép các đƣờng kẻ. Thay vì sao chép từng đƣờng một từ ảnh nguồn, chúng ta xây dựng 1 hàm mà giá trị sẽ thay đổi dựa trên một hàm sine(tỷ lệ giữa chiều dài của cạnh đối diện với một góc nhọn và chiều dài của cạnh huyền). Đó là sự sao chép từ bên này sang bên kia và sinh ra hiệu ứng sóng nƣớc. Trong thực tế, một sự thay đổi đơn giản sẽ chỉ tạo ra một gợn sóng cho bức ảnh mà không tạo ra đƣợc cả hiệu ứng cho bề mặt hồ nƣớc. Do đó muốn có nhiều sóng thì phải tạo ra đƣợc nhiều sự thay đổi vị trí của nhiều dòng kẻ. Kích thƣớc của độ dịch chuyển biến đổi dựa theo vị trí của tọa độ y (dựa theo chiều dọc của ảnh) trên đƣờng kẻ. Các đƣờng gần với phần trên của bức ảnh sẽ thay đổi ít hơn các đƣờng ở phần dƣới của bức ảnh. Điều này giúp cho việc phối cảnh trở lên chân thực hơn.
-Ngoại lực tác dụng đƣợc thể hiện thông qua sự kiện di chuyển trái chuột. Một vòng tròn với bán kính radius và độ cao height sẽ đƣợc tạo ra bằng hàm PutDrop(x,y,height).
-Phát sinh sóng: sóng đƣợc sinh ra sẽ phát triền từ đƣờng tròn trung tâm, lan sang các điểm lân cận theo các vòng tròn với bán kính lớn dần. Sóng đƣợc xuất hiện nằm trong phạm vi ảnh.
-Thời gian sống của sóng phụ thuộc vào yếu tố: sóng càng lan xa, bƣớc sóng càng lớn thì độ mạnh của sóng lại càng giảm. Mỗi lần sóng đi lên đi xuống, năng lƣợng của nó sẽ đƣợc phân bố theo khu vực tƣơng ứng. Có nghĩa là, cƣờng độ của sóng sẽ giảm theo đƣờng sóng. Sử dụng một yếu tố gọi là damping để điều khiển việc này. Yếu tố này là một lƣợng phần trăm(%) của
cƣờng độ sóng và sẽ đƣợc trừ đi cho cƣờng độ hiện tại để khiến cƣờng độ cao sẽ biến mất nhanh trong khi cƣờng độ nhẹ sẽ mất đi từ từ.