注册 登录
发贴工具
查看: 58|回复: 0
打印 上一主题 下一主题

[24小时收录超级好的网站] 手机改了分辨率后有误差用公式计算加减还原点击

[复制链接]

2228

主题

2276

帖子

1万

积分

积分
13572

有的人用改分辩率软件,更改了手机的分辩率,为了让所有手机通用一种点击方法,计算偏差,可以用这段代码实现。

两种方法如下:
手机改了分辨率后有误差用公式计算加减还原点击 群发软件发帖工具


第一种方法:

function calculateFunction(inputValue) {
    function leastSquaresFit(x, y) {
        var n = x.length;
        var sumX = 0;
        var sumY = 0;
        var sumXY = 0;
        var sumX2 = 0;

        for (var i = 0; i < n; i++) {
            sumX += x;
            sumY += y;
            sumXY += x * y;
            sumX2 += x * x;
        }

        var denominator = (n * sumX2 - sumX * sumX);
        if (denominator === 0) {
            return [0, 0]; // 避免除以零
        }

        var a = (n * sumXY - sumX * sumY) / denominator;
        var b = (sumY - a * sumX) / n;

        return [a, b];
    }

    function linearFunction(x, a, b) {
        return a * x + b;
    }

    function clipValue(value, maxValue) {
        return Math.min(value, maxValue);
    }

    var x = [94, 155, 233, 405, 591, 766, 844, 930, 208];
    var y = [0, 65, 157, 380, 580, 810, 916, 1021, 140];
    var maxValue = 1080;

    // 进行线性拟合,得到线性函数的系数 a 和 b
    var coefficients = leastSquaresFit(x, y);
    var a = coefficients[0];
    var b = coefficients[1];

    if (typeof inputValue === 'number') {
        // 输入为 x 值,计算 y 值
        var predictedY = linearFunction(inputValue, a, b);
        // 对预测结果进行裁剪,确保不超过 1080
        predictedY = clipValue(predictedY, maxValue);
        return predictedY;
    } else if (typeof inputValue === 'number' && inputValue >= 0 && inputValue <= maxValue) {
        // 输入为 y 值,计算 x 值
        if (a === 0) {
            // 当 a 为 0 时,若 b 等于输入的 y 值,x 可以是任意值;否则,无解
            if (b === inputValue) {
                return null;
            } else {
                return NaN;
            }
        }
        var predictedX = (inputValue - b) / a;
        return predictedX;
    } else {
        throw new Error('输入不合法,请输入一个数字且范围在 0 到 ' + maxValue + ' 之间');
    }
}

// 调用函数进行正向计算(根据 x 计算 y)
var result1 = calculateFunction(100);
console.log("当 x = 550 时,计算得到的 y 值为: " + result1);

// 调用函数进行反向计算(根据 y 计算 x)
var result2 = calculateFunction(1);
console.log("当 y = 0 时,计算得到的 x 值为: " + result2);

手机改了分辨率后有误差用公式计算加减,### 函数 calculateFunction

这个函数的主要目的是根据输入的数值进行线性拟合计算,可以正向计算(根据 x 值计算 y 值)或反向计算(根据 y 值计算 x 值)。

内部函数

  1. leastSquaresFit(x, y)

    • 这个函数使用最小二乘法来拟合给定的数据点 x 和 y,并返回线性函数 y = ax + b 的系数 a 和 b
    • n 是数据点的数量。
    • sumXsumYsumXY 和 sumX2 分别是 x 的和、y 的和、x 和 y 的乘积之和、x 的平方和。
    • 通过这些和计算得到 a 和 b 的值。
    • 如果分母为零,为了避免除以零的错误,返回 [0, 0]
  2. linearFunction(x, a, b)

    • 这是一个简单的线性函数,根据给定的 x 值以及拟合得到的系数 a 和 b,计算 y 的值。
  3. clipValue(value, maxValue)

    • 这个函数用于确保返回的 y 值不超过预先设定的最大值 maxValue
    • 使用 Math.min 来比较输入的 value 和 maxValue,返回较小的那个值。

主要逻辑

  • 首先,定义了 x 和 y 的数据数组,以及 maxValue 为 1080。
  • 然后,使用 leastSquaresFit 函数计算出拟合直线的系数 a 和 b
  • 根据 inputValue 的类型和范围进行不同的计算:
    • 如果 inputValue 是一个数字,计算对应的 y 值。首先通过 linearFunction 计算,然后通过 clipValue 确保 y 值不超过 1080。
    • 如果 inputValue 是一个数字且在 0 到 maxValue 之间,尝试反向计算对应的 x 值。但如果 a 为 0,意味着直线平行于 x 轴,根据 b 是否等于 inputValue 判断是否有多解或无解。
    • 如果输入不符合要求,抛出一个错误信息。

示例调用

  • var result1 = calculateFunction(100);

    • 调用 calculateFunction 函数,传入 100 作为 x 值,计算得到对应的 y 值,并输出结果。
    • 注意:示例中的注释有误,应该是 “当 x = 100 时,计算得到的 y 值为: “。
  • var result2 = calculateFunction(1);

    • 调用 calculateFunction 函数,传入 1 作为 y 值,尝试计算对应的 x 值。
    • 同样,注释中的描述有误,应该是 “当 y = 1 时,计算得到的 x 值为: “。

注意事项

  • 代码中反向计算的部分有一个逻辑错误,else if (typeof inputValue === 'number' && inputValue >= 0 && inputValue <= maxValue) 这部分条件判断似乎与前面的条件重复,只要 typeof inputValue === 'number',就不需要再次判断 inputValue 是否在 0 到 maxValue 之间。因此这部分代码可以修改为:

    else if (inputValue >= 0 && inputValue <= maxValue) {
    
  • 反向计算时,如果 a 为 0,则 b 的值就是 y 在所有 x 值上的常数值。如果 b 等于 inputValue,那么理论上对于所有的 x 值都可以得到这个 y 值,因此返回 null 表示有多个解。如果 b 不等于 inputValue,则没有解,返回 NaN

当然看上去很复杂,其实有更简单的方法:

第二种方法:

function adjustPos(origPos, origRes, newRes) {
    // 计算比例因子
    var scaleFactor = newRes / origRes;


    // 调整点击位置
    var adjustedPos = origPos * scaleFactor;

    return adjustedPos;
}


function adjustPercent(origX, origY, origWidth, origHeight, newWidth, newHeight) {
    // 调整 x 和 y 坐标
    var adjX = adjustPos(origX * origWidth, origWidth, newWidth);
    var adjY = adjustPos(origY * origHeight, origHeight, newHeight);


    // 转换回百分比
    var adjXPercent = adjX / newWidth;
    var adjYPercent = adjY / newHeight;


    return [adjXPercent, adjYPercent];
}


function clickAdjusted(origX, origY, origWidth, origHeight, newWidth, newHeight) {
    // 计算调整后的百分比坐标
    var [adjX, adjY] = adjustPercent(origX, origY, origWidth, origHeight, newWidth, newHeight);
    console.log("调整后的点击位置为: (" + adjX + ", " + adjY + ")");


    // 使用 auto.clickPercent 方法进行点击
    auto.clickPercent(adjX, adjY);
}


// 示例使用
var origX = 0.6076; // 原始 x 百分比
var origY = 0.1885; // 原始 y 百分比
var origWidth = 1080; // 原始分辨率宽度
var origHeight = 1920; // 原始分辨率高度
var newWidth = 720; // 新分辨率宽度
var newHeight = 1280; // 新分辨率高度


// 直接调用封装的 clickAdjusted 函数
clickAdjusted(origX, origY, origWidth, origHeight, newWidth, newHeight);

这段代码的主要作用是根据手机屏幕的不同分辨率,调整点击的位置,以便在不同设备上实现相同的点击效果。以下是对代码的详细解释:

  1. 调整位置的函数 adjustPos:

    • 该函数接受原始位置(origPos)、原始分辨率(origRes)和新分辨率(newRes)作为参数。
    • 它通过计算比例因子(scaleFactor),然后将原始位置乘以这个因子来得到调整后的点击位置(adjustedPos)。

      function adjustPos(origPos, origRes, newRes) {

      var scaleFactor = newRes / origRes;
      var adjustedPos = origPos * scaleFactor;
      return adjustedPos;
      

      }

  1. 调整百分比坐标的函数 adjustPercent:

    • 该函数接受原始的百分比坐标(origX 和 origY)、原始分辨率宽度和高度、以及新分辨率的宽度和高度。
    • 它首先通过 adjustPos 函数计算调整后的 x 和 y 坐标。
    • 然后,它将计算出的坐标转换回绝对百分比,得到实际在新分辨率下的点击位置。

      function adjustPercent(origX, origY, origWidth, origHeight, newWidth, newHeight) {

      var adjX = adjustPos(origX * origWidth, origWidth, newWidth);
      var adjY = adjustPos(origY * origHeight, origHeight, newHeight);
      var adjXPercent = adjX / newWidth;
      var adjYPercent = adjY / newHeight;
      return [adjXPercent, adjYPercent];
      

      }

  1. 示例使用部分:

    • 定义原始的百分比坐标和分辨率。
    • 使用 adjustPercent 函数计算在新分辨率下的调整坐标,并打印出来。

      var origX = 0.6076;
      var origY = 0.1885;
      var origWidth = 1080;
      var origHeight = 1920;
      var newWidth = 720;
      var newHeight = 1280;

      var [adjX, adjY] = adjustPercent(origX, origY, origWidth, origHeight, newWidth, newHeight);
      console.log(“调整后的点击位置为: (“ + adjX + “, “ + adjY + “)”);

  1. 自动点击方法 autoClick:

    • 这个函数是一个占位符,用于执行实际的点击操作。
    • 当前的实现只是简单输出点击的位置。

      function autoClick(xPercent, yPercent) {

      console.log("在屏幕上点击: (" + xPercent + ", " + yPercent + ")");
      

      }

  1. 调用自动点击方法:http://bbs.aiwork24.com/thread-125-1-1.html

    • 用调整后的 x 和 y 百分比调用 autoClick 方法,替换为你原来的 auto.clickPercent

      autoClick(adjX, adjY);

这个代码的主要目的在于使得在不同的屏幕分辨率下,点击的行为能够保持一致,从而提高了在不同设备上的用户体验。你提到的 auto.clickPercent(0.401, 0.2012) 是你自己使用的点击方法,可以直接替换最后一行的 autoClick 调用


unto原生webview的h5如何跟aiwork交互nextAIWROK软件APP操作类合集
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读了
    采集亚马逊正版群发工具有没有?
    Apr.20旅行X心语今天来说说YYPOST新功能的一个灵活用法,采集亚马逊商品信息,并且获得排名的软件,亚马逊现在越来越多客户做,淘宝的水是越来越清了,以前做电商的客户,现在都转战到外国,最赚钱的要数一些客户往亚马逊里堆了吧,拿我这个YYPOST的客户,最多的是采集,分析排名,刷价格,刷数量,改价,刷访问量等等技术

    企业发展B2B网站有什么东东软件可以发呢
    标题企业发展网B2B软件,现在虽然B2B网站收录不错,可愁的是心急的人们,他们太想一口吃撑胖子了,发帖宣传虽然不能像佛系那样淡定,但也不能像跑火车那般急躁对待,自己内容不收录,完全是自己操作内容问题,可以参考一下别人的内容是怎么弄的,然后自己要试着转变,而且收录这个内容,常常会变化的,不是一种规则就吃到老

    搜房天下房聊软件哪一个好呢
    本帖最后由 发帖软件 于 2019-5-22 16:15 编辑 2搜房天下群发房聊信息软件,开始本来打算做58同城的,但发一个就要一次点触验证码,这就让人没有感觉到存在的价值了吧,都是卖二手房和新房的搜房天下倒是可以发即时聊天信息,也没有发现他这个网站有啥子限制,登陆一个搜房天下账号,然后采集回来分类列表的网址,然后就一

    大家坛有没有好用的群发工具下载呢
    当你的笑容给我礼貌的招呼,大家坛全自动发帖软件,宣传推广是一场持久战,总是有一些人把软件用了一天,或是几个小时,就觉得自己付出太多了,那加进来的粉丝,或是流量,应该是和宣传多少成正比的,其实没有这么便宜的事,就像很多阅读量超过一百万的视频,或是电影,真正会在屏幕打赏的人不会超过三千,真正大额打赏给主

    群发正版软件中国塑料网
    中国塑料网群发软件YYPOST脚本下载地址,这个网站会有一个很奇怪的问题就是你在首页登陆无半个验证码,但在登陆网址登陆就会有一个验证码,所以我们灵活一些,在首页登陆就不用输入验证码了哈。网站秒收录比较高,但发的都是五金和建筑行业,先前有很多人都是发土建工程的大公司操作的,现在这个网站专为那个行业诞生的吧。

    OpenStreetMap网站正版2019年发帖工具下载
    本帖最后由 发帖软件 于 2019-5-21 11:13 编辑 OpenStreetMap网站全自动群发,OpenStreetMapOpenStreetMap(简称OSM,中文是公开地图)是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图。有的人编辑地图然后等收录,有的人发日志等收录,我们这里也是利用地图日志做为宣传的目标,简单的脚本理

    搜房天下全自动收短信全自动识别验证码注册账号软件
    房天下自动注册机,这个脚本是前几天发房聊的脚本廷伸品种,这个脚本能做到自动注册账号,自动保存账号,自动发房聊的效果,不过今天我们主要说一说怎么注册账号写脚本吧,这个搜房天天下的账号,可以发提问,可以发房聊,发论坛,发博客,还有发个人中心页都是有秒收的效果的,这样就省去了去买号,去乱花钱的效果了吧,而

    企业邮箱安卓端有什么APP软件可以发的呢
    请输入标题企业邮箱安卓发发送邮箱脚本,这个脚本是利用企业邮箱进行群发的,全程是一种模拟手工操作的过程,所以封号是很少的,而且企业邮箱群发到普通QQ邮箱不容易进垃圾箱中的,所以这个脚本也是这样的原理,不过最好是利用一些多开器,登陆多点的QQ邮箱账号会比较流畅一些,然后用软件一个一个的切换APP进行群发邮件会

    头条留评论软件有没有好用的呢?
    今天整一个今日头条留言软件,对于留言YYPOST是优势是比较大的存在,因为他往往专注一些下拉定位的优点,像今日头条这样,还是需要一些特殊下拉定位的,因为他新闻有长有短,有图有视频的,所以综合起来定位是比较难的,如果用POST也不是很轻松可以破解他的加密参数。这个脚本也是有一个不好的地方就是换号会比较麻烦,您电

    单网页生成神器
    最近新技术,网页生成机占领了整个网络的半壁江山,效果很疯狂,虽然不知道能持续多久,作为开发软件的领头者,一直在找收录的方法,一直在努力创新着,一直被人模仿,却从没有被超越过,这个网页生成机,已经出来有一段时间了,一直没有拿出来分享,醉过醉过,它是利用的一些小小收录漏洞整的,您最好用一些老站域名,进行

关闭
快速回复 返回列表 返回顶部
本站自动发贴软件,是现在最流行的做脚本软件,这种发贴工具,不但发贴收录快,而且抢占好的先机,完全自由编辑,实现针对性群发模拟操作,软件可以顶贴,也可以发贴,可以兼容支持Discuz、PHPWind、Dvbbs三大主流论坛,有手机验证码收件,邮件收发的功能,支持验证码识别,注册问题识别,多线程任务,自动上传头像,自动激活注册邮件,兼容防注册插件,本站软件原创正版,更新效率最快的原创软件。 『网络推广软件』『自动发帖软件』『 自动发帖