[英]About equal to function in Javascript?
好吧,我有一个带有一堆圆圈的HTML画布。 我想要圆圈上的鼠标点击事件来触发一些Javascript功能。 我已经掌握了基础知识,但坐标显然是如此精确,以至于我需要30次才能达到某个圆的精确坐标。
有没有办法实现“约等于”; 换句话说,我希望鼠标点击的x和y能够触发一个函数,当它非常接近(比如10px)画布上某些东西的坐标时?
谢谢
亚历克斯
你可以使用这样的东西来测试一个点是否在另一个点的某个半径范围内:
function withinRadius (x1, y1, x2, y2, radius) {
var dX = x1 - x2, dY = y1 - y2;
return ((dX*dX) + (dY*dY) < radius*radius);
}
初步想法:
if ((mouselocx >= (corodinatex - 10)) && (mouselocx <= (corodinatex + 10)) {
if ((mouselocy >= (corodinatey - 10)) && (mouselocy <= (corodinatey + 10)) {
Do something...
}
}
一般情况下,您要检查是否在通过向左和向右扩展曲线创建的多边形内单击了。 在贝塞尔曲线,一般圆锥曲线等的情况下计算该多边形是棘手的。 大多数图形库允许您设置笔画宽度参数并为您完成。 在1px曲线下方绘制背景颜色的宽曲线,并检查宽曲线上的命中。 只需确保在任何前景颜色之前绘制所有背景颜色。
在圆圈的特定情况下,如果您没有这样的图形库,只需在距离圆心的距离范围内点击即可。 如果您的圈数非常少,则可以浏览整个列表。 如果你有超过六打(直觉感觉什么时候切换到更好的算法)将屏幕划分为四分之一,其中一个矩形可能已击中哪个圆圈的列表,然后分成该矩形内的四分之一并检查圈子,直到你只有六打左右的可能性。 然后查看可能性列表,检查您是否在任何圈子的delta内。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.