我在两个不同的平面上有椭圆光束的图像。我知道两个平面之间的距离(d =平面A和平面B之间的距离),并且知道了知道两个平面上椭圆的中心坐标计算出的旋转角theta(θ)。如何计算投射回光源原点的距离R?我可以找到从平面A到原点的距离(D)。我一直在想这个问题一段时间,不能完全弄明白。我想实现一个算法来计算R中的C#。编程部分很简单,但数学我不太确定如何去做。计算光束指向角度
计算光束指向角度
回答
如果图像拍摄用长焦透镜轴线刺穿束源,使得缩短和离轴效果是微不足道的,情况最好从右侧为您绘制它被观看。然后你有两个相同的直角三角形,在光源处有共同的顶点。
|^--..._
rA | rB| ^^__
|_____|______o (Pardon my ascii art skills.)
<--d-->
<--------x-->
你似乎知道或可以很容易找到的rA和rB从束源图像elipse中心平面的距离,也可为d平面间的距离。你想知道x。
对于这个刚刚成立的比例
x/rA = (x-d)/rB.
现在你可以很容易地解决对于x。
如果图像是从相对靠近光源的普通透镜拍摄的,则需要了解相机的几何图形,以便说明透视效果。即使这样,镜头失真也会导致错误,除非您知道很多关于相机的信息并进行一些精彩的更正。
谢谢你的回答。我认为我的问题和解释并不清楚,但你肯定是在正确的轨道上。根据你的绘制,我实际上想知道rA和rB(或者基本上是在平面A和平面B上投影时产生rA和rB的角度。实际上我知道d和X. – Patratacus
我只知道中心的位置在平面A(XA,YA)和平面B(XB,YB)上的椭圆和距离“d”分开两个平面,我可以测量距离“x”,我想计算矢量由每个平面上的点和矢量创建,如果光束在我的绘图中直接从平面中投射出来的话 – Patratacus
谢谢@Gene让我朝着正确的方向前进,没有你的回应,我无法想象通过问题和解决办法很烦人,人们总是认为数学与编程没有任何关系,如果不知道数学方法,就不能编码算法 – Patratacus
- 1. Android - 计算指南针角度度
- 2. 光束方向算法
- 3. 从速度计算角方向
- 4. 角度双向约束
- 5. 计算角度 - android
- 6. 角度计算cordanates
- 7. Android加速度计角度计算
- 8. 计算给定两个向量的椭圆弧开始和结束角度
- 9. SVG - 计算三角形内的角度方向
- 10. 计算元素的宽度 - 角度指令
- 11. 计算角加速度c#
- 12. 查看计算角度360
- 13. 计算2点的角度
- 14. 计算旋转角度
- 15. 角度绑定计算
- 16. 角度计算的Delaunay图
- 17. 如何计算角度
- 18. 精确角度计算
- 19. 计算移动的角度
- 20. 计算角度/曲率?
- 21. 旋转角度计算AS3
- 22. 计算饼图切片的开始和结束角度
- 23. 用Javascript计算三角形的角度?
- 24. 在WP7中计算量角器角度
- 25. 指向控制器的角度指令
- 26. 计算机视觉 - 找出相机在移动时指向什么角度?
- 27. 指数计算速度
- 28. 从高度和角度计算斜边
- 29. 根据强度计算光量半径
- 30. 使用光流计算实际速度
我不明白你问的问题 – argentage
我想我想通了。它只是使用2个向量的点积计算出角度。我画的插图真的不清楚。我应该画2个向量。一个从平面A到平面B(用(Vx,Vy,Vz)坐标称之为V),另一个只是平面表面矢量的法线(用(Nx,Ny,Nz)坐标称之为N)。我图中的R值就是两个向量之间的角度φ。计算cos(phi)= V dot B /(| V || N |)所以phi就是ArcCos(V dot N)/(| V || N |)。 – Patratacus