帮我编一个判断点在三角形内的C语言程序在控制机器人的程序中用,用向量的方法判断一个点是不是在某个三角形内

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/13 10:47:12
帮我编一个判断点在三角形内的C语言程序在控制机器人的程序中用,用向量的方法判断一个点是不是在某个三角形内

帮我编一个判断点在三角形内的C语言程序在控制机器人的程序中用,用向量的方法判断一个点是不是在某个三角形内
帮我编一个判断点在三角形内的C语言程序
在控制机器人的程序中用,用向量的方法判断一个点是不是在某个三角形内

帮我编一个判断点在三角形内的C语言程序在控制机器人的程序中用,用向量的方法判断一个点是不是在某个三角形内
数学知识啊.
假设三角形三个顶点 A (x1,y1),B (x2,y2),C (x3,y3),需要判定的点 P (x0,y0)
现在,以A 为原点,判断向量 AP,与 AB,AC 的关系,最简单的办法就是看它们的向量积
AP x AB = [ (x0 - x1)* (y2 - y1) - (x2 - x1)*(y0 - y1) ] i = Kb i
其中 i 是垂直于平面方向的单位向量
AP x AC = [ (x0 - x1)* (y3 - y1) - (x3 - x1)*(y0 - y1) ] i = Kc i
如果 AP 在 AB,AC 之间,那么 Kb,Kc 符号相反,看起来比较聪明的方式是把他们相乘,不过这显然增加了运算量,其实还是用逻辑判断比较好,
double Kb,Kc;
Kb = (x0 - x1)* (y2 - y1) - (x2 - x1)*(y0 - y1);
Kc = (x0 - x1)* (y3 - y1) - (x3 - x1)*(y0 - y1);
if ( ((0 > Kb) && (0 < Kc)) || ((0 < Kb) && (0 > Kc)) ) PinBC = 1;
else PinBC = 0;
.
然后,以 B,C 为原点,分别判断 PinAC,PinAB.
PinBC,PinAC,PinAB 只要有一个不满足,就可以判断 P 不在三角形内了.
可以写成函数比较简洁
int PinAB ( double x0,double y0,double x1,double y1,double x2,double y2)
{
double Kb,Kc;
Kb = x0*y1 - x1*y0;
Kc = x0*y2 - x2*y1;
if ( ((0 > Kb) && (0 < Kc)) || ((0 < Kb) && (0 > Kc)) ) return 1;
return 0;
}
int PinABC ( double x0,double y0,double x1,double y1,double x2,double y2,double x3,double y3)
{
if ( PinAB ( x0 - x1,y0 -y1,x2 - x1,y2 - y1,x3 - x1,y3 - y1) &&
PinAB ( x0 - x2,y0 -y2,x3 - x2,y3 - y2,x1 - x2,y1 - y2) &&
PinAB ( x0 - x3,y0 -y3,x2 - x3,y2 - y3,x1 - x3,y1 - y3) ) return 1;
return 0;
}
当然这个算法没能利用 cpu 的向量计算能力,如果 cpu 支持向量计算,直接算向量的差/积要快不少.

帮我编一个判断点在三角形内的C语言程序在控制机器人的程序中用,用向量的方法判断一个点是不是在某个三角形内 C语言 判断点在第几象限 用C 如何判断点是否在矩形内 c语言里判断点(x.y)在第一象限的表达式 判断点与三角形的关系及绘图 c语言 设计一个合理的算法以判定给定点与三角形的关系,即一个定点是否在三角形内.要求1. 输入点和三角形的坐标信息.2.按坐标信息绘制相应图形.3.判定给定 c++ 怎么判断一个点在三角形内已知三角形3点(x1,y1),(x2,y2),(x3,y3)和任意1点(x,y),怎么用程序判断点(x,y)在三角形内 判断点是否在多边形内的5种方法 判断点是否在多边形内的5种方法 谁帮我用C语言编一个程序求任意圆的面积? 用C语言判断点与三角形的位置关系Description 读入一点的坐标和三角形的顶点坐标,判断该点在三角形内,在三角形边界上,还是在边界之外.Input 4个点坐标,每个一行.Output 点在三角形内,输出In 点 编一个C语言程序--求f(x)在a,b上的定积分 如何用降阶法求解四阶行列式的计算,请帮我编一个C语言程序. 如何判断点在半个椭圆内如何判断点在以椭圆长内抽为对称线的一半椭圆内 我用C语言编了一个程序,从键盘输入一个表达式,经过运算,会在屏幕上输出结果 怎么给这个程序做一个最简我现在就要做一个这样的程序, 在C语言中 我如果不知道输出数据的类型 怎么办?比如 写一个程序输出10/3+9%3-(-1)/5的值 怎么编? 在语言处理程序中,解释程序的功能是() A.解释执行高级语言程序 B.将汇编语言程序编译成目标程序 C.解释执行汇编语言程序 D.将高级语言程序编译成目标程序 快速判断点是否在自交多边形内的方法 谁能帮我编一个C语言程序?任意输入两个整数,输出它们的最大公约数