【发布时间】:2021-09-14 22:29:48
【问题描述】:
问题输入由三个点A, B, C指定,每个点有两个坐标x, y。
解决方案应该是三角形内所有点的数组,具有自然坐标。
输入是:
A, B, C
输出是: 图中所有命名点
请注意,我正在尝试计算所有分数而不是计算它们,所以this question 与我的相差很大。
我遇到的问题:
主要问题是,指定所有三个段需要计算所有段的系数a, b,这可能会扩展我的代码,因为我必须涵盖所有情况水平线和垂直线。
那么我能想到的最好的方法是:
- 遍历自然
x'es,从最小x点A, B, C到最大。 - 遍历自然
y's,从最小y点A, B, C到最大。 - 对于每个点,检查是否满足具有 9 个不等式的方程组,我可以使用
numpy手动求解。大量的不等式是第二最难的问题。
一般而言,我能想到的任何方式都需要我编写很多包含很多可能错误的代码。此外,我编写的指令越多,性能就越低,因为使用了许多非平凡的计算方法。
任何有关更简单解决方案的帮助将不胜感激。
【问题讨论】:
-
谷歌“测试点是否在三角形中”。有很多资源。您不必解决 9 个不等式。
-
我不确定它是否有效,但我相信你可以计算出三个高度。这对第 1 点和第 2 点没有帮助,但会将不等式的数量减少到三个。因为要位于三角形内,到点 A 的距离必须小于 h_a 等等
-
一些想法
http://stackoverflow.com/questions/2049582/how-to-determine-a-point-in-a-2d-triangle -
您可以使用barycentric coödrdinates 来确定一个点是否在三角形中(光线追踪器),但如果您需要一个点列表(前向几何体),那么最好进行光栅化.