Để xây dựng hình ảnh cho một particle điện tích âm hay dương, chúng ta sẽ sử dụng kỹ thuật alpha channel. Đây là một kỹ thuật tạo mặt nạ cho ảnh bipmap trong đồ họa vi tính. Đầu vào của quá trình này là một ảnh bipmap gốc ban đầu và một ảnh bipmap đen trắng dùng để làm alpha channel. Thực chất của quá trình này
là thêm vào mỗi pixel ảnh gốc một chỉ số A cho độ trong suốt của pixel đó ngoài 3 giá trị R, G, B của màu sắc. A = 1 tương ứng với điểm màu đen trên alpha channel, khi đó pixel của ảnh gốc sẽ bị mờ hoàn toàn. A = 0 tương ứng với điểm màu trắng trên alpha channel, khi đó pixel của ảnh gốc sẽ hoàn toàn không bị mờ. Sở dĩ ảnh đen trắng được chọn làm alpha channel bởi vì với loại ảnh này, mỗi pixel có các giá trị R, G, B bằng nhau, do đó ta chỉ cần lựa chọn một trong những chỉ số này để làm chỉ số A của ảnh cần xử lý.
Hình 2.3. Cộng ảnh Alpha Channel vào ảnh để tạo mặt nạ
Thuật toán để thêm một alpha channel vào một ảnh bipmap như sau:
char* addAlphaChannel(Image* image, Image* alphaChannel) {
// An pixel have 4 byte to store values of RED, GREEN, BLUE,
// ALPHA
char* pixels = new char[image->width * image- >height * 4];
// With each pixel, the 3 third bytes store RED, GREEN, BLUE
// value of original image
// The 4th value (ALPHA value) will be the RED value of alpha
// channel image
for(int x = 0; x < image->width; x++) {
// Assign 3 values of original image to new image for(int j = 0; j < 3; j++) { pixels[4 * (y * image->width + x) + j] = image->pixels[3 * (y * image->width + x) + j]; }
// Assign RED value of alpha image to the 4th value of // new image pixels[4 * (y * image->width + x) + 3] = alphaChannel->pixels[3 * (y * image- >width + x)]; } } return pixels; }
Sau khi thực hiện thuật toán này, ta sẽ có một ảnh mới với màu sắc của ảnh gốc, thêm vào một chỉ số của độ trong suốt cho từng pixel của ảnh alpha channel.