From 0681b24b3d5c7294f2a960fb5d76eee5e6f378ec Mon Sep 17 00:00:00 2001 From: Michael Sloan Date: Tue, 30 Oct 2012 02:38:14 -0700 Subject: [PATCH] Better definition for diameter --- src/Diagrams/Core/Envelope.hs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Diagrams/Core/Envelope.hs b/src/Diagrams/Core/Envelope.hs index 47d59b3..0efc0ef 100644 --- a/src/Diagrams/Core/Envelope.hs +++ b/src/Diagrams/Core/Envelope.hs @@ -227,7 +227,9 @@ envelopeP v = P . envelopeV v -- | Compute the diameter of a enveloped object along a particular -- vector. Returns zero for the empty envelope. diameter :: Enveloped a => V a -> a -> Scalar (V a) -diameter v a = magnitude (envelopeV v a ^-^ envelopeV (negateV v) a) +diameter v a = case appEnvelope $ getEnvelope a of + (Just env) -> (env v - env (negateV v)) * magnitude v + Nothing -> 0 -- | Compute the \"radius\" (1\/2 the diameter) of an enveloped object -- along a particular vector.