我正试图在画布上创建一个带有弧形的向日葵效果,并且我的几何技能已经生锈了 .
首先,我在画布中间的某处创建了一个原点, Origin (X1,Y1)然后我创建了鼠标位置 Mp (Xm,Ym)
现在,如果我从 Origin 到 Mp 创建一条假想线,那么 Mp 应该是用一个新的较小的原点对齐弧的点,该原点位于 Origin 的方向,这将定义具有静态半径的弧(比如20) . 所有三个点 Origin , Mp 和较小的半径应该形成一条直线 .
我希望它以静态半径(比如20)切入弧的中心,无论鼠标与Origin有多远 .
所以,如果你想象一个时钟 . 如果手连接的中间部分是 Origin .
-
如果鼠标位于3点钟位置,则Arc看起来像")"
-
如果鼠标位于9点钟位置,则Arc看起来像"("
-
如果鼠标位于12点钟位置,如果旋转90°,则Arc看起来像"("
-
如果鼠标位于6点位置,如果旋转270°,则Arc看起来像"("
-
等......
鼠标位于Arc的顶部 .
对于我的问题,具体而言,不是如何获得点数或鼠标事件或任何东西,但假设我有{X1,Y1}和{Xm,Ym},如上所述制作弧所需的数学是什么?
或者对于JS / jQuery专家,arc()参数?
Edit :一个非常差的Photoshop渲染
右下角添加了一个鼠标,通常显示鼠标指针在绘制圆弧/曲线时的位置 .
2 回答
The simplest way is to adjust the starting & ending angles of the arc command.
你可以绘制一系列弧形来形成你的花朵 .
提示:如果您希望您的花瓣不那么圆,更弯曲,您可以使用
quadraticCurveTo
而不是弧形来绘制花瓣的外部 .祝你的项目好运!
[ Addition based on more information ]
是的,我想你已经拥有了!
从鼠标位置
mcx,mcy
开始 .定义较小的圆心点与鼠标位置的角度
radianAngle
.定义小中心点远离鼠标中心点的距离
radius
.计算小圆的中心点:
定义较小圆圈的半径
smallRadius
.在较小的弧
sweepAngle
上定义所需的总扫描角度 .在小圆上定义圆弧的起始和结束角度 . 这实际上很简单,因为您希望鼠标点处的小弧度为"point" . 提示:小弧的中心必须始终位于
radianAngle
的中点 . 因此,startingAngle
=( radianAngle - sweepAngle/2
.所以最后你的“指向”鼠标的小角度变为:
干杯!
Adding 因为: