我试图找到一个与垂直线的中间距离相等的点。我想用这个点来创建一个使用起点和终点的贝塞尔曲线,以及我试图找到的另一个点。

我已经计算了垂直线,我可以在这条线上绘制点,但问题是,根据线的 Angular ,这些点离原线更远或更近,我希望能够计算所以它总是在 X 个单位之外。

看看这个 JSFiddle,它显示了原始线,沿着垂直线绘制了一些点:

http://jsfiddle.net/eLxcB/1/

如果更改起点和终点,您可以看到这些绘制的点越来越靠近或远离。

无论 Angular 如何,如何使它们彼此之间的距离保持一致?

代码片段如下:

// Start and end points
var startX = 120
var startY = 150
var endX = 180
var endY = 130

// Calculate how far above or below the control point should be
var centrePointX = ((startX + endX) / 2);
var centrePointY = ((startY + endY) / 2);

// Calculate slopes and Y intersects
var lineSlope = (endY - startY) / (endX - startX);
var perpendicularSlope = -1 / lineSlope;
var yIntersect = centrePointY - (centrePointX * perpendicularSlope);

// Draw a line between the two original points
R.path('M '+startX+' '+startY+', L '+endX+' '+endY);

最佳答案

通常,您可以像这样获得一条线的法线坐标:

P1 = {r * cos(a) + Cx, -r * sin(a) + Cy},
P2 = {-r * cos(a) + Cx, r * sin(a) + Cy}.

A demo applying this to your case at jsFiddle

关于Javascript:在垂直线上找到点总是相距相同的距离,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17989148/

10-11 15:03