已知空间中一个平面和一个点,如何求平面上圆的方程

不若人生一场醉 2010-12-08 05:48:47
已知空间中有一个平面(n,d),n为归一化后的法向量,和该平面上的一个点a(x,y,z),如何求出以a为圆心,半径为r,位于该平面上圆的方程?
类似于这么个效果,月球围绕地球的地轴公转,现在知道地球的地轴(法向量)和地球的位置(x,y,z),可以求出公转的这个面,假设公转轨道为圆形,我现在想求这个圆形轨道的方程。
...全文
751 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
感谢楼上各位回复,还是我的原始思路不对,经同事指点看了MS的DXUT框架里面摄像机部分的源代码,这个问题现在已经解决了,可以先在y=0这个水平面上生成一个圆,再使用四元数通过角度计算出旋转矩阵把这个圆变换到正确的位置,以前我的思路是在y=0这个水平面上生成圆后,一定要求出与公转向量垂直的一个旋转向量从而求出旋转矩阵把这个圆变换到旋转轨道的重合位置,而这个旋转向量在轨道圆上,所以首先要求出一个轨道上的点才能求出这个旋转向量,结果就卡在这里了。

另外,用什么方法求
x^2+y^2+z^2=r^2
a*x+b*y+c*z=0(其中a,b,c,r都已知)
这个方程组的一个解比较高效一点?
  • 打赏
  • 举报
回复
哥哥我笑了。
图形学中 图形如何表示是一个重要的问题,对计算的难度效率有重大影响
通常情况下 空间圆表示 1 平面 (或者局部坐标系) 2圆心 半径
平面的表示 空间点 法向 u向(相当于x轴) v向(相当于y轴)
问题ok了

class CBody1
.......
CAxissys m_Axissys (或者CPlane m_plane)
POINT m_Center; //实体的中心
double m_dRadius;//实体的半径
void draw(CView* i_pView)
{
m_Axissys->loacaltoworld(&Martix);

方案1 若实体已经算出来了 也就是算出了 表示实体的面 对面转制到世界作标系位置 显示面
CMatrix Martix;
FaceList.transform(Martix);
显示所有面
。。。。。。
//方案2 实体没有算出来,当前计算
m_Axissys->loacaltoworld(&m_Center);
m_Axissys->loacaltoworld(&dRadius);
利用半径 中心算 球的面 然后显示

}
上面是思路 你看看吧

fengbingchun 2010-12-09
  • 打赏
  • 举报
回复
用matlab吧,比较简单
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 visualeleven 的回复:]
你得先把计算公式推导出来吧
[/Quote]
对,有进展,假设旋转轴是向量v(a,b,c)即这个圆轨道的法线,点(0,0,0)为圆轨道的圆心,半径r,这些已知,假设那个圆形轨道上的点是v'(x,y,z)未知,由于v是法向量,那可以推出一个方程,v点乘v'=0,就是 a*x+b*y+c*z=0,另外圆轨道上的点符合勾股定理,半径为v'的模,还有一个方程,|v'|^2=r^2=x^2+y^2+z^2,最后这个轨道方程应该是这这个方程组,
x^2+y^2+z^2=r^2
a*x+b*y+c*z=0
那我要求出这个方程组的2个解,如何求?
ZRSRSS 2010-12-09
  • 打赏
  • 举报
回复
期待,学习中
Eleven 2010-12-09
  • 打赏
  • 举报
回复
你得先把计算公式推导出来吧
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sd6814466 的回复:]
不难,方程组,式1为球面方程,式2为平面方程
平面与球面的相交曲线就是所求的空间曲线
[/Quote]
是这个意思,但如何编码?我这个问题是我写的一个d3d程序中遇到的一个问题,空间中一个物体绕另外一个物体作圆周旋转,这个旋转轴可以是任何一个向量,所以物体做位移变换的时候必须被放置在正确的位置,就是它的圆形轨道上,这问题看起来简单啊,法线知道,圆心知道,旋转矩阵可以求出来,可就是不知道怎么求这个位移矩阵,是不是我的考虑方法哪里不对?
用户 昵称 2010-12-09
  • 打赏
  • 举报
回复
是一个球与一个平面的交集吗?
zhuyanwei 2010-12-09
  • 打赏
  • 举报
回复
你没把比要的东西说清楚,其实(n,d,a,r)已经代表了1个圆
你是不是要求圆上的n个离散点啊?还是要方程?

要离散点找我,给你解决

sd6814466 2010-12-08
  • 打赏
  • 举报
回复
不难,方程组,式1为球面方程,式2为平面方程
平面与球面的相交曲线就是所求的空间曲线
yihandrensunyong 2010-12-08
  • 打赏
  • 举报
回复
这个是真的难、。。。。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧