class_docstr: Cables are structures in engineering that support
  the applied transverse loads through the tensile
  resistance developed in its members.
  
  Cables are widely used in suspension bridges, tension
  leg offshore platforms, transmission lines, and find
  use in several other engineering applications.
  
  Examples
  ========
  A cable is supported at (0, 10) and (10, 10). Two point loads
  acting vertically downwards act on the cable, one with magnitude 3 kN
  and acting 2 meters from the left support and 3 meters below it, while
  the other with magnitude 2 kN is 6 meters from the left support and
  6 meters below it.
  
  >>> from sympy.physics.continuum_mechanics.cable import Cable
  >>> c = Cable(('A', 0, 10), ('B', 10, 10))
  >>> c.apply_load(-1, ('P', 2, 7, 3, 270))
  >>> c.apply_load(-1, ('Q', 6, 4, 2, 270))
  >>> c.loads
  {'distributed': {}, 'point_load': {'P': [3, 270], 'Q': [2, 270]}}
  >>> c.loads_position
  {'P': [2, 7], 'Q': [6, 4]}
class_docstr_tok: ["Cables","are","structures","in","engineering","that","support","the","applied","transverse","loads","through","the","tensile","resistance","developed","in","its","members",".","Cables","are","widely","used","in","suspension","bridges",",","tension","leg","offshore","platforms",",","transmission","lines",",","and","find","use","in","several","other","engineering","applications",".","Examples","========","A","cable","is","supported","at","(","0",",","10",")","and","(","10",",","10",")",".","Two","point","loads","acting","vertically","downwards","act","on","the","cable",",","one","with","magnitude","3","kN","and","acting","2","meters","from","the","left","support","and","3","meters","below","it",",","while","the","other","with","magnitude","2","kN","is","6","meters","from","the","left","support","and","6","meters","below","it",".",">",">",">","from","sympy.physics.continuum_mechanics.cable","import","Cable",">",">",">","c","=","Cable","(","(","'","A","'",",","0",",","10",")",",","(","'","B","'",",","10",",","10",")",")",">",">",">","c.apply_load","(","-1",",","(","'","P","'",",","2",",","7",",","3",",","270",")",")",">",">",">","c.apply_load","(","-1",",","(","'","Q","'",",","6",",","4",",","2",",","270",")",")",">",">",">","c.loads","{","'distributed","'",":","{","}",",","'point_load","'",":","{","'","P","'",":","[","3",",","270","]",",","'","Q","'",":","[","2",",","270","]","}","}",">",">",">","c.loads_position","{","'","P","'",":","[","2",",","7","]",",","'","Q","'",":","[","6",",","4","]","}"]
docstr: Initializes the class.
  
  Parameters
  ==========
  
  support_1 and support_2 are tuples of the form
  (label, x, y), where
  
  label : String or symbol
      The label of the support
  
  x : Sympifyable
      The x coordinate of the position of the support
  
  y : Sympifyable
      The y coordinate of the position of the support
docstr_tok: ["Initializes","the","class",".","Parameters","==========","support_1","and","support_2","are","tuples","of","the","form","(","label",",","x",",","y",")",",","where","label",":","String","or","symbol","The","label","of","the","support","x",":","Sympifyable","The","x","coordinate","of","the","position","of","the","support","y",":","Sympifyable","The","y","coordinate","of","the","position","of","the","support"]
code: def __init__(self, support_1, support_2):
      """
      Initializes the class.
  
      Parameters
      ==========
  
      support_1 and support_2 are tuples of the form
      (label, x, y), where
  
      label : String or symbol
          The label of the support
  
      x : Sympifyable
          The x coordinate of the position of the support
  
      y : Sympifyable
          The y coordinate of the position of the support
      """
      self._left_support = []
      self._right_support = []
      self._supports = {}
      self._support_labels = []
      self._loads = {"distributed": {}, "point_load": {}}
      self._loads_position = {}
      self._length = 0
      self._reaction_loads = {}
  
      if support_1[0] == support_2[0]:
          raise ValueError("Supports can not have the same label")
  
      elif support_1[1] == support_2[1]:
          raise ValueError("Supports can not be at the same location")
  
      x1 = sympify(support_1[1])
      y1 = sympify(support_1[2])
      self._supports[support_1[0]] = [x1, y1]
  
      x2 = sympify(support_2[1])
      y2 = sympify(support_2[2])
      self._supports[support_2[0]] = [x2, y2]
  
      if support_1[1] < support_2[1]:
          self._left_support.append(x1)
          self._left_support.append(y1)
          self._right_support.append(x2)
          self._right_support.append(y2)
          self._support_labels.append(support_1[0])
          self._support_labels.append(support_2[0])
  
      else:
          self._left_support.append(x2)
          self._left_support.append(y2)
          self._right_support.append(x1)
          self._right_support.append(y1)
          self._support_labels.append(support_2[0])
          self._support_labels.append(support_1[0])
  
      for i in self._support_labels:
          self._reaction_loads[Symbol("R_" + i + "_x")] = 0
          self._reaction_loads[Symbol("R_" + i + "_y")] = 0
  
file_path: sympy/sympy/physics/continuum_mechanics/cable.py
imports: from sympy.core.sympify import sympify
  from sympy.core.symbol import Symbol
label_desc: Use image node_id 1 to create a new Cable object  with example: obj = Cable(support_1, support_2)