Creating rounded blobs in Mathematica 8
- To: mathgroup at smc.vnet.net
- Subject: [mg114244] Creating rounded blobs in Mathematica 8
- From: Yaroslav Bulatov <yaroslavvb at gmail.com>
- Date: Sun, 28 Nov 2010 06:55:08 -0500 (EST)
I'd like to create translucent rounded blobs in Mathematica 8. Thick
lines do almost what I need, but I how can I fill the inside of the
blob?
Here's an example
obj = JoinedCurve[Line[{{0, 0}, {0, 1}, {1, 1}}], CurveClosed ->
True];
Graphics[{Blue, JoinForm["Round"], Opacity[.5],
AbsoluteThickness[40],obj}, ImageSize -> 200]
I've tried FilledCurve with thick EdgeForm for rounded edges, but it
changes color at the points where interior and edge overlap
obj1 = FilledCurve[Line[{{0, 0}, {0, 1}, {1, 1}}]];
Graphics[{Blue,
EdgeForm[{JoinForm["Round"], AbsoluteThickness[40], Blue,
Opacity[.5]}], Opacity[.5], ,
obj1}, PlotRange -> {{-1/2, 3/2}, {-1/2, 3/2}}]
Another question:
JoinedCurve and FilledCurve need special treatment when points are
almost collinear. JoinedCurve with CurveClosed->True will have sharp
corners despite "Round" CapForm and JoinForm. What is a good way to
implement an approximate collinearity test for more than 3 points?
Example:
(* Need to detect that points are almost collinear and set CurveClosed-
>False *)
obj2 = JoinedCurve[Line[{{0, 0}, {0, 1}, {0.001, 2}}],
CurveClosed -> True];
Graphics[{Blue, JoinForm["Round"], CapForm["Round"], Opacity[.5],
AbsoluteThickness[40], obj2}, PlotRange -> {{-1/2, 1/2}, {-1, 3}}]
(* test of exact collinearity of 3 points *)
collinear[points_] :=Length[points] ==3 &&
(Det[Transpose[points]~Append~{1, 1, 1}] == 0)
----
Yaroslav
http://stackoverflow.com/users/419116/yaroslav-bulatov