python - 在 Python 中进行矢量操作时出现问题。(垂直于参考矢量的矢量分量)
问题描述
我有一组坐标,我想对其进行操作并获得所需的结果。我需要找到某个向量相对于参考向量的水平投影,即如果 v1(x1,y1,z1) 表示参考单位向量并且 v2(x2,y2,z2) 是某个随机向量,我想找到v2 的投影垂直于 v1 的方向。
所需的图形表示如下,
https://drive.google.com/file/d/1i3RQm--nLc1dIdZGMpt7oc5KLahOJySk/view?usp=sharing
向量表示是必需的
https://drive.google.com/file/d/12QLIoIJ0wckLa8sIgJ8ynMaD33PWrgxQ/view?usp=sharing
我写的代码如下,
catalog=ascii.read("catalog.txt",'r',format='fixed_width_no_header', fast_reader=False, delimiter="\s",names=x,col_starts=y,col_ends=z)
x=[]
y=[]
z=[]
for i in range(0,len(catalog['PSRJ'])):
catalog['DECJD'][i] = catalog['DECJD'][i]+90
x.append(sin(catalog['DECJD'][i])*cos(catalog['RAJD'][i]))
y.append(sin(catalog['DECJD'][i])*sin(catalog['RAJD'][i]))
z.append(cos(catalog['DECJD'][i]))
coord=[]
for i in range(0,len(catalog['PSRJ'])):
coord.append([x[i],y[i],z[i]])
def norm(k):
p=[0.0,0.0,0.0]
p[0]=k[0]/(k[0]**2+k[1]**2+k[2]**2)**0.5
p[1]=k[1]/(k[0]**2+k[1]**2+k[2]**2)**0.5
p[2]=k[2]/(k[0]**2+k[1]**2+k[2]**2)**0.5
return([p[0],p[1],p[2]])
direc = norm(coord[]) #insert key for required coordinate
pix=[]
print(direc)
for i in range(0,len(catalog['PSRJ'])):
if a-5<=catalog['RAJD'][i]<=a+5 and b-5<=catalog['DECJD'][i]<=b+5:
pix.append(coord[i])
if pix[-1]==f:
p=len(pix)
print('p',pix)
val=pix
count=count+1
for i in range(0,count):
for j in range(0,3):
if not(i==p-1):
k=np.dot(direc,pix[i])
val[i][j]=direc[j]*k
val[i][j]=pix[i][j]-val[i][j]
else:
val[i][j]=0.0
print(val)
coord 是包含位置向量的列表,例如:[[x1,y1,z1],[x2,y2,z2]...]
f 为参考坐标,例如:[a,b,c]
输出:
[0.049780917594520344, 0.9791671435583665, -0.19685925230782697]
p= 1
[[0.049780917594520344, 0.9791671435583665, -0.19685925230782697]]
[[0.0, 0.0, 0.0]]
[-0.813400538291293, 0.4058994949023155, 0.41668353020665466]
p= 2
[[0.683288067396023, -0.16836586544306054, -0.7104719222515533], [-0.813400538291293, 0.4058994949023155, 0.41668353020665466]]
[[-0.0, -0.0, -0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]
[0.15331177729205145, -0.40555298841701465, 0.9011227843804535]
p= 2
[[0.08556174481590322, 0.8925106169941267, -0.4428362974924498], [0.15331177729205145, -0.40555298841701465, 0.9011227843804535]]
[[-0.0, -0.0, -0.0], [0.0, 0.0, 0.0], [-0.0, -0.0, -0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0], [0.0, 0.0, 0.0]]
[0.4561283699625753, 0.08868628538946206, 0.8854838524214335]
p= 3
[[0.016015167632180395, 0.07982154161648915, -0.9966805084377242], [-0.39320614327231507, 0.918593873485819, -0.03967649792044076], [0.4561283699625753, 0.08868628538946206, 0.8854838524214335]]
[[-0.0, -0.0, -0.0], [-0.0, 0.0, -0.0], [0.0, 0.0, 0.0]]
我得到的最终结果是空向量,我不知道是不是我的计算导致了这个问题,对这个问题的任何洞察都会有所帮助。
解决方案
推荐阅读
- amp-html - Prevent Google amp-autocomplete from closing/hiding for debugging purpose
- c# - How do i execute stored procedures that return single values from EFCore?
- r - 如何在 R 中计算这个总和?
- r - ggplot histogram: specifying the x axis limits make zero values disappear
- python - python / pandas - referencing the last column of a dataframe without typing it's name in a groupby calculation
- string - How to merge string options to a single string option in fsharp?
- vue.js - 在 Vue.js 中使用组合 API 扩展组件
- oracle - 将散列字符串 (SHA512) 从一个 Oracle DB 迁移到另一个?
- android - Unity 游戏未正确配置为使用 google play 游戏服务
- vba - 如何遍历 VBA 中的文本格式?