Substract (1-lightFalloff) from the light a branch gets
authorJoachim Breitner <mail@joachim-breitner.de>
Sat, 30 May 2009 17:03:44 +0000 (19:03 +0200)
committerJoachim Breitner <mail@joachim-breitner.de>
Sat, 30 May 2009 17:03:44 +0000 (19:03 +0200)
src/Lseed/Constants.hs
src/Lseed/Geometry.hs

index 5999c2c..00fb823 100644 (file)
@@ -12,7 +12,8 @@ ticksPerDay = 9
 
 -- | Plant length growth per Day and Light
 --
--- 1 means: Can grow one stipeLength during one day, when catching the sunlight with one branch of (projected) length screenwidth
+-- 1 means: Can grow one stipeLength during one day, when catching the sunlight
+-- with one branch of (projected) length screenwidth
 growthPerDayAndLight = 15.0
 
 -- | Plants up to this size get an boost in growths
@@ -22,13 +23,16 @@ smallPlantBoostSize = 0.5
 smallPlantBoostLength = 0.2
 
 -- | Cost (in light units) per (length for maintaining the plant)^2, to limit the growth of the plants
-costPerLength = 0.001
+costPerLength = 0.0005
 
 -- | Cost (in length growths equivalent) per seed to be grown
 seedGrowthCost = 1.0
 
+-- | Branch translucency. Proportion of light that is let through by a plant
+lightFalloff = 0.3
+
 -- | Length of one day, in seconds
-dayLength = 10
+dayLength = 8.0
 
 -- | ε
 eps = 1e-9
@@ -37,4 +41,4 @@ eps = 1e-9
 minAngle = pi/20
 
 -- | Derived constants
-tickLength = fromIntegral dayLength / fromIntegral ticksPerDay
+tickLength = dayLength / fromIntegral ticksPerDay
index 0991011..16921fe 100644 (file)
@@ -19,8 +19,6 @@ import Control.Applicative
 type Point = (Double, Double)
 type Line  = (Point, Point)
 
-lightFalloff = 0.7
-
 lineLength ((x1,y1),(x2,y2)) = sqrt ((x1-x2)^2 + (y1-y2)^2)
 
 -- | from http://www.pdas.com/lineint.htm
@@ -135,9 +133,9 @@ allKindsOfStuffWithAngle angle lines = (lighted, polygons)
                                                           llines
                        sorted = sortBy (\(l1,_,_) (l2,_,_) -> aboveFirst mid l1 l2)
                                         curlines
-                       curlines' = snd $ mapAccumL shine 1 sorted
-                       shine intensity (l,i,amount) = ( intensity * lightFalloff
-                                                      , (l,i,amount + intensity * width))
+                       curlines' = snd $ mapAccumL shine width sorted
+                       shine intensity (l,i,amount) = (intensity * lightFalloff, 
+                                                      (l,i,amount + (1-lightFalloff) * intensity))
 
        polygons = concatMap go intervals
          where go (x1,x2) = if null sorted then [nothingPoly] else lightedPolys