通过JavaScript

时间:2015-12-16 15:03:40

标签: javascript jquery css3 coordinates ellipse

我有一个圆圈,或者通常是一个在CSS中定义的椭圆,例如像这样:
圈子 border-radius: 50%; width: 50px; height: 50px;
椭圆: border-radius: 50%; width: 30px; height: 50px;

现在,如果它们是方形/矩形,我只会使用它们的宽度和高度来计算/检查坐标。但他们不是。

所以我想要做的是计算绘制的椭圆的填充坐标。 我甚至不想得到所有的坐标,因为最后我实际上只需要检查某些坐标是否也是一个坐标。是否给定椭圆。

我如何使用JavaScript(/ jQuery)?

其他信息: 圆圈只是椭圆的特殊情况(宽度和高度相同);
border-radius将始终为50%;
它不一定非常精确;

1 个答案:

答案 0 :(得分:3)

这里有两个问题。

第一个,也许是一个未被你意识到的,或者你可能只是不关心的是使用CSS进行形状绘制,虽然看起来很受欢迎,但这不是一个好方法。

这种方法存在很多障碍,最值得注意的是CSS不是为矢量绘图开发的技术,它是一种将内容与风格分开的技术。

您可以随意使用各种技术,例如SVG或HTML5 Canvas,这将大大简化您的工作。

但我们会在答案的第二部分深入研究:

如何检查(A,B)是否在中心(x,y)和半径r的圆圈内?

嗯,首先,如果你的(A,B)点在包围圆圈的矩形之外,它将在圆圈之外,所以如果A< x - r || A> x + r || B< y - r || B> y + r你的点(A,B)在包围矩形的

当(A,B)在矩形内部时,从(A,B)到(x,y)绘制的直线是矩形三角形的连字符,其中两个边是(A,B)之间的差异坐标和圆的中心,请记住两个点共享相同的坐标空间。

如果用毕达哥拉斯定理计算这个连字符:h = sqrt((A - x)^ 2 +(B - y)^ 2)。

h大于r的点(A,B)在圆圈的,而h小于或等于r的点内>圈子。

enter image description here

现在,恢复技术的重点。当您使用CSS时,很难使用工具来表示可以计算真实坐标轴的画布。当然,您可以将您的页面视为画布,但它通常会受到外部问题的影响,例如可能会破坏您的计算的屏幕分辨率。

我的第一个和强大建议是切换到合适的技术,例如SVG或HTML5 Canvas。然后确保你理解我在这里分配到案例或圆圈(简单的一个)的基本几何概念,然后在互联网上搜索或在这里询问椭圆的情况。