1

我正在尝试用 C++ 构建一个程序来生成城市的程序。目前,城市由一组方块表示,可以是方形方块或三角形方块。

我找不到将三角形(TBlock)细分为矩形(QBlock)和三个三角形的有效方法。

在此处输入图像描述

所以想象一个三角形ABC。我们有两个点 T 和 T',它们是线段 BC 的第一层和第二层。现在我需要找到分别在 AB 和 AC 线段上的 P 和 P'。P是AB和BC通过T的法线的交点。P'是AB和BC通过T'的法线的交点。

我知道如何找到 T 和 T' 以及向量 BC 的内法线,但我找不到计算通过 T 或 T' 的法线的方法。

谢谢 !

4

3 回答 3

1

线的法线y = m*x + c是线y = (-1/m)*x + d,其中cd是常数。您有两条具有共同点(T 或 T')的线,您可以同时求解以找到TmdT'。

于 2013-06-02T14:28:44.973 回答
1

你知道CBA形成的角度与TBP形成的角度相同。我们称它为 O。您还知道 B 和 T 之间的距离。称它为 D。使用它我们可以使用三角函数找到 P。

棕褐色 (O) = X / D

其中 X 是 T 和 P 之间的 y_axis 距离。只需求解 X,因为您知道 O 和 D。

一旦你知道 X,你就可以将 X 添加到 T 的 y 值以找到 P。

于 2013-06-02T14:51:23.103 回答
1

给定您的(BC)向量是(x,y),BC的法线向量是(-y,x)。现在将法线向量偏移 T' 的坐标,你将得到 BC 的法线通过 T'。

于 2013-06-02T14:21:09.520 回答