我晕,我咋看不懂x1,x2,x3,y1,y2,y3是什么??
回复 11楼 若风001
楼主在这里应该是用来定义三角形3个点的坐标,可以从后面a、b、c的赋值式中判断出
1.原先的方法(简化下写) a = sqrt(a1 * a1 + b1 * b1) 【a1为(x1 - x2) * (x1 - x2),其他类似】 b = sqrt(a2 * a2 + b2 * b2) c = sqrt(a3 * a3 + b3 * b3) if(a + b > c && a + c > b && b + c > a)即可 2.任意不在同一位置的2点为一条直线,然后只要第3点到该直线的距离不为0即可 设三点a(x1, y1), b(x2, y2), c(x3, y3) //不妨选取a, b连成直线(条件是不在同一点) 设直线y = kx + b 斜率k = (y2 - y1) / (x2 - x1) 任意代入一点(a, b两点任选一点,假设代入a) y1 = ( (y2 - y1) / (x2 - x1) )x1 + b 即b = y1 - ( (y2 - y1) / (x2 - x1) )x1 则直线为y = ( (y2 - y1) / (x2 - x1) )x + y1 - ( (y2 - y1) / (x2 - x1) )x1 转化为Ax + By + C = 0的形式 ( (y2 - y1) / (x2 - x1) )x - y + y1 - ( (y2 - y1) / (x2 - x1) )x1 = 0 即 kx - y +y1 - kx1 = 0 接下来计算c(x3, y3)到直线的距离 d = abs(kx3 - y3 + y1 - kx1) / sqrt(k * k + 1) = abs( (x3 - x1)k + y1 - y3 ) / sqrt(k * k + 1) 显然可知,以上所有因子都可由已知条件直接获取....! 若d > 0 则是,否则不是 时间也不早了,粗略的算了一下 方法一大概执行45次运算,方法二大概执行11次运算,再加上判断a,b是否共点最多20左右不超过30次运算