c - 在编程中增加一行的长度

标签 c computational-geometry xlib x11

我有一个三角形,如图所示,A(109,239)、B(182,234) 和 C(140,157)。

我正在使用 xlib 编程来实现这一点。

在三角形内部某个点的鼠标单击事件中,我找到距离该点最近的顶点,然后我想将三角形​​外的线延伸到有限大的长度。

enter image description here

任何人都可以告诉我该怎么做。我认为我们必须将一些值 ex a,b 添加到 B(x+a,y+b) ,但我不确定我将如何计算 a,b 的值?

enter image description here

最佳答案

如果你知道 2 个点 p0 和 p1,你可以计算任意 x 的 y:

y = (x - x0) * (y1 - y0) / (x1 - x0) + y0

因此在您的情况下,这 2 个点将是鼠标点击点和顶点。

编辑

您可以选择鼠标点击对面的 x。

x = vertexX + (vertexX - mouseX);

关于c - 在编程中增加一行的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19044058/

相关文章:

c - 冒号在c中有什么作用?

使用指针从 swift 调用 C 库方法

java - 最大化两个凸包之间的最小距离

algorithm - 从直骨架中提取的最小 Cyle 基

ruby - 当前稳定的 ruby​​ xlib 包装器?

python - 如何使用 Python Xlib 监视鼠标事件而不是捕获它们?

c - 通过指针访问二维数组

c - 选择性重复 ARQ 中的定时器

algorithm - 用给定的一组矩形填充任意二维形状

c - 解析字符串以在 Xlib 中为文本着色