【发布时间】:2016-07-21 13:56:49
【问题描述】:
我的代码有问题。它在线上产生交叉点和尖点。 (附件)
也许有人可以帮助我处理这段代码,提供我可以遵循的任何工作示例。
// LEFT SIDE OF MAIN LINE
int numberOfLines = 10;
float offset = 10f;
lastLinePoints = outerPoints; // outerPoint = Points from Main Line
for(int i = 0; i < numberOfLines; i++)
{
List<Vector3> tempPoints = new List<Vector3> ();
for (int k = 0; k < lastLinePoints.Count; k++) {
if (k + 1 < lastLinePoints.Count) {
Vector3 direction = lastLinePoints [k + 1] - lastLinePoints [k];
// up direction:
Vector3 up = new Vector3(0.0f, 1.0f, 0.0f);
// find right vector:
Vector3 right = Vector3.Cross(direction.normalized, up.normalized);
Vector3 newPoint = lastLinePoints [k] + (right * offset);
tempPoints.Add (newPoint);
}
}
VectorLine lineTemp = new VectorLine ("lineCurved", tempPoints, 120f / _camera2DObject.GetComponent<Camera> ().orthographicSize, LineType.Continuous);
lineTemp.Draw3D ();
lastLinePoints = tempPoints;
}
经过一些研究,我知道绘制平行曲线的解决方案可能很困难。我还发现了一些算法 (https://hal.inria.fr/inria-00518005/document),但这种数学对我来说很难编写代码。
根据@jstreet 的建议,我尝试了 CLIPPER 库。结果非常好,但是否可以仅绘制平行线而不是围绕线绘制闭合多边形(如附件)
更新
我写了另一个问题,因为我认为将 CLIPPER 用于平行线是值得的。 LINK TO question
【问题讨论】:
-
你能提供一个完整的例子来说明你的工作吗?这样它实际上会从您附加的图像中绘制线条。
-
这段代码实际上画出了除了第一条线之外的这些线。第一个线点在外点列表
中。我认为这里没有必要在 List 上附加数百个点 -
你用什么库来绘图?
-
Vectrosity 但它与库无关。这是所有带有偏移的行的问题
-
看看CLIPPER。
标签: c# math graphics vector-graphics