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

Geometry 给定两个点,我如何画一条与这两个点形成的线成直角的线?,geometry,Geometry,理想情况下,我希望提供一系列点,并在每个点(从第二个点开始)以直角绘制一条线 每条线的方向都是交替的,所以如果我碰巧画了一条由6个点组成的曲线,那么从第二个点开始,每个点都会画一条给定长度的线,即在曲线的交替边上再画5条线,有点像一条有交替腿的毛虫 (我知道直线不会完全与曲线成直角,而是与曲线上任意两点形成的直线成直角)。这是一个问题。可以通过从B中减去A来计算两点A和B之间的定向矢量。在2D中,只有在2D中,通过反转x和y分量并取一个分量为负数,才能获得与该矢量成直角的矢量。如果你对新的x分量

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

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

(我知道直线不会完全与曲线成直角,而是与曲线上任意两点形成的直线成直角)。

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

这里有一些数学帮助:

这些是用矢量表示的点A和点B

方向向量通过简单的减法计算

法向量是通过翻转方向向量得到的,也就是反转分量,使一个分量为负。nl=正常,向左翻转,nr=正常,向右翻转

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

计算向量的长度

如果要从B向左(当从a来时)绘制一条线,请计算点p以将该线绘制为

因此,当在点上迭代时,您希望交替一次向左绘制,一次向右绘制


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

您将使用哪个库进行绘制?我在Silverlight中工作,并使用InkPresenter,因此我认为这只是点函数的一个例子。它有一个类似于安德烈亚斯的解决方案,我无法通过第一句话。如果我从A中减去B,我很可能会得到一个不在画布上的点。我编辑了我的答案,我希望它更容易理解。不管怎样,在第一句话之后,计算不会停止,你必须通读整个答案。正如我所说的,将向量大小减少到单位距离,然后按所需长度再次缩放。如果超出了画布,那么你的长度太大或者画布太小。我对自己的印象非常深刻,因为我能够遵循数学,除了以rno=开头的那行,寻找单位向量。很抱歉,当我上学时,单位向量是用指数0表示的。我认为你在这句话中混淆了A和B:“你可以通过从A中减去B来计算A点和B点之间的定向向量”——你通过从B中减去A得到定向向量(这也是你在公式中所做的)。安德烈亚斯同胞的问候。