【发布时间】:2017-02-19 19:33:02
【问题描述】:
我应该编写代码来计算三角形的边界框。 边界框坐标应写入
triangle->bx, triangle->by, triangle->bw, triangle->bh
在哪里
bx, by is the upper left corner of the box
bw, bh is the width and height of the box
我应该将我的点视为坐标还是应该选择更基于几何的解决方案?
我尝试找到每个坐标的最小值和最大值,但没有奏效。任何帮助将不胜感激!
if (triangle->sx1 <= triangle->sx2 <= triangle->sx3)
{
triangle->bx = triangle->sx1;
}
else if (triangle->sx2 <= triangle->sx1 <= triangle->sx3)
{
triangle->bx = triangle->sx2;
}
else (triangle->bx = triangle->sx3);
if (triangle->sy1 <= triangle->sy2 <= triangle->sy3)
{
triangle->by = triangle->sy1;
}
else if (triangle->sy2 <= triangle->sy1 <= triangle->sy3)
{
triangle->by = triangle->sy2;
}
else (triangle->by = triangle->sy3);
if (triangle->sx1 >= triangle->sx2 >= triangle->sx3)
{
triangle->bw = triangle->sx1;
}
else if (triangle->sx2 >= triangle->sx1 >= triangle->sx3)
{
triangle->bw = triangle->sx2;
}
else (triangle->bw = triangle->sx3);
if (triangle->sy1 >= triangle->sy2 >= triangle->sy3)
{
triangle->bh = triangle->sy1;
}
else if (triangle->sy2 >= triangle->sy1 >= triangle->sy3)
{
triangle->bh = triangle->sy2;
}
else (triangle->bh = triangle->sy3);
【问题讨论】:
-
你不能这样进行三重比较,你必须成对比较。
-
好的。猜猜必须有比对每个案例都进行 if 测试更好的方法。
-
您必须对每种情况进行 if 测试,但要使用正确的语言语法。
-
否则你的想法是找到最小值和最大值是要走的路,只需正确进行比较即可。
-
一旦您允许框旋转,三角形就会有不止一个边界框。