One issue you may be having is the mixture of sympy.vector, sympy.physics.vector, and sympy.geometry. These packages are not designed to work with each other currently. I recommend sticking to one of those depending on what you are trying to do.
moorepants.info +01 530-601-9791 On Mon, Jul 17, 2017 at 11:11 AM, <shoulddt...@gmail.com> wrote: > Hello all, > I am trying to use Sympy to model a multi-body dynamic system. I am trying > to create the required points and coordinate systems to model the system in > 3d. I am running into trouble creating symbolic points in 3 dimensions. I > can create the points as shown below, but whenever I attempt to perform a > math operation on the points, such as deriving the midpoint or distance, I > receive an error saying that "Point" is an unsupported type, or that the > "Point" has no x-attribute. > > What is the correct method for declaring a 3 dimensional point > symbolically, so that you can reference each component of it and perform > operations to it? After declaring the point, I need to use the .set_pos > function or an equivalent function to declare the position of the points. > > from __future__ import print_function, division > from sympy import symbols, simplify, Segment > from sympy.geometry import Point3D > from sympy.vector import * > from sympy.physics.mechanics import dynamicsymbols, ReferenceFrame, Point > from sympy.physics.vector import init_vprinting > init_vprinting(use_latex='mathjax', pretty_print=False) > > # Declare reference frames > inertial_frame = ReferenceFrame('inertial_frame') > Chassis_frame = ReferenceFrame('Chassis_frame') > LUCA_frame = ReferenceFrame('LUCA_frame') > > # Define the rotation angle symbols > thRoll, thPitch, thYaw = dynamicsymbols('thRoll, thPitch, thYaw') > thLUCAy = symbols('thLUCAy') ; thLUCAz = symbols('thLUCAz') > thLUCAx, thLLCAx, thRUCAx, thRLCAx = dynamicsymbols('thLUCAx, thLLCAx, > thRUCAx, thRLCAx') > > > # Define Position Components > ChassisDeltax = symbols('ChassisDeltax') > ChassisDeltay = symbols('ChassisDeltay') > ChassisDeltaz = symbols('ChassisDeltaz') > CGposx = symbols('CGposx') > CGposy = symbols('CGposy') > CGposz = symbols('CGposz') > LUCAMPx = symbols('LUCAMPx') > LUCAMPy = symbols('LUCAMPy') > LUCAMPz = symbols('LUCAMPz') > > # Set Positions > ChassisC.set_pos(GlobalCoord0,(ChassisDeltax * inertial_frame.x + > ChassisDeltay * inertial_frame.y + ChassisDeltaz * inertial_frame.z)) > CGpos.set_pos(ChassisC,(CGposx * Chassis_frame.x + CGposy * > Chassis_frame.y + CGposz * Chassis_frame.z)) > LUCAMP.set_pos(ChassisC,(LUCAMPx * Chassis_frame.x + LUCAMPy * > Chassis_frame.y + LUCAMPz * Chassis_frame.z)) > > # Center of Mass Locations > CoM_Chassis = Point('CoM_Chassis') > CoM_Chassis.set_pos(CGpos,0) > CoM_LUCA = Point('CoM_LUCA') > CoM_LUCA.set_pos(LUCAMP, ((LUCA_xOff / 2) * LUCA_frame.x + (LUCA_L / 2) * > LUCA_frame.y + 0 * LUCA_frame.z)) > > > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sympy+unsubscr...@googlegroups.com. > To post to this group, send email to sympy@googlegroups.com. > Visit this group at https://groups.google.com/group/sympy. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/sympy/fbea45f1-c15d-455a-901b-b5cb5d0ae199%40googlegroups.com > <https://groups.google.com/d/msgid/sympy/fbea45f1-c15d-455a-901b-b5cb5d0ae199%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscr...@googlegroups.com. To post to this group, send email to sympy@googlegroups.com. Visit this group at https://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAP7f1AikjJ3D8Ve5snsdF9NYo4DWVji6iZNZnDM612UfzgoUAw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.