码蹄集(在线编程--第五期)--- 三角形(C语言)

码蹄集(在线编程--第五期)--- 三角形(C语言),第1张

码蹄集(在线编程–第五期)— 三角形


前言

三角形

    **题目**:输入三角形的三个顶点坐标,和点N的坐标。判断N是否位于三角形内,输出YES或者NO。此题里,若点在三角形的三条边上,也当成是在内部的情况进行判定。
    输入格式:第一行输入三角形的三个顶点坐标(x1, y1) ,(x2, y2)和(x3, y3),第二行输入点N的坐标,整型,空格分隔。
    输出格式:输出YES或者NO
    样例1
    输入:0 0 20 0 10 30
    10 15
    输出: YES
一、如何判断点在三角形内部?

三角形ABC和一点P,三角形的三个顶点坐标A(x1, y1) ,B(x2, y2)和C(x3, y3),P(x,y)。

(因为是个小白中的小白,就先用手写的代替了嗷~)

二、代码

代码如下(示例):

#include
int main() 
{ 
    int x1,y1,x2,y2,x3,y3,x,y;
    double u,v;
    scanf("%d%d%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3,&x,&y);
    v=((y-y1)*(x3-x1)-(y3-y1)*(x-x1))/((y2-y1)*(x3-x1)-(y3-y1)*(x2-x1));
    u=(x-x1-v*(x2-x1))/(x3-x1);
    if((u>=0&&u<=1)&&(v>=0&&v<=1)&&(u+v<=1))
        printf("YES");
    else
        printf("NO");   
    return 0; 
}
总结

重要的是公式:AP=uAC+vAB(大写是向量,小写是数字)
还有u,v的条件:(u>=0&&u<=1)&&(v>=0&&v<=1)&&(u+v<=1)

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1295182.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存