Javascript 以常规方式从圆弧中提取顶点
我想从一个弧中得到所有顶点。我有ex的所有数据:起点、终点、起点角度、终点角度、半径,这些数据将用于绘制圆弧,但我需要的是我必须从圆弧数据生成所有顶点 我已经尝试过一个或两个算法,但未能从圆弧数据中获得准确的顶点 我使用了Bresenham的算法,但失败了 现在我正在使用下面的代码,但它不工作Javascript 以常规方式从圆弧中提取顶点,javascript,algorithm,geometry,bresenham,rasterize,Javascript,Algorithm,Geometry,Bresenham,Rasterize,我想从一个弧中得到所有顶点。我有ex的所有数据:起点、终点、起点角度、终点角度、半径,这些数据将用于绘制圆弧,但我需要的是我必须从圆弧数据生成所有顶点 我已经尝试过一个或两个算法,但未能从圆弧数据中获得准确的顶点 我使用了Bresenham的算法,但失败了 现在我正在使用下面的代码,但它不工作 double theta = 2 * 3.1415926 / 100; double c = Math.cos(theta); d
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;
}
请帮帮我。多谢各位
首先是一些澄清
我假设顶点是指像素和圆弧是标准的2D圆弧而不是椭圆圆弧!!!您的输入数据是:
int x0,y0,x1,y1//曲线上的星形/端点!!!
浮动a0,a1//起始角和终止角[rad]
int xc,yc//圆心
int r//半径
不要使用Bresenham
因为需要从零角度开始计算所有像素,直到到达起点。然后翻转draw标志,从该点开始填充像素,并在端点命中时停止。此外,还需要处理绕组以匹配电弧方向
可以使用圆参数方程
//只是一些要测试的弧数据
浮点数r=25.0;
浮球a0=45.0*M_PI/180.0;
浮子a1=270.0*M_PI/180.0;
int xc=100,x0=xc+floorr*cosa0,x1=xc+floorr*cosa1;
int yc=100,y0=yc+floorr*sina0,y1=yc+floorr*sina1;
//弧光栅化代码
int x,y;
浮动a,da;
//这里画像素x0,y0和x1,y1以避免圆孔。。。
如果r da=0.75/浮子;else da=0.1;//步距略小于像素,以避免出现孔洞
对于a=a0;;a+=da
{
x=xc+intfloorr*cosa;
y=yc+intfloorr*sina;
//这里画像素x,y
如果x==x1&&y==y1//如果到达端点则停止
如果fabsa-A1最简单的方法是使用Bresenham的算法。@EgorSkriptunoff Thanx供您回复。我已经尝试过了,但它对arc不起作用。将您的代码与Bresenham的算法的实现一起发布。说出到底什么不起作用。@EgorSkriptunoff您可以在这里找到我的代码-。它画了一个圆,但我想画一个圆弧,而不是c创建一个圆。我有画圆弧所需的所有变量。