Color mixing or blend
Although kguler correctly yields the picture that you set as a goal here I wonder whether this really is what is behind the question.
You mention another type of mixing and since you start with an example of additive mixing of the RGB primaries I feel you may have the intention to deal with subtractive mixing of colors.
The primary colors of subtractive mixing, the type of mixing that deals with paints and printed colors, are Yellow, Cyan, and Magenta:
{#, Graphics[{#, Disk[]}, ImageSize -> 50]} & /@ {Yellow, Magenta, Cyan}
The colors you provided are just murkier versions of them (you used 1/2's instead of 1's).
You can see Cyan, Magenta, and Yellow as "negative" Red, Green and Blue respectively. Using a slightly changed version of your code:
coord = 1/2*{{1, -Sqrt[3]/3}, {0, 2 Sqrt[3]/3}, {-1, -Sqrt[3]/3}};
color = {Red, Green, Blue};
circles = MapThread[Image[Graphics[{##}, PlotRange -> 2, Background -> Black],
ImageSize -> 300] &, {color, Disk /@ coord}]
ImageSubtract[Image[ConstantArray[{1, 1, 1}, {300, 300}], "Real"], #] & /@ circles // Row
Using that, you can now easily crate the three overlapping circles of subtractive color mixing.
Fold[ImageSubtract,Image[ConstantArray[{1, 1, 1}, {300, 300}], "Real"], circles]
Update 2:
Use ImageApply
to replace the channel values of each pixel with the values that correspond to blended values:
img=Image[Plus @@ (ImageData /@ MapThread[Graphics[{##}, PlotRange -> 2,
Background -> Black] &, {color, Disk /@ coord}])];
ImageApply[If[Tr[#] == 0, #, #/Tr[#]] &, img]
or, better yet, (courtesy of J.M.)
ImageApply[Normalize[#, Tr] &, img]
Update 1:
Post-process the original image to replace intersection colors with the blended versions:
ImageData[img] /. {{1., 1., 1.} -> {1./3, 1./3, 1./3},
{1., 1., 0.} -> {1./2, 1./2, 0.},
{0., 1., 1.} -> {0., 1./2, 1./2},
{1., 0., 1.} -> {1./2, 0., 1./2}} // Image
Original post:
You can use RegionPlot
to get a picture with circle intersections colored using Blend
:
circles = (0 <= (x - #[[1]])^2 + (y - #[[2]])^2 <= 1) & /@ coord;
subregions = Most@(And @@ # & /@ (Thread[{#, circles}] & /@
Tuples[{Identity, Not}, Length@circles] /. {x_, y_} :> x[y]));
subregioncolors = Thread[{#, color}] & /@
Tuples[{Identity, # /. # -> Sequence[] &}, Length@color] /.
{x_, y_} :> x[y] /. {} -> Sequence[];
subregioncolors = Map[Blend@Flatten@{#1, #1} & , subregioncolors];
RegionPlot[subregions, {x, -2, 2}, {y, -2, 2},
PlotStyle -> subregioncolors, BoundaryStyle -> White,
PlotPoints -> 150, Background -> Black]