用于解决方案的C ++替代算法

时间:2013-11-27 09:38:31

标签: c++ algorithm

我需要一些算法帮助,我的程序有问题。 我需要制作一个程序,其中用户输入协调3点和系数 对于那些由这3个点构成的三角形的线性函数,我需要比较形状的区域,使得函数穿过该三角形。

我会在这里粘贴代码,但有些东西用我的母语,我只是想知道你的算法这个解决方案,因为只有当点按照确切的顺序输入并且我无法处理那个

http://pastebin.com/vNzGuqX4 - 代码

例如,我使用此http://goo.gl/j18Ch0 代码没有完成,我只是注意到,如果我以不同的顺序输入它,它不起作用,如输入点“1 1 2 5 4 4 0.5 1 5”工作,但“4 4 1 1 2 5 0.5 1 5”不

2 个答案:

答案 0 :(得分:1)

线性必须至少与三角形的2个边交叉。所以你可以先找到这两个交叉点,这3个顶点之一的这两个点会形成一个小三角形。使用此公式计算三角形的面积S = sqrt(l *(la)*(lb)*(lc))其中l =(a + b + c)/ 2和a,b,c是长度边缘。给定顶点的坐标应该很容易得到边的长度。一个是小三角形的区域,另一个是大三角区域减去小三角区域。

答案 1 :(得分:0)

如果你的三角形是ABC,那么一个好的方法是:

  • 查找经过A,B,B,C,C和A点的行。
  • 找到您的线与这三条线的交点。
  • 检查两个交叉点位于三角形边上。
  • 根据交叉点计算新小的表面 三角形。