【问题标题】:drawing arc points绘制圆弧点
【发布时间】:2012-01-02 06:40:20
【问题描述】:
谁能给我一个在弧上画点的算法?我知道起点、终点和半径。我需要在此信息(起点、终点和半径)形成的弧上显示点。
查看图片了解更多详情
我有起点(x,y),终点(a,b)。我必须在弧上计算同样距离的 5 个点。有可能吗?
【问题讨论】:
-
我们在这里谈论什么样的弧?假设您正在谈论chords,那么在给定任意起点/终点和半径的情况下,甚至不可能画出和弦。例如,不可能有起点为 (0, 0)、终点为 (100, 100) 和半径为 1 的弦。通常弦图通常以圆心、半径、和开始/结束度数测量。
标签:
algorithm
math
trigonometry
【解决方案1】:
这方面的标准算法是Midpoint circle algorithm(有时称为 Breshenham 圆算法)。
请注意,您的弧规范不完整。通常有两条半径相同的弧连接两个给定点,一条用于连接这些点的直线两侧的中心。此外,正如@In silico 指出的那样,半径不能小于点之间距离的一半。
【解决方案2】:
指定圆弧的方法与SVG中使用的方法类似,其中有一些详细的implementation notes,此处复制太长。对于圆弧,x 和 y 半径相等,因此 x 轴角度并不重要。正如 Ted Hopp 所说,您需要一个标志来指示弧线的绘制方向(在 SVG 中称为 large-arc-flag)。
获得圆弧起点和终点的圆心和角度后,将角度一分为六,然后使用该角度的 sin/cos 绘制五个中间点。