如下图,已知 A、B、C 三个点,求 B 点的 法向量,即(fCosSita, fSinSita),Sita 为 法线按逆时针方向和水平方向的夹角。

先计算线段AB的单位垂线段2,再计算线段BC 的单位垂线段1,最后对 1 和 2 求和,得到3,即为 B 点的法线。

代码如下:

void CalcNormVec(POINT& ptA, POINT& ptB, POINT& ptC, float* pfCosSita, float* pfSinSita)
{
//先用B点坐标减A点坐标。
float fVec1_x = ptB.x - ptA.x;
float fVec1_y = ptB.y - ptA.y;
//单位化。
float fMod = sqrt(fVec1_x * fVec1_x + fVec1_y * fVec1_y);
fVec1_x /= fMod;
fVec1_y /= fMod;
//计算垂线。
float fPerpendicularVec1_x = -fVec1_y;
float fPerpendicularVec1_y = fVec1_x;
//再用C点坐标减B点坐标。
float fVec2_x = ptC.x - ptB.x;
float fVec2_y = ptC.y - ptB.y;
//单位化。
fMod = sqrt(fVec2_x * fVec2_x + fVec2_y * fVec2_y);
fVec2_x /= fMod;
fVec2_y /= fMod;
//计算垂线。
float fPerpendicularVec2_x = -fVec2_y;
float fPerpendicularVec2_y = fVec2_x;
//求和。
float fSumX = fPerpendicularVec1_x + fPerpendicularVec2_x;
float fSumY = fPerpendicularVec1_y + fPerpendicularVec2_y;
//单位化。
fMod = sqrt(fSumX * fSumX + fSumY * fSumY);
float fCosSita = fSumX / fMod;
float fSinSita = fSumY / fMod;
if (pfCosSita)
*pfCosSita = fCosSita;
if (pfSinSita)
*pfSinSita = fSinSita;
return;
}

已知曲线上三点,如何求中间一点的法向量。相关推荐

  1. 已知圆上任意两点求圆心和半径_已知圆上三点坐标求圆心和半径

    R半径 PCenter圆点坐标 public void GetCircular(PointF P1,PointF P2,PointF P3,ref float R,ref PointF PCenter ...

  2. 已知圆上三点坐标求圆心和半径

    R半径 PCenter圆点坐标 public void GetCircular(PointF P1,PointF P2,PointF P3,ref float R,ref PointF PCenter ...

  3. 已知圆上三点坐标求圆心?

    #include <stdio.h> int main() {float a,b,c,d,e,f,A,B,C,D,E,F;printf("输入横坐标:");scanf( ...

  4. java 三边求面积_已知三角形的三边长如何求面积?

    展开全部 各类三角形求面积方式如下所示: 1.已知e69da5e6ba9062616964757a686964616f31333365666264三角形底a,高h,则 S=ah/2 2.已知三角形三边 ...

  5. 【C#】已知圆心上的三点求圆心

    已知圆心上的三点:,, ,求圆心: 把三点坐标圆的方程: 得: 把  展开整理得: 令 ; ; , , ,  求 求 把  移项整理得: 把  移项整理得: 还原代入式子: 整理结果 简化: 其中: ...

  6. C语言编程b a化简,C语言编程,已知三角形的三边长a,b,c,计算求三角... 如果三角形三边长 a,b,c,满足( )那么这个三角形......

    导航:网站首页 > C语言编程,已知三角形的三边长a,b,c,计算求三角... 如果三角形三边长 a,b,c,满足( )那么这个三角形... C语言编程,已知三角形的三边长a,b,c,计算求三角 ...

  7. java 球面距离_[置顶] C语言实验题:已知地球上两点的经度和纬度求其球面距离...

    要求:地球的平均半径为6371千米,已知地球上两个城市A.B的经度和纬度,编程序求出这两个城市之间的地面距离. 首先,固定两点,a(x1,y1,z1),b(x2,y2,z2). 由空间解析几何及向量知 ...

  8. 小程序转盘抽奖,已知圆心、半径、角度求圆上点的坐标

    因公司的需求,要在小程序语音房内部迭代一个真心话大冒险的功能,也等同于幸运转盘: 业务场景: 发送一个socket,拿到响应的结果,根据返回的数值开始启动幸运转盘,由于转盘上的人数不是固定的,所以要根 ...

  9. 已知直线上两点求其一般式

    已知直线上两点P1 P2,求直线的一般式方程. 已知直线上的两点P1(X1,Y1) P2(X2,Y2), P1 P2两点不重合.求该直线的一般式方程AX+BY+C=0 解当x1=x2时,直线方程为x- ...

最新文章

  1. AI算法 真的能算出人类的欲望吗?
  2. 【PAT (Advanced Level) Practice】1149 Dangerous Goods Packaging (25 分)
  3. 小米、360、京东之后 阿里联手美的杀入智能家居市场
  4. 【Java】探究Java数组的本质
  5. mysql增备脚本--xtrabackup实现
  6. MySQL 错误 1366:1366 Incorrect integer value
  7. android 多个style,Android样式的开发_style篇
  8. python(45)内置函数:os.system() 和 os.popen()
  9. easyexcel 工具类_阿里程序员常用的 15 款开发者工具~
  10. TTPlayer越来越靓了
  11. HTML sublime :Please wait a bit while PyV8 binary is being downloaded 及代码和注释颜色 ,大小调节
  12. asterisk queue 队列
  13. 机器字长 存储字长 指令字长 机器字长
  14. vue学习笔记-vue双向数据绑定
  15. docker 升级版本
  16. jsp实现简易计算器
  17. matlab 方差,方差分解——matlab 代码
  18. iOS小技能:iOS15崩溃排查技巧(symbolicatecrash符号化分析问题、导出和隐藏符号)
  19. 一个通证经济典型案例——移动广告矿机
  20. Biotin-PEG-SH生物素-聚乙二醇-巯基结构式;SH-PEG-Biotin

热门文章

  1. CC2530+PA(CC2590)开启功率放大模块功能说明
  2. 【完结】囚生CYの备忘录(20221121-20230123)
  3. 塞尔达传说顺序_您可能错过的有争议的塞尔达传说
  4. 如何改变图片的尺寸大小得到一张缩小后的图片
  5. 超准的普通话水平测试,敢不敢进来做一下!
  6. 通过 JFR 与日志深入探索 JVM - 调试 JVM 的工具 WhiteBox API
  7. table表格表头合并单元格问题
  8. EPUB和PDF的区别,有什么好用的epub阅读器
  9. 【2021春招】2021年阿里笔试真题3.6/3.8/3.10/3.12记录
  10. 经典编程习题,用Java实现:矩阵转置、最大公约数和最小公倍数、计算自然对数的底e的值、输出1000以内的回文素数、判断两个年份之间的平闰年情况。