首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查一个点(int坐标)是否在三角形的低音范围内?

如何检查一个点(int坐标)是否在三角形的低音范围内?
EN

Stack Overflow用户
提问于 2010-02-03 08:35:17
回答 3查看 1.4K关注 0票数 2

我有一个直角三角形,我想检查给定的点是否在三角形的低音线上。所有的点都是纯整数,而不是浮点变量.

(破损图像,原始位置https://tape.bplaced.net/dl/example2.png)

编辑:所有的绿色方块将在低音上,白色方块不会。我知道x,y,角的坐标和我想测试的点的坐标。所有坐标都是整数(抱歉,图中y有点偏离)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-03 10:23:46

这样做是可行的:

您知道三角形,所以只需为低键使用创建函数,在您的示例中,它将是y = 5x/12。如果您现在得到了一个点,比如x = 6, y = 3,您可以使用这些变量来查看它是否正确:3 = roundup(5*6/12)。如果是的话,那点就在三角形上,如果不是,那就不是。

票数 2
EN

Stack Overflow用户

发布于 2010-02-03 10:38:51

有两种情况需要处理:一种是垂直的,另一种不是垂直的。

对于垂直情况,您只需检查所讨论的点在低音值范围内是否有y值。

对于非垂直情况,利用其端点推导出低音的方程.直线方程为y= mx +b,其中m为dx/dy的斜率。那么b=y- mx。

现在有了m和b,看看候选点的x和y是否满足方程(点的y等于m*x+b吗?)

但是,实际上,您应该检查是否接近,而不是完全相等,因此检查点的y是否在(m *x+ b)的某个小的增量内。

票数 1
EN

Stack Overflow用户

发布于 2010-02-03 10:18:19

我会开始这么做:

代码语言:javascript
运行
AI代码解释
复制
points = an array;
delta=y/x
acc = 0
j = 0
for (i=0;i<x;i++){
  points.push(i, j)
  acc+=delta
  while (acc > 1){
     acc-=1
     j++
     points.push(i,j)
  }
}

然后你就有了所有的低音点。有更好的算法来绘制线条,但这可能是一个开始。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2193547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档