首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给定两个点,我如何画一条与这两个点形成的直线成直角的直线?

给定两个点,我如何画一条与这两个点形成的直线成直角的直线?
EN

Stack Overflow用户
提问于 2011-09-19 19:07:11
回答 1查看 16.1K关注 0票数 14

理想情况下,我希望提供一个点序列,并在每个点(从第二个点开始)以直角绘制一条线。

每条线的方向是交替的,所以如果我碰巧画了一条由6个点组成的曲线,那么从第二个点开始的每个点都会画一条给定长度的线,即在曲线的交替边上另外画5条线,有点像交替腿的履带。

(我理解这些线不会完全与曲线成直角,而是与曲线上任何两点形成的线成直角)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-19 19:17:51

这是一个关于vector mathematics的问题。可以通过从B中减去A来计算两点A和B之间的方向向量。在2D中,只有在2D中,与此向量成直角的向量可以通过反转x和y分量并取一个分量为负来获得。如果你否定了新的x分量,你就会左转,如果你否定y,你就会右转。然后,通过将每个分量除以矢量的长度(sqrt(x_x + y_y)),可以将方向矢量减少到单位大小(=长度为1)。最后,您可以将单位向量再次拉伸所需的长度,并获得所需的大小。如果你把这个向量加到A或B上,你就会得到一个你想要画直线的点。

这里有一些数学帮助:

这些是点A和B,表示为向量。

方向矢量是通过简单的减法计算出来的。

法向量是通过反转方向向量来给出的,即反转分量并使其中一个分量为负。nl =正常,向左翻转,nr =正常,向右翻转

法向量的单位向量是通过将每个分量除以向量的长度而得到的。

计算向量的长度。

如果要从B向左绘制一条线(从A开始),则计算要将该线绘制到的点P

所以当迭代点时,你想交替地向左和向右画一次。

如果画布外有点,那么你的长度可能太大了。当然,你可以通过计算向量BP和边界的交点来计算向量P穿越边界的点。

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

https://stackoverflow.com/questions/7469959

复制
相关文章

相似问题

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