C# 曲线上的点(一) 获取指定横坐标对应的纵坐标值
2021-06-10 17:02
标签:lips ntc tor height art row vector one point 获取直线上的点,很容易,那曲线呢?二阶贝塞尔、三阶贝塞尔、多段混合曲线,如何获取指定横坐标对应的纵坐标? 如下图形: Geometry提供了一个函数GetFlattenedPathGeometry,可以获取其绘制后显示的多边形。 我们可以通过其Figures -> PathSegment -> Point, 最终界面显示,获取的点集是如下布局的: 我们发现,拐角越大,获取的点越密集。所以可以看出,角度变化越大,需要的点越密集。 直线通过斜率很容易获取横坐标对应的纵坐标,那么这有如此多点的曲线呢? 我们是不是可以曲线救国,通过相邻的俩个点画直接,从而获取俩点间的点坐标呢?我们来尝试下~ 还是原来的代码,传入一个X坐标参数即可。 然后俩点之间,获取X坐标对应的Y坐标: 点击窗口,在曲线上,获取点击处X坐标对应的点。效果图如下: Github: Demo C# 曲线上的点(一) 获取指定横坐标对应的纵坐标值 标签:lips ntc tor height art row vector one point 原文地址:https://www.cnblogs.com/kybs0/p/10596426.html 实现方案
曲线上的点集
1 public List
曲线上的点
1 private bool TryGetOrdinateOnVectorByAbscissa(Point start, Point end, double abscissa, out double ordinate)
2 {
3 ordinate = 0.0;
4 if ((start.X start.X && abscissa 5 (start.X > end.X && abscissa end.X))
6 {
7 var xRatio = (abscissa - start.X) / (end.X - start.X);
8 var yLength = end.Y - start.Y;
9 var y = yLength * xRatio + start.Y;
10 ordinate = y;
11 return true;
12 }
13 return false;
14 }