code: def _compute_vectors(self):
          
  
          # Use 1 gigaparsec for stars whose parallax is zero.
  
          parallax = self.parallax_mas
          if parallax <= 0.0:
              parallax = 1.0e-6
  
          # Convert right ascension, declination, and parallax to position
          # vector in equatorial system with units of au.
  
          dist = 1.0 / sin(parallax * 1.0e-3 * ASEC2RAD)
          r = self.ra.radians
          d = self.dec.radians
          cra = cos(r)
          sra = sin(r)
          cdc = cos(d)
          sdc = sin(d)
  
          self._position_au = array((
              dist * cdc * cra,
              dist * cdc * sra,
              dist * sdc,
              ))
  
          # Compute Doppler factor, which accounts for change in light
          # travel time to star.
  
          k = 1.0 / (1.0 - self.radial_km_per_s / C * 1000.0)
  
          # Convert proper motion and radial velocity to orthogonal
          # components of motion with units of au/day.
  
          pmr = self.ra_mas_per_year / (parallax * 365.25) * k
          pmd = self.dec_mas_per_year / (parallax * 365.25) * k
          rvl = self.radial_km_per_s * DAY_S / self.au_km * k
  
          # Transform motion vector to equatorial system.
  
          self._velocity_au_per_d = array((
              - pmr * sra - pmd * sdc * cra + rvl * cdc * cra,
                pmr * cra - pmd * sdc * sra + rvl * cdc * sra,
                pmd * cdc + rvl * sdc,
                ))
docs: Compute the star's position as an ICRF position and velocity.