gpt4 book ai didi

c++ - 判断三角形的原点是否在三角形内部

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:18:58 30 4
gpt4 key购买 nike

我试图找出给定三角形的原点是在内部还是外部。

下面的代码总是给出Origin is not inside given triangle。我不知道为什么会这样,也不知道如何解决。

float distance(int x1, int y1,int x2,int y2)
{
int dis = (((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)));
float dis1 = sqrt(dis);
return dis1;
}

float AreaOfTriangle(float a, float b, float c)
{
float s = (a+b+c)/2;
float Area = sqrt(s*(s-a)*(s-b)*(s-c));
cout << Area << endl;
return Area;
}

int main()
{
float dis1 = distance(-1,-1,0,1);
float dis2 = distance(1,-1,-1,-1);
float dis3 = distance(0,1,1,-1);

float area = AreaOfTriangle(dis1,dis2,dis3);
float dis4 = distance(0,0,-1,-1);
float dis5 = distance(0,0,1,-1);

float area1 = AreaOfTriangle(dis2,dis4,dis5);
float dis6 = distance(0,1,0,0);

float area2 = AreaOfTriangle(dis1,dis4,dis6);
float area3 = AreaOfTriangle(dis3,dis5,dis6);
float a = area1 + area2 + area3;

cout << endl << a;

if(area == a)
{
cout << "Origin is Inside Given Triangle";
}
else
{
cout << "Origin is not Inside Given Triangle";
}

return 0;
}

最佳答案

我认为你可以做到这一点

考虑点 a、b 和 c (ax,ay)、(bx,by) 和 (cx,cy)

定义 A = ax + ay, B = bx + by 和 C = cx + cy

定义 z = y (B/A) + (1 -y) (C/A)

计算 y=0 和 y = 1 的 z。如果其中一个或两个值都在 0 和 1 之间,则三角形包含原点

关于c++ - 判断三角形的原点是否在三角形内部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29327451/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com