我正在尝试用C ++构建一个程序生成城市的程序。 目前,城市由四个街区或三角街区块组成。
我找不到将三角形(TBlock)细分为矩形(QBlock)和三个三角形的有效方法。
所以想象一个三角形ABC。我们有两个点T和T',它们是BC线段的第一和第二层。 现在我需要找到分别在AB和AC线段上的P和P'。 P是AB与BC通过T的法线的交点。 P'是AB与通过T'的BC的法线的交点。
我知道如何找到T和T'以及向量BC的向内法线但是我找不到计算通过T或T'的法线的方法。
谢谢!
答案 0 :(得分:1)
鉴于你的(BC)向量是(x,y),BC的法向量是(-y,x)。现在用T'的坐标来偏移法线向量,你将得到通过T'的BC的法线。
答案 1 :(得分:1)
行y = m*x + c
的法线是行y = (-1/m)*x + d
,其中c
和d
是常量。
你有两条带有公共点(T或T')的线,你可以同时解决T和T'的m
和d
。
答案 2 :(得分:1)
您知道CBA形成的角度与TBP形成的角度相同。我们称之为O.你也知道B和T之间的距离。称之为D.使用这个我们可以使用三角法找到P.
Tan(O)= X / D
其中X是T和P之间的y_axis距离。因为你知道O和D,所以只求解X.
一旦你知道X,你就可以将X加到T的y值来找到P。