2010-09-07 38 views
8

cho phép giả sử một alpha 1 có nghĩa là hoàn toàn mờ đục và 0 có nghĩa là hoàn toàn minh bạch. cho phép nói rằng tôi có hai hình ảnh đen có độ trong suốt 50% (alpha = 0,5).cho giá trị alpha khi pha trộn hai màu trong suốt

nếu chúng được đặt trên đầu trang của nhau, độ trong suốt kết quả là 0,75, phải không?

nếu chúng có alpha là 0,25, kết quả sẽ là khoảng 0,5, phải không?

nếu chúng có alpha là 0,9, kết quả sẽ là 0,97, phải không?

làm cách nào bạn có thể nhận được những con số này?

nói cách khác tôi đang tìm một hàm nhận giá trị alpha kết quả từ hai giá trị alpha khác.

float alpha = f(float alphaBelow, float alphaAbove) 
{ 
    //TODO implement 
} 
+0

Thông thường, màu mờ đục khi alpha = 1 và hoàn toàn trong suốt khi alpha = 0. Vì vậy, kết quả alpha đặt 50% trên 50% phải là 25%, không phải 75%. – kennytm

+0

@KennyTM, ok, tôi sẽ chỉnh sửa bài đăng của mình để hoạt động với phao từ 0 đến 1 – clamp

Trả lời

6

Câu trả lời này là về mặt toán học giống như Jason's answer, nhưng đây là công thức thực tế như bạn sẽ tìm thấy nó trong tài liệu tham khảo.

float blend(float alphaBelow, float alphaAbove) 
{ 
    return alphaBelow + (1.0 - alphaBelow) * alphaAbove; 
} 
6
float blend(float alphaBelow, float alphaAbove) 
{ 
    return alphaBelow + alphaAbove - alphaBelow * alphaAbove; 
} 

chức năng này giả định cả hai thông số là 0..1, trong đó 0 là hoàn toàn minh bạch và 1 là hoàn toàn mờ đục.

+0

cảm ơn, nó gần giống như kết quả mong muốn của tôi. nó chỉ là khi tôi so sánh kết quả với hai hình ảnh trên đầu trang của nhau trong photoshop, phiên bản photoshop dường như có một giá trị alpha cao hơn một chút. – clamp

3

Photoshop hiện các tính toán sau:

float blend(float alphaBelow, float alphaAbove) 
{ 
    return min(1,alphaBelow+(1-alphaBelow)*alphaAbove); 
} 
+1

'Min' là dự phòng nếu cả hai đầu vào nằm trong khoảng 0..1. –

Các vấn đề liên quan