Discover Learn Reference Get OpenPLXSearch Contact

MachineModeling/Components/Primitive/Link/Traits/ConvexShape.openplx

ConvexShape

trait ConvexShape:
    in_between_axis is Math.Vec3: (connector_1.position-connector_2.position).normal()
    cross_axis is Math.Vec3: connector_1.main_axis.cross(in_between_axis).normal()
    shape_width is Real: 0.01
    shape_height is Real: 0.05
    body.geometry is Physics3D.Geometries.ConvexMesh:
        vertices: [connector_1.position, connector_2.position,
                   connector_1.position + connector_1.main_axis * -shape_width + cross_axis * -shape_height, connector_2.position + connector_2.main_axis * -shape_width + cross_axis * -shape_height,
                   connector_1.position + connector_1.main_axis * shape_width + cross_axis * -shape_height, connector_2.position + connector_2.main_axis * shape_width + cross_axis * -shape_height,
                   connector_1.position + connector_1.main_axis * -shape_width + cross_axis * shape_height, connector_2.position + connector_2.main_axis * -shape_width + cross_axis * shape_height,
                   connector_1.position + connector_1.main_axis * shape_width + cross_axis * shape_height, connector_2.position + connector_2.main_axis * shape_width + cross_axis * shape_height]
    body.visual is Visuals.Geometries.ConvexMesh:
        vertices: body.geometry.vertices

OpenPLX is a work in progress. This draft version will evolve with user feedback and experience. We welcome your input and collaboration.
X