【发布时间】:2015-04-25 10:55:37
【问题描述】:
我想从 ARC 中获取所有顶点。我有用于绘制弧线的所有数据(例如:起点、终点、起点角度、终点角度、半径),但我需要从弧线数据中生成所有顶点。
我已经尝试了一种或两种算法,但我未能从弧数据中获取确切的顶点。
我使用了 Bresenham 的算法,但失败了。
现在我正在使用下面的代码,但它不起作用..
double theta = 2 * 3.1415926 / 100;
double c = Math.cos(theta);
double s = Math.sin(theta);
double t;
double x = ((ArcTo) element).getRadius();//we start at angle = 0
double y = 0;
for(int ii = 0; ii < 100; ii++) {
coordinates.add(new Coordinate(x + element.getCenterPoint().getX(), y + element.getCenterPoint().getY()));//output vertex
//apply the rotation matrix
t = x;
x = c * x - s * y;
y = s * t + c * y;
}
请帮助我。谢谢。
【问题讨论】:
-
最简单的方法是使用 Bresenham 算法。
-
@EgorSkriptunoff 感谢您的回复。我已经尝试过了,但它不适用于 arc。
-
发布您的代码并实现 Bresenham 算法。说出究竟是什么不起作用。
-
@EgorSkriptunoff 你可以在这里找到我的代码 - jsfiddle.net/shiladittya/qb4528cq。它画了一个圆,但我想画一个圆弧而不是创建一个圆。我拥有绘制弧线所需的所有变量。
标签: javascript algorithm geometry bresenham rasterize