def inflorescence(g, vid, turtle): """ HT: inflorescence Box (may change) parameters: ----------- g: is a current MTG vid: vertex id in the mtg turtle: openalea.pltgl.turtle return: ---------- for each HT in mtg return an object compose of cylender and a blue box. Shape of the box is dependent of the number of total flower and number of open flowers. """ t = colors_turtle(turtle) nid = g.node(vid) order = nid.order nb_flower = nid.FLWRNUMBER nb_flower_open = nid.FLWRNUMBER_OPEN t.setColor(2 + order) turtle.F(0.2) if nb_flower is None: nb_flower = 0.5 if nb_flower_open is None or nb_flower_open == 0: nb_flower_open = 0.5 cube = pgl.Box(0.05 * pgl.Vector3(1, 1, nb_flower_open / 4.)) tap = pgl.Tapered(3. / 20 * nb_flower, 3. / 20 * nb_flower_open, cube) turtle.customGeometry(tap)
def inflorescence(g, vid, turtle): """Generates the inflorescences HT: inflorescence Box (may change) for each HT in mtg return an object compose of cylender and a blue box. Shape of the box is dependent of the number of total flower and number of open flowers. :param g: MTG :type g: MTG :param vid: vid selected :type vid: int :param turtle: Turtle :type turtle: Turtle :return: for each HT in mtg return an object compose of cylender and a blue box. :rtype: [type] """ t = colors_turtle(turtle) nid = g.node(vid) order = nid.order nb_flower = nid.FLWRNUMBER nb_flower_open = nid.FLWRNUMBER_OPEN t.setColor(2+order) turtle.F(0.2) if nb_flower is None: nb_flower = 0.5 if nb_flower_open is None or nb_flower_open == 0: nb_flower_open = 0.5 cube = pgl.Box(0.05*pgl.Vector3(1,1,nb_flower_open/4.)) tap = pgl.Tapered(3./20*nb_flower, 3./20*nb_flower_open, cube) turtle.customGeometry(tap)
def test_scene(): ds = pgl.Sphere() t = pgl.Tapered(1., 1., ds) t2 = pgl.Translated(0., 0., 1., ds) sc = pgl.Scene([ pgl.Shape(t, pgl.Material((255, 0, 0))), pgl.Shape(t2, pgl.Material((0, 255, 0))) ]) jsonconversion(sc)
def _mesh(self, length, diameter_base, diameter_top): if self.seed is not None or classic: solid = True slices = 3 diameter = diameter_base stem = pgl.Tapered(diameter_base / 2., diameter_top / 2., pgl.Cylinder(1., length, solid, slices)) stem.apply(self.tessel) mesh = self.tessel.triangulation else: mesh = slim_cylinder(length, diameter_base / 2., diameter_top / 2.) return mesh
def StemElement_mesh(length, diameter_base, diameter_top, classic=False): """ Compute mesh for a stem element - classic indicates """ if classic: solid = True diameter = diameter_base slices = 6 # 6 is the minimal number of slices for a correct computation of star (percentage error lower than 5) stem = pgl.Tapered(diameter_base / 2., diameter_top / 2., pgl.Cylinder(1., length, solid, slices)) tessel = pgl.Tesselator() stem.apply(tessel) mesh = tessel.triangulation else: mesh = slim_cylinder(length, diameter_base / 2., diameter_top / 2.) return mesh
def Inflorescence(g, vid, turtle): """ HT: Inflorescence Box (may change) """ t = turtle nid = g.node(vid) order = nid.order #turtle.setColor(3) nb_flower = nid.Fleurs_total nb_flower_open = nid.Fleurs_ouverte t.setColor(2 + order) turtle.F(0.2) if nb_flower is None: nb_flower = 0.5 if nb_flower_open is None or nb_flower_open == 0: nb_flower_open = 0.5 cube = pgl.Box(0.05 * pgl.Vector3(1, 1, nb_flower_open / 4.)) tap = pgl.Tapered(3. / 20 * nb_flower, 3. / 20 * nb_flower_open, cube) turtle.customGeometry(tap)
def leafB( x, y, z, color=color( 30, 210, 40 ) ): v = pgl.Vector3( x, y, z ) s = pgl.Sphere( 0.4, 5, 5 ) ts = pgl.Tapered( 1.0, 0.3, s ) tr = pgl.Translated( v, ts ) return pgl.Shape( tr, color )
def tapCyl(x,y,z,radius,height, color=color(46,27,21)): v = pgl.Vector3( x, y, z ) c = pgl.Cylinder(radius, height, 10) tc = pgl.Tapered(1.0,0.7,c) tr = pgl.Translated(v,tc) return pgl.Shape(tr,color)
def test_tapered(): ds = pgl.Sphere() t = pgl.Tapered(1., 1., ds) jsonconversion(t)