我应该编写计算三角形边界框的代码。 边界框坐标应写入
triangle-> bx,triangle-> by,triangle-> bw,triangle-> bh
其中
bx,by是框的左上角 bw,bh是盒子的宽度和高度
我是否将我的点视为坐标,还是应该选择更基于几何的解决方案?
我尝试找到每个坐标的最小值和最大值,但它不起作用。任何帮助将不胜感激!
tappeto.storico = [(date, nr_bought)]
答案 0 :(得分:3)
要查找包含三角形的框的边界,您只需要从构成三角形的三个坐标中找到最小和最大的x和y坐标。您可以使用三元表达式进行比较,这使得代码不那么难看。在下面的代码中,我将x和y三角形坐标移植到单独的变量中,以便更容易读取三元表达式。
int sx1 = triangle->sx1;
int sx2 = triangle->sx2;
int sx3 = triangle->sx3;
int sy1 = triangle->sy1;
int sy2 = triangle->sy2;
int sy3 = triangle->sy3;
int xmax = sx1 > sx2 ? (sx1 > sx3 ? sx1 : sx3) : (sx2 > sx3 ? sx2 : sx3);
int ymax = sy1 > sy2 ? (sy1 > sy3 ? sy1 : sy3) : (sy2 > sy3 ? sy2 : sy3);
int xmin = sx1 < sx2 ? (sx1 < sx3 ? sx1 : sx3) : (sx2 < sx3 ? sx2 : sx3);
int ymin = sy1 < sy2 ? (sy1 < sy3 ? sy1 : sy3) : (sy2 < sy3 ? sy2 : sy3);
triangle->bx = xmin;
triangle->by = ymax;
triangle->bw = xmax - xmin;
triangle->bh = ymax - ymin;
答案 1 :(得分:0)
我可能在这个问题上迟到了,但如果你有矢量化,你可以做:
vec3 v1;
vec3 v2;
vec3 v3;
aabb->min = min(v1,min(v2,v3));
aabb->max = max(v1,max(v2,v3));