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