已知曲线上三点,如何求中间一点的法向量。
如下图,已知 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;
}
已知曲线上三点,如何求中间一点的法向量。相关推荐
- 已知圆上任意两点求圆心和半径_已知圆上三点坐标求圆心和半径
R半径 PCenter圆点坐标 public void GetCircular(PointF P1,PointF P2,PointF P3,ref float R,ref PointF PCenter ...
- 已知圆上三点坐标求圆心和半径
R半径 PCenter圆点坐标 public void GetCircular(PointF P1,PointF P2,PointF P3,ref float R,ref PointF PCenter ...
- 已知圆上三点坐标求圆心?
#include <stdio.h> int main() {float a,b,c,d,e,f,A,B,C,D,E,F;printf("输入横坐标:");scanf( ...
- java 三边求面积_已知三角形的三边长如何求面积?
展开全部 各类三角形求面积方式如下所示: 1.已知e69da5e6ba9062616964757a686964616f31333365666264三角形底a,高h,则 S=ah/2 2.已知三角形三边 ...
- 【C#】已知圆心上的三点求圆心
已知圆心上的三点:,, ,求圆心: 把三点坐标圆的方程: 得: 把 展开整理得: 令 ; ; , , , 求 求 把 移项整理得: 把 移项整理得: 还原代入式子: 整理结果 简化: 其中: ...
- C语言编程b a化简,C语言编程,已知三角形的三边长a,b,c,计算求三角... 如果三角形三边长 a,b,c,满足( )那么这个三角形......
导航:网站首页 > C语言编程,已知三角形的三边长a,b,c,计算求三角... 如果三角形三边长 a,b,c,满足( )那么这个三角形... C语言编程,已知三角形的三边长a,b,c,计算求三角 ...
- java 球面距离_[置顶] C语言实验题:已知地球上两点的经度和纬度求其球面距离...
要求:地球的平均半径为6371千米,已知地球上两个城市A.B的经度和纬度,编程序求出这两个城市之间的地面距离. 首先,固定两点,a(x1,y1,z1),b(x2,y2,z2). 由空间解析几何及向量知 ...
- 小程序转盘抽奖,已知圆心、半径、角度求圆上点的坐标
因公司的需求,要在小程序语音房内部迭代一个真心话大冒险的功能,也等同于幸运转盘: 业务场景: 发送一个socket,拿到响应的结果,根据返回的数值开始启动幸运转盘,由于转盘上的人数不是固定的,所以要根 ...
- 已知直线上两点求其一般式
已知直线上两点P1 P2,求直线的一般式方程. 已知直线上的两点P1(X1,Y1) P2(X2,Y2), P1 P2两点不重合.求该直线的一般式方程AX+BY+C=0 解当x1=x2时,直线方程为x- ...
最新文章
- AI算法 真的能算出人类的欲望吗?
- 【PAT (Advanced Level) Practice】1149 Dangerous Goods Packaging (25 分)
- 小米、360、京东之后 阿里联手美的杀入智能家居市场
- 【Java】探究Java数组的本质
- mysql增备脚本--xtrabackup实现
- MySQL 错误 1366:1366 Incorrect integer value
- android 多个style,Android样式的开发_style篇
- python(45)内置函数:os.system() 和 os.popen()
- easyexcel 工具类_阿里程序员常用的 15 款开发者工具~
- TTPlayer越来越靓了
- HTML sublime :Please wait a bit while PyV8 binary is being downloaded 及代码和注释颜色 ,大小调节
- asterisk queue 队列
- 机器字长 存储字长 指令字长 机器字长
- vue学习笔记-vue双向数据绑定
- docker 升级版本
- jsp实现简易计算器
- matlab 方差,方差分解——matlab 代码
- iOS小技能:iOS15崩溃排查技巧(symbolicatecrash符号化分析问题、导出和隐藏符号)
- 一个通证经济典型案例——移动广告矿机
- Biotin-PEG-SH生物素-聚乙二醇-巯基结构式;SH-PEG-Biotin
热门文章
- CC2530+PA(CC2590)开启功率放大模块功能说明
- 【完结】囚生CYの备忘录(20221121-20230123)
- 塞尔达传说顺序_您可能错过的有争议的塞尔达传说
- 如何改变图片的尺寸大小得到一张缩小后的图片
- 超准的普通话水平测试,敢不敢进来做一下!
- 通过 JFR 与日志深入探索 JVM - 调试 JVM 的工具 WhiteBox API
- table表格表头合并单元格问题
- EPUB和PDF的区别,有什么好用的epub阅读器
- 【2021春招】2021年阿里笔试真题3.6/3.8/3.10/3.12记录
- 经典编程习题,用Java实现:矩阵转置、最大公约数和最小公倍数、计算自然对数的底e的值、输出1000以内的回文素数、判断两个年份之间的平闰年情况。