请选择 进入手机版 | 继续访问电脑版

分子模拟论坛 Molecular Simulation Forums

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 201|回复: 2

求平面法线的公式?

[复制链接]

438

主题

1151

帖子

2746

积分

金牌会员

Rank: 6Rank: 6

积分
2746
发表于 2008-8-20 10:13:00 | 显示全部楼层 |阅读模式
已知三点 A1【x1 y1 z1】,A2[x2,y2,z2],A3[x3,y3,z3]确定的平面,怎么求平面的法线呢,我记得高等数学上有个公式,给忘了。
还有两平面法线的cos夹角?公式?
回复

使用道具 举报

46

主题

246

帖子

544

积分

高级会员

Rank: 4

积分
544
发表于 2008-8-20 10:31:00 | 显示全部楼层
对于象三角形这样的多边形来说,多边形两条相互不平行的边的叉积就是多边形的法线。
用方程 ax + by + cz = d 表示的平面,向量 (a,b,c) 就是其法线。
如果曲面 S 用隐函数表示,点集合 (x,y,z) 满足 F(x,y,z) = 0,那么在点 (x,y,z) 处的曲面法线用梯度表示
回复

使用道具 举报

438

主题

1151

帖子

2746

积分

金牌会员

Rank: 6Rank: 6

积分
2746
 楼主| 发表于 2008-8-20 11:21:00 | 显示全部楼层
搞定了,呵呵,查了书
已知六点求法线夹角
double fcos(double x1,double y1,double z1,double x2,double y2,double z2,double x3,double y3,double z3,
double x11,double y11,double z11,double x22,double y22,double z22,double x33,double y33,double z33){
double vect1[3],vect2[3],nomal1[3],nomal2[3];
vect1[0] = x2 - x1;vect1[1] = y2 - y1;vect1[2] = z2 - z1;
vect2[0] = x3 - x1;vect2[1] = y3 - y1;vect2[2] = z3 - z1;
//平面一法线
nomal1[0] = vect1[1]*vect2[2] - vect1[2]*vect2[1];
nomal1[1] = vect1[2]*vect2[0] - vect1[0]*vect2[2];
nomal1[2] = vect1[0]*vect2[1] - vect1[1]*vect2[0];
vect1[0] = x22 - x11;vect1[1] = y22 - y11;vect1[2] = z22 - z11;
vect2[0] = x33 - x11;vect2[1] = y33 - y11;vect2[2] = z33 - z11;
//平面二法线
nomal2[0] = vect1[1]*vect2[2] - vect1[2]*vect2[1];
nomal2[1] = vect1[2]*vect2[0] - vect1[0]*vect2[2];
nomal2[2] = vect1[0]*vect2[1] - vect1[1]*vect2[0];
//返回cos
return(-1 * fabs(nomal1[0]*nomal2[0]+nomal1[1]*nomal2[1]+nomal1[2]*nomal2[2])
/(sqrt(SQR(nomal1[0])+SQR(nomal1[1])+SQR(nomal1[2]))*sqrt(SQR(nomal2[0])+SQR(nomal2[1])+SQR(nomal2[2]))));
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|分子模拟论坛

GMT+8, 2019-12-11 23:10 , Processed in 0.078651 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表