c++ - 如何以编程方式从头开始创建弯头连接器?

标签 c++ shapes

MS-Word 中的“弯头连接器”是一条三段线,中间有一个控制点,如图所示

see image here

如果我将黄色控制点向侧面移动,则两侧的两条线的长度会相应改变,而端点保持不变。 (请忽略图中的“2”)

我试图了解它是如何工作的,以便我可以重新创建它。这样的线有“线方程”吗?我有一些点 (x,y) 已经是这个弯头连接器的形状,但我想合并通过控制控制点改变任一侧线的功能。我将如何重新创建它?

最佳答案

通过剖析以下行:

enter image description here

为了仅将中心 (M) 横向移动,第 2 条和第 3 条线的长度保持不变,因此问题变成了如何计算第 1 条线和第 4 条线的长度(和方向)。
可以这样计算:

line1_length = B.x - M.x;
line4_length = M.x - A.x;

对于方向,首先应该进行如下比较:

if(B.x > M.x)...
.
.
.
if(M.x > A.x)...
.
.
.

起点已知为A的位置和B的位置。通过知道线1和线4的长度和方向,可以确定终点。

祝你好运!

关于c++ - 如何以编程方式从头开始创建弯头连接器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56286200/

相关文章:

c++ - 使用模板在 C++ 中指定类型?

c++ - 我收到错误 "invalid null pointer"

c++ - 为什么我需要转换算法 remove() 的参数?

java - 在 Android 中从没有像素透明度的 Drawable 创建形状

wpf - 使用WPF圆窗播放电影

带有 u8、char8_t 和 std::string 的 C++20

c++ - 我正在开始我的 C++ 学习,使用 CodeBlocks 和 Windows,我应该使用什么编译器?

python - 我需要 Python 的帮助来检查列表的边界

android - 在JAVA代码中定义Drawable Shape

ios - b2PolygonShape/b2Fixture 尺寸加倍以用于视网膜显示?