def turnFromSun(self, sun, radAway): lineToSun = sun.pos - self.pos lsDir = lineToSun / np.linalg.norm(lineToSun) #self.alignToPos2D(lsDir) lsRad = mappingUtils.dirToRadians2D(lsDir) lsRad += (np.pi / 6) lsRad = mappingUtils.radModPlusMinusPi(lsRad) self.alignToRad2D(lsRad)
def alignToDir2D(self, newDir): self.sailDir = newDir self.n = -newDir self.rot = mappingUtils.dirToRadians2D(newDir) # transverse direction points to sail "right" (not "left"), # relative to sail norm and orbit plane tRadians = self.rot + (np.pi / 2.0) self.t = mappingUtils.radiansToDir2D(tRadians)
def alignToPos2D(self, location): relPos = location - self.pos self.sailDir = relPos / np.linalg.norm(relPos) self.n = -self.sailDir self.rot = mappingUtils.dirToRadians2D(self.sailDir) # transverse direction points to sail "right" (not "left"), # relative to sail norm and orbit plane tRadians = self.rot + (np.pi / 2.0) self.t = mappingUtils.radiansToDir2D(tRadians)
def testEccOCR(numSteps): startRad = -2 * np.pi radChange = 1.5 * np.pi radChange = radChange / numSteps radArray = np.zeros(numSteps) rDirArray = np.zeros((numSteps, 2)) fDirArray = np.zeros((numSteps, 2)) rAngleArray = np.zeros(numSteps) fAngleArray = np.zeros(numSteps) dotArray = np.zeros(numSteps) coneArray = np.zeros(numSteps) for i in range(numSteps): rad = startRad + i * radChange rDir = mappingUtils.radiansToDir2D(rad) fDir = mappingUtils.radiansToDir2D(rad + np.pi / 2) rAngle = mappingUtils.dirToRadians2D(rDir) * (180 / np.pi) fAngle = mappingUtils.dirToRadians2D(fDir) * (180 / np.pi) dP = rDir.dot(fDir) cA = coneRadForMaxF2D(rDir, fDir) radArray[i] = rad rDirArray[i] = rDir fDirArray[i] = fDir rAngleArray[i] = rAngle fAngleArray[i] = fAngle dotArray[i] = dP * 100 coneArray[i] = cA * (180 / np.pi) pltR = rDirArray.T pltF = fDirArray.T * 1.2 ''' plt.plot(rAngleArray) plt.plot(fAngleArray) plt.plot(dotArray) plt.show() ''' plt.plot(coneArray) plt.show()
def coneRadToDir2D(rayDir, coneRad): rayRad = mappingUtils.dirToRadians2D(rayDir) coneDir = mappingUtils.radiansToDir2D(rayRad + coneRad) return coneDir