# openalea.mtg.plantframe package¶

## openalea.mtg.plantframe.frame module¶

This module implement a solver to build 3D representation of a plant mockup based on various infomation.

Todo

• See the turtle frame. What is missing in both?
class openalea.mtg.plantframe.frame.AxialFrames[source]

Bases: object

Solve continuity constraints on an axis, i.e. a set of frames.

class openalea.mtg.plantframe.frame.Frame(**kwds)[source]

Bases: object

Frame representing geometric variables of each topologic elements.

A frame is used to have a common representation of the geometric information for each topological elements.

Variables contain:
• origin: 3D point
• transformation: 3 euler angles
• bounding box: length, top and bottom radius.
angles
bottom_radius
get_angles()[source]
get_bottom_radius()[source]
get_length()[source]
get_origin()[source]
get_top_radius()[source]
length
origin
set_angles(angles, hard=False)[source]

Set the angles of the frame. hard indicates if it is a hard (user defines) or soft (computed value) constraints.

set_bottom_radius(bottom_radius, hard=False)[source]

Set the bottom_radius of the frame. hard indicates if it is a hard (user defines) or soft (computed value) constraints.

set_length(length, hard=False)[source]

Set the length of the frame. hard indicates if it is a hard (user defines) or soft (computed value) constraints.

set_origin(origin, hard=False)[source]

Set the origin of the frame.

set_top_radius(top_radius, hard=False)[source]

Set the top_radius of the frame. hard indicates if it is a hard (user defines) or soft (computed value) constraints.

top_radius
class openalea.mtg.plantframe.frame.PlantFrame(g, *args, **kwds)[source]

Bases: object

Engine to compute the geometry of a plant based on its topological description and parameters.

run(scale=-1)[source]

Compute the geometry of the plant.

openalea.mtg.plantframe.frame.compute_axes(g, v, fixed_points)[source]
openalea.mtg.plantframe.frame.compute_radius(g, v, last_radius)[source]
openalea.mtg.plantframe.frame.iter_order(g, v, edge_type=None)[source]

Iter on a tree by considering first all the vertices of the axe at the first order, then the vertices at the second order and so on.

openalea.mtg.plantframe.frame.simple_axe(g, v, marked, fixed_points)[source]