Exemplo n.º 1
0
    def c_repr(self, name, parent_name, offset, resources):
        if 'material' not in self.yaml_obj:
            self.yaml_obj['material'] = {}
        if 'transform' not in self.yaml_obj:
            self.yaml_obj['transform'] = []
        material = Material.from_yaml(self.yaml_obj['material'])
        transform = Transform.from_yaml(self.yaml_obj['transform'])
        buf = """
    {1}
    {2}
    Point shape_{0}_p1 = point({3:.10f}, {4:.10f}, {5:.10f});
    Point shape_{0}_p2 = point({6:.10f}, {7:.10f}, {8:.10f});
    Point shape_{0}_p3 = point({9:.10f}, {10:.10f}, {11:.10f});

    Shape shape_{0} = {12} + {13};
    triangle(shape_{0}, shape_{0}_p1->arr, shape_{0}_p2->arr, shape_{0}_p3->arr);
    shape_set_material(shape_{0}, material_{0});
    shape_set_transform(shape_{0}, transform_{0});

    point_free(shape_{0}_p3);
    point_free(shape_{0}_p2);
    point_free(shape_{0}_p1);
""".format(name, material.c_repr(name, resources), transform.c_repr(name),
           self.yaml_obj['p1'][0], self.yaml_obj['p1'][1],
           self.yaml_obj['p1'][2], self.yaml_obj['p2'][0],
           self.yaml_obj['p2'][1], self.yaml_obj['p2'][2],
           self.yaml_obj['p3'][0], self.yaml_obj['p3'][1],
           self.yaml_obj['p3'][2], parent_name, offset)

        return buf
Exemplo n.º 2
0
    def c_repr(self, name, parent_name, offset, resources):
        material = Material.from_yaml(self.yaml_obj['material'])
        transform = Transform.from_yaml(self.yaml_obj['transform'])
        buf = """
    {2}
    {3}
    Shape shape_{0} = {1} + {4};
    cylinder(shape_{0});
    shape_set_material(shape_{0}, material_{0});
    shape_set_transform(shape_{0}, transform_{0});
""".format(name, parent_name, material.c_repr(name, resources),
           transform.c_repr(name), offset)

        if 'min' in self.yaml_obj:
            buf += "    shape_{0}->fields.cylinder.minimum = {1:.10f};\n".format(
                name, self.yaml_obj['min'])
        if 'max' in self.yaml_obj:
            buf += "    shape_{0}->fields.cylinder.maximum = {1:.10f};\n".format(
                name, self.yaml_obj['max'])
        if 'closed' in self.yaml_obj:
            bool_str = 'false'
            if self.yaml_obj['closed']:
                bool_str = 'true'
            buf += "    shape_{0}->fields.cylinder.closed = {1};\n".format(
                name, bool_str)

        return buf
Exemplo n.º 3
0
    def c_repr(self, name, parent_name, offset, resources):
        material = Material.from_yaml(self.yaml_obj['material'])
        transform = Transform.from_yaml(self.yaml_obj['transform'])
        buf = """
    {2}
    {3}
    Shape shape_{0} = {1} + {4};
    cube(shape_{0});
    shape_set_material(shape_{0}, material_{0});
    shape_set_transform(shape_{0}, transform_{0});
""".format(name, parent_name, material.c_repr(name, resources),
           transform.c_repr(name), offset)

        return buf
Exemplo n.º 4
0
    def c_repr(self, name, parent_name, offset, resources):
        material = Material.from_yaml(self.yaml_obj['material'])
        transform = Transform.from_yaml(self.yaml_obj['transform'])
        buf = """
    {2}
    {3}
    Shape shape_{0} = {1} + {4};
    toroid(shape_{0});
    shape_{0}->fields.toroid.r1 = {5};
    shape_{0}->fields.toroid.r2 = {6};
    shape_set_material(shape_{0}, material_{0});
    shape_set_transform(shape_{0}, transform_{0});
""".format(name, parent_name, material.c_repr(name, resources),
           transform.c_repr(name), offset, self.yaml_obj['r1'],
           self.yaml_obj['r2'])

        return buf
Exemplo n.º 5
0
    def c_repr(self, name, parent_name, offset, resources):
        if 'material' not in self.yaml_obj:
            self.yaml_obj['material'] = {}
        if 'transform' not in self.yaml_obj:
            self.yaml_obj['transform'] = []
        material = Material.from_yaml(self.yaml_obj['material'])
        transform = Transform.from_yaml(self.yaml_obj['transform'])
        buf = """
    {1}
    {2}
    Point shape_{0}_p1 = point({3:.10f}, {4:.10f}, {5:.10f});
    Point shape_{0}_p2 = point({6:.10f}, {7:.10f}, {8:.10f});
    Point shape_{0}_p3 = point({9:.10f}, {10:.10f}, {11:.10f});
    Vector shape_{0}_n1 = vector({12:.10f}, {13:.10f}, {14:.10f});
    Vector shape_{0}_n2 = vector({15:.10f}, {16:.10f}, {17:.10f});
    Vector shape_{0}_n3 = vector({18:.10f}, {19:.10f}, {20:.10f});

    Shape shape_{0} = {21} + {22};
    smooth_triangle(shape_{0}, shape_{0}_p1->arr, shape_{0}_p2->arr, shape_{0}_p3->arr, shape_{0}_n1->arr, shape_{0}_n2->arr, shape_{0}_n3->arr);
    shape_set_material(shape_{0}, material_{0});
    shape_set_transform(shape_{0}, transform_{0});

    vector_free(shape_{0}_n3);
    vector_free(shape_{0}_n2);
    vector_free(shape_{0}_n1);
    point_free(shape_{0}_p3);
    point_free(shape_{0}_p2);
    point_free(shape_{0}_p1);
    
""".format(name, material.c_repr(name, resources), transform.c_repr(name),
           self.yaml_obj['p1'][0], self.yaml_obj['p1'][1],
           self.yaml_obj['p1'][2], self.yaml_obj['p2'][0],
           self.yaml_obj['p2'][1], self.yaml_obj['p2'][2],
           self.yaml_obj['p3'][0], self.yaml_obj['p3'][1],
           self.yaml_obj['p3'][2], self.yaml_obj['n1'][0],
           self.yaml_obj['n1'][1], self.yaml_obj['n1'][2],
           self.yaml_obj['n2'][0], self.yaml_obj['n2'][1],
           self.yaml_obj['n2'][2], self.yaml_obj['n3'][0],
           self.yaml_obj['n3'][1], self.yaml_obj['n3'][2], parent_name, offset)

        return buf