在圆上从点到相对切线画一条线? AS3中的圆锥/楔形。
|
这应该是一些简单的几何:如何在下面的代码中计算点以画线,以使其成为2D圆锥形或楔形?
import flash.geom.Point;
//draw circle
var mc=new Sprite()
mc.graphics.lineStyle(0,0)
mc.graphics.drawCircle(0,0,30)
mc.x=mc.y=Math.random()*300+100
addChild(mc)
//draw lines:
graphics.lineStyle(0,0)
var p=new Point(Math.random()*500,Math.random()*400)
graphics.moveTo(p.x, p.y)
graphics.lineTo(mc.x,mc.y) // << should be point on edge of circle
graphics.moveTo(p.x, p.y)
graphics.lineTo(mc.x,mc.y) // << should be point on opposite edge of circle
更新:
谢谢大家,我应该提到我的目标不是绘制楔形,而是绘制从随机点到现有圆的边缘的直线。
如果您更喜欢代数而不是动作脚本,也许您可以看一下这张图片并为我发布公式?
没有找到相关结果
已邀请:
5 个回复
稼悸
最终产品: 绘制第二个圆(实际上并不需要绘制第二个圆,只需要其中心点和半径) 检出以下SWF以查看实际效果(刷新以查看不同的随机圆): http://megaswf.com/serve/1097652
体悉
为切线的交点,
为圆的中心,您在此处寻找切线点的坐标
。此外,令
为切线的向量,
为半径的向量。由于它们是垂直的,所以您有
。 这给了我们
令
为圆的半径,令
(基本上,将圆移至into11ѭ)。 切线在圆上,所以您有
,因此也有
。 应用于上述方程式的变量替换给我们:
使用圈子信息,我们可以:
这是具有0、1或2个解的二次方程。如果P在圆上,则为0;如果P在圆上,则为1;如果P在圆外,则为2。 如果将此处介绍的变量映射为代码中的变量,则我不会在此处放置显式解决方案,因为它是公式的地狱,而且编写起来容易得多。
祝您好运,因为我对微积分很不好,这里是04:00,所以您可以打赌,某处有一个错误,但是它应该使您朝着正确的方向;)
瞥同忙接
咖哀烈
在当前点和端点(x,y)之间绘制贝塞尔曲线,控件(x,y)为曲线弯曲的点(如Photoshop中的笔工具)。设置为半增量X,并使用Y调整其强度。
席酱
和
变量来控制楔形的角度。半径将确定形状的宽度。应该在Shape,Sprite,MovieClip或具有图形对象的某些子类中使用。