【js】斜率:知道两点坐标,求两点间运动每秒途径坐标

如图所示,知道ab两个坐标,从a点移动到b点,求每单位时间运动到的坐标。

只是简单的只有Y轴移动速度v,不是xy同时移动的速度。


                    //k=(y2-y1)/(x1-x2)对应求斜率
                    if (this.k == 0) {
                        this.k = (this.targetPos.y - nowPos.y)/(this.targetPos.x - nowPos.x);
                    }
                    //公式y=kx+b 求B:b = y-kx
                    if (this.b == 0) {
                        this.b = this.targetPos.y - this.k*this.targetPos.x;
                    }

                    let newPosY = v*time;    //Y坐标的移动直接是速度乘以时间
                    //反推,知道y求x:x=(y-b)/k
                    newPosX = (newPosY - this.b)/this.k;

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,根据您的要,我可以为您提供一个基于 MFC 的 C++ 程序来解决这个问题。假设已知两点坐标分别为 $(x_1, y_1)$ 和 $(x_2, y_2)$,那么我们可以先出这两个的中坐标 $(x_m, y_m)$,然后再出它们的斜率 $k$,最后根据中垂线的定义,可以得到中垂线的斜率为 $-1/k$,从而进一步出中垂线两端坐标。 下面是具体的代码实现,假设您已经创建了一个名为 `CMyDialog` 的 MFC 对话框: ```cpp void CMyDialog::FindPerpendicular() { // 获取两点坐标 double x1 = GetDlgItemDouble(IDC_EDIT_X1); double y1 = GetDlgItemDouble(IDC_EDIT_Y1); double x2 = GetDlgItemDouble(IDC_EDIT_X2); double y2 = GetDlgItemDouble(IDC_EDIT_Y2); // 坐标 double xm = (x1 + x2) / 2; double ym = (y1 + y2) / 2; // 斜率 double k = (y2 - y1) / (x2 - x1); // 中垂线斜率 double k_perp = -1 / k; // 中垂线两端坐标 double x3 = xm + 15 / sqrt(1 + k_perp * k_perp); double y3 = ym + k_perp * (x3 - xm); double x4 = xm - 15 / sqrt(1 + k_perp * k_perp); double y4 = ym + k_perp * (x4 - xm); // 显示结果 SetDlgItemDouble(IDC_EDIT_X3, x3); SetDlgItemDouble(IDC_EDIT_Y3, y3); SetDlgItemDouble(IDC_EDIT_X4, x4); SetDlgItemDouble(IDC_EDIT_Y4, y4); } ``` 这里假设您已经在对话框上添加了 6 个编辑框,分别用于输入两点坐标和输出中垂线两端坐标。`GetDlgItemDouble` 和 `SetDlgItemDouble` 是自定义的两个辅助函数,用于获取和设置编辑框的 double 类型数值。您可以根据实际情况修改这些函数的实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值