栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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


前言

三角形

    **题目**:输入三角形的三个顶点坐标,和点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)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/920235.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号