Colour interference when two surfaces overlap

回答 (1 件)

Piyush Kumar
Piyush Kumar 2024 年 6 月 18 日
編集済み: Piyush Kumar 2024 年 6 月 18 日

0 投票

Hi @xin,
If you are talking about the blending of colours at the point where surfaces intersect or overlap, I will try to explain with an example.
[X,Y] = meshgrid(linspace(-2, 2, 50));
Z = @(x,y,c) x.^2 + y.^2 + c;
figure(1)
surf(X, Y, +Z(X,Y,-4), 'FaceColor','g', 'FaceAlpha',0.5, 'EdgeColor','none')
hold on
surf(X, Y, -Z(X,Y,-4), 'FaceColor','r', 'FaceAlpha',0.5, 'EdgeColor','none')
hold off
grid on
I have specified only 2 colours for the 2 surfaces repectively, but multiple colours are visible. This blending effect is a result of the rendering process in MATLAB, where the semi-transparent (due to 'FaceAlpha',0.5) surfaces allow for the underlying color to show through, creating a visual effect of color mixing or interference.
To avoid this color blending effect and maintain the solid colors you've specified without seeing a mix at the intersections, you can:
  • Increase the Opacity: Setting 'FaceAlpha' to 1 (or removing the 'FaceAlpha' setting, as its default value is 1) will make the surfaces fully opaque, preventing the underlying color from showing through.
[X,Y] = meshgrid(linspace(-2, 2, 50));
Z = @(x,y,c) x.^2 + y.^2 + c;
figure(1)
% Making the surfaces opaque by removing 'FaceAlpha'
surf(X, Y, +Z(X,Y,-4), 'FaceColor','g', 'EdgeColor','none')
hold on
surf(X, Y, -Z(X,Y,-4), 'FaceColor','r', 'EdgeColor','none')
hold off
grid on

4 件のコメント

Piyush Kumar
Piyush Kumar 2024 年 6 月 18 日
Additionaly, you can explore the properties of chart surface objects here
xin
xin 2024 年 6 月 18 日
Thanks for your answer, but I try to remain semi-transparent with FaceAlpha=0.8, colour overlapping still exists.Is there any other way of rendering it?
Piyush Kumar
Piyush Kumar 2024 年 6 月 18 日
Can you share the code you are using?
xin
xin 2024 年 6 月 19 日
Of course,please import the data into the workspace at first.

サインインしてコメントする。

カテゴリ

製品

リリース

R2018b

タグ

質問済み:

xin
2024 年 6 月 18 日

コメント済み:

xin
2024 年 6 月 19 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by